Preferences/ShortcutsDialog.py

changeset 6625
a67fee7bc09c
parent 6048
82ad8ec9548c
child 6630
bddd12f27a4c
diff -r 9718755def80 -r a67fee7bc09c Preferences/ShortcutsDialog.py
--- a/Preferences/ShortcutsDialog.py	Wed Dec 12 19:43:53 2018 +0100
+++ b/Preferences/ShortcutsDialog.py	Wed Dec 12 19:52:24 2018 +0100
@@ -37,21 +37,19 @@
     noCheckRole = Qt.UserRole + 1
     objectTypeRole = Qt.UserRole + 2
     
-    def __init__(self, parent=None, name=None, modal=False):
+    def __init__(self, parent=None):
         """
         Constructor
         
-        @param parent The parent widget of this dialog. (QWidget)
-        @param name The name of this dialog. (string)
-        @param modal Flag indicating a modal dialog. (boolean)
+        @param parent parent widget of this dialog
+        @type QWidget
         """
         super(ShortcutsDialog, self).__init__(parent)
-        if name:
-            self.setObjectName(name)
-        self.setModal(modal)
         self.setupUi(self)
         self.setWindowFlags(Qt.Window)
         
+        self.__helpViewer = None
+        
         self.shortcutsList.headerItem().setText(
             self.shortcutsList.columnCount(), "")
         self.shortcutsList.header().setSortIndicator(0, Qt.AscendingOrder)
@@ -111,92 +109,104 @@
         else:
             itm.setData(0, self.objectTypeRole, None)
         
-    def populate(self):
+    def populate(self, helpViewer=None):
         """
         Public method to populate the dialog.
+        
+        @param helpViewer reference to the help window object
         """
         self.searchEdit.clear()
         self.searchEdit.setFocus()
         self.shortcutsList.clear()
         self.actionButton.setChecked(True)
         
-        # let the plugin manager create on demand plugin objects
-        pm = e5App().getObject("PluginManager")
-        pm.initOnDemandPlugins()
-        
-        # populate the various lists
-        self.projectItem = self.__generateCategoryItem(self.tr("Project"))
-        for act in e5App().getObject("Project").getActions():
-            self.__generateShortcutItem(self.projectItem, act)
-        
-        self.uiItem = self.__generateCategoryItem(self.tr("General"))
-        for act in e5App().getObject("UserInterface").getActions('ui'):
-            self.__generateShortcutItem(self.uiItem, act)
-        
-        self.wizardsItem = self.__generateCategoryItem(self.tr("Wizards"))
-        for act in e5App().getObject("UserInterface").getActions('wizards'):
-            self.__generateShortcutItem(self.wizardsItem, act)
-        
-        self.debugItem = self.__generateCategoryItem(self.tr("Debug"))
-        for act in e5App().getObject("DebugUI").getActions():
-            self.__generateShortcutItem(self.debugItem, act)
-        
-        self.editItem = self.__generateCategoryItem(self.tr("Edit"))
-        for act in e5App().getObject("ViewManager").getActions('edit'):
-            self.__generateShortcutItem(self.editItem, act)
-        
-        self.fileItem = self.__generateCategoryItem(self.tr("File"))
-        for act in e5App().getObject("ViewManager").getActions('file'):
-            self.__generateShortcutItem(self.fileItem, act)
-        
-        self.searchItem = self.__generateCategoryItem(self.tr("Search"))
-        for act in e5App().getObject("ViewManager").getActions('search'):
-            self.__generateShortcutItem(self.searchItem, act)
+        self.__helpViewer = helpViewer
         
