PluginSelectionEncloser.py

Tue, 10 Dec 2024 15:49:05 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:49:05 +0100
branch
eric7
changeset 64
81223040f8ef
parent 62
5d418352a1bc
permissions
-rw-r--r--

Updated copyright for 2025.

1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
1 # -*- coding: utf-8 -*-
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
2
64
81223040f8ef Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 62
diff changeset
3 # Copyright (c) 2014 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
4 #
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
5
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
6 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
7 Module implementing the Selection Encloser plug-in.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
8 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
9
46
c12f1feea96a Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
10 import contextlib
58
b096205d8358 Resorted imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 56
diff changeset
11 import json
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
12 import os
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
13
58
b096205d8358 Resorted imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 56
diff changeset
14 from PyQt6.QtCore import QCoreApplication, QObject, QTranslator, pyqtSlot
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
15 from PyQt6.QtGui import QAction
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
16 from PyQt6.QtWidgets import QMenu
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
17
58
b096205d8358 Resorted imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 56
diff changeset
18 from eric7 import Preferences
56
2ca258eb5859 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 55
diff changeset
19 from eric7.EricWidgets.EricApplication import ericApp
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
20
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
21 # Start-Of-Header
62
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
22 __header__ = {
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
23 "name": "Selection Encloser Plug-in",
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
24 "author": "Detlev Offenbach <detlev@die-offenbachs.de>",
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
25 "autoactivate": True,
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
26 "deactivateable": True,
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
27 "version": "10.1.1",
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
28 "className": "SelectionEncloserPlugin",
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
29 "packageName": "SelectionEncloser",
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
30 "shortDescription": "Enclose the selection with a string.",
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
31 "longDescription": (
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
32 """This plug-in implements a tool to enclose the selection of"""
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
33 """ the current editor with a string. The enclosing string is"""
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
34 """ selectable via a configurable menu hierarchy."""
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
35 ),
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
36 "needsRestart": False,
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
37 "hasCompiledForms": True,
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
38 "pyqtApi": 2,
5d418352a1bc - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
39 }
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
40 # End-Of-Header
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
41
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
42 error = ""
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
43
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
44 selectionEncloserPluginObject = None
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
45
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
46
61
4cd8dfb2c924 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
47 def createSelectionEncloserPage(configDlg): # noqa: U100
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
48 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
49 Module function to create the Selection Encloser configuration page.
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
50
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
51 @param configDlg reference to the configuration dialog
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
52 @type ConfigurationWidget
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 @return reference to the configuration page
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
54 @rtype SelectionEncloserPage
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55 """
41
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
56 from SelectionEncloser.ConfigurationPage.SelectionEncloserPage import (
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
57 SelectionEncloserPage,
41
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
58 )
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
59
61
4cd8dfb2c924 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
60 global selectionEncloserPluginObject
4cd8dfb2c924 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
61
41
e747eb5f3f43 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
62 return SelectionEncloserPage(selectionEncloserPluginObject)
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
63
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
65 def getConfigData():
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
66 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
67 Module function returning data as required by the configuration dialog.
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
68
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
69 @return dictionary containing the relevant data
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
70 @rtype dict
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
71 """
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
72 usesDarkPalette = ericApp().usesDarkPalette()
46
c12f1feea96a Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
73 iconSuffix = "dark" if usesDarkPalette else "light"
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
74
34
7109372150f6 Removed the outdated check for the correct eric version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
75 return {
7109372150f6 Removed the outdated check for the correct eric version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
76 "selectionEncloserPage": [
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
77 QCoreApplication.translate("SelectionEncloserPlugin", "Selection Encloser"),
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
78 os.path.join(
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
79 "SelectionEncloser", "icons", "selectionEncloser-{0}".format(iconSuffix)
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
80 ),
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
81 createSelectionEncloserPage,
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
82 None,
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
83 None,
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
84 ],
34
7109372150f6 Removed the outdated check for the correct eric version.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
85 }
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
86
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
87
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
88 def prepareUninstall():
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
89 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
90 Module function to prepare for an uninstallation.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
91 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92 Preferences.Prefs.settings.remove(SelectionEncloserPlugin.PreferencesKey)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
93
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
95 class SelectionEncloserPlugin(QObject):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
97 Class implementing the Selection Encloser plugin.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
98 """
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
99
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
100 PreferencesKey = "SelectionEncloser"
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
101
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
102 def __init__(self, ui):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
103 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
104 Constructor
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
105
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
106 @param ui reference to the user interface object
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
107 @type UserInterface
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
108 """
48
767eb5905e08 Bug fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
109 super().__init__(ui)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110 self.__ui = ui
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
111
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
112 # menu is a list of lists; each list consists of a string for the
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
113 # submenu title and a list of submenu entries. Each submenu entry
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
114 # consists of another list giving the title and the enclosing string
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
115 # or formatting string.
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
116 defaultMenu = [
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
117 [
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
118 self.tr("Quotes"),
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
119 [['"', '"'], ["'", "'"], ['"""', '"""'], ["'''", "'''"]],
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
120 ],
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
121 [
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
122 self.tr("HTML"),
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
123 [
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
124 ["<h1>", "<h1>{0}</h1>"],
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
125 ["<h2>", "<h2>{0}</h2>"],
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
126 ["<h3>", "<h3>{0}</h3>"],
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
127 ["--Separator--", ""],
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
128 ["<p>", "<p>{0}</p>"],
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
129 ["<div>", "<div>{0}</div>"],
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
130 ["<span>", "<span>{0}</span>"],
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
131 ],
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
132 ],
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
133 ]
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
134 self.__defaults = {
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
135 "MenuHierarchy": json.dumps(defaultMenu),
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
136 }
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
137
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
138 self.__translator = None
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
139 self.__loadTranslator()
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
140
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
141 self.__initMenu()
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
142
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
143 self.__editors = {}
24
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
144 self.__mainActions = []
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
145
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
146 def activate(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
147 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
148 Public method to activate this plugin.
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
149
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
150 @return tuple of None and activation status
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
151 @rtype (None, bool)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
152 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
153 global error
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
154 error = "" # clear previous error
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
155
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
156 global selectionEncloserPluginObject
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
157 selectionEncloserPluginObject = self
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
158
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
159 self.__ui.showMenu.connect(self.__populateMenu)
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
160
24
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
161 menu = self.__ui.getMenu("plugin_tools")
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
162 if menu is not None:
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
163 if not menu.isEmpty():
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
164 act = menu.addSeparator()
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
165 self.__mainActions.append(act)
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
166 act = menu.addMenu(self.__menu)
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
167 self.__mainActions.append(act)
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
168
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
169 ericApp().getObject("ViewManager").editorOpenedEd.connect(self.__editorOpened)
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
170 ericApp().getObject("ViewManager").editorClosedEd.connect(self.__editorClosed)
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
171
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
172 for editor in ericApp().getObject("ViewManager").getOpenEditors():
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
173 self.__editorOpened(editor)
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
174
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
175 return None, True
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
176
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
177 def deactivate(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
178 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
179 Public method to deactivate this plugin.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
180 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
181 self.__ui.showMenu.disconnect(self.__populateMenu)
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
182
24
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
183 menu = self.__ui.getMenu("plugin_tools")
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
184 if menu is not None:
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
185 for act in self.__mainActions:
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
186 menu.removeAction(act)
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
187 self.__mainActions = []
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
188
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
189 ericApp().getObject("ViewManager").editorOpenedEd.disconnect(
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
190 self.__editorOpened
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
191 )
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
192 ericApp().getObject("ViewManager").editorClosedEd.disconnect(
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
193 self.__editorClosed
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
194 )
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
195
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
196 for editor, acts in self.__editors.items():
20
316f35ec5162 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
197 editor.showMenu.disconnect(self.__editorShowMenu)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
198 menu = editor.getMenu("Tools")
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
199 if menu is not None:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
200 for act in acts:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
201 menu.removeAction(act)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
202 self.__editors = {}
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
203
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
204 def __loadTranslator(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
205 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
206 Private method to load the translation file.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
207 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
208 if self.__ui is not None:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
209 loc = self.__ui.getLocale()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
210 if loc and loc != "C":
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
211 locale_dir = os.path.join(
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
212 os.path.dirname(__file__), "SelectionEncloser", "i18n"
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
213 )
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
214 translation = "selectionencloser_{0}".format(loc)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
215 translator = QTranslator(None)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
216 loaded = translator.load(translation, locale_dir)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
217 if loaded:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
218 self.__translator = translator
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
219 ericApp().installTranslator(self.__translator)
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
220 else:
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
221 print(
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
222 "Warning: translation file '{0}' could not be"
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
223 " loaded.".format(translation)
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
224 )
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
225 print("Using default.")
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
226
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
227 def getPreferences(self, key):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
228 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
229 Public method to retrieve the various settings.
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
230
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
231 @param key key of the value to get
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
232 @type str
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
233 @return value of the requested setting
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
234 @rtype Any
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
235 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
236 if key in ["MenuHierarchy"]:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
237 return json.loads(
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
238 Preferences.Prefs.settings.value(
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
239 self.PreferencesKey + "/" + key, self.__defaults[key]
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
240 )
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
241 )
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
242 else:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
243 return Preferences.Prefs.settings.value(
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
244 self.PreferencesKey + "/" + key, self.__defaults[key]
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
245 )
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
246
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
247 def setPreferences(self, key, value):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
248 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
249 Public method to store the various settings.
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
250
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
251 @param key key of the setting to be set
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
252 @type str
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
253 @param value value to be set
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
254 @type Any
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
255 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
256 if key in ["MenuHierarchy"]:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
257 Preferences.Prefs.settings.setValue(
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
258 self.PreferencesKey + "/" + key, json.dumps(value)
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
259 )
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
260 else:
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
261 Preferences.Prefs.settings.setValue(self.PreferencesKey + "/" + key, value)
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
262
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
263 def __initMenu(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
264 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
265 Private method to initialize the menu.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
266 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
267 self.__menu = QMenu("Enclose Selection")
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
268 self.__menu.setEnabled(False)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
269 self.__menu.aboutToShow.connect(self.__showMenu)
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
270
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 def __populateMenu(self, name, menu):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
272 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
273 Private slot to populate the tools menu with our entry.
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
274
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
275 @param name name of the menu
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
276 @type str
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
277 @param menu reference to the menu to be populated
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
278 @type QMenu
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
279 """
24
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
280 if name not in ["Tools", "PluginTools"]:
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
281 return
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
282
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
283 editor = ericApp().getObject("ViewManager").activeWindow()
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
284
24
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
285 if name == "Tools":
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
286 if not menu.isEmpty():
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
287 menu.addSeparator()
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
288 act = menu.addMenu(self.__menu)
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
289 act.setEnabled(editor is not None and editor.hasSelectedText())
da62f56bbb16 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
290 elif name == "PluginTools" and self.__mainActions:
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
291 self.__menu.setEnabled(editor is not None and editor.hasSelectedText())
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
292
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
293 def __editorOpened(self, editor):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
294 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
295 Private slot called, when a new editor was opened.
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
296
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
297 @param editor reference to the new editor
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
298 @type Editor
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
299 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
300 menu = editor.getMenu("Tools")
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
301 if menu is not None:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
302 self.__editors[editor] = []
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
303 if not menu.isEmpty():
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
304 act = menu.addSeparator()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
305 self.__editors[editor].append(act)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
306 act = menu.addMenu(self.__menu)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
307 self.__menu.setEnabled(True)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
308 self.__editors[editor].append(act)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
309 editor.showMenu.connect(self.__editorShowMenu)
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
310
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
311 def __editorClosed(self, editor):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
312 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
313 Private slot called, when an editor was closed.
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
314
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
315 @param editor reference to the editor
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
316 @type Editor
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
317 """
46
c12f1feea96a Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
318 with contextlib.suppress(KeyError):
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
319 del self.__editors[editor]
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
320 if not self.__editors:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
321 self.__menu.setEnabled(False)
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
322
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
323 def __editorShowMenu(self, menuName, menu, editor):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
324 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
325 Private slot called, when the the editor context menu or a submenu is
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
326 about to be shown.
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
327
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
328 @param menuName name of the menu to be shown
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
329 @type str
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
330 @param menu reference to the menu
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
331 @type QMenu
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
332 @param editor reference to the editor
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
333 @type Editor
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
334 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
335 if menuName == "Tools":
20
316f35ec5162 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
336 if self.__menu.menuAction() not in menu.actions():
316f35ec5162 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
337 # Re-add our menu
316f35ec5162 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
338 self.__editors[editor] = []
316f35ec5162 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
339 if not menu.isEmpty():
316f35ec5162 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
340 act = menu.addSeparator()
316f35ec5162 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
341 self.__editors[editor].append(act)
316f35ec5162 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
342 act = menu.addMenu(self.__menu)
316f35ec5162 Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
343 self.__editors[editor].append(act)
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
344
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
345 self.__menu.setEnabled(editor.selectedText() != "")
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
346
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
347 def __showMenu(self):
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
348 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
349 Private slot to build the menu hierarchy.
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
350 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
351 self.__menu.clear()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
352 hierarchy = self.getPreferences("MenuHierarchy")
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
353 for menuTitle, entries in hierarchy:
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
354 if menuTitle == "--Separator--":
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
355 self.__menu.addSeparator()
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
356 else:
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
357 submenu = QMenu(menuTitle, self.__menu)
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
358 for title, encString in entries:
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
359 if title == "--Separator--":
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
360 submenu.addSeparator()
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
361 else:
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
362 act = submenu.addAction(title)
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
363 act.setData(encString)
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
364 submenu.triggered.connect(self.__encloseSelection)
7
e6addbe23b18 Added capability to insert a separator and Spanish translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
365 self.__menu.addMenu(submenu)
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
366
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
367 @pyqtSlot(QAction)
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
368 def __encloseSelection(self, act):
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
369 """
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
370 Private slot to enclose the selection with the selected string.
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
371
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
372 @param act action that triggered
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
373 @type QAction
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
374 """
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
375 if act is None:
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
376 return
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
377
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
378 editor = ericApp().getObject("ViewManager").activeWindow()
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
379 if editor is None:
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
380 return
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
381
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
382 if not editor.hasSelectedText():
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
383 return
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
384
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
385 encloseString = act.data()
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
386 if not encloseString:
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
387 return
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
388
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
389 if "%s" in encloseString:
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
390 newText = encloseString % editor.selectedText()
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
391 elif "{0}" in encloseString or "{}" in encloseString:
53
ceb9ed8084db Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
392 # __IGNORE_WARNING_M613__
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
393 newText = encloseString.format(editor.selectedText())
3
b26df0282953 Finished implementing the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
394 else:
51
318d7ebbdce2 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
395 newText = encloseString + editor.selectedText() + encloseString
1
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
396 editor.beginUndoAction()
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
397 editor.replaceSelectedText(newText)
a9f6842a18f6 Implemented most of the functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
398 editor.endUndoAction()
32
c696284413d8 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
399
55
ccddc623f3c1 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 53
diff changeset
400
32
c696284413d8 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 31
diff changeset
401 #
61
4cd8dfb2c924 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
402 # eflag: noqa = M801, U200

eric ide

mercurial