def addAction(self, objectName, icon, text, shortcut = "", slot = None, menuName = None): act = KAction(KIcon(icon), text, self) act.setObjectName(objectName) # Set shortcut if not act.objectName() in kate.configuration: kate.configuration[act.objectName()] = shortcut act.setShortcut(kate.configuration[act.objectName()]) # Set slots if slot != None: act.triggered.connect( slot ) kate.mainInterfaceWindow().window().actionCollection().addAction(act.objectName(), act) # Add to menu if menuName != None: menu = kate.mainInterfaceWindow().window().findChild(QMenu, menuName.lower()) if menu == None: menu = kate.mainInterfaceWindow().window().menuBar().addMenu(menuName) menu.addAction(act) # Save changes to shortcut act.changed.connect( self.onActionChange ) return act
def addHotKey(self, name, key): if not KGlobalAccel.isGlobalShortcutAvailable(key): actions = KGlobalAccel.getGlobalShortcutsByKey(key) if KGlobalAccel.promptStealShortcutSystemwide(None, actions, key): KGlobalAccel.stealShortcutSystemwide(key) action = KAction(None) action.setObjectName(name) action.setText(name) action.setGlobalShortcut(KShortcut(key), \ KAction.ShortcutType(KAction.ActiveShortcut | KAction.DefaultShortcut), KAction.NoAutoloading) action.triggered.connect(self.catchGlobalKey) self.actions[self.nextId] = action self.nextId += 1 return self.nextId - 1
def create (parent, ac): """here be common actions for satyr skins""" actions= ( ('queue', Qt.CTRL+Qt.Key_Q, False, "Queue songs"), ('rename', Qt.CTRL+Qt.Key_R, False, "Arrange songs"), ('toggleVA', Qt.CTRL+Qt.Key_V, False, "Toggle 'Various Artists' flag"), ('delete', Qt.CTRL+Qt.Key_D, False, "Delete songs"), # globals ('player.prev', KShortcut (Qt.Key_MediaPrevious), True, "Previous song"), ('player.stop', KShortcut (Qt.Key_MediaStop), True, "Stop"), ('player.play', KShortcut (Qt.Key_MediaPlay), True, "Play"), ('player.pause', KShortcut (Qt.Key_Pause), True, "Toggle Pause"), ('player.play_pause', KShortcut (Qt.Key_MediaPlay), True, "Switch between Play and Pause"), ('player.next', KShortcut (Qt.Key_MediaNext), True, "Next song"), ('player.toggleStopAfter', KShortcut (Qt.Key_Eject), True, "Stop after playing current song"), # TODO: S-Play/Pause -> cycle random # TODO: S-|<</>>| -> beginning/prev album, next album ) for fqn, shortcut, globalSC, text in actions: try: obj, name= traverseObjects (parent, fqn) except AttributeError, e: logger.warning ("actions.create(): %s, shortcut for %s not set", e.args[0], fqn) else: fqn= "satyr."+fqn action= KAction (text, parent) action.setObjectName (fqn) if globalSC: action.setGlobalShortcut (shortcut) else: action.setShortcut (shortcut) ac.addAction (fqn, action) # the skin can decide to not implement an action! method= getattr (obj, name, None) if method is not None: action.triggered.connect (method) else: logger.warning ("actions.create(): no method %s, shortcut for %s not set", name, fqn)
class KateReload(QObject): def __init__(self): QObject.__init__(self) self.window = kate.mainInterfaceWindow().window() kate.configuration.root.clear() self.act = KAction(KIcon("reload"), i18n("Auto Reload"), self) self.act.setObjectName("auto reload") self.window.actionCollection().addAction(self.act.objectName(), self.act) self.window.findChild(QMenu, 'view').addAction(self.act) if not self.act.objectName() in kate.configuration: kate.configuration[self.act.objectName()] = "alt+r" self.act.setShortcut(kate.configuration[self.act.objectName()]) self.act.setCheckable(True) self.act.setChecked(False) self.act.changed.connect(self.onActionChange) self.act.toggled.connect(self.toggle) kate.mainInterfaceWindow().viewChanged.connect(self.onViewChanged) def onViewChanged(self): try: doc = sip.cast(kate.activeDocument(), KateDocument) except kate.api.NoActiveView: return self.act.blockSignals(True) if doc.property('AutoReload'): self.act.setChecked(True) else: self.act.setChecked(False) self.act.blockSignals(False) def onActionChange(self): kate.configuration[self.sender().objectName()] = self.sender().shortcut().toString() kate.configuration.save() def toggle(self, state): doc = sip.cast(kate.activeDocument(), KateDocument) if state == True: self.enable(doc) else: self.disable(doc) def enable(self, doc): if doc.url() == '': self.act.blockSignals(True) showError(i18n('Can\'t auto-reload unsaved file')) self.act.setChecked(False) self.act.blockSignals(False) return doc.setModifiedOnDiskWarning(False) doc.modifiedOnDisk.connect(doc.documentReload) doc.setProperty('AutoReload', True) showOk(i18n('Auto-Reload enabled')) def disable(self, doc): if doc.property('AutoReload'): doc.setModifiedOnDiskWarning(True) doc.modifiedOnDisk.disconnect(doc.documentReload) doc.setProperty('AutoReload', False) showOk(i18n('Auto-Reload disabled')) else: print('Error disabled called on something with no auto-reload')
class KateReload(QObject): def __init__(self): QObject.__init__(self) self.window = kate.mainInterfaceWindow().window() kate.configuration.root.clear() self.act = KAction(KIcon("reload"), i18n("Auto Reload"), self) self.act.setObjectName("auto reload") self.window.actionCollection().addAction(self.act.objectName(), self.act) self.window.findChild(QMenu, 'view').addAction(self.act) if not self.act.objectName() in kate.configuration: kate.configuration[self.act.objectName()] = "alt+r" self.act.setShortcut(kate.configuration[self.act.objectName()]) self.act.setCheckable(True) self.act.setChecked(False) self.act.changed.connect(self.onActionChange) self.act.toggled.connect(self.toggle) kate.mainInterfaceWindow().viewChanged.connect(self.onViewChanged) def onViewChanged(self): try: doc = sip.cast(kate.activeDocument(), KateDocument) except kate.api.NoActiveView: return self.act.blockSignals(True) if doc.property('AutoReload'): self.act.setChecked(True) else: self.act.setChecked(False) self.act.blockSignals(False) def onActionChange(self): kate.configuration[ self.sender().objectName()] = self.sender().shortcut().toString() kate.configuration.save() def toggle(self, state): doc = sip.cast(kate.activeDocument(), KateDocument) if state == True: self.enable(doc) else: self.disable(doc) def enable(self, doc): if doc.url() == '': self.act.blockSignals(True) showError(i18n('Can\'t auto-reload unsaved file')) self.act.setChecked(False) self.act.blockSignals(False) return doc.setModifiedOnDiskWarning(False) doc.modifiedOnDisk.connect(doc.documentReload) doc.setProperty('AutoReload', True) showOk(i18n('Auto-Reload enabled')) def disable(self, doc): if doc.property('AutoReload'): doc.setModifiedOnDiskWarning(True) doc.modifiedOnDisk.disconnect(doc.documentReload) doc.setProperty('AutoReload', False) showOk(i18n('Auto-Reload disabled')) else: print('Error disabled called on something with no auto-reload')