-        self.viewItem = self.__generateCategoryItem(self.tr("View"))
-        for act in e5App().getObject("ViewManager").getActions('view'):
-            self.__generateShortcutItem(self.viewItem, act)
-        
-        self.macroItem = self.__generateCategoryItem(self.tr("Macro"))
-        for act in e5App().getObject("ViewManager").getActions('macro'):
-            self.__generateShortcutItem(self.macroItem, act)
-        
-        self.bookmarkItem = self.__generateCategoryItem(
-            self.tr("Bookmarks"))
-        for act in e5App().getObject("ViewManager").getActions('bookmark'):
-            self.__generateShortcutItem(self.bookmarkItem, act)
-        
-        self.spellingItem = self.__generateCategoryItem(
-            self.tr("Spelling"))
-        for act in e5App().getObject("ViewManager").getActions('spelling'):
-            self.__generateShortcutItem(self.spellingItem, act)
+        if helpViewer is None:
+            # let the plugin manager create on demand plugin objects
+            pm = e5App().getObject("PluginManager")
+            pm.initOnDemandPlugins()
+            
+            # populate the various lists
+            self.projectItem = self.__generateCategoryItem(self.tr("Project"))
+            for act in e5App().getObject("Project").getActions():
+                self.__generateShortcutItem(self.projectItem, act)
+            
+            self.uiItem = self.__generateCategoryItem(self.tr("General"))
+            for act in e5App().getObject("UserInterface").getActions('ui'):
+                self.__generateShortcutItem(self.uiItem, act)
+            
+            self.wizardsItem = self.__generateCategoryItem(self.tr("Wizards"))
+            for act in e5App().getObject("UserInterface")\
+                    .getActions('wizards'):
+                self.__generateShortcutItem(self.wizardsItem, act)
+            
+            self.debugItem = self.__generateCategoryItem(self.tr("Debug"))
+            for act in e5App().getObject("DebugUI").getActions():
+                self.__generateShortcutItem(self.debugItem, act)
+            
+            self.editItem = self.__generateCategoryItem(self.tr("Edit"))
+            for act in e5App().getObject("ViewManager").getActions('edit'):
+                self.__generateShortcutItem(self.editItem, act)
+            
+            self.fileItem = self.__generateCategoryItem(self.tr("File"))
+            for act in e5App().getObject("ViewManager").getActions('file'):
+                self.__generateShortcutItem(self.fileItem, act)
+            
+            self.searchItem = self.__generateCategoryItem(self.tr("Search"))
+            for act in e5App().getObject("ViewManager").getActions('search'):
+                self.__generateShortcutItem(self.searchItem, act)
+            
+            self.viewItem = self.__generateCategoryItem(self.tr("View"))
+            for act in e5App().getObject("ViewManager").getActions('view'):
+                self.__generateShortcutItem(self.viewItem, act)
+            
+            self.macroItem = self.__generateCategoryItem(self.tr("Macro"))
+            for act in e5App().getObject("ViewManager").getActions('macro'):
+                self.__generateShortcutItem(self.macroItem, act)
+            
+            self.bookmarkItem = self.__generateCategoryItem(
+                self.tr("Bookmarks"))
+            for act in e5App().getObject("ViewManager").getActions('bookmark'):
+                self.__generateShortcutItem(self.bookmarkItem, act)
+            
+            self.spellingItem = self.__generateCategoryItem(
+                self.tr("Spelling"))
+            for act in e5App().getObject("ViewManager").getActions('spelling'):
+                self.__generateShortcutItem(self.spellingItem, act)
+            
+            actions = e5App().getObject("ViewManager").getActions('window')
+            if actions:
+                self.windowItem = self.__generateCategoryItem(
+                    self.tr("Window"))
+                for act in actions:
+                    self.__generateShortcutItem(self.windowItem, act)
+            
+            self.pluginCategoryItems = []
+            for category, ref in e5App().getPluginObjects():
+                if hasattr(ref, "getActions"):
+                    categoryItem = self.__generateCategoryItem(category)
+                    objectType = e5App().getPluginObjectType(category)
+                    for act in ref.getActions():
+                        self.__generateShortcutItem(categoryItem, act,
+                                                    objectType=objectType)
+                    self.pluginCategoryItems.append(categoryItem)
+            
+            try:
+                dummyHelpViewer = e5App().getObject("DummyHelpViewer")
+                self.helpViewerItem = self.__generateCategoryItem(
+                    self.tr("eric6 Web Browser"))
+                for act in dummyHelpViewer.getActions():
+                    self.__generateShortcutItem(self.helpViewerItem, act, True)
+            except KeyError:
+                # no QtWebKit available
+                pass
         
-        actions = e5App().getObject("ViewManager").getActions('window')
-        if actions:
-            self.windowItem = self.__generateCategoryItem(
-                self.tr("Window"))
-            for act in actions:
-                self.__generateShortcutItem(self.windowItem, act)
-        
-        self.pluginCategoryItems = []
-        for category, ref in e5App().getPluginObjects():
-            if hasattr(ref, "getActions"):
-                categoryItem = self.__generateCategoryItem(category)
-                objectType = e5App().getPluginObjectType(category)
-                for act in ref.getActions():
-                    self.__generateShortcutItem(categoryItem, act,
-                                                objectType=objectType)
-                self.pluginCategoryItems.append(categoryItem)
-        
-        try:
-            dummyHelpViewer = e5App().getObject("DummyHelpViewer")
+        else:
             self.helpViewerItem = self.__generateCategoryItem(
                 self.tr("eric6 Web Browser"))
-            for act in dummyHelpViewer.getActions():
+            for act in helpViewer.getActions():
                 self.__generateShortcutItem(self.helpViewerItem, act, True)
-        except KeyError:
-            # no QtWebKit available
-            pass
         
         self.__resort()
         self.__resizeColumns()
