PluginColorString.py

Mon, 26 Apr 2021 19:27:02 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 26 Apr 2021 19:27:02 +0200
changeset 45
1ba3620cae56
parent 44
0d8ab93654bd
child 48
e35a2acef5b8
permissions
-rw-r--r--

Implemented some code simplifications.

1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
1 # -*- coding: utf-8 -*-
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
2
44
0d8ab93654bd Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
3 # Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
4 #
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
5
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
6 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
7 Module implementing the 'Color String' tool plug-in.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
8 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
9
45
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
10 import contextlib
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
11 import os
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
12
11
3b7ec819a55d Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
13 from PyQt5.QtCore import QObject, QTranslator
3b7ec819a55d Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
14 from PyQt5.QtGui import QColor
3b7ec819a55d Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
15 from PyQt5.QtWidgets import QColorDialog, QMenu, QDialog
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
16
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
17 from E5Gui.E5Application import e5App
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
18 from E5Gui import E5MessageBox
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
19
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
20 # Start-Of-Header
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
21 name = "Color String Plug-in"
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
22 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
23 autoactivate = True
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
24 deactivateable = True
45
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
25 version = "3.2.0"
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
26 className = "ColorStringPlugin"
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
27 packageName = "ColorString"
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
28 shortDescription = "Insert color as string"
40
e0086d2cb15d Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
29 longDescription = (
e0086d2cb15d Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
30 """This plug-in implements a tool to select a color via a"""
e0086d2cb15d Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
31 """ color selection dialog and insert it as a hex string at the"""
e0086d2cb15d Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
32 """ current cursor position. Selected text is used to initialize"""
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
33 """ the dialog and is replaced with the new color."""
40
e0086d2cb15d Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
34 )
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
35 needsRestart = False
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
36 pyqtApi = 2
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
37 # End-Of-Header
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
38
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
39 error = ""
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
40
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
41
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
42 class ColorStringPlugin(QObject):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
43 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
44 Class implementing the 'Color String' tool plug-in.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
45 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
46 def __init__(self, ui):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
47 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
48 Constructor
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
49
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
50 @param ui reference to the user interface object (UI.UserInterface)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
51 """
45
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
52 super().__init__(ui)
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 self.__ui = ui
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
54
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55 self.__translator = None
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
56 self.__loadTranslator()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
57
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
58 self.__initMenu()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
59
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
60 self.__editors = {}
25
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
61 self.__mainActions = []
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
62
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
63 def activate(self):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
65 Public method to activate this plugin.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
66
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
67 @return tuple of None and activation status (boolean)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
68 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
69 global error
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
70 error = "" # clear previous error
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
71
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
72 self.__ui.showMenu.connect(self.__populateMenu)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
73
25
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
74 menu = self.__ui.getMenu("plugin_tools")
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
75 if menu is not None:
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
76 if not menu.isEmpty():
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
77 act = menu.addSeparator()
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
78 self.__mainActions.append(act)
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
79 act = menu.addMenu(self.__menu)
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
80 self.__mainActions.append(act)
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
81
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
82 e5App().getObject("ViewManager").editorOpenedEd.connect(
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
83 self.__editorOpened)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
84 e5App().getObject("ViewManager").editorClosedEd.connect(
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
85 self.__editorClosed)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
86
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
87 for editor in e5App().getObject("ViewManager").getOpenEditors():
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
88 self.__editorOpened(editor)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
89
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
90 return None, True
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
91
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92 def deactivate(self):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
93 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94 Public method to deactivate this plugin.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
95 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 self.__ui.showMenu.disconnect(self.__populateMenu)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
97
25
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
98 menu = self.__ui.getMenu("plugin_tools")
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
99 if menu is not None:
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
100 for act in self.__mainActions:
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
101 menu.removeAction(act)
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
102 self.__mainActions = []
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
103
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
104 e5App().getObject("ViewManager").editorOpenedEd.disconnect(
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
105 self.__editorOpened)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
106 e5App().getObject("ViewManager").editorClosedEd.disconnect(
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
107 self.__editorClosed)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
108
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
109 for editor, acts in self.__editors.items():
18
a1e72b3e06cc Bug fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
110 editor.showMenu.disconnect(self.__editorShowMenu)
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
111 menu = editor.getMenu("Tools")
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
112 if menu is not None:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
113 for act in acts:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
114 menu.removeAction(act)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
115 self.__editors = {}
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
116
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
117 def __loadTranslator(self):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
118 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
119 Private method to load the translation file.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
120 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
121 if self.__ui is not None:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
122 loc = self.__ui.getLocale()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
123 if loc and loc != "C":
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
124 locale_dir = os.path.join(
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
125 os.path.dirname(__file__), "ColorString", "i18n")
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
126 translation = "colorstring_{0}".format(loc)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
127 translator = QTranslator(None)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
128 loaded = translator.load(translation, locale_dir)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
129 if loaded:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
130 self.__translator = translator
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
131 e5App().installTranslator(self.__translator)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
132 else:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
133 print("Warning: translation file '{0}' could not be"
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
134 " loaded.".format(translation))
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
135 print("Using default.")
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
136
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
137 def __initMenu(self):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
138 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
139 Private method to initialize the menu.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
140 """
20
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
141 self.__menu = QMenu(self.tr("Color String"))
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
142 self.__menu.addAction(self.tr("Hex Color"), self.__selectHexColor)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
143 self.__menu.addAction(self.tr("Color Name"), self.__selectColorName)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
144 self.__menu.addAction(self.tr("RGBA Color"), self.__selectRgbaColor)
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
145 self.__menu.setEnabled(False)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
146
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
147 def __populateMenu(self, name, menu):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
148 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
149 Private slot to populate the tools menu with our entry.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
150
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
151 @param name name of the menu (string)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
152 @param menu reference to the menu to be populated (QMenu)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
153 """
25
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
154 if name not in ["Tools", "PluginTools"]:
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
155 return
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
156
25
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
157 editor = e5App().getObject("ViewManager").activeWindow()
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
158
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
159 if name == "Tools":
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
160 if not menu.isEmpty():
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
161 menu.addSeparator()
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
162 act = menu.addMenu(self.__menu)
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
163 act.setEnabled(editor is not None)
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
164 elif name == "PluginTools" and self.__mainActions:
cf10856f55de Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 23
diff changeset
165 self.__mainActions[-1].setEnabled(editor is not None)
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
166
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
167 def __editorOpened(self, editor):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
168 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
169 Private slot called, when a new editor was opened.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
170
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
171 @param editor reference to the new editor (QScintilla.Editor)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
172 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
173 menu = editor.getMenu("Tools")
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
174 if menu is not None:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
175 self.__editors[editor] = []
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
176 if not menu.isEmpty():
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
177 act = menu.addSeparator()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
178 self.__editors[editor].append(act)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
179 act = menu.addMenu(self.__menu)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
180 self.__menu.setEnabled(True)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
181 self.__editors[editor].append(act)
17
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
182 editor.showMenu.connect(self.__editorShowMenu)
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
183
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
184 def __editorClosed(self, editor):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
185 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
186 Private slot called, when an editor was closed.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
187
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
188 @param editor reference to the editor (QScintilla.Editor)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
189 """
45
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
190 with contextlib.suppress(KeyError):
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
191 del self.__editors[editor]
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
192 if not self.__editors:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
193 self.__menu.setEnabled(False)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
194
17
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
195 def __editorShowMenu(self, menuName, menu, editor):
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
196 """
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
197 Private slot called, when the the editor context menu or a submenu is
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
198 about to be shown.
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
199
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
200 @param menuName name of the menu to be shown (string)
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
201 @param menu reference to the menu (QMenu)
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
202 @param editor reference to the editor
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
203 """
45
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
204 if (
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
205 menuName == "Tools" and
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
206 self.__menu.menuAction() not in menu.actions()
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
207 ):
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
208 # Re-add our menu
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
209 self.__editors[editor] = []
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
210 if not menu.isEmpty():
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
211 act = menu.addSeparator()
17
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
212 self.__editors[editor].append(act)
45
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
213 act = menu.addMenu(self.__menu)
1ba3620cae56 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
214 self.__editors[editor].append(act)
17
b8fac5c059fb Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
215
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
216 def __isHexString(self, text):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
217 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
218 Private method to check, if a given text is a hex string.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
219
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
220 @param text text to check (string)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
221 @return flag indicating a hex string (boolean)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
222 """
40
e0086d2cb15d Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
223 return all(map(lambda c: c in "0123456789abcdefABCDEF", text))
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
224
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
225 def __isValidColor(self, name):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
226 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
227 Private method to check for a valid color name.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
228
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
229 @param name color name to check (string)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
230 @return flag indicating a valid color name (boolean)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
231 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
232 try:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
233 if self.__isHexString(name) and len(name) in [3, 6, 9, 12]:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
234 return True
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
235 return QColor.isValidColor(name)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
236 except AttributeError:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
237 if name.startswith("#"):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
238 if len(name) not in [4, 7, 10, 13]:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
239 return False
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
240 hexCheckStr = name[1:]
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
241 return self.__isHexString(hexCheckStr)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
242 else:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
243 if self.__isHexString(name) and len(name) in [3, 6, 9, 12]:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
244 return True
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
245 return name in QColor.colorNames()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
246
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
247 def __selectHexColor(self):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
248 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
249 Private slot implementing the hex color string selection.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
250 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
251 editor = e5App().getObject("ViewManager").activeWindow()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
252 if editor is None:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
253 return
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
254
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
255 if editor.hasSelectedText():
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
256 currColor = editor.selectedText()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
257 if not self.__isValidColor(currColor):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
258 E5MessageBox.critical(
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
259 self.__ui,
11
3b7ec819a55d Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
260 self.tr("Color String"),
3b7ec819a55d Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
261 self.tr(
3b7ec819a55d Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
262 """<p>The selected string <b>{0}</b> is not a"""
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
263 """ valid color string. Aborting!</p>""")
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
264 .format(currColor))
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
265 return
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
266
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
267 if currColor.startswith("#"):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
268 withHash = True
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
269 elif self.__isHexString(currColor):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
270 withHash = False
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 currColor = "#" + currColor
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
272 else:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
273 withHash = True
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
274 initColor = QColor(currColor)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
275 else:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
276 withHash = True
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
277 currColor = ""
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
278 initColor = QColor()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
279
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
280 color = QColorDialog.getColor(
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
281 initColor, self.__ui, self.tr("Color String"))
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
282 if color.isValid():
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
283 colorStr = color.name()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
284 if not withHash:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
285 colorStr = colorStr[1:]
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
286 editor.beginUndoAction()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
287 if editor.hasSelectedText():
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
288 editor.replaceSelectedText(colorStr)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
289 else:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
290 line, index = editor.getCursorPosition()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
291 editor.insert(colorStr)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
292 editor.setCursorPosition(line, index + len(colorStr))
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
293 editor.endUndoAction()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
294
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
295 def __selectColorName(self):
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
296 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
297 Private slot implementing the named color string selection.
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
298 """
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
299 editor = e5App().getObject("ViewManager").activeWindow()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
300 if editor is None:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
301 return
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
302
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
303 if editor.hasSelectedText():
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
304 currColor = editor.selectedText()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
305 if currColor not in QColor.colorNames():
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
306 E5MessageBox.critical(
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
307 self.__ui,
11
3b7ec819a55d Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
308 self.tr("Color String"),
3b7ec819a55d Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
309 self.tr(
3b7ec819a55d Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
310 """<p>The selected string <b>{0}</b> is not a"""
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
311 """ valid color name. Aborting!</p>""")
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
312 .format(currColor))
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
313 return
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
314 else:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
315 currColor = ""
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
316
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
317 from ColorString.ColorSelectionDialog import ColorSelectionDialog
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
318 dlg = ColorSelectionDialog(currColor, self.__ui)
42
6a5cd4a132e2 Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 40
diff changeset
319 if dlg.exec() == QDialog.Accepted:
1
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
320 colorStr = dlg.getColor()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
321 editor.beginUndoAction()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
322 if editor.hasSelectedText():
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
323 editor.replaceSelectedText(colorStr)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
324 else:
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
325 line, index = editor.getCursorPosition()
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
326 editor.insert(colorStr)
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
327 editor.setCursorPosition(line, index + len(colorStr))
e1f013dc03bb Finished implementation of the 'color string' plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
328 editor.endUndoAction()
20
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
329
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
330 def __selectRgbaColor(self):
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
331 """
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
332 Private slot implementing the RGBA color string selection.
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
333 """
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
334 editor = e5App().getObject("ViewManager").activeWindow()
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
335 if editor is None:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
336 return
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
337
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
338 if editor.hasSelectedText():
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
339 currColor = editor.selectedText()
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
340 valid, rgba = self.__isValidRgbaColor(currColor)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
341 if not valid:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
342 E5MessageBox.critical(
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
343 self.__ui,
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
344 self.tr("Color String"),
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
345 self.tr(
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
346 """<p>The selected string <b>{0}</b> is not a"""
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
347 """ valid color string. Aborting!</p>""")
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
348 .format(currColor))
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
349 return
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
350 initColor = QColor(*rgba)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
351 else:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
352 initColor = QColor()
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
353
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
354 color = QColorDialog.getColor(
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
355 initColor, self.__ui, self.tr("Color String"),
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
356 QColorDialog.ShowAlphaChannel)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
357 if color.isValid():
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
358 rgba = color.getRgb()
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
359 if rgba[-1] == 255:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
360 colorStr = "{0}, {1}, {2}".format(*rgba[:-1])
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
361 else:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
362 colorStr = "{0}, {1}, {2}, {3}".format(*rgba)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
363 editor.beginUndoAction()
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
364 if editor.hasSelectedText():
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
365 editor.replaceSelectedText(colorStr)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
366 else:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
367 line, index = editor.getCursorPosition()
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
368 editor.insert(colorStr)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
369 editor.setCursorPosition(line, index + len(colorStr))
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
370 editor.endUndoAction()
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
371
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
372 def __isValidRgbaColor(self, color):
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
373 """
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
374 Private method to check for a valid RGBA color.
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
375
35
72225d6b363a Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
376 @param color color string to check (string)
20
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
377 @return flag indicating a valid RGBA color (boolean) and a list with
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
378 the RGBA components of the color (three or four integers)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
379 """
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
380 rgba = []
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
381
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
382 parts = color.split(",")
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
383 if len(parts) not in [3, 4]:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
384 return False, []
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
385
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
386 for part in parts:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
387 try:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
388 c = int(part)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
389 except ValueError:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
390 return False, []
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
391
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
392 if c < 0 or c > 255:
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
393 return False, []
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
394
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
395 rgba.append(c)
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
396
ffe2ec016dfb Added entry for RGBA color.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
397 return True, rgba
35
72225d6b363a Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
398
72225d6b363a Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
399 #
72225d6b363a Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
400 # eflag: noqa = M801

eric ide

mercurial