eric6/UI/UserInterface.py

changeset 7667
cd2e9a5ee187
parent 7635
0cdead130a81
child 7684
11e18bf34097
child 7689
147236d850a4
--- a/eric6/UI/UserInterface.py	Sat Aug 15 16:27:07 2020 +0200
+++ b/eric6/UI/UserInterface.py	Sat Aug 15 19:14:03 2020 +0200
@@ -688,6 +688,15 @@
         splash.showMessage(self.tr("Setting View Profile..."))
         self.__setEditProfile()
         
+        # special treatment for the VCS toolbars
+        for tb in self.getToolbarsByCategory("vcs"):
+            tb.setVisible(False)
+            tb.setEnabled(False)
+        tb = self.getToolbar("vcs")[1]
+        tb.setEnabled(True)
+        if Preferences.getVCS("ShowVcsToolbar"):
+            tb.setVisible(True)
+        
         # now read the saved tasks
         splash.showMessage(self.tr("Reading Tasks..."))
         self.__readTasks()
@@ -3299,27 +3308,31 @@
 
         # just add new toolbars to the end of the list
         self.__toolbars = {}
-        self.__toolbars["file"] = [filetb.windowTitle(), filetb]
-        self.__toolbars["edit"] = [edittb.windowTitle(), edittb]
-        self.__toolbars["search"] = [searchtb.windowTitle(), searchtb]
-        self.__toolbars["view"] = [viewtb.windowTitle(), viewtb]
-        self.__toolbars["start"] = [starttb.windowTitle(), starttb]
-        self.__toolbars["debug"] = [debugtb.windowTitle(), debugtb]
-        self.__toolbars["project"] = [projecttb.windowTitle(), projecttb]
-        self.__toolbars["tools"] = [toolstb.windowTitle(), toolstb]
-        self.__toolbars["help"] = [helptb.windowTitle(), helptb]
-        self.__toolbars["settings"] = [settingstb.windowTitle(), settingstb]
-        self.__toolbars["bookmarks"] = [bookmarktb.windowTitle(), bookmarktb]
-        self.__toolbars["unittest"] = [unittesttb.windowTitle(), unittesttb]
+        self.__toolbars["file"] = [filetb.windowTitle(), filetb, ""]
+        self.__toolbars["edit"] = [edittb.windowTitle(), edittb, ""]
+        self.__toolbars["search"] = [searchtb.windowTitle(), searchtb, ""]
+        self.__toolbars["view"] = [viewtb.windowTitle(), viewtb, ""]
+        self.__toolbars["start"] = [starttb.windowTitle(), starttb, ""]
+        self.__toolbars["debug"] = [debugtb.windowTitle(), debugtb, ""]
+        self.__toolbars["project"] = [projecttb.windowTitle(), projecttb, ""]
+        self.__toolbars["tools"] = [toolstb.windowTitle(), toolstb, ""]
+        self.__toolbars["help"] = [helptb.windowTitle(), helptb, ""]
+        self.__toolbars["settings"] = [settingstb.windowTitle(), settingstb,
+                                       ""]
+        self.__toolbars["bookmarks"] = [bookmarktb.windowTitle(), bookmarktb,
+                                        ""]
+        self.__toolbars["unittest"] = [unittesttb.windowTitle(), unittesttb,
+                                       ""]
         self.__toolbars["view_profiles"] = [profilestb.windowTitle(),
-                                            profilestb]
-        self.__toolbars["plugins"] = [pluginstb.windowTitle(), pluginstb]
+                                            profilestb, ""]
+        self.__toolbars["plugins"] = [pluginstb.windowTitle(), pluginstb, ""]
         self.__toolbars["quicksearch"] = [quicksearchtb.windowTitle(),
-                                          quicksearchtb]
+                                          quicksearchtb, ""]
         self.__toolbars["multiproject"] = [multiprojecttb.windowTitle(),
-                                           multiprojecttb]
-        self.__toolbars["spelling"] = [spellingtb.windowTitle(), spellingtb]
-        self.__toolbars["vcs"] = [vcstb.windowTitle(), vcstb]
+                                           multiprojecttb, ""]
+        self.__toolbars["spelling"] = [spellingtb.windowTitle(), spellingtb,
+                                       ""]
+        self.__toolbars["vcs"] = [vcstb.windowTitle(), vcstb, "vcs"]
         
     def __initDebugToolbarsLayout(self):
         """
@@ -3843,34 +3856,44 @@
         except KeyError:
             return None
         
-    def registerToolbar(self, name, text, toolbar):
+    def registerToolbar(self, name, text, toolbar, category=""):
         """
         Public method to register a toolbar.
         
         This method must be called in order to make a toolbar manageable by the
         UserInterface object.
         
