PluginSelectionEncloser.py

Tue, 01 Jun 2021 18:45:45 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 01 Jun 2021 18:45:45 +0200
branch
eric7
changeset 51
318d7ebbdce2
parent 48
767eb5905e08
child 52
d2119f1dd5b3
permissions
-rw-r--r--

Ported the plug-in to PyQt6 for eric7.

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

eric ide

mercurial