PluginColorString.py

branch
eric7
changeset 57
b633598e2e67
parent 55
43b616631f94
child 58
80dfe684353a
--- a/PluginColorString.py	Thu Dec 30 12:44:26 2021 +0100
+++ b/PluginColorString.py	Wed Sep 21 11:10:49 2022 +0200
@@ -43,36 +43,37 @@
     """
     Class implementing the 'Color String' tool plug-in.
     """
+
     def __init__(self, ui):
         """
         Constructor
-        
+
         @param ui reference to the user interface object
         @type UserInterface
         """
         super().__init__(ui)
         self.__ui = ui
-        
+
         self.__translator = None
         self.__loadTranslator()
-        
+
         self.__initMenu()
-        
+
         self.__editors = {}
         self.__mainActions = []
-    
+
     def activate(self):
         """
         Public method to activate this plugin.
-        
+
         @return tuple of None and activation status
         @rtype tuple of (None, bool)
         """
         global error
-        error = ""     # clear previous error
-        
+        error = ""  # clear previous error
+
         self.__ui.showMenu.connect(self.__populateMenu)
-        
+
         menu = self.__ui.getMenu("plugin_tools")
         if menu is not None:
             if not menu.isEmpty():
@@ -80,23 +81,21 @@
                 self.__mainActions.append(act)
             act = menu.addMenu(self.__menu)
             self.__mainActions.append(act)
-        
-        ericApp().getObject("ViewManager").editorOpenedEd.connect(
-            self.__editorOpened)
-        ericApp().getObject("ViewManager").editorClosedEd.connect(
-            self.__editorClosed)
-        
+
+        ericApp().getObject("ViewManager").editorOpenedEd.connect(self.__editorOpened)
+        ericApp().getObject("ViewManager").editorClosedEd.connect(self.__editorClosed)
+
         for editor in ericApp().getObject("ViewManager").getOpenEditors():
             self.__editorOpened(editor)
-        
+
         return None, True
-    
+
     def deactivate(self):
         """
         Public method to deactivate this plugin.
         """
         self.__ui.showMenu.disconnect(self.__populateMenu)
-        
+
         menu = self.__ui.getMenu("plugin_tools")
         if menu is not None:
             for act in self.__mainActions:
@@ -104,10 +103,12 @@
         self.__mainActions = []
 
         ericApp().getObject("ViewManager").editorOpenedEd.disconnect(
-            self.__editorOpened)
+            self.__editorOpened
+        )
         ericApp().getObject("ViewManager").editorClosedEd.disconnect(
-            self.__editorClosed)
-        
+            self.__editorClosed
+        )
+
         for editor, acts in self.__editors.items():
             editor.showMenu.disconnect(self.__editorShowMenu)
             menu = editor.getMenu("Tools")
@@ -115,7 +116,7 @@
                 for act in acts:
                     menu.removeAction(act)
         self.__editors = {}
-    
+
     def __loadTranslator(self):
         """
         Private method to load the translation file.
@@ -124,7 +125,8 @@
             loc = self.__ui.getLocale()
             if loc and loc != "C":
                 locale_dir = os.path.join(
-                    os.path.dirname(__file__), "ColorString", "i18n")
+                    os.path.dirname(__file__), "ColorString", "i18n"
+                )
                 translation = "colorstring_{0}".format(loc)
                 translator = QTranslator(None)
                 loaded = translator.load(translation, locale_dir)
@@ -132,10 +134,12 @@
                     self.__translator = translator
                     ericApp().installTranslator(self.__translator)
                 else:
-                    print("Warning: translation file '{0}' could not be"
-                          " loaded.".format(translation))
+                    print(
+                        "Warning: translation file '{0}' could not be"
+                        " loaded.".format(translation)
+                    )
                     print("Using default.")
-    
+
     def __initMenu(self):
         """
         Private method to initialize the menu.
