UI/UserInterface.py

branch
6_0_x
changeset 4399
76cce1718c1c
parent 4198
417706a8fddb
child 4400
8d4986c8d120
diff -r 064305c201c9 -r 76cce1718c1c UI/UserInterface.py
--- a/UI/UserInterface.py	Thu Aug 27 17:03:36 2015 +0200
+++ b/UI/UserInterface.py	Tue Aug 25 17:49:18 2015 +0200
@@ -2429,13 +2429,11 @@
         self.wizardsMenuAct.setEnabled(False)
         self.__menus["macros"] = self.viewmanager.initMacroMenu()
         self.__menus["extras"].addMenu(self.__menus["macros"])
-        self.__menus["tools"] = QMenu(self.tr('&Tools'), self)
-        self.__menus["tools"].aboutToShow.connect(self.__showToolsMenu)
-        self.__menus["tools"].triggered.connect(self.__toolExecute)
         self.toolGroupsMenu = QMenu(self.tr("Select Tool Group"), self)
         self.toolGroupsMenu.aboutToShow.connect(self.__showToolGroupsMenu)
         self.toolGroupsMenu.triggered.connect(self.__toolGroupSelected)
         self.toolGroupsMenuTriggered = False
+        self.__menus["tools"] = self.__initToolsMenu()
         self.__menus["extras"].addMenu(self.__menus["tools"])
         
         self.__menus["settings"] = QMenu(self.tr('Se&ttings'), self)
@@ -3295,59 +3293,92 @@
             args = [eric6]
             QProcess.startDetached(program, args)
         
