eric6/Plugins/PluginWizardE5MessageBox.py

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

eric ide

mercurial