diff -r 000000000000 -r de9c2efb9d02 Plugins/PluginWizardQRegExp.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/PluginWizardQRegExp.py Mon Dec 28 16:03:33 2009 +0000 @@ -0,0 +1,129 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2007 - 2009 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the QRegExp wizard plugin. +""" + +from PyQt4.QtCore import QObject, SIGNAL +from PyQt4.QtGui import QDialog, QMessageBox + +from E4Gui.E4Application import e4App +from E4Gui.E4Action import E4Action + +from WizardPlugins.QRegExpWizard.QRegExpWizardDialog import \ + QRegExpWizardDialog + +# Start-Of-Header +name = "QRegExp Wizard Plugin" +author = "Detlev Offenbach <detlev@die-offenbachs.de>" +autoactivate = True +deactivateable = True +version = "5.0.0" +className = "QRegExpWizard" +packageName = "__core__" +shortDescription = "Show the QRegExp wizard." +longDescription = """This plugin shows the QRegExp wizard.""" +pyqtApi = 2 +# End-Of-Header + +error = "" + +class QRegExpWizard(QObject): + """ + Class implementing the QRegExp wizard plugin. + """ + def __init__(self, ui): + """ + Constructor + + @param ui reference to the user interface object (UI.UserInterface) + """ + QObject.__init__(self, ui) + self.__ui = ui + + def activate(self): + """ + Public method to activate this plugin. + + @return tuple of None and activation status (boolean) + """ + self.__initAction() + self.__initMenu() + + return None, True + + def deactivate(self): + """ + Public method to deactivate this plugin. + """ + menu = self.__ui.getMenu("wizards") + if menu: + menu.removeAction(self.action) + self.__ui.removeE4Actions([self.action], 'wizards') + + def __initAction(self): + """ + Private method to initialize the action. + """ + self.action = E4Action(self.trUtf8('QRegExp Wizard'), + self.trUtf8('Q&RegExp Wizard...'), 0, 0, self, + 'wizards_qregexp') + self.action.setStatusTip(self.trUtf8('QRegExp Wizard')) + self.action.setWhatsThis(self.trUtf8( + """<b>QRegExp Wizard</b>""" + """<p>This wizard opens a dialog for entering all the parameters""" + """ needed to create a QRegExp. The generated code is inserted""" + """ at the current cursor position.</p>""" + )) + self.connect(self.action, SIGNAL('triggered()'), self.__handle) + + self.__ui.addE4Actions([self.action], 'wizards') + + def __initMenu(self): + """ + Private method to add the actions to the right menu. + """ + menu = self.__ui.getMenu("wizards") + if menu: + menu.addAction(self.action) + + def __callForm(self, editor): + """ + Private method to display a dialog and get the code. + + @param editor reference to the current editor + @return the generated code (string) + """ + dlg = QRegExpWizardDialog(None, True) + if dlg.exec_() == QDialog.Accepted: + line, index = editor.getCursorPosition() + indLevel = editor.indentation(line)/editor.indentationWidth() + if editor.indentationsUseTabs(): + indString = '\t' + else: + indString = editor.indentationWidth() * ' ' + return (dlg.getCode(indLevel, indString), 1) + else: + return (None, False) + + def __handle(self): + """ + Private method to handle the wizards action + """ + editor = e4App().getObject("ViewManager").activeWindow() + + if editor == None: + QMessageBox.critical(None, + self.trUtf8('No current editor'), + self.trUtf8('Please open or create a file first.')) + else: + code, ok = self.__callForm(editor) + if ok: + line, index = editor.getCursorPosition() + # It should be done on this way to allow undo + editor.beginUndoAction() + editor.insertAt(code, line, index) + editor.endUndoAction()