def __init__(self, *args, **kwargs): super(ShortcutManagerDlg, self).__init__(*args, **kwargs) self.setWindowTitle("Shortcut Preferences") self.setMinimumWidth(500) self.setMinimumHeight(500) mgr = ShortcutManager() # Singleton scrollWidget = QWidget(parent=self) tempLayout = QVBoxLayout(scrollWidget) scrollWidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) treeWidget = QTreeWidget(parent=scrollWidget) treeWidget.setHeaderLabels(["Action", "Shortcut"]) treeWidget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) treeWidget.setColumnWidth(0, 300) treeWidget.setColumnWidth(1, 50) action_descriptions = mgr.get_all_action_descriptions() target_keyseqs = mgr.get_keyseq_reversemap() # Create a LineEdit for each shortcut, # and keep track of them in a dict shortcutEdits = collections.OrderedDict() for group, targets in action_descriptions.items(): groupItem = QTreeWidgetItem(treeWidget, QStringList(group)) for (name, description) in targets: edit = QLineEdit(target_keyseqs[(group, name)]) shortcutEdits[(group, name)] = edit item = QTreeWidgetItem(groupItem, QStringList(description)) item.setText(0, description) treeWidget.setItemWidget(item, 1, edit) tempLayout.addWidget(treeWidget) # Add ok and cancel buttons buttonLayout = QHBoxLayout() cancelButton = QPushButton("Cancel") cancelButton.clicked.connect(self.reject) okButton = QPushButton("OK") okButton.clicked.connect(self.accept) okButton.setDefault(True) buttonLayout.addSpacerItem(QSpacerItem(10, 0, QSizePolicy.Expanding)) buttonLayout.addWidget(cancelButton) buttonLayout.addWidget(okButton) tempLayout.addLayout(buttonLayout) scroll = QScrollArea(parent=self) scroll.setWidget(scrollWidget) scroll.setWidgetResizable(True) scroll.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) dlgLayout = QVBoxLayout() dlgLayout.addWidget(scroll) self.setLayout(dlgLayout) # Show the window result = self.exec_() # Did the user hit 'cancel'? if result != QDialog.Accepted: return for (group, name), edit in shortcutEdits.items(): oldKey = target_keyseqs[(group, name)] newKey = str(edit.text()) if oldKey.lower() != newKey.lower() and newKey != "": mgr.change_keyseq(group, name, oldKey, newKey) mgr.store_to_preferences()
def __init__(self, *args, **kwargs): super(ShortcutManagerDlg, self).__init__(*args, **kwargs) self.setWindowTitle("Shortcut Preferences") self.setMinimumWidth(500) self.setMinimumHeight(500) mgr = ShortcutManager() # Singleton scrollWidget = QWidget(parent=self) tempLayout = QVBoxLayout( scrollWidget ) scrollWidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) treeWidget = QTreeWidget(parent=scrollWidget) treeWidget.setHeaderLabels( ["Action", "Shortcut"] ) treeWidget.setSizePolicy( QSizePolicy.Preferred, QSizePolicy.Preferred ) treeWidget.setColumnWidth(0, 300) treeWidget.setColumnWidth(1, 50) action_descriptions = mgr.get_all_action_descriptions() target_keyseqs = mgr.get_keyseq_reversemap() # Create a LineEdit for each shortcut, # and keep track of them in a dict shortcutEdits = collections.OrderedDict() for group, targets in action_descriptions.items(): groupItem = QTreeWidgetItem( treeWidget, QStringList( group ) ) for (name, description) in targets: edit = QLineEdit( target_keyseqs[(group,name)] ) shortcutEdits[(group, name)] = edit item = QTreeWidgetItem( groupItem, QStringList( description ) ) item.setText(0, description) treeWidget.setItemWidget( item, 1, edit ) tempLayout.addWidget( treeWidget ) # Add ok and cancel buttons buttonLayout = QHBoxLayout() cancelButton = QPushButton("Cancel") cancelButton.clicked.connect( self.reject ) okButton = QPushButton("OK") okButton.clicked.connect( self.accept ) okButton.setDefault(True) buttonLayout.addSpacerItem(QSpacerItem(10, 0, QSizePolicy.Expanding)) buttonLayout.addWidget(cancelButton) buttonLayout.addWidget(okButton) tempLayout.addLayout(buttonLayout) scroll = QScrollArea(parent=self) scroll.setWidget(scrollWidget) scroll.setWidgetResizable(True) scroll.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) dlgLayout = QVBoxLayout() dlgLayout.addWidget(scroll) self.setLayout(dlgLayout) # Show the window result = self.exec_() # Did the user hit 'cancel'? if result != QDialog.Accepted: return for (group, name), edit in shortcutEdits.items(): oldKey = target_keyseqs[(group, name)] newKey = str(edit.text()) if oldKey.lower() != newKey.lower() and newKey != "": mgr.change_keyseq(group, name, oldKey, newKey) mgr.store_to_preferences()