Author: craig
Date: Sat Oct 12 10:00:26 2013
New Revision: 18544

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=18544
Log:
MenuManager: recent file menu now working again from the toolbar open button

Modified:
    trunk/Scribus/scribus/menumanager.cpp
    trunk/Scribus/scribus/menumanager.h
    trunk/Scribus/scribus/pluginmanager.cpp
    trunk/Scribus/scribus/scribus.cpp
    trunk/Scribus/scribus/ui/filetoolbar.cpp
    trunk/Scribus/scribus/ui/filetoolbar.h

Modified: trunk/Scribus/scribus/menumanager.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18544&path=/trunk/Scribus/scribus/menumanager.cpp
==============================================================================
--- trunk/Scribus/scribus/menumanager.cpp (original)
+++ trunk/Scribus/scribus/menumanager.cpp Sat Oct 12 10:00:26 2013
@@ -33,6 +33,7 @@
        menuStrings.clear();
        recentFileMenu=NULL;
        editPasteRecentMenu=NULL;
+       itemLayerMenu=NULL;
        itemSendtoScrapbookMenu=NULL;
        windowsMenu=NULL;
 }
@@ -159,6 +160,52 @@
                {
                        windowsMenu=m;
                }
+               retVal=true;
+       }
+       return retVal;
+}
+
+bool MenuManager::addMenuToMenuBarBefore(const QString &menuName, const 
QString &afterMenuName)
+{
+       bool retVal=false;
+       if (menuList.contains(menuName) && menuList[menuName]!=NULL)
+       {
+               if (menuList[afterMenuName])
+               {
+                       QAction* 
t=scribusMenuBar->insertMenu(menuList[afterMenuName]->getLocalPopupMenu()->menuAction(),
 menuList[menuName]->getLocalPopupMenu());
+                       if (t!=NULL)
+                       {
+                               t->setText(menuList[menuName]->getMenuText());
+                               retVal=true;
+                       }
+               }
+       }
+       return retVal;
+}
+
+bool MenuManager::addMenuStringToMenuBarBefore(const QString &menuName, const 
QString &afterMenuName)
+{
+       bool retVal=false;
+       if (menuStrings.contains(menuName))
+       {
+               QMenu *m=scribusMenuBar->addMenu(menuStringTexts[menuName]);
+               menuBarMenus.insert(menuName, m);
+               if (menuName=="Windows" && m!=NULL)
+               {
+                       windowsMenu=m;
+               }
+               retVal=true;
+       }
+       return retVal;
+}
+
+bool MenuManager::removeMenuFromMenuBar(const QString &menuName)
+{
+       bool retVal=false;
+       if (menuList.contains(menuName) && menuList[menuName]!=NULL)
+       {
+               if (menuList[menuName]->getLocalPopupMenu()->menuAction())
+                       
scribusMenuBar->removeAction(menuList[menuName]->getLocalPopupMenu()->menuAction());
                retVal=true;
        }
        return retVal;
@@ -194,10 +241,6 @@
                                                {
                                                        
editPasteRecentMenu=subMenu;
                                                }
-                                               else if 
(menuStrings[menuName].at(i)=="ItemLayer")
-                                               {
-                                                       itemLayerMenu=subMenu;
-                                               }
                                                
addMenuItemStringstoMenu(menuStrings[menuName].at(i), subMenu, menuActions);
                                        }
                                }
@@ -233,6 +276,14 @@
                                                        {
                                                                
itemSendtoScrapbookMenu=subMenu;
                                                        }
+                                                       else if 
(menuStrings[menuName].at(i)=="ItemLayer")
+                                                       {
+                                                               
itemLayerMenu=subMenu;
+                                                       }
+                                                       else if 
(menuStrings[menuName].at(i)=="EditPasteRecent")
+                                                       {
+                                                               
editPasteRecentMenu=subMenu;
+                                                       }
                                                        
addMenuItemStringstoMenu(menuStrings[menuName].at(i), subMenu, menuActions);
                                                }
                                        }
@@ -262,6 +313,20 @@
                        itemSendtoScrapbookMenu->addAction(*it);
                }
        }