@@ -392,59 +402,66 @@
         """
         Private slot to handle the OK button press.
         """
-        self.__saveCategoryActions(
-            self.projectItem,
-            e5App().getObject("Project").getActions())
-        self.__saveCategoryActions(
-            self.uiItem,
-            e5App().getObject("UserInterface").getActions('ui'))
-        self.__saveCategoryActions(
-            self.wizardsItem,
-            e5App().getObject("UserInterface").getActions('wizards'))
-        self.__saveCategoryActions(
-            self.debugItem,
-            e5App().getObject("DebugUI").getActions())
-        self.__saveCategoryActions(
-            self.editItem,
-            e5App().getObject("ViewManager").getActions('edit'))
-        self.__saveCategoryActions(
-            self.fileItem,
-            e5App().getObject("ViewManager").getActions('file'))
-        self.__saveCategoryActions(
-            self.searchItem,
-            e5App().getObject("ViewManager").getActions('search'))
-        self.__saveCategoryActions(
-            self.viewItem,
-            e5App().getObject("ViewManager").getActions('view'))
-        self.__saveCategoryActions(
-            self.macroItem,
-            e5App().getObject("ViewManager").getActions('macro'))
-        self.__saveCategoryActions(
-            self.bookmarkItem,
-            e5App().getObject("ViewManager").getActions('bookmark'))
-        self.__saveCategoryActions(
-            self.spellingItem,
-            e5App().getObject("ViewManager").getActions('spelling'))
+        if self.__helpViewer is None:
+            self.__saveCategoryActions(
+                self.projectItem,
+                e5App().getObject("Project").getActions())
+            self.__saveCategoryActions(
+                self.uiItem,
+                e5App().getObject("UserInterface").getActions('ui'))
+            self.__saveCategoryActions(
+                self.wizardsItem,
+                e5App().getObject("UserInterface").getActions('wizards'))
+            self.__saveCategoryActions(
+                self.debugItem,
+                e5App().getObject("DebugUI").getActions())
+            self.__saveCategoryActions(
+                self.editItem,
+                e5App().getObject("ViewManager").getActions('edit'))
+            self.__saveCategoryActions(
+                self.fileItem,
+                e5App().getObject("ViewManager").getActions('file'))
+            self.__saveCategoryActions(
+                self.searchItem,
+                e5App().getObject("ViewManager").getActions('search'))
+            self.__saveCategoryActions(
+                self.viewItem,
+                e5App().getObject("ViewManager").getActions('view'))
+            self.__saveCategoryActions(
+                self.macroItem,
+                e5App().getObject("ViewManager").getActions('macro'))
+            self.__saveCategoryActions(
+                self.bookmarkItem,
+                e5App().getObject("ViewManager").getActions('bookmark'))
+            self.__saveCategoryActions(
+                self.spellingItem,
+                e5App().getObject("ViewManager").getActions('spelling'))
+            
+            actions = e5App().getObject("ViewManager").getActions('window')
+            if actions:
+                self.__saveCategoryActions(self.windowItem, actions)
+            
+            for categoryItem in self.pluginCategoryItems:
+                category = categoryItem.text(0)
+                ref = e5App().getPluginObject(category)
+                if ref is not None and hasattr(ref, "getActions"):
+                    self.__saveCategoryActions(categoryItem, ref.getActions())
+            
+            try:
+                dummyHelpViewer = e5App().getObject("DummyHelpViewer")
+                self.__saveCategoryActions(
+                    self.helpViewerItem, dummyHelpViewer.getActions())
+            except KeyError:
+                # no QtWebKit available
+                pass
+            
+            Shortcuts.saveShortcuts()
         
-        actions = e5App().getObject("ViewManager").getActions('window')
-        if actions:
-            self.__saveCategoryActions(self.windowItem, actions)
-        
-        for categoryItem in self.pluginCategoryItems:
-            category = categoryItem.text(0)
-            ref = e5App().getPluginObject(category)
-            if ref is not None and hasattr(ref, "getActions"):
-                self.__saveCategoryActions(categoryItem, ref.getActions())
+        else:
+            self.__saveCategoryActions(
+                self.helpViewerItem, self.__helpViewer.getActions())
+            Shortcuts.saveShortcuts(helpViewer=self.__helpViewer)
         
-        try:
-            dummyHelpViewer = e5App().getObject("DummyHelpViewer")
-            self.__saveCategoryActions(
-                self.helpViewerItem, dummyHelpViewer.getActions())
-        except KeyError:
-            # no QtWebKit available
-            pass
-        
-        Shortcuts.saveShortcuts()
         Preferences.syncPreferences()
         
         self.updateShortcuts.emit()

eric ide

mercurial