def __init__(self, manager, parent): QDialog.__init__(self, parent) self._manager = manager self._model = ActionModel(manager) self._originalShortcuts = {} self._proxy = _RecursiveSortFilterProxyModel(self) self._proxy.setSourceModel(self._model) self._proxy.setFilterCaseSensitivity(Qt.CaseInsensitive) self._proxy.setSortCaseSensitivity(Qt.CaseInsensitive) uic.loadUi( os.path.join(os.path.dirname(__file__), 'ActionShortcutEditor.ui'), self) self.leFilter.setPromptText("Text filter...") self.tvActions.setModel(self._proxy) self.tvActions.header().setResizeMode(0, QHeaderView.Stretch) self.tvActions.header().setResizeMode(1, QHeaderView.ResizeToContents) self.tvActions.header().setResizeMode(2, QHeaderView.ResizeToContents) self.tvActions.expandAll() # connections self.tvActions.selectionModel().selectionChanged.connect( self.tvActions_selectionModel_selectionChanged) self.tvActions_selectionModel_selectionChanged()
def __init__(self, manager, parent): QDialog.__init__(self, parent) self._manager = manager self._model = ActionModel(manager) self._originalShortcuts = {} self._proxy = _RecursiveSortFilterProxyModel( self ) self._proxy.setSourceModel( self._model ) self._proxy.setFilterCaseSensitivity( Qt.CaseInsensitive ) self._proxy.setSortCaseSensitivity( Qt.CaseInsensitive ) uic.loadUi(os.path.join(os.path.dirname(__file__), 'ActionShortcutEditor.ui'), self) self.leFilter.setPromptText("Text filter...") self.tvActions.setModel( self._proxy ) self.tvActions.header().setResizeMode( 0, QHeaderView.Stretch ) self.tvActions.header().setResizeMode( 1, QHeaderView.ResizeToContents ) self.tvActions.header().setResizeMode( 2, QHeaderView.ResizeToContents ) self.tvActions.expandAll() # connections self.tvActions.selectionModel().selectionChanged.connect(self.tvActions_selectionModel_selectionChanged) self.tvActions_selectionModel_selectionChanged()
class ActionShortcutEditor(QDialog): def __init__(self, manager, parent): QDialog.__init__(self, parent) self._manager = manager self._model = ActionModel(manager) self._originalShortcuts = {} self._proxy = _RecursiveSortFilterProxyModel( self ) self._proxy.setSourceModel( self._model ) self._proxy.setFilterCaseSensitivity( Qt.CaseInsensitive ) self._proxy.setSortCaseSensitivity( Qt.CaseInsensitive ) uic.loadUi(os.path.join(os.path.dirname(__file__), 'ActionShortcutEditor.ui'), self) self.leFilter.setPromptText("Text filter...") self.tvActions.setModel( self._proxy ) self.tvActions.header().setResizeMode( 0, QHeaderView.Stretch ) self.tvActions.header().setResizeMode( 1, QHeaderView.ResizeToContents ) self.tvActions.header().setResizeMode( 2, QHeaderView.ResizeToContents ) self.tvActions.expandAll() # connections self.tvActions.selectionModel().selectionChanged.connect(self.tvActions_selectionModel_selectionChanged) self.tvActions_selectionModel_selectionChanged() def selectedAction(self): selected = self.tvActions.selectionModel().selectedIndexes() if selected: proxyIndex = selected[0] index = self._proxy.mapToSource( proxyIndex ) action = self._model.actionByIndex( index ) if not action.menu(): return action return None def setShortcut(self, action, shortcut ): if not action in self._originalShortcuts: self._originalShortcuts[action] = action.shortcut() try: self._model.setShortcut( action, shortcut) except UserWarning as ex: QMessageBox.information(self, None, unicode(ex)) return self.tvActions_selectionModel_selectionChanged() def on_leFilter_textChanged(self, text ): self._proxy.setFilterWildcard( text ) self.tvActions.expandAll() def tvActions_selectionModel_selectionChanged(self): action = self.selectedAction() if action is not None: self.kseShortcut.setText( action.shortcut().toString() ) else: self.kseShortcut.clear() self.kseShortcut.setEnabled( action is not None ) self.tbSet.setEnabled( False ) self.dbbButtons.button( QDialogButtonBox.Reset ).setEnabled( False ) self.dbbButtons.button( QDialogButtonBox.RestoreDefaults ).setEnabled( action is not None and action.shortcut() != self._manager.defaultShortcut( action ) ) self.kseShortcut.setFocus() def on_kseShortcut_textChanged(self, text ): action = self.selectedAction() self.tbSet.setEnabled( action is not None and self.kseShortcut.text() is not None ) self.dbbButtons.button( QDialogButtonBox.Reset ).setEnabled( True ) self.dbbButtons.button( QDialogButtonBox.RestoreDefaults ).setEnabled( action is not None and action.shortcut() != self._manager.defaultShortcut( action ) ) def on_tbSet_pressed(self): action = self.selectedAction() if action is not None: self.setShortcut( action, self.kseShortcut.text() ) def on_dbbButtons_clicked(self, button ): if self.dbbButtons.standardButton( button ) == QDialogButtonBox.Reset: self.tvActions_selectionModel_selectionChanged() elif self.dbbButtons.standardButton( button ) == QDialogButtonBox.RestoreDefaults: action = self.selectedAction() if action is not None: self.setShortcut( action, self._manager.defaultShortcut( action ) ) elif self.dbbButtons.standardButton( button ) == QDialogButtonBox.Ok: self.accept() elif self.dbbButtons.standardButton( button ) == QDialogButtonBox.Cancel: for action in self._originalShortcuts.keys(): action.setShortcut( self._originalShortcuts[action] ) self.reject() else: assert 0
class ActionShortcutEditor(QDialog): def __init__(self, manager, parent): QDialog.__init__(self, parent) self._manager = manager self._model = ActionModel(manager) self._originalShortcuts = {} self._proxy = _RecursiveSortFilterProxyModel(self) self._proxy.setSourceModel(self._model) self._proxy.setFilterCaseSensitivity(Qt.CaseInsensitive) self._proxy.setSortCaseSensitivity(Qt.CaseInsensitive) uic.loadUi( os.path.join(os.path.dirname(__file__), 'ActionShortcutEditor.ui'), self) self.leFilter.setPromptText("Text filter...") self.tvActions.setModel(self._proxy) self.tvActions.header().setResizeMode(0, QHeaderView.Stretch) self.tvActions.header().setResizeMode(1, QHeaderView.ResizeToContents) self.tvActions.header().setResizeMode(2, QHeaderView.ResizeToContents) self.tvActions.expandAll() # connections self.tvActions.selectionModel().selectionChanged.connect( self.tvActions_selectionModel_selectionChanged) self.tvActions_selectionModel_selectionChanged() def selectedAction(self): selected = self.tvActions.selectionModel().selectedIndexes() if selected: proxyIndex = selected[0] index = self._proxy.mapToSource(proxyIndex) action = self._model.actionByIndex(index) if not action.menu(): return action return None def setShortcut(self, action, shortcut): if not action in self._originalShortcuts: self._originalShortcuts[action] = action.shortcut() try: self._model.setShortcut(action, shortcut) except UserWarning as ex: QMessageBox.information(self, None, unicode(ex)) return self.tvActions_selectionModel_selectionChanged() def on_leFilter_textChanged(self, text): self._proxy.setFilterWildcard(text) self.tvActions.expandAll() def tvActions_selectionModel_selectionChanged(self): action = self.selectedAction() if action is not None: self.kseShortcut.setText(action.shortcut().toString()) else: self.kseShortcut.clear() self.kseShortcut.setEnabled(action is not None) self.tbSet.setEnabled(False) self.dbbButtons.button(QDialogButtonBox.Reset).setEnabled(False) self.dbbButtons.button(QDialogButtonBox.RestoreDefaults).setEnabled( action is not None and action.shortcut() != self._manager.defaultShortcut(action)) self.kseShortcut.setFocus() def on_kseShortcut_textChanged(self, text): action = self.selectedAction() self.tbSet.setEnabled(action is not None and self.kseShortcut.text() is not None) self.dbbButtons.button(QDialogButtonBox.Reset).setEnabled(True) self.dbbButtons.button(QDialogButtonBox.RestoreDefaults).setEnabled( action is not None and action.shortcut() != self._manager.defaultShortcut(action)) def on_tbSet_pressed(self): action = self.selectedAction() if action is not None: self.setShortcut(action, self.kseShortcut.text()) def on_dbbButtons_clicked(self, button): if self.dbbButtons.standardButton(button) == QDialogButtonBox.Reset: self.tvActions_selectionModel_selectionChanged() elif self.dbbButtons.standardButton( button) == QDialogButtonBox.RestoreDefaults: action = self.selectedAction() if action is not None: self.setShortcut(action, self._manager.defaultShortcut(action)) elif self.dbbButtons.standardButton(button) == QDialogButtonBox.Ok: self.accept() elif self.dbbButtons.standardButton(button) == QDialogButtonBox.Cancel: for action in self._originalShortcuts.keys(): action.setShortcut(self._originalShortcuts[action]) self.reject() else: assert 0