-    def __showToolsMenu(self):
-        """
-        Private slot to display the Tools menu.
-        """
-        self.__menus["tools"].clear()
-        
-        self.__menus["tools"].addMenu(self.toolGroupsMenu)
-        act = self.__menus["tools"].addAction(
+    def __initToolsMenu(self):
+        """
+        Private slot to initialize the Tools menu.
+        
+        @return populated Tools menu
+        @rtype QMenu
+        """
+        menu = QMenu(self.tr('&Tools'), self)
+        
+        btMenu = QMenu(self.tr("&Builtin Tools"), self)
+        if self.designer4Act is not None:
+            btMenu.addAction(self.designer4Act)
+        if self.linguist4Act is not None:
+            btMenu.addAction(self.linguist4Act)
+        btMenu.addAction(self.uipreviewerAct)
+        btMenu.addAction(self.trpreviewerAct)
+        btMenu.addAction(self.diffAct)
+        btMenu.addAction(self.compareAct)
+        btMenu.addAction(self.sqlBrowserAct)
+        btMenu.addAction(self.miniEditorAct)
+        btMenu.addAction(self.iconEditorAct)
+        btMenu.addAction(self.snapshotAct)
+        btMenu.addAction(self.webBrowserAct)
+        
+        ptMenu = QMenu(self.tr("&Plugin Tools"), self)
+        ptMenu.aboutToShow.connect(self.__showPluginToolsMenu)
+        
+        utMenu = QMenu(self.tr("&User Tools"), self)
+        utMenu.triggered.connect(self.__toolExecute)
+        utMenu.aboutToShow.connect(self.__showUserToolsMenu)
+        
+        menu.addMenu(btMenu)
+        menu.addMenu(ptMenu)
+        menu.addMenu(utMenu)
+        
+        self.__menus["builtin_tools"] = btMenu
+        self.__menus["plugin_tools"] = ptMenu
+        self.__menus["user_tools"] = utMenu
+        
+        return menu
+        
+    def __showPluginToolsMenu(self):
+        """
+        Private slot to show the Plugin Tools menu.
+        """
+        # TODO: This doesn't work on Mac OS X with Qt compiled against
+        # Cocoa anymore
+        # TODO: Change tools plug-ins to populate the menu statically
+        # and just enabled the actions/menus accordingly
+        self.showMenu.emit("Tools", self.__menus["plugin_tools"])
+        
+    def __showUserToolsMenu(self):
+        """
+        Private slot to display the User Tools menu.
+        """
+        self.__menus["user_tools"].clear()
+        
+        self.__menus["user_tools"].addMenu(self.toolGroupsMenu)
+        act = self.__menus["user_tools"].addAction(
             self.tr("Configure Tool Groups ..."),
             self.__toolGroupsConfiguration)
         act.setData(-1)
-        act = self.__menus["tools"].addAction(
+        act = self.__menus["user_tools"].addAction(
             self.tr("Configure current Tool Group ..."),
             self.__toolsConfiguration)
         act.setData(-2)
-        self.__menus["tools"].addSeparator()
-        
-        if self.currentToolGroup == -1:
-            act.setEnabled(False)
-            # add the default entries
-            if self.designer4Act is not None:
-                self.__menus["tools"].addAction(self.designer4Act)
-            if self.linguist4Act is not None:
-                self.__menus["tools"].addAction(self.linguist4Act)
-            self.__menus["tools"].addAction(self.uipreviewerAct)
-            self.__menus["tools"].addAction(self.trpreviewerAct)
-            self.__menus["tools"].addAction(self.diffAct)
-            self.__menus["tools"].addAction(self.compareAct)
-            self.__menus["tools"].addAction(self.sqlBrowserAct)
-            self.__menus["tools"].addAction(self.miniEditorAct)
-            self.__menus["tools"].addAction(self.iconEditorAct)
-            self.__menus["tools"].addAction(self.snapshotAct)
-            self.__menus["tools"].addAction(self.webBrowserAct)
-        elif self.currentToolGroup == -2:
-            act.setEnabled(False)
-            # add the plugin entries
-            self.showMenu.emit("Tools", self.__menus["tools"])
-        else:
-            # add the configurable entries
-            idx = 0
-            try:
-                for tool in self.toolGroups[self.currentToolGroup][1]:
-                    if tool['menutext'] == '--':
-                        self.__menus["tools"].addSeparator()
-                    else:
-                        act = self.__menus["tools"].addAction(
-                            UI.PixmapCache.getIcon(tool['icon']),
-                            tool['menutext'])
-                        act.setData(idx)
-                    idx += 1
-            except IndexError:
-                # the current tool group might have been deleted
-                pass
+        act.setEnabled(self.currentToolGroup >= 0)
+        self.__menus["user_tools"].addSeparator()
+        
+        # add the configurable entries
+        idx = 0
+        try:
+            for tool in self.toolGroups[self.currentToolGroup][1]:
+                if tool['menutext'] == '--':
+                    self.__menus["user_tools"].addSeparator()
+                else:
+                    act = self.__menus["user_tools"].addAction(
+                        UI.PixmapCache.getIcon(tool['icon']),
+                        tool['menutext'])
+                    act.setData(idx)
+                idx += 1
+        except IndexError:
+            # the current tool group might have been deleted
+            act = self.__menus["user_tools"].addAction(
+                self.tr("No User Tools Configured"))
+            act.setData(-3)
         
     def __showToolGroupsMenu(self):
         """
@@ -3355,32 +3386,21 @@
         """
         self.toolGroupsMenu.clear()
         
-        # add the default entry
-        act = self.toolGroupsMenu.addAction(self.tr("&Builtin Tools"))
-        act.setData(-1)
-        if self.currentToolGroup == -1:
-            font = act.font()
-            font.setBold(True)
-            act.setFont(font)
-        
-        # add the plugins entry
-        act = self.toolGroupsMenu.addAction(self.tr("&Plugin Tools"))
-        act.setData(-2)
-        if self.currentToolGroup == -2:
-            font = act.font()
-            font.setBold(True)
-            act.setFont(font)
-        
         # add the configurable tool groups
-        idx = 0
-        for toolGroup in self.toolGroups:
-            act = self.toolGroupsMenu.addAction(toolGroup[0])
-            act.setData(idx)
-            if self.currentToolGroup == idx:
-                font = act.font()
-                font.setBold(True)
-                act.setFont(font)
-            idx += 1
+        if self.toolGroups:
+            idx = 0
+            for toolGroup in self.toolGroups:
+                act = self.toolGroupsMenu.addAction(toolGroup[0])
+                act.setData(idx)
+                if self.currentToolGroup == idx:
+                    font = act.font()
+                    font.setBold(True)
+                    act.setFont(font)
+                idx += 1
+        else:
+            act = self.toolGroupsMenu.addAction(
+                self.tr("No User Tools Configured"))
+            act.setData(-3)
         
     def __toolGroupSelected(self, act):
         """
@@ -4557,7 +4577,7 @@
             return
         
         if self.currentToolGroup < 0:
-            # it was a built in or plugin tool, don't handle it here
+            # it was an action not to be handled here
             return
         
         idx = act.data()

eric ide

mercurial