src/eric7/Plugins/PluginWizardEricMessageBox.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) 2010 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the EricMessageBox 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 = "EricMessageBox Wizard Plugin"
21 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
22 autoactivate = True
23 deactivateable = True
24 version = UI.Info.VersionOnly
25 className = "EricMessageBoxWizard"
26 packageName = "__core__"
27 shortDescription = "Show the EricMessageBox wizard."
28 longDescription = """This plugin shows the EricMessageBox wizard."""
29 pyqtApi = 2
30 # End-Of-Header
31
32 error = ""
33
34
35 class EricMessageBoxWizard(QObject):
36 """
37 Class implementing the EricMessageBox 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('EricMessageBox Wizard'),
74 self.tr('EricMessageBox Wizard...'), 0, 0, self,
75 'wizards_e5messagebox')
76 self.action.setStatusTip(self.tr('EricMessageBox Wizard'))
77 self.action.setWhatsThis(self.tr(
78 """<b>EricMessageBox Wizard</b>"""
79 """<p>This wizard opens a dialog for entering all the parameters"""
80 """ needed to create an EricMessageBox. The generated code is"""
81 """ 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.EricMessageBoxWizard.EricMessageBoxWizardDialog \
103 import EricMessageBoxWizardDialog
104 dlg = EricMessageBoxWizardDialog(None)
105 if dlg.exec() == QDialog.DialogCode.Accepted:
106 line, index = editor.getCursorPosition()
107 indLevel = editor.indentation(line) // editor.indentationWidth()
108 if editor.indentationsUseTabs():
109 indString = '\t'
110 else:
111 indString = editor.indentationWidth() * ' '
112 return (dlg.getCode(indLevel, indString), True)
113 else:
114 return (None, False)
115
116 def __handle(self):
117 """
118 Private method to handle the wizards action.
119 """
120 editor = ericApp().getObject("ViewManager").activeWindow()
121
122 if editor is None:
123 EricMessageBox.critical(
124 self.__ui,
125 self.tr('No current editor'),
126 self.tr('Please open or create a file first.'))
127 else:
128 code, ok = self.__callForm(editor)
129 if ok:
130 line, index = editor.getCursorPosition()
131 # It should be done on this way to allow undo
132 editor.beginUndoAction()
133 editor.insertAt(code, line, index)
134 editor.endUndoAction()
135
136 #
137 # eflag: noqa = M841

eric ide

mercurial