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
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')
class UpdateDialog(KDialog): def __init__(self, mainWindow, renderThread, pluginConfig=None): KDialog.__init__(self, mainWindow) self.renderThread = renderThread self.databaseUrl = None if pluginConfig: self.databaseUrl = util.readConfigString(self.pluginConfig, "Update database url", None) if not self.databaseUrl: self.databaseUrl = unicode('sqlite:///' + util.getLocalData('dictionaries.db')) self.renderThread.setObject(DictionaryInfo, databaseUrl=self.databaseUrl) self.setCaption(i18n("Install/Update Dictionaries")) self.setButtons(KDialog.ButtonCode(KDialog.Close)) self.enableButton(KDialog.Cancel, False) # TODO can we defer the creation of the update widget until the dialog is shown? self.updateWidget = UpdateWidget(mainWindow, renderThread, pluginConfig) self.connect(self.updateWidget, SIGNAL("working(bool)"), self.slotUpdateWorking) self.setMainWidget(self.updateWidget) self.connect(self, SIGNAL("finished()"), self.slotFinish) self.initialised = False self.connect(self.renderThread, SIGNAL("jobFinished"), self.contentRendered) self.connect(self.renderThread, SIGNAL("jobErrorneous"), self.renderingFailed) self.actionCollection = KActionCollection(self) self.setupActions() def showEvent(self, event): if not self.initialised: self.initialised = True self.loadDatabaseBuilder() self.updateWidget.setup() def setupActions(self): # update dictionaries self._updateAction = KAction(KIcon('system-software-update'), i18n("&Update..."), self) self.actionCollection.addAction("updatedictionaries", self._updateAction) self._updateAction.setWhatsThis( i18n("Download and update dictionaries.")) self.connect(self._updateAction, SIGNAL("triggered(bool)"), self.exec_) # optimise database self._optimiseAction = KAction(KIcon('system-run'), i18n("&Optimise database"), self) self.actionCollection.addAction("optimisedatabase", self._optimiseAction) self._optimiseAction.setWhatsThis( i18n("Rearranges and optimises the database.")) self._optimiseAction.setEnabled(True) # TODO self.connect(self._optimiseAction, SIGNAL("triggered(bool)"), self.slotOptimiseDatabase) def updateAction(self, actionCollection): actionCollection.addAction(self._updateAction.objectName(), self._updateAction) return self._updateAction def optimiseAction(self, actionCollection): actionCollection.addAction(self._optimiseAction.objectName(), self._optimiseAction) return self._optimiseAction def slotUpdateWorking(self, working): if working: self.setButtons(KDialog.ButtonCode(KDialog.Cancel)) else: self.setButtons(KDialog.ButtonCode(KDialog.Close)) def slotFinish(self): if self.updateWidget.isWorking(): self.updateWidget.cancel() def slotOptimiseDatabase(self): self.loadDatabaseBuilder() dbBuild = self.renderThread.getObjectInstance(build.DatabaseBuilder) if dbBuild.isOptimizable(): if KMessageBox.warningContinueCancel(self, i18n("This operation might take some time."), i18n("Optimise Database"), KStandardGuiItem.cont(), KStandardGuiItem.cancel(), 'database_optimise') \ == KMessageBox.Continue: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.currentJob = self.renderThread.enqueue( build.DatabaseBuilder, 'optimize') def loadDatabaseBuilder(self): if not self.renderThread.hasObject(build.DatabaseBuilder): options = EclectusCommandLineBuilder.getDefaultOptions() db = getDBConnector(getDatabaseConfiguration(self.databaseUrl)) self.renderThread.setObject(build.DatabaseBuilder, dbConnectInst=db, **options) def contentRendered(self, id, classObject, method, args, param, content): if classObject == build.DatabaseBuilder and method == 'optimize': QApplication.restoreOverrideCursor() def renderingFailed(self, id, classObject, method, args, param, e, stacktrace): if classObject == build.DatabaseBuilder and method == 'optimize': print >>sys.stderr, stacktrace QApplication.restoreOverrideCursor()