Preferences/ShortcutsDialog.py

changeset 6625
a67fee7bc09c
parent 6048
82ad8ec9548c
child 6630
bddd12f27a4c
equal deleted inserted replaced
6624:9718755def80 6625:a67fee7bc09c
35 35
36 objectNameRole = Qt.UserRole 36 objectNameRole = Qt.UserRole
37 noCheckRole = Qt.UserRole + 1 37 noCheckRole = Qt.UserRole + 1
38 objectTypeRole = Qt.UserRole + 2 38 objectTypeRole = Qt.UserRole + 2
39 39
40 def __init__(self, parent=None, name=None, modal=False): 40 def __init__(self, parent=None):
41 """ 41 """
42 Constructor 42 Constructor
43 43
44 @param parent The parent widget of this dialog. (QWidget) 44 @param parent parent widget of this dialog
45 @param name The name of this dialog. (string) 45 @type QWidget
46 @param modal Flag indicating a modal dialog. (boolean)
47 """ 46 """
48 super(ShortcutsDialog, self).__init__(parent) 47 super(ShortcutsDialog, self).__init__(parent)
49 if name:
50 self.setObjectName(name)
51 self.setModal(modal)
52 self.setupUi(self) 48 self.setupUi(self)
53 self.setWindowFlags(Qt.Window) 49 self.setWindowFlags(Qt.Window)
50
51 self.__helpViewer = None
54 52
55 self.shortcutsList.headerItem().setText( 53 self.shortcutsList.headerItem().setText(
56 self.shortcutsList.columnCount(), "") 54 self.shortcutsList.columnCount(), "")
57 self.shortcutsList.header().setSortIndicator(0, Qt.AscendingOrder) 55 self.shortcutsList.header().setSortIndicator(0, Qt.AscendingOrder)
58 56
109 if objectType: 107 if objectType:
110 itm.setData(0, self.objectTypeRole, objectType) 108 itm.setData(0, self.objectTypeRole, objectType)
111 else: 109 else:
112 itm.setData(0, self.objectTypeRole, None) 110 itm.setData(0, self.objectTypeRole, None)
113 111
114 def populate(self): 112 def populate(self, helpViewer=None):
115 """ 113 """
116 Public method to populate the dialog. 114 Public method to populate the dialog.
115
116 @param helpViewer reference to the help window object
117 """ 117 """
118 self.searchEdit.clear() 118 self.searchEdit.clear()
119 self.searchEdit.setFocus() 119 self.searchEdit.setFocus()
120 self.shortcutsList.clear() 120 self.shortcutsList.clear()
121 self.actionButton.setChecked(True) 121 self.actionButton.setChecked(True)
122 122
123 # let the plugin manager create on demand plugin objects 123 self.__helpViewer = helpViewer
124 pm = e5App().getObject("PluginManager") 124
125 pm.initOnDemandPlugins() 125 if helpViewer is None:
126 126 # let the plugin manager create on demand plugin objects
127 # populate the various lists 127 pm = e5App().getObject("PluginManager")
128 self.projectItem = self.__generateCategoryItem(self.tr("Project")) 128 pm.initOnDemandPlugins()
129 for act in e5App().getObject("Project").getActions(): 129
130 self.__generateShortcutItem(self.projectItem, act) 130 # populate the various lists
131 131 self.projectItem = self.__generateCategoryItem(self.tr("Project"))
132 self.uiItem = self.__generateCategoryItem(self.tr("General")) 132 for act in e5App().getObject("Project").getActions():
133 for act in e5App().getObject("UserInterface").getActions('ui'): 133 self.__generateShortcutItem(self.projectItem, act)
134 self.__generateShortcutItem(self.uiItem, act) 134
135 135 self.uiItem = self.__generateCategoryItem(self.tr("General"))
136 self.wizardsItem = self.__generateCategoryItem(self.tr("Wizards")) 136 for act in e5App().getObject("UserInterface").getActions('ui'):
137 for act in e5App().getObject("UserInterface").getActions('wizards'): 137 self.__generateShortcutItem(self.uiItem, act)
138 self.__generateShortcutItem(self.wizardsItem, act) 138
139 139 self.wizardsItem = self.__generateCategoryItem(self.tr("Wizards"))
140 self.debugItem = self.__generateCategoryItem(self.tr("Debug")) 140 for act in e5App().getObject("UserInterface")\
141 for act in e5App().getObject("DebugUI").getActions(): 141 .getActions('wizards'):
142 self.__generateShortcutItem(self.debugItem, act) 142 self.__generateShortcutItem(self.wizardsItem, act)
143 143
144 self.editItem = self.__generateCategoryItem(self.tr("Edit")) 144 self.debugItem = self.__generateCategoryItem(self.tr("Debug"))
145 for act in e5App().getObject("ViewManager").getActions('edit'): 145 for act in e5App().getObject("DebugUI").getActions():
146 self.__generateShortcutItem(self.editItem, act) 146 self.__generateShortcutItem(self.debugItem, act)
147 147
148 self.fileItem = self.__generateCategoryItem(self.tr("File")) 148 self.editItem = self.__generateCategoryItem(self.tr("Edit"))
149 for act in e5App().getObject("ViewManager").getActions('file'): 149 for act in e5App().getObject("ViewManager").getActions('edit'):
150 self.__generateShortcutItem(self.fileItem, act) 150 self.__generateShortcutItem(self.editItem, act)
151 151
152 self.searchItem = self.__generateCategoryItem(self.tr("Search")) 152 self.fileItem = self.__generateCategoryItem(self.tr("File"))
153 for act in e5App().getObject("ViewManager").getActions('search'): 153 for act in e5App().getObject("ViewManager").getActions('file'):
154 self.__generateShortcutItem(self.searchItem, act) 154 self.__generateShortcutItem(self.fileItem, act)
155 155
156 self.viewItem = self.__generateCategoryItem(self.tr("View")) 156 self.searchItem = self.__generateCategoryItem(self.tr("Search"))
157 for act in e5App().getObject("ViewManager").getActions('view'): 157 for act in e5App().getObject("ViewManager").getActions('search'):
158 self.__generateShortcutItem(self.viewItem, act) 158 self.__generateShortcutItem(self.searchItem, act)
159 159
160 self.macroItem = self.__generateCategoryItem(self.tr("Macro")) 160 self.viewItem = self.__generateCategoryItem(self.tr("View"))
161 for act in e5App().getObject("ViewManager").getActions('macro'): 161 for act in e5App().getObject("ViewManager").getActions('view'):
162 self.__generateShortcutItem(self.macroItem, act) 162 self.__generateShortcutItem(self.viewItem, act)
163 163
164 self.bookmarkItem = self.__generateCategoryItem( 164 self.macroItem = self.__generateCategoryItem(self.tr("Macro"))
165 self.tr("Bookmarks")) 165 for act in e5App().getObject("ViewManager").getActions('macro'):
166 for act in e5App().getObject("ViewManager").getActions('bookmark'): 166 self.__generateShortcutItem(self.macroItem, act)
167 self.__generateShortcutItem(self.bookmarkItem, act) 167
168 168 self.bookmarkItem = self.__generateCategoryItem(
169 self.spellingItem = self.__generateCategoryItem( 169 self.tr("Bookmarks"))
170 self.tr("Spelling")) 170 for act in e5App().getObject("ViewManager").getActions('bookmark'):
171 for act in e5App().getObject("ViewManager").getActions('spelling'): 171 self.__generateShortcutItem(self.bookmarkItem, act)
172 self.__generateShortcutItem(self.spellingItem, act) 172
173 173 self.spellingItem = self.__generateCategoryItem(
174 actions = e5App().getObject("ViewManager").getActions('window') 174 self.tr("Spelling"))
175 if actions: 175 for act in e5App().getObject("ViewManager").getActions('spelling'):
176 self.windowItem = self.__generateCategoryItem( 176 self.__generateShortcutItem(self.spellingItem, act)
177 self.tr("Window")) 177
178 for act in actions: 178 actions = e5App().getObject("ViewManager").getActions('window')
179 self.__generateShortcutItem(self.windowItem, act) 179 if actions:
180 180 self.windowItem = self.__generateCategoryItem(
181 self.pluginCategoryItems = [] 181 self.tr("Window"))
182 for category, ref in e5App().getPluginObjects(): 182 for act in actions:
183 if hasattr(ref, "getActions"): 183 self.__generateShortcutItem(self.windowItem, act)
184 categoryItem = self.__generateCategoryItem(category) 184
185 objectType = e5App().getPluginObjectType(category) 185 self.pluginCategoryItems = []
186 for act in ref.getActions(): 186 for category, ref in e5App().getPluginObjects():
187 self.__generateShortcutItem(categoryItem, act, 187 if hasattr(ref, "getActions"):
188 objectType=objectType) 188 categoryItem = self.__generateCategoryItem(category)
189 self.pluginCategoryItems.append(categoryItem) 189 objectType = e5App().getPluginObjectType(category)
190 190 for act in ref.getActions():
191 try: 191 self.__generateShortcutItem(categoryItem, act,
192 dummyHelpViewer = e5App().getObject("DummyHelpViewer") 192 objectType=objectType)
193 self.pluginCategoryItems.append(categoryItem)
194
195 try:
196 dummyHelpViewer = e5App().getObject("DummyHelpViewer")
197 self.helpViewerItem = self.__generateCategoryItem(
198 self.tr("eric6 Web Browser"))
199 for act in dummyHelpViewer.getActions():
200 self.__generateShortcutItem(self.helpViewerItem, act, True)
201 except KeyError:
202 # no QtWebKit available
203 pass
204
205 else:
193 self.helpViewerItem = self.__generateCategoryItem( 206 self.helpViewerItem = self.__generateCategoryItem(
194 self.tr("eric6 Web Browser")) 207 self.tr("eric6 Web Browser"))
195 for act in dummyHelpViewer.getActions(): 208 for act in helpViewer.getActions():
196 self.__generateShortcutItem(self.helpViewerItem, act, True) 209 self.__generateShortcutItem(self.helpViewerItem, act, True)
197 except KeyError:
198 # no QtWebKit available
199 pass
200 210
201 self.__resort() 211 self.__resort()
202 self.__resizeColumns() 212 self.__resizeColumns()
203 213
204 self.__editTopItem = None 214 self.__editTopItem = None
390 400
391 def on_buttonBox_accepted(self): 401 def on_buttonBox_accepted(self):
392 """ 402 """
393 Private slot to handle the OK button press. 403 Private slot to handle the OK button press.
394 """ 404 """
395 self.__saveCategoryActions( 405 if self.__helpViewer is None:
396 self.projectItem, 406 self.__saveCategoryActions(
397 e5App().getObject("Project").getActions()) 407 self.projectItem,
398 self.__saveCategoryActions( 408 e5App().getObject("Project").getActions())
399 self.uiItem, 409 self.__saveCategoryActions(
400 e5App().getObject("UserInterface").getActions('ui')) 410 self.uiItem,
401 self.__saveCategoryActions( 411 e5App().getObject("UserInterface").getActions('ui'))
402 self.wizardsItem, 412 self.__saveCategoryActions(
403 e5App().getObject("UserInterface").getActions('wizards')) 413 self.wizardsItem,
404 self.__saveCategoryActions( 414 e5App().getObject("UserInterface").getActions('wizards'))
405 self.debugItem, 415 self.__saveCategoryActions(
406 e5App().getObject("DebugUI").getActions()) 416 self.debugItem,
407 self.__saveCategoryActions( 417 e5App().getObject("DebugUI").getActions())
408 self.editItem, 418 self.__saveCategoryActions(
409 e5App().getObject("ViewManager").getActions('edit')) 419 self.editItem,
410 self.__saveCategoryActions( 420 e5App().getObject("ViewManager").getActions('edit'))
411 self.fileItem, 421 self.__saveCategoryActions(
412 e5App().getObject("ViewManager").getActions('file')) 422 self.fileItem,
413 self.__saveCategoryActions( 423 e5App().getObject("ViewManager").getActions('file'))
414 self.searchItem, 424 self.__saveCategoryActions(
415 e5App().getObject("ViewManager").getActions('search')) 425 self.searchItem,
416 self.__saveCategoryActions( 426 e5App().getObject("ViewManager").getActions('search'))
417 self.viewItem, 427 self.__saveCategoryActions(
418 e5App().getObject("ViewManager").getActions('view')) 428 self.viewItem,
419 self.__saveCategoryActions( 429 e5App().getObject("ViewManager").getActions('view'))
420 self.macroItem, 430 self.__saveCategoryActions(
421 e5App().getObject("ViewManager").getActions('macro')) 431 self.macroItem,
422 self.__saveCategoryActions( 432 e5App().getObject("ViewManager").getActions('macro'))
423 self.bookmarkItem, 433 self.__saveCategoryActions(
424 e5App().getObject("ViewManager").getActions('bookmark')) 434 self.bookmarkItem,
425 self.__saveCategoryActions( 435 e5App().getObject("ViewManager").getActions('bookmark'))
426 self.spellingItem, 436 self.__saveCategoryActions(
427 e5App().getObject("ViewManager").getActions('spelling')) 437 self.spellingItem,
428 438 e5App().getObject("ViewManager").getActions('spelling'))
429 actions = e5App().getObject("ViewManager").getActions('window') 439
430 if actions: 440 actions = e5App().getObject("ViewManager").getActions('window')
431 self.__saveCategoryActions(self.windowItem, actions) 441 if actions:
432 442 self.__saveCategoryActions(self.windowItem, actions)
433 for categoryItem in self.pluginCategoryItems: 443
434 category = categoryItem.text(0) 444 for categoryItem in self.pluginCategoryItems:
435 ref = e5App().getPluginObject(category) 445 category = categoryItem.text(0)
436 if ref is not None and hasattr(ref, "getActions"): 446 ref = e5App().getPluginObject(category)
437 self.__saveCategoryActions(categoryItem, ref.getActions()) 447 if ref is not None and hasattr(ref, "getActions"):
438 448 self.__saveCategoryActions(categoryItem, ref.getActions())
439 try: 449
440 dummyHelpViewer = e5App().getObject("DummyHelpViewer") 450 try:
441 self.__saveCategoryActions( 451 dummyHelpViewer = e5App().getObject("DummyHelpViewer")
442 self.helpViewerItem, dummyHelpViewer.getActions()) 452 self.__saveCategoryActions(
443 except KeyError: 453 self.helpViewerItem, dummyHelpViewer.getActions())
444 # no QtWebKit available 454 except KeyError:
445 pass 455 # no QtWebKit available
446 456 pass
447 Shortcuts.saveShortcuts() 457
458 Shortcuts.saveShortcuts()
459
460 else:
461 self.__saveCategoryActions(
462 self.helpViewerItem, self.__helpViewer.getActions())
463 Shortcuts.saveShortcuts(helpViewer=self.__helpViewer)
464
448 Preferences.syncPreferences() 465 Preferences.syncPreferences()
449 466
450 self.updateShortcuts.emit() 467 self.updateShortcuts.emit()
451 self.hide() 468 self.hide()
452 469

eric ide

mercurial