eric7/Plugins/PluginWizardDotDesktop.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) 2013 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the .desktop wizard plug-in.
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 = ".desktop Wizard Plug-in"
21 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
22 autoactivate = True
23 deactivateable = True
24 version = UI.Info.VersionOnly
25 className = "DotDesktopWizard"
26 packageName = "__core__"
27 shortDescription = "Wizard for the creation of a .desktop file."
28 longDescription = (
29 """This plug-in implements a wizard to generate code for"""
30 """ a .desktop file."""
31 )
32 needsRestart = False
33 pyqtApi = 2
34 # End-of-Header
35
36 error = ""
37
38
39 class DotDesktopWizard(QObject):
40 """
41 Class implementing the .desktop wizard plug-in.
42 """
43 def __init__(self, ui):
44 """
45 Constructor
46
47 @param ui reference to the user interface object (UI.UserInterface)
48 """
49 super().__init__(ui)
50 self.__ui = ui
51 self.__action = None
52
53 def __initialize(self):
54 """
55 Private slot to (re)initialize the plug-in.
56 """
57 self.__act = None
58
59 def activate(self):
60 """
61 Public method to activate this plug-in.
62
63 @return tuple of None and activation status (boolean)
64 """
65 self.__initAction()
66 self.__initMenu()
67
68 return None, True
69
70 def deactivate(self):
71 """
72 Public method to deactivate this plug-in.
73 """
74 menu = self.__ui.getMenu("wizards")
75 if menu:
76 menu.removeAction(self.__action)
77 self.__ui.removeE5Actions([self.__action], 'wizards')
78
79 def __initAction(self):
80 """
81 Private method to initialize the action.
82 """
83 self.__action = E5Action(
84 self.tr('.desktop Wizard'),
85 self.tr('.&desktop Wizard...'),
86 0, 0, self,
87 'wizards_dotdesktop')
88 self.__action.setStatusTip(self.tr('.desktop Wizard'))
89 self.__action.setWhatsThis(self.tr(
90 """<b>.desktop Wizard</b>"""
91 """<p>This wizard opens a dialog for entering all the parameters"""
92 """ needed to create the contents of a .desktop file. The"""
93 """ generated code replaces the text of the current editor."""
94 """ Alternatively a new editor is opened.</p>"""
95 ))
96 self.__action.triggered.connect(self.__handle)
97
98 self.__ui.addE5Actions([self.__action], 'wizards')
99
100 def __initMenu(self):
101 """
102 Private method to add the actions to the right menu.
103 """
104 menu = self.__ui.getMenu("wizards")
105 if menu:
106 menu.addAction(self.__action)
107
108 def __handle(self):
109 """
110 Private method to handle the wizards action.
111 """
112 editor = e5App().getObject("ViewManager").activeWindow()
113
114 if editor is None:
115 E5MessageBox.critical(
116 self.__ui,
117 self.tr('No current editor'),
118 self.tr('Please open or create a file first.'))
119 else:
120 if editor.text():
121 ok = E5MessageBox.yesNo(
122 self.__ui,
123 self.tr(".desktop Wizard"),
124 self.tr("""The current editor contains text."""
125 """ Shall this be replaced?"""),
126 icon=E5MessageBox.Critical)
127 if not ok:
128 e5App().getObject("ViewManager").newEditor()
129 editor = e5App().getObject("ViewManager").activeWindow()
130
131 from WizardPlugins.DotDesktopWizard.DotDesktopWizardDialog import (
132 DotDesktopWizardDialog
133 )
134 dlg = DotDesktopWizardDialog(None)
135 if dlg.exec() == QDialog.DialogCode.Accepted:
136 code = dlg.getCode()
137 if code:
138 editor.selectAll()
139 # It should be done on this way to allow undo
140 editor.beginUndoAction()
141 editor.replaceSelectedText(code)
142 editor.endUndoAction()
143
144 editor.setLanguage("dummy.desktop")
145
146 #
147 # eflag: noqa = M801

eric ide

mercurial