@@ -145,11 +149,11 @@
         self.__menu.addAction(self.tr("Color Name"), self.__selectColorName)
         self.__menu.addAction(self.tr("RGBA Color"), self.__selectRgbaColor)
         self.__menu.setEnabled(False)
-    
+
     def __populateMenu(self, name, menu):
         """
         Private slot to populate the tools menu with our entry.
-        
+
         @param name name of the menu
         @type str
         @param menu reference to the menu to be populated
@@ -157,9 +161,9 @@
         """
         if name not in ["Tools", "PluginTools"]:
             return
-        
+
         editor = ericApp().getObject("ViewManager").activeWindow()
-        
+
         if name == "Tools":
             if not menu.isEmpty():
                 menu.addSeparator()
@@ -167,11 +171,11 @@
             act.setEnabled(editor is not None)
         elif name == "PluginTools" and self.__mainActions:
             self.__mainActions[-1].setEnabled(editor is not None)
-    
+
     def __editorOpened(self, editor):
         """
         Private slot called, when a new editor was opened.
-        
+
         @param editor reference to the new editor
         @type Editor
         """
@@ -185,11 +189,11 @@
             self.__menu.setEnabled(True)
             self.__editors[editor].append(act)
             editor.showMenu.connect(self.__editorShowMenu)
-    
+
     def __editorClosed(self, editor):
         """
         Private slot called, when an editor was closed.
-        
+
         @param editor reference to the editor
         @type Editor
         """
@@ -197,12 +201,12 @@
             del self.__editors[editor]
             if not self.__editors:
                 self.__menu.setEnabled(False)
-    
+
     def __editorShowMenu(self, menuName, menu, editor):
         """
         Private slot called, when the the editor context menu or a submenu is
         about to be shown.
-        
+
         @param menuName name of the menu to be shown
         @type str
         @param menu reference to the menu
@@ -210,10 +214,7 @@
         @param editor reference to the editor
         @type Editor
         """
-        if (
-            menuName == "Tools" and
-            self.__menu.menuAction() not in menu.actions()
-        ):
+        if menuName == "Tools" and self.__menu.menuAction() not in menu.actions():
             # Re-add our menu
             self.__editors[editor] = []
             if not menu.isEmpty():
@@ -221,22 +222,22 @@
                 self.__editors[editor].append(act)
             act = menu.addMenu(self.__menu)
             self.__editors[editor].append(act)
-    
+
     def __isHexString(self, text):
         """
         Private method to check, if a given text is a hex string.
-        
+
         @param text text to check
         @type str
         @return flag indicating a hex string
         @rtype bool
         """
         return all(c in "0123456789abcdefABCDEF" for c in text)
-    
+
     def __isValidColor(self, name):
         """
         Private method to check for a valid color name.
-        
+
         @param name color name to check
         @type str
         @return flag indicating a valid color name
@@ -245,7 +246,7 @@
         if self.__isHexString(name) and len(name) in (3, 6, 8, 9, 12):
             return True
         return QColor.isValidColor(name)
-    
+
     def __selectHexColor(self):
         """
         Private slot implementing the hex color string selection.
@@ -253,7 +254,7 @@
         editor = ericApp().getObject("ViewManager").activeWindow()
         if editor is None:
             return
-        
+
         if editor.hasSelectedText():
             currColor = editor.selectedText()
             if not self.__isValidColor(currColor):
@@ -262,10 +263,11 @@
                     self.tr("Color String"),
                     self.tr(
                         """<p>The selected string <b>{0}</b> is not a"""
-                        """ valid color string. Aborting!</p>""")
-                    .format(currColor))
+                        """ valid color string. Aborting!</p>"""
+                    ).format(currColor),
+                )
                 return
-            
+
             if currColor.startswith("#"):
                 withHash = True
             elif self.__isHexString(currColor):
@@ -278,10 +280,13 @@
             withHash = True
             currColor = ""
             initColor = QColor()
