def setCurrentEditor(self, editor): self.stackedWidget.setCurrentWidget(editor) self.labelTitle.setText(editor.title) scope = editor.getScope() tabTrigger = editor.getTabTrigger() keyEquivalent = editor.getKeyEquivalent() self.lineEditScope.setEnabled(scope is not None) self.lineKeyEquivalentActivation.setEnabled(keyEquivalent is not None) self.lineTabTriggerActivation.setEnabled(tabTrigger is not None) self.comboBoxActivation.setEnabled(tabTrigger is not None or keyEquivalent is not None) if scope is not None: self.lineEditScope.setText(scope) else: self.lineEditScope.clear() if not keyEquivalent and not tabTrigger: self.lineKeyEquivalentActivation.clear() self.lineTabTriggerActivation.clear() self.comboBoxActivation.setCurrentIndex(0) self.lineTabTriggerActivation.setVisible(False) else: if keyEquivalent is not None: self.lineKeyEquivalentActivation.setText(QtGui.QKeySequence(keyEquivalent).toString()) if tabTrigger is not None: self.lineTabTriggerActivation.setText(tabTrigger) index = 0 if keyEquivalent else 1 self.comboBoxActivation.setCurrentIndex(index)
def eventFilter(self, obj, event): if event.type() == QtCore.QEvent.KeyPress and obj == self.lineKeyEquivalentActivation: keyseq = int(event.modifiers()) + event.key() self.stackedWidget.currentWidget().setKeyEquivalent(keyseq) self.lineKeyEquivalentActivation.setText(QtGui.QKeySequence(keyseq).toString()) return True return super(PMXBundleEditor, self).eventFilter(obj, event)
def trigger(self): trigger = [] if self.tabTrigger != None: trigger.append(u"%s⇥" % (self.tabTrigger)) if self.keyEquivalent != None: trigger.append(u"%s" % QtGui.QKeySequence(self.keyEquivalent).toString()) return ", ".join(trigger)
def keyequivalent2keysequence(nemonic): nemonic = list(nemonic) sequence = [] if u"^" in nemonic: sequence.append(QtCore.Qt.CTRL) nemonic.remove(u"^") if u"~" in nemonic: sequence.append(QtCore.Qt.ALT) nemonic.remove(u"~") if u"$" in nemonic: sequence.append(QtCore.Qt.SHIFT) nemonic.remove(u"$") if u"@" in nemonic: sequence.append(QtCore.Qt.META) nemonic.remove(u"@") if len(nemonic) == 1: keys = _keyboard_layout_qtkeys(nemonic.pop()) if QtCore.Qt.SHIFT in keys and QtCore.Qt.SHIFT in sequence: keys.remove(QtCore.Qt.SHIFT) sequence.extend(keys) return sum(sequence) if __name__ == '__main__': tests = ['@r', '^~P', '@&', '@~)'] for test in tests: code = keyequivalent2keysequence(test) print "Code %d is sequence %s and nemonic is %s" % ( code, QtGui.QKeySequence(code).toString(), buildKeyEquivalent(code))
def setupCornerWidget(self): widget = QtGui.QWidget() layout = QtGui.QHBoxLayout() # Add self.pushAddNewTerminal = QtGui.QPushButton() self.pushAddNewTerminal.setIcon(resources.getIcon('utilities-terminal')) self.pushAddNewTerminal.setToolTip(_("Add new terminal")) self.pushAddNewTerminal.setFlat(True) menuAddNew = QtGui.QMenu() actionNew = menuAddNew.addAction("Terminal") actionNew.triggered.connect(self.addTerminal) actionCustom = menuAddNew.addAction("Run in terminal...") actionCustom.triggered.connect(self.launchCustomCommandInTerminal) self.pushAddNewTerminal.setMenu(menuAddNew) layout.addWidget(self.pushAddNewTerminal) # Copy shortcutCopy = QtGui.QShortcut(QtGui.QKeySequence("Ctrl+c"), self) shortcutCopy.activated.connect(lambda s = self: s.currentWidget().copyClipboard()) # Paste self.pushPasteIntoTerminal = QtGui.QPushButton() self.pushPasteIntoTerminal.setIcon(resources.getIcon('edit-paste')) self.pushPasteIntoTerminal.setObjectName('pushPasteIntoTerminal') self.pushPasteIntoTerminal.setToolTip('Paste text into terminal') self.pushPasteIntoTerminal.setFlat(True) self.pushPasteIntoTerminal.pressed.connect(lambda s=self: s.currentWidget().pasteClipboard()) layout.addWidget(self.pushPasteIntoTerminal) # Config self.pushConfigTerminal = QtGui.QPushButton("C") #self.pushConfigTerminal.setIcon(getIcon('preference')) # self.pushConfigTerminal.setObjectName('pushConfigTerminal') # self.pushConfigTerminal.setToolTip('Configure terminal') # self.pushConfigTerminal.setFlat(True) # layout.addWidget(self.pushConfigTerminal) self.cornerMenuButton = QtGui.QPushButton() self.cornerMenuButtonMenu = QtGui.QMenu() self.cornerMenuButton.setMenu(self.cornerMenuButtonMenu) self.cornerMenuButtonMenu.addAction("Alfa") self.cornerMenuButtonMenu.addAction("Beta") self.cornerMenuButtonMenu.addAction("Gama") layout.addWidget(self.cornerMenuButton) # Close self.pushCloseTerminal = QtGui.QPushButton() self.pushCloseTerminal.setIcon(resources.getIcon("close")) self.pushCloseTerminal.setObjectName("pushCloseTerminal") self.pushCloseTerminal.setToolTip(_("Close terminal")) self.pushCloseTerminal.setFlat(True) self.pushCloseTerminal.pressed.connect(lambda s=self: s.removeTab(s.currentIndex())) layout.addWidget(self.pushCloseTerminal) widget.setLayout(layout) # Save some space widget.setStyleSheet(''' QPushButton { margin: 0px; padding: 0 0px 0 2px; } ''') self.setCornerWidget(widget)
def __init__(self): PMXBaseWidgetComponent.__init__(self) self.toggleViewAction().setShortcut(QtGui.QKeySequence(self.SHORTCUT)) self.toggleViewAction().setIcon(self.ICON)