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()