-        
+
         color = QColorDialog.getColor(
-            initColor, self.__ui, self.tr("Color String"),
-            QColorDialog.ColorDialogOption.ShowAlphaChannel)
+            initColor,
+            self.__ui,
+            self.tr("Color String"),
+            QColorDialog.ColorDialogOption.ShowAlphaChannel,
+        )
         if color.isValid():
             if color.alpha() == 255:
                 nameFormat = QColor.NameFormat.HexRgb
@@ -298,7 +303,7 @@
                 editor.insert(colorStr)
                 editor.setCursorPosition(line, index + len(colorStr))
             editor.endUndoAction()
-    
+
     def __selectColorName(self):
         """
         Private slot implementing the named color string selection.
@@ -306,7 +311,7 @@
         editor = ericApp().getObject("ViewManager").activeWindow()
         if editor is None:
             return
-        
+
         if editor.hasSelectedText():
             currColor = editor.selectedText()
             if currColor not in QColor.colorNames():
@@ -315,13 +320,15 @@
                     self.tr("Color String"),
                     self.tr(
                         """<p>The selected string <b>{0}</b> is not a"""
-                        """ valid color name. Aborting!</p>""")
-                    .format(currColor))
+                        """ valid color name. Aborting!</p>"""
+                    ).format(currColor),
+                )
                 return
         else:
             currColor = ""
-        
+
         from ColorString.ColorSelectionDialog import ColorSelectionDialog
+
         dlg = ColorSelectionDialog(currColor, self.__ui)
         if dlg.exec() == QDialog.DialogCode.Accepted:
             colorStr = dlg.getColor()
@@ -333,7 +340,7 @@
                 editor.insert(colorStr)
                 editor.setCursorPosition(line, index + len(colorStr))
             editor.endUndoAction()
-    
+
     def __selectRgbaColor(self):
         """
         Private slot implementing the RGBA color string selection.
@@ -341,7 +348,7 @@
         editor = ericApp().getObject("ViewManager").activeWindow()
         if editor is None:
             return
-        
+
         if editor.hasSelectedText():
             currColor = editor.selectedText()
             valid, rgba = self.__isValidRgbaColor(currColor)
@@ -351,16 +358,20 @@
                     self.tr("Color String"),
                     self.tr(
                         """<p>The selected string <b>{0}</b> is not a"""
-                        """ valid RGBA color string. Aborting!</p>""")
-                    .format(currColor))
+                        """ valid RGBA color string. Aborting!</p>"""
+                    ).format(currColor),
+                )
                 return
             initColor = QColor(*rgba)
         else:
             initColor = QColor()
-        
+
         color = QColorDialog.getColor(
-            initColor, self.__ui, self.tr("Color String"),
-            QColorDialog.ColorDialogOption.ShowAlphaChannel)
+            initColor,
+            self.__ui,
+            self.tr("Color String"),
+            QColorDialog.ColorDialogOption.ShowAlphaChannel,
+        )
         if color.isValid():
             rgba = color.getRgb()
             if rgba[-1] == 255:
@@ -375,11 +386,11 @@
                 editor.insert(colorStr)
                 editor.setCursorPosition(line, index + len(colorStr))
             editor.endUndoAction()
-    
+
     def __isValidRgbaColor(self, color):
         """
         Private method to check for a valid RGBA color.
-        
+
         @param color color string to check
         @type str
         @return flag indicating a valid RGBA color (boolean) and a list with
@@ -387,23 +398,24 @@
         @rtype tuple of (bool, [int, int, int]) or (bool, [int, int, int, int])
         """
         rgba = []
-        
+
         parts = color.split(",")
         if len(parts) not in [3, 4]:
             return False, []
-        
+
         for part in parts:
             try:
                 c = int(float(part)) if "." in part else int(part)
             except ValueError:
                 return False, []
-            
+
             if c < 0 or c > 255:
                 return False, []
-            
+
             rgba.append(c)
-        
+
         return True, rgba
 
+
 #
 # eflag: noqa = M801

eric ide

mercurial