PluginPrintRemover.py

Mon, 26 Apr 2021 19:46:00 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 26 Apr 2021 19:46:00 +0200
changeset 54
d061dda35cef
parent 53
359f9805af93
child 57
8e12947695cb
permissions
-rw-r--r--

Implemented some code simplifications.

0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
53
359f9805af93 Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
3 # Copyright (c) 2013 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the Print Remover plug-in.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
54
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
10 import contextlib
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import os
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
28
46e76a5913cf Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
13 from PyQt5.QtCore import QObject, QTranslator, QCoreApplication
46e76a5913cf Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
14 from PyQt5.QtWidgets import QAction, QMenu
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from E5Gui.E5Application import e5App
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 import Preferences
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 # Start-Of-Header
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 name = "Print Remover Plug-in"
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 autoactivate = True
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 deactivateable = True
54
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
25 version = "3.1.0"
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 className = "PrintRemoverPlugin"
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 packageName = "PrintRemover"
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 shortDescription = "Remove print() like debug statements."
51
a18bc7af1151 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
29 longDescription = (
a18bc7af1151 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
30 """This plug-in implements a tool to remove lines starting with"""
a18bc7af1151 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
31 """ a configurable string. This is mostly used to remove print()"""
a18bc7af1151 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
32 """ like debug statements. The match is done after stripping all"""
a18bc7af1151 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
33 """ whitespace from the beginning of a line. Lines containing the"""
4
7577ef96b755 Corrected a typo.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
34 """ string '__NO_REMOVE__' are preserved."""
51
a18bc7af1151 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
35 )
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 needsRestart = False
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 pyqtApi = 2
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 # End-Of-Header
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 error = ""
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 printRemoverPluginObject = None
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 def createPrintRemoverPage(configDlg):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 Module function to create the Print Remover configuration page.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @param configDlg reference to the configuration dialog
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @return reference to the configuration page
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 global printRemoverPluginObject
51
a18bc7af1151 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
53 from PrintRemover.ConfigurationPage.PrintRemoverPage import (
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 PrintRemoverPage
51
a18bc7af1151 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
55 )
a18bc7af1151 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
56 return PrintRemoverPage(printRemoverPluginObject)
a18bc7af1151 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
57
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 def getConfigData():
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 Module function returning data as required by the configuration dialog.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 @return dictionary containing the relevant data
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
49
d721d13f5e4e Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
65 try:
d721d13f5e4e Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
66 usesDarkPalette = e5App().usesDarkPalette()
d721d13f5e4e Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
67 except AttributeError:
54
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
68 # for eric6 < 20.4
49
d721d13f5e4e Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
69 from PyQt5.QtGui import QPalette
d721d13f5e4e Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
70 palette = e5App().palette()
d721d13f5e4e Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
71 lightness = palette.color(QPalette.Window).lightness()
d721d13f5e4e Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
72 usesDarkPalette = lightness <= 128
54
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
73 iconSuffix = "dark" if usesDarkPalette else "light"
49
d721d13f5e4e Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
74
44
fd83cf39e27d Removed the outdated check for the correct eric version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
75 return {
fd83cf39e27d Removed the outdated check for the correct eric version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
76 "printRemoverPage": [
fd83cf39e27d Removed the outdated check for the correct eric version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
77 QCoreApplication.translate("PrintRemoverPlugin",
fd83cf39e27d Removed the outdated check for the correct eric version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
78 "Print Remover"),
49
d721d13f5e4e Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
79 os.path.join("PrintRemover", "icons",
d721d13f5e4e Replaced pixmap icons by vector icons.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
80 "printRemover-{0}".format(iconSuffix)),
44
fd83cf39e27d Removed the outdated check for the correct eric version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
81 createPrintRemoverPage, None, None],
fd83cf39e27d Removed the outdated check for the correct eric version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
82 }
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 def prepareUninstall():
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 Module function to prepare for an uninstallation.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 Preferences.Prefs.settings.remove(PrintRemoverPlugin.PreferencesKey)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 class PrintRemoverPlugin(QObject):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 Class implementing the Print Remover plugin.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 PreferencesKey = "PrintRemover"
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 def __init__(self, ui):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 Constructor
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 @param ui reference to the user interface object (UI.UserInterface)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
54
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
104 super().__init__(ui)
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.__ui = ui
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 self.__defaults = {
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 "StartswithStrings": [
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 "print(", "print ", "console.log"],
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 }
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.__translator = None
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.__loadTranslator()
9
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
114
21
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
115 self.__initMenu()
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
116
9
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
117 self.__editors = {}
38
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
118 self.__mainActions = []
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 def activate(self):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 Public method to activate this plugin.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 @return tuple of None and activation status (boolean)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 global error
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 error = "" # clear previous error
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 global printRemoverPluginObject
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 printRemoverPluginObject = self
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 self.__ui.showMenu.connect(self.__populateMenu)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133
38
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
134 menu = self.__ui.getMenu("plugin_tools")
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
135 if menu is not None:
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
136 if not menu.isEmpty():
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
137 act = menu.addSeparator()
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
138 self.__mainActions.append(act)
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
139 act = menu.addMenu(self.__menu)
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
140 self.__mainActions.append(act)
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
141
9
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
142 e5App().getObject("ViewManager").editorOpenedEd.connect(
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
143 self.__editorOpened)
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
144 e5App().getObject("ViewManager").editorClosedEd.connect(
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
145 self.__editorClosed)
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
146
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
147 for editor in e5App().getObject("ViewManager").getOpenEditors():
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
148 self.__editorOpened(editor)
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
149
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 return None, True
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 def deactivate(self):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 Public method to deactivate this plugin.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 self.__ui.showMenu.disconnect(self.__populateMenu)
9
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
157
38
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
158 menu = self.__ui.getMenu("plugin_tools")
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
159 if menu is not None:
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
160 for act in self.__mainActions:
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
161 menu.removeAction(act)
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
162 self.__mainActions = []
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
163
9
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
164 e5App().getObject("ViewManager").editorOpenedEd.disconnect(
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
165 self.__editorOpened)
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
166 e5App().getObject("ViewManager").editorClosedEd.disconnect(
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
167 self.__editorClosed)
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
168
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
169 for editor, acts in self.__editors.items():
32
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
170 editor.showMenu.disconnect(self.__editorShowMenu)
9
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
171 menu = editor.getMenu("Tools")
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
172 if menu is not None:
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
173 for act in acts:
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
174 menu.removeAction(act)
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
175 self.__editors = {}
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 def __loadTranslator(self):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 Private method to load the translation file.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 if self.__ui is not None:
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 loc = self.__ui.getLocale()
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 if loc and loc != "C":
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 locale_dir = os.path.join(
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 os.path.dirname(__file__), "PrintRemover", "i18n")
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 translation = "printremover_{0}".format(loc)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 translator = QTranslator(None)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 loaded = translator.load(translation, locale_dir)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 if loaded:
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 self.__translator = translator
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 e5App().installTranslator(self.__translator)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 else:
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 print("Warning: translation file '{0}' could not be"
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 " loaded.".format(translation))
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 print("Using default.")
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 def getPreferences(self, key):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 Public method to retrieve the various settings.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 @param key the key of the value to get (string)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 @return the requested setting
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 if key in ["StartswithStrings"]:
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 return Preferences.toList(
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 Preferences.Prefs.settings.value(
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 self.PreferencesKey + "/" + key, self.__defaults[key]))
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 else:
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 return Preferences.Prefs.settings.value(
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 self.PreferencesKey + "/" + key, self.__defaults[key])
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 def setPreferences(self, key, value):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 Public method to store the various settings.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 @param key the key of the setting to be set (string)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 @param value the value to be set
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 Preferences.Prefs.settings.setValue(
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 self.PreferencesKey + "/" + key, value)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221
21
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
222 def __initMenu(self):
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
223 """
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
224 Private method to initialize the menu.
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
225 """
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
226 self.__menu = QMenu("Remove Outputs")
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
227 self.__menu.setEnabled(False)
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
228 self.__menu.aboutToShow.connect(self.__showMenu)
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
229
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 def __populateMenu(self, name, menu):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 Private slot to populate the tools menu with our entries.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 @param name name of the menu (string)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 @param menu reference to the menu to be populated (QMenu)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 """
38
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
237 if name not in ["Tools", "PluginTools"]:
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 return
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 editor = e5App().getObject("ViewManager").activeWindow()
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241
38
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
242 if name == "Tools":
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
243 if not menu.isEmpty():
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
244 menu.addSeparator()
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
245
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
246 act = menu.addMenu(self.__menu)
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
247 act.setEnabled(editor is not None)
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
248 elif name == "PluginTools" and self.__mainActions:
7641127c1421 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 36
diff changeset
249 self.__mainActions[-1].setEnabled(editor is not None)
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250
9
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
251 def __editorOpened(self, editor):
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
252 """
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
253 Private slot called, when a new editor was opened.
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
254
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
255 @param editor reference to the new editor (QScintilla.Editor)
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
256 """
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
257 menu = editor.getMenu("Tools")
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
258 if menu is not None:
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
259 self.__editors[editor] = []
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
260 if not menu.isEmpty():
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
261 act = menu.addSeparator()
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
262 self.__editors[editor].append(act)
21
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
263 act = menu.addMenu(self.__menu)
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
264 self.__menu.setEnabled(True)
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
265 self.__editors[editor].append(act)
32
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
266 editor.showMenu.connect(self.__editorShowMenu)
9
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
267
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
268 def __editorClosed(self, editor):
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
269 """
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
270 Private slot called, when an editor was closed.
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
271
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
272 @param editor reference to the editor (QScintilla.Editor)
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
273 """
54
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
274 with contextlib.suppress(KeyError):
9
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
275 del self.__editors[editor]
21
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
276 if not self.__editors:
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
277 self.__menu.setEnabled(False)
9
a9366d1cbef5 Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
278
32
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
279 def __editorShowMenu(self, menuName, menu, editor):
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
280 """
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
281 Private slot called, when the the editor context menu or a submenu is
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
282 about to be shown.
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
283
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
284 @param menuName name of the menu to be shown (string)
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
285 @param menu reference to the menu (QMenu)
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
286 @param editor reference to the editor
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
287 """
54
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
288 if (
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
289 menuName == "Tools" and
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
290 self.__menu.menuAction() not in menu.actions()
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
291 ):
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
292 # Re-add our menu
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
293 self.__editors[editor] = []
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
294 if not menu.isEmpty():
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
295 act = menu.addSeparator()
32
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
296 self.__editors[editor].append(act)
54
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
297 act = menu.addMenu(self.__menu)
d061dda35cef Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
298 self.__editors[editor].append(act)
32
429a8bee8f1f Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
299
21
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
300 def __showMenu(self):
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
301 """
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
302 Private slot to build the menu hierarchy.
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
303 """
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
304 self.__menu.clear()
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
305 for string in self.getPreferences("StartswithStrings"):
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
306 if string == '--Separator--':
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
307 self.__menu.addSeparator()
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
308 else:
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
309 act = self.__menu.addAction(
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
310 self.tr("Remove '{0}'").format(string),
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
311 self.__removeLine)
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
312 act.setData(string)
9288af505740 Enhanced the configuration page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
313
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 def __removeLine(self):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 Private slot to remove lines starting with the selected pattern.
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 """
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 act = self.sender()
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 if act is None or not isinstance(act, QAction):
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 return
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 editor = e5App().getObject("ViewManager").activeWindow()
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 if editor is None:
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 return
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 pattern = act.data()
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 if not pattern:
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 return
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 text = editor.text()
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 newText = "".join([
14
039f86a49919 Bugfix for keyword argument.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 11
diff changeset
332 line for line in text.splitlines(True)
0
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 if not line.lstrip().startswith(pattern) or
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 "__NO_REMOVE__" in line
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 ])
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 if newText != text:
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 editor.beginUndoAction()
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 editor.selectAll()
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 editor.replaceSelectedText(newText)
deeb8c24a7ab Started the 'Print Remover' project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 editor.endUndoAction()
42
f97a2aaeb66d Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
341
f97a2aaeb66d Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
342 #
f97a2aaeb66d Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
343 # eflag: noqa = M801

eric ide

mercurial