eric7/Plugins/PluginWizardQMessageBox.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2007 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the QMessageBox wizard plugin.
8 """
9
10 from PyQt5.QtCore import QObject
11 from PyQt5.QtWidgets import QDialog
12
13 from E5Gui.E5Application import e5App
14 from E5Gui.E5Action import E5Action
15 from E5Gui import E5MessageBox
16
17 import UI.Info
18
19 # Start-Of-Header
20 name = "QMessageBox Wizard Plugin"
21 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
22 autoactivate = True
23 deactivateable = True
24 version = UI.Info.VersionOnly
25 className = "MessageBoxWizard"
26 packageName = "__core__"
27 shortDescription = "Show the QMessageBox wizard."
28 longDescription = """This plugin shows the QMessageBox wizard."""
29 pyqtApi = 2
30 # End-Of-Header
31
32 error = ""
33
34
35 class MessageBoxWizard(QObject):
36 """
37 Class implementing the QMessageBox 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.removeE5Actions([self.action], 'wizards')
67
68 def __initAction(self):
69 """
70 Private method to initialize the action.
71 """
72 self.action = E5Action(
73 self.tr('QMessageBox Wizard'),
74 self.tr('Q&MessageBox Wizard...'), 0, 0, self,
75 'wizards_qmessagebox')
76 self.action.setStatusTip(self.tr('QMessageBox Wizard'))
77 self.action.setWhatsThis(self.tr(
78 """<b>QMessageBox Wizard</b>"""
79 """<p>This wizard opens a dialog for entering all the parameters"""
80 """ needed to create a QMessageBox. The generated code is"""
81 """ inserted at the current cursor position.</p>"""
82 ))
83 self.action.triggered.connect(self.__handle)
84
85 self.__ui.addE5Actions([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.MessageBoxWizard.MessageBoxWizardDialog import (
103 MessageBoxWizardDialog
104 )
105 dlg = MessageBoxWizardDialog(None)
106 if dlg.exec() == QDialog.DialogCode.Accepted:
107 line, index = editor.getCursorPosition()
108 indLevel = editor.indentation(line) // editor.indentationWidth()
109 if editor.indentationsUseTabs():
110 indString = '\t'
111 else:
112 indString = editor.indentationWidth() * ' '
113 return (dlg.getCode(indLevel, indString), True)
114 else:
115 return (None, False)
116
117 def __handle(self):
118 """
119 Private method to handle the wizards action.
120 """
121 editor = e5App().getObject("ViewManager").activeWindow()
122
123 if editor is None:
124 E5MessageBox.critical(
125 self.__ui,
126 self.tr('No current editor'),
127 self.tr('Please open or create a file first.'))
128 else:
129 code, ok = self.__callForm(editor)
130 if ok:
131 line, index = editor.getCursorPosition()
132 # It should be done on this way to allow undo
133 editor.beginUndoAction()
134 editor.insertAt(code, line, index)
135 editor.endUndoAction()

eric ide

mercurial