+       else if (menuName=="ItemLayer" && itemLayerMenu!=NULL)
+       {
+               for( QMap<QString, QPointer<ScrAction> >::ConstIterator it = 
menuActions.begin(); it!=menuActions.end(); ++it )
+               {
+                       itemLayerMenu->addAction(*it);
+               }
+       }
+       else if (menuName=="EditPasteRecent" && editPasteRecentMenu!=NULL)
+       {
+               for( QMap<QString, QPointer<ScrAction> >::ConstIterator it = 
menuActions.begin(); it!=menuActions.end(); ++it )
+               {
+                       editPasteRecentMenu->addAction(*it);
+               }
+       }
 }
 
 void MenuManager::clearMenuStrings(const QString &menuName)
@@ -278,37 +343,17 @@
        {
                itemSendtoScrapbookMenu->clear();
        }
-}
-
-bool MenuManager::addMenuToMenuBarBefore(const QString &menuName, const 
QString &afterMenuName)
-{
-       bool retVal=false;
-       if (menuList.contains(menuName) && menuList[menuName]!=NULL)
-       {
-               if (menuList[afterMenuName])
-               {
-                       QAction* 
t=scribusMenuBar->insertMenu(menuList[afterMenuName]->getLocalPopupMenu()->menuAction(),
 menuList[menuName]->getLocalPopupMenu());
-                       if (t!=NULL)
-                       {
-                               t->setText(menuList[menuName]->getMenuText());
-                               retVal=true;
-                       }
-               }
-       }
-       return retVal;
-}
-
-bool MenuManager::removeMenuFromMenuBar(const QString &menuName)
-{
-       bool retVal=false;
-       if (menuList.contains(menuName) && menuList[menuName]!=NULL)
-       {
-               if (menuList[menuName]->getLocalPopupMenu()->menuAction())
-                       
scribusMenuBar->removeAction(menuList[menuName]->getLocalPopupMenu()->menuAction());
-               retVal=true;
-       }
-       return retVal;
-}
+       else if (menuName=="ItemLayer" && itemLayerMenu!=NULL)
+       {
+               itemLayerMenu->clear();
+       }
+       else if (menuName=="EditPasteRecent" && editPasteRecentMenu!=NULL)
+       {
+               editPasteRecentMenu->clear();
+       }
+}
+
+
 
 bool MenuManager::addMenuToWidgetOfAction(const QString &menuName, ScrAction 
*action)
 {

Modified: trunk/Scribus/scribus/menumanager.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18544&path=/trunk/Scribus/scribus/menumanager.h
==============================================================================
--- trunk/Scribus/scribus/menumanager.h (original)
+++ trunk/Scribus/scribus/menumanager.h Sat Oct 12 10:00:26 2013
@@ -61,6 +61,7 @@
                bool addMenuToMenuBar(const QString &menuName);
                bool addMenuStringToMenuBar(const QString &menuName);
                bool addMenuToMenuBarBefore(const QString &, const QString &);
+               bool addMenuStringToMenuBarBefore(const QString &, const 
QString &);
                bool removeMenuFromMenuBar(const QString &menuName);
                bool addMenuToWidgetOfAction(const QString &menuName, ScrAction 
*action);
 

Modified: trunk/Scribus/scribus/pluginmanager.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18544&path=/trunk/Scribus/scribus/pluginmanager.cpp
==============================================================================
--- trunk/Scribus/scribus/pluginmanager.cpp (original)
+++ trunk/Scribus/scribus/pluginmanager.cpp Sat Oct 12 10:00:26 2013
@@ -408,7 +408,8 @@
                                                        if 
(!sew->seMenuMgr->menuExists(ai.seMenu))
                                                                
sew->seMenuMgr->createMenu(ai.seMenu, ai.subMenuName, ai.parentMenu);
                                                }
-                                               
sew->seMenuMgr->addMenuItem(sew->seActions[ai.name], ai.seMenu, true);
+//                                             
sew->seMenuMgr->addMenuItem(sew->seActions[ai.name], ai.seMenu, true);
+                                               
sew->seMenuMgr->addMenuItemString(ai.name, ai.menu);
                                        }
                                }
                                else
@@ -422,7 +423,8 @@
                                                if 
(!sew->seMenuMgr->menuExists(ai.seMenu))
                                                        
sew->seMenuMgr->createMenu(ai.seMenu, ai.subMenuName, ai.parentMenu);
                                        }