-        @param name name of the toolbar (string). This is used as the key into
+        @param name name of the toolbar. This is used as the key into
             the dictionary of toolbar references.
-        @param text user visible text for the toolbar entry (string)
-        @param toolbar reference to the toolbar to be registered (QToolBar)
+        @type str
+        @param text user visible text for the toolbar entry
+        @type str
+        @param toolbar reference to the toolbar to be registered
+        @type QToolBar
+        @param category toolbar category
+        @type str
         @exception KeyError raised, if a toolbar with the given name was
             already registered
         """
         if name in self.__toolbars:
             raise KeyError("Toolbar '{0}' already registered.".format(name))
         
-        self.__toolbars[name] = [text, toolbar]
-        
-    def reregisterToolbar(self, name, text):
+        self.__toolbars[name] = [text, toolbar, category]
+        
+    def reregisterToolbar(self, name, text, category=""):
         """
         Public method to change the visible text for the named toolbar.
         
-        @param name name of the toolbar to be changed (string)
-        @param text new user visible text for the toolbar entry (string)
+        @param name name of the toolbar to be changed
+        @type str
+        @param text new user visible text for the toolbar entry
+        @type str
+        @param category new toolbar category for the toolbar entry
+        @type str
         """
         if name in self.__toolbars:
             self.__toolbars[name][0] = text
+            self.__toolbars[name][2] = category
         
     def unregisterToolbar(self, name):
         """
@@ -3892,7 +3915,28 @@
             return self.__toolbars[name]
         except KeyError:
             return None
-        
+    
+    def getToolbarsByCategory(self, category):
+        """
+        Public method to get a list of toolbars belonging to a given toolbar
+        category.
+        
+        @param category toolbar category
+        @type str
+        @return list of toolbars
+        @rtype list of QToolBar
+        """
+        toolbars = []
+        for tbName in self.__toolbars:
+            try:
+                if self.__toolbars[tbName][2] == category:
+                    toolbars.append(self.__toolbars[tbName][1])
+            except IndexError:
+                # backward compatibility; category is not yet supported
+                pass
+        
+        return toolbars
+    
     def getLocale(self):
         """
         Public method to get the locale of the IDE.
@@ -4111,8 +4155,9 @@
         """
         menu.clear()
         
-        for name, (text, tb) in sorted(self.__toolbars.items(),
-                                       key=lambda t: t[1][0]):
+        for name, (text, tb, category) in sorted(
+            self.__toolbars.items(), key=lambda t: t[1][0]
+        ):
             act = menu.addAction(text)
             act.setCheckable(True)
             act.setChecked(not tb.isHidden())
@@ -4152,12 +4197,12 @@
         name = act.data()
         if name:
             if name == "__SHOW__":
-                for _text, tb in self.__toolbars.values():
+                for _text, tb, category in self.__toolbars.values():
                     tb.show()
                 if self.__menus["toolbars"].isTearOffMenuVisible():
                     self.__menus["toolbars"].hideTearOffMenu()
             elif name == "__HIDE__":
-                for _text, tb in self.__toolbars.values():
+                for _text, tb, category in self.__toolbars.values():
                     tb.hide()
                 if self.__menus["toolbars"].isTearOffMenuVisible():
                     self.__menus["toolbars"].hideTearOffMenu()
@@ -4165,6 +4210,7 @@
                 tb = self.__toolbars[name][1]
                 if act.isChecked():
                     tb.show()
+                    tb.setEnabled(True)
                 else:
                     tb.hide()
 
@@ -4178,15 +4224,16 @@
         name = act.data()
         if name:
             if name == "__SHOW__":
-                for _text, tb in self.__toolbars.values():
+                for _text, tb, category in self.__toolbars.values():
                     tb.show()
             elif name == "__HIDE__":
-                for _text, tb in self.__toolbars.values():
+                for _text, tb, category in self.__toolbars.values():
                     tb.hide()
             else:
                 tb = self.__toolbars[name][1]
                 if act.isChecked():
                     tb.show()
+                    tb.setEnabled(True)
                 else:
                     tb.hide()
             if self.__menus["toolbars"].isTearOffMenuVisible():

eric ide

mercurial