src/eric7/Plugins/PluginWizardQRegularExpression.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
equal deleted inserted replaced
9208:3fc8dfeb6ebe 9209:b99e7fd55fd3
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2013 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the QRegularExpression wizard plugin.
8 """
9
10 from PyQt6.QtCore import QObject
11 from PyQt6.QtWidgets import QDialog
12
13 from EricWidgets.EricApplication import ericApp
14 from EricGui.EricAction import EricAction
15 from EricWidgets import EricMessageBox
16
17 import UI.Info
18
19 # Start-Of-Header
20 name = "QRegularExpression Wizard Plugin"
21 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
22 autoactivate = True
23 deactivateable = True
24 version = UI.Info.VersionOnly
25 className = "QRegularExpressionWizard"
26 packageName = "__core__"
27 shortDescription = "Show the QRegularExpression wizard."
28 longDescription = """This plugin shows the QRegularExpression wizard."""
29 pyqtApi = 2
30 # End-Of-Header
31
32 error = ""
33
34
35 class QRegularExpressionWizard(QObject):
36 """
37 Class implementing the QRegularExpression wizard plugin.
38 """
39 def __init__(self, ui):
40 """
41 Constructor
42
43 @param ui reference to the user interface object (UI.UserInterface)
44 """
45 super().__init__(ui)
46 self.__ui = ui
47
48 def activate(self):
49 """
50 Public method to activate this plugin.
51
52 @return tuple of None and activation status (boolean)
53 """
54 self.__initAction()
55 self.__initMenu()
56
57 return None, True
58
59 def deactivate(self):
60 """
61 Public method to deactivate this plugin.
62 """
63 menu = self.__ui.getMenu("wizards")
64 if menu:
65 menu.removeAction(self.action)
66 self.__ui.removeEricActions([self.action], 'wizards')
67
68 def __initAction(self):
69 """
70 Private method to initialize the action.
71 """
72 self.action = EricAction(
73 self.tr('QRegularExpression Wizard'),
74 self.tr('QRegularExpression Wizard...'), 0, 0, self,
75 'wizards_qregularexpression')
76 self.action.setStatusTip(self.tr('QRegularExpression Wizard'))
77 self.action.setWhatsThis(self.tr(
78 """<b>QRegularExpression Wizard</b>"""
79 """<p>This wizard opens a dialog for entering all the parameters"""
80 """ needed to create a QRegularExpression string. The generated"""
81 """ code is inserted at the current cursor position.</p>"""
82 ))
83 self.action.triggered.connect(self.__handle)
84
85 self.__ui.addEricActions([self.action], 'wizards')
86
87 def __initMenu(self):
88 """
89 Private method to add the actions to the right menu.
90 """
91 menu = self.__ui.getMenu("wizards")
92 if menu:
93 menu.addAction(self.action)
94
95 def __callForm(self, editor):
96 """
97 Private method to display a dialog and get the code.
98
99 @param editor reference to the current editor
100 @return the generated code (string)
101 """
102 from WizardPlugins.QRegularExpressionWizard import (
103 QRegularExpressionWizardDialog
104 )
105 dlg = QRegularExpressionWizardDialog.QRegularExpressionWizardDialog(
106 None, True)
107 if dlg.exec() == QDialog.DialogCode.Accepted:
108 line, index = editor.getCursorPosition()
109 indLevel = editor.indentation(line) // editor.indentationWidth()
110 if editor.indentationsUseTabs():
111 indString = '\t'
112 else:
113 indString = editor.indentationWidth() * ' '
114 return (dlg.getCode(indLevel, indString), 1)
115 else:
116 return (None, False)
117
118 def __handle(self):
119 """
120 Private method to handle the wizards action.
121 """
122 editor = ericApp().getObject("ViewManager").activeWindow()
123
124 if editor is None:
125 EricMessageBox.critical(
126 self.__ui,
127 self.tr('No current editor'),
128 self.tr('Please open or create a file first.'))
129 else:
130 code, ok = self.__callForm(editor)
131 if ok:
132 line, index = editor.getCursorPosition()
133 # It should be done on this way to allow undo
134 editor.beginUndoAction()
135 editor.insertAt(code, line, index)
136 editor.endUndoAction()

eric ide

mercurial