-                                       
sew->seMenuMgr->addMenuItemAfter(sew->seActions[ai.name], ai.seMenu, true, 
afterAction);
+//                                     
sew->seMenuMgr->addMenuItemAfter(sew->seActions[ai.name], ai.seMenu, true, 
afterAction);
+                                       
sew->seMenuMgr->addMenuItemStringAfter(ai.name, ai.menuAfterName, ai.menu);
                                }
                        }
                }

Modified: trunk/Scribus/scribus/scribus.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18544&path=/trunk/Scribus/scribus/scribus.cpp
==============================================================================
--- trunk/Scribus/scribus/scribus.cpp (original)
+++ trunk/Scribus/scribus/scribus.cpp Sat Oct 12 10:00:26 2013
@@ -3655,9 +3655,6 @@
 void ScribusMainWindow::rebuildRecentFileMenu()
 {
        scrMenuMgr->clearMenuStrings("FileOpenRecent");
-       for( QMap<QString, QPointer<ScrAction> >::Iterator it = 
scrRecentFileActions.begin(); it!=scrRecentFileActions.end(); ++it )
-               scrMenuMgr->removeMenuItem((*it), "FileOpenRecent");
-
        scrRecentFileActions.clear();
        uint max = qMin(prefsManager->appPrefs.uiPrefs.recentDocCount, 
RecentDocs.count());
        QString strippedName, localName;
@@ -3665,18 +3662,19 @@
        {
                strippedName = localName = 
QDir::toNativeSeparators(RecentDocs[m]);
                strippedName.remove(QDir::separator());
-               scrRecentFileActions.insert(strippedName, new 
ScrAction(ScrAction::RecentFile, QPixmap(), QPixmap(), 
QString("&%1").arg(localName.replace("&","&&")), QKeySequence(), this, 
0,0.0,RecentDocs[m]));
+               strippedName.prepend(QString("%1").arg(m+1));
+               scrRecentFileActions.insert(strippedName, new 
ScrAction(ScrAction::RecentFile, QPixmap(), QPixmap(), QString("%1 
&%2").arg(m+1).arg(localName.replace("&","&&")), QKeySequence(), this, 
0,0.0,RecentDocs[m]));
                connect( scrRecentFileActions[strippedName], 
SIGNAL(triggeredData(QString)), this, SLOT(loadRecent(QString)) );
 //             scrMenuMgr->addMenuItem(scrRecentFileActions[strippedName], 
"FileOpenRecent", true);
 
        }
        scrMenuMgr->addMenuItemStringstoSpecialMenu("FileOpenRecent", 
scrRecentFileActions);
+       fileToolBar->rebuildRecentFileMenu();
 }
 
 void ScribusMainWindow::rebuildRecentPasteMenu()
 {
-       for( QMap<QString, QPointer<ScrAction> >::Iterator it = 
scrRecentPasteActions.begin(); it!=scrRecentPasteActions.end(); ++it )
-               scrMenuMgr->removeMenuItem((*it), "EditPasteRecent");
+       scrMenuMgr->clearMenuStrings("EditPasteRecent");
 
        scrRecentPasteActions.clear();
        int max = 
qMin(prefsManager->appPrefs.scrapbookPrefs.numScrapbookCopies, 
scrapbookPalette->tempBView->objectMap.count());
@@ -3692,9 +3690,10 @@
                        QPixmap pm = it.value().Preview;
                        scrRecentPasteActions.insert(strippedName, new 
ScrAction(ScrAction::RecentPaste, pm, QPixmap(), QString("&%1 
%2").arg(m+1).arg(strippedName), QKeySequence(), this, 0,0.0,it.key()));
                        connect( scrRecentPasteActions[strippedName], 
SIGNAL(triggeredData(QString)), this, SLOT(pasteRecent(QString)) );
-                       
scrMenuMgr->addMenuItem(scrRecentPasteActions[strippedName], "EditPasteRecent", 
true);
+//                     
scrMenuMgr->addMenuItem(scrRecentPasteActions[strippedName], "EditPasteRecent", 
true);
                        it--;
                }
+               scrMenuMgr->addMenuItemStringstoSpecialMenu("EditPasteRecent", 
scrRecentPasteActions);
        }
 }
 
@@ -3873,8 +3872,7 @@
 {
        if (HaveDoc)
        {
-               for( QMap<QString, QPointer<ScrAction> >::Iterator it0 = 
scrLayersActions.begin(); it0 != scrLayersActions.end(); ++it0 )
-                       scrMenuMgr->removeMenuItem((*it0), "ItemLayer");
+               scrMenuMgr->clearMenuStrings("ItemLayer");
                scrLayersActions.clear();
                ScLayers::iterator it;
                if (doc->Layers.count()!= 0)
@@ -3903,9 +3901,11 @@
 
                for( QMap<QString, QPointer<ScrAction> >::Iterator it = 
scrLayersActions.begin(); it!=scrLayersActions.end(); ++it )
                {
-                       scrMenuMgr->addMenuItem((*it), "ItemLayer", true);
+                       //scrMenuMgr->addMenuItem((*it), "ItemLayer", true);
                        connect( (*it), SIGNAL(triggeredData(int)), doc, 
SLOT(itemSelection_SendToLayer(int)) );
                }
+               scrMenuMgr->addMenuItemStringstoSpecialMenu("ItemLayer", 
scrRecentFileActions);
+
        }
 }
 

Modified: trunk/Scribus/scribus/ui/filetoolbar.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18544&path=/trunk/Scribus/scribus/ui/filetoolbar.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/filetoolbar.cpp (original)
+++ trunk/Scribus/scribus/ui/filetoolbar.cpp Sat Oct 12 10:00:26 2013
@@ -21,6 +21,7 @@
  *                                                                         *
  ***************************************************************************/
 
+#include <QString>
 #include <QToolButton>
 
 #include "filetoolbar.h"
@@ -28,16 +29,25 @@
 #include "scraction.h"
 #include "scribus.h"
 
-FileToolBar::FileToolBar(ScribusMainWindow* parent) : ScToolBar( tr("File"), 
"File", parent)
+FileToolBar::FileToolBar(ScribusMainWindow* p) : ScToolBar( tr("File"), 
"File", p)
 {
-       addAction(parent->scrActions["fileNew"]);
-       addAction(parent->scrActions["fileOpen"]);
+       parent=p;
+       addAction(p->scrActions["fileNew"]);
+       addAction(p->scrActions["fileOpen"]);
+       addAction(p->scrActions["fileSave"]);
+       addAction(p->scrActions["fileClose"]);
+       addAction(p->scrActions["filePrint"]);
+       addAction(p->scrActions["toolsPreflightVerifier"]);
+       addAction(p->scrActions["fileExportAsPDF"]);
+}
+
+void FileToolBar::rebuildRecentFileMenu()
+{
        QToolButton* tb = 
dynamic_cast<QToolButton*>(widgetForAction(parent->scrActions["fileOpen"]));
-       tb->setMenu(parent->scrMenuMgr->getLocalPopupMenu("FileOpenRecent"));
-       tb->setPopupMode(QToolButton::DelayedPopup);
-       addAction(parent->scrActions["fileSave"]);
-       addAction(parent->scrActions["fileClose"]);
-       addAction(parent->scrActions["filePrint"]);
-       addAction(parent->scrActions["toolsPreflightVerifier"]);
-       addAction(parent->scrActions["fileExportAsPDF"]);
+       QMenu *m=new QMenu(this);
+       ScrAction *recentFileAction;
+       foreach (recentFileAction, parent->scrRecentFileActions)
+               m->addAction(recentFileAction);
+       tb->setMenu(m);
+       tb->setPopupMode(QToolButton::MenuButtonPopup);
 }

Modified: trunk/Scribus/scribus/ui/filetoolbar.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=18544&path=/trunk/Scribus/scribus/ui/filetoolbar.h
==============================================================================
--- trunk/Scribus/scribus/ui/filetoolbar.h (original)
+++ trunk/Scribus/scribus/ui/filetoolbar.h Sat Oct 12 10:00:26 2013
@@ -24,7 +24,11 @@
 #ifndef FILETOOLBAR_H
 #define FILETOOLBAR_H
 
+#include <QString>
+#include <QMap>
+#include <QPointer>
 #include "scribusapi.h"
+#include "scraction.h"
 #include "ui/sctoolbar.h"
 
 class ScribusMainWindow;
@@ -33,9 +37,13 @@
 {
        Q_OBJECT
 
-public:
-       FileToolBar(ScribusMainWindow* parent);
-       ~FileToolBar() {};
+       public:
+               FileToolBar(ScribusMainWindow* p);
+               ~FileToolBar() {};
+               void rebuildRecentFileMenu();
+
+       protected:
+               ScribusMainWindow* parent;
 };
 
 #endif


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to