Ported the plug-in to PyQt6 for eric7. eric7

Fri, 28 May 2021 19:37:46 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 28 May 2021 19:37:46 +0200
branch
eric7
changeset 48
4f0e000eab79
parent 47
0780a9985266
child 49
c4952552023c

Ported the plug-in to PyQt6 for eric7.

.hgignore file | annotate | diff | comparison | revisions
ChangeLog file | annotate | diff | comparison | revisions
PluginSplitMergeCamelCase.py file | annotate | diff | comparison | revisions
PluginSplitMergeCamelCase.zip file | annotate | diff | comparison | revisions
SplitMergeCamelCase.e4p file | annotate | diff | comparison | revisions
SplitMergeCamelCase.epj file | annotate | diff | comparison | revisions
SplitMergeCamelCase/Documentation/source/Plugin_Tools_SplitMergeCamelCase.PluginSplitMergeCamelCase.html file | annotate | diff | comparison | revisions
SplitMergeCamelCase/Documentation/source/index-Plugin_Tools_SplitMergeCamelCase.SplitMergeCamelCase.html file | annotate | diff | comparison | revisions
SplitMergeCamelCase/Documentation/source/index-Plugin_Tools_SplitMergeCamelCase.html file | annotate | diff | comparison | revisions
SplitMergeCamelCase/Documentation/source/index.html file | annotate | diff | comparison | revisions
SplitMergeCamelCase/__init__.py file | annotate | diff | comparison | revisions
SplitMergeCamelCase/i18n/splitmergecamelcase_de.qm file | annotate | diff | comparison | revisions
SplitMergeCamelCase/i18n/splitmergecamelcase_de.ts file | annotate | diff | comparison | revisions
SplitMergeCamelCase/i18n/splitmergecamelcase_en.qm file | annotate | diff | comparison | revisions
SplitMergeCamelCase/i18n/splitmergecamelcase_en.ts file | annotate | diff | comparison | revisions
SplitMergeCamelCase/i18n/splitmergecamelcase_es.ts file | annotate | diff | comparison | revisions
SplitMergeCamelCase/i18n/splitmergecamelcase_ru.ts file | annotate | diff | comparison | revisions
__init__.py file | annotate | diff | comparison | revisions
--- a/.hgignore	Fri May 28 19:09:47 2021 +0200
+++ b/.hgignore	Fri May 28 19:37:46 2021 +0200
@@ -1,11 +1,6 @@
 glob:.eric6project
-glob:_eric6project
-glob:.eric5project
-glob:_eric5project
-glob:.eric4project
-glob:_eric4project
+glob:.eric7project
 glob:.ropeproject
-glob:_ropeproject
 glob:.directory
 glob:**.pyc
 glob:**.pyo
--- a/ChangeLog	Fri May 28 19:09:47 2021 +0200
+++ b/ChangeLog	Fri May 28 19:37:46 2021 +0200
@@ -1,5 +1,10 @@
 ChangeLog
 ---------
+Version 1.0.0:
+- first release of the eric7 variant
+
+************************************************************
+
 Version 3.1.0:
 - implemented some code simplifications
 
--- a/PluginSplitMergeCamelCase.py	Fri May 28 19:09:47 2021 +0200
+++ b/PluginSplitMergeCamelCase.py	Fri May 28 19:37:46 2021 +0200
@@ -11,25 +11,26 @@
 import os
 import re
 
-from PyQt5.QtCore import QObject, QTranslator
-from PyQt5.QtWidgets import QMenu
+from PyQt6.QtCore import QObject, QTranslator
+from PyQt6.QtWidgets import QMenu
 
-from E5Gui.E5Application import e5App
+from EricWidgets.EricApplication import ericApp
 
 # Start-Of-Header
 name = "Camel Case Handling Plug-in"
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "3.1.0"
+version = "1.0.0"
 className = "SplitMergeCamelCasePlugin"
 packageName = "SplitMergeCamelCase"
-shortDescription = "Split, merge or convert camel case text"
+shortDescription = "Split, merge or convert camel/snake case text"
 longDescription = (
-    """This plug-in implements a tool to split, merge or convert"""
-    """ camel case text. It works with the text of the current"""
-    """ editor. The menu entries will only be selectable, if the"""
-    """ current editor has some selected text."""
+    """This plug-in implements a tool to split or merge camel case """
+    """or snake case text. It also offers the capability to convert"""
+    """ text between these case variants. It works with the text of"""
+    """ the current editor. The menu entries will only be enabled,"""
+    """ if the current editor has some selected text."""
 )
 needsRestart = False
 pyqtApi = 2
@@ -46,7 +47,8 @@
         """
         Constructor
         
-        @param ui reference to the user interface object (UI.UserInterface)
+        @param ui reference to the user interface object
+        @type UserInterface
         """
         super().__init__(ui)
         self.__ui = ui
@@ -63,7 +65,8 @@
         """
         Public method to activate this plugin.
         
-        @return tuple of None and activation status (boolean)
+        @return tuple of None and activation status
+        @rtype tuple of (None, bool)
         """
         global error
         error = ""     # clear previous error
@@ -78,12 +81,12 @@
             act = menu.addMenu(self.__menu)
             self.__mainActions.append(act)
         
-        e5App().getObject("ViewManager").editorOpenedEd.connect(
+        ericApp().getObject("ViewManager").editorOpenedEd.connect(
             self.__editorOpened)
-        e5App().getObject("ViewManager").editorClosedEd.connect(
+        ericApp().getObject("ViewManager").editorClosedEd.connect(
             self.__editorClosed)
         
-        for editor in e5App().getObject("ViewManager").getOpenEditors():
+        for editor in ericApp().getObject("ViewManager").getOpenEditors():
             self.__editorOpened(editor)
         
         return None, True
@@ -100,9 +103,9 @@
                 menu.removeAction(act)
         self.__mainActions = []
 
-        e5App().getObject("ViewManager").editorOpenedEd.disconnect(
+        ericApp().getObject("ViewManager").editorOpenedEd.disconnect(
             self.__editorOpened)
-        e5App().getObject("ViewManager").editorClosedEd.disconnect(
+        ericApp().getObject("ViewManager").editorClosedEd.disconnect(
             self.__editorClosed)
         
         for editor, acts in self.__editors.items():
@@ -127,7 +130,7 @@
                 loaded = translator.load(translation, locale_dir)
                 if loaded:
                     self.__translator = translator
-                    e5App().installTranslator(self.__translator)
+                    ericApp().installTranslator(self.__translator)
                 else:
                     print("Warning: translation file '{0}' could not be"
                           " loaded.".format(translation))
@@ -137,30 +140,47 @@
         """
         Private method to initialize the camel case handling menu.
         """
-        self.__menu = QMenu(self.tr("CamelCase Handling"))
-        self.__menu.addAction(self.tr("Split from CamelCase"),
-                              self.__splitCamelCase)
-        self.__menu.addAction(self.tr("Merge to CamelCase"),
-                              self.__mergeCamelCase)
-        self.__menu.addAction(self.tr("CamelCase to under_score"),
-                              self.__camelCaseToUnderscore)
-        self.__menu.addAction(self.tr("under_score to CamelCase"),
-                              self.__underscoreToCamelCase)
+        self.__menu = QMenu(self.tr("Camel/Snake Case Handling"))
+        self.__menu.addAction(
+            self.tr("Split from Camel Case"),
+            self.__splitCamelCase)
+        self.__menu.addAction(
+            self.tr("Merge to Camel Case"),
+            self.__mergeCamelCase)
+        self.__menu.addAction(
+            self.tr("Merge to Camel Case (upper case first)"),
+            self.__mergeCamelCaseUppercaseFirst)
+        self.__menu.addSeparator()
         self.__menu.addAction(
-            self.tr("under_score to CamelCase (upper case first)"),
-            self.__underscoreToCamelCaseUppercaseFirst)
+            self.tr("Split from Snake Case"),
+            self.__splitSnakeCase)
+        self.__menu.addAction(
+            self.tr("Merge to Snake Case"),
+            self.__mergeSnakeCase)
+        self.__menu.addSeparator()
+        self.__menu.addAction(
+            self.tr("Camel Case to Snake Case"),
+            self.__camelCaseToSnakeCase)
+        self.__menu.addAction(
+            self.tr("Snake Case to Camel Case"),
+            self.__snakeCaseToCamelCase)
+        self.__menu.addAction(
+            self.tr("Snake Case to Camel Case (upper case first)"),
+            self.__snakeCaseToCamelCaseUppercaseFirst)
     
     def __populateMenu(self, name, menu):
         """
         Private slot to populate the tools menu with our entries.
         
-        @param name name of the menu (string)
-        @param menu reference to the menu to be populated (QMenu)
+        @param name name of the menu
+        @type str
+        @param menu reference to the menu to be populated
+        @type QMenu
         """
         if name not in ["Tools", "PluginTools"]:
             return
         
-        editor = e5App().getObject("ViewManager").activeWindow()
+        editor = ericApp().getObject("ViewManager").activeWindow()
         
         if name == "Tools":
             if not menu.isEmpty():
@@ -175,7 +195,8 @@
         """
         Private slot called, when a new editor was opened.
         
-        @param editor reference to the new editor (QScintilla.Editor)
+        @param editor reference to the new editor
+        @type Editor
         """
         menu = editor.getMenu("Tools")
         if menu is not None:
@@ -191,7 +212,8 @@
         """
         Private slot called, when an editor was closed.
         
-        @param editor reference to the editor (QScintilla.Editor)
+        @param editor reference to the editor
+        @type Editor
         """
         with contextlib.suppress(KeyError):
             del self.__editors[editor]
@@ -201,9 +223,12 @@
         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 (string)
-        @param menu reference to the menu (QMenu)
+        @param menuName name of the menu to be shown
+        @type str
+        @param menu reference to the menu
+        @type QMenu
         @param editor reference to the editor
+        @type Editor
         """
         if menuName == "Tools":
             if self.__menu.menuAction() not in menu.actions():
@@ -221,9 +246,11 @@
         """
         Private method to change the selected text.
         
-        @param newText new (converted) text (string)
+        @param newText new (converted) text
+        @type str
         @param editor reference to the editor to apply the text
-            change to (Editor)
+            change to
+        @type Editor
         """
         editor.beginUndoAction()
         editor.replaceSelectedText(newText)
@@ -233,73 +260,119 @@
         """
         Private slot to split the selected camel case text.
         """
-        editor = e5App().getObject("ViewManager").activeWindow()
+        editor = ericApp().getObject("ViewManager").activeWindow()
         if editor is None:
             return
         
         text = editor.selectedText()
         if text:
-            newText = re.sub(r"([A-Z])", r" \1", text)
-            if newText.startswith(" "):
-                newText = newText[1:]
+            newText = re.sub(r"([A-Z])", r" \1", text).lstrip(" ")
             if newText != text:
                 self.__applyChange(newText, editor)
     
-    def __mergeCamelCase(self):
+    def __mergeCamelCase(self, uppercaseFirst=False):
         """
         Private slot to merge the selected text to camel case.
+        
+        @param uppercaseFirst flag indicating to upper case the
+            first character
+        @type bool
         """
-        editor = e5App().getObject("ViewManager").activeWindow()
+        editor = ericApp().getObject("ViewManager").activeWindow()
+        if editor is None:
+            return
+        
+        text = editor.selectedText()
+        if text:
+            newText = "".join(w[0].upper() + w[1:] for w in text.split())
+            if not uppercaseFirst:
+                newText = newText[0].lower() + newText[1:]
+            if newText != text:
+                self.__applyChange(newText, editor)
+    
+    def __mergeCamelCaseUppercaseFirst(self):
+        """
+        Private slot to merge the selected text to camel case upper casing
+        the first character.
+        """
+        self.__mergeCamelCase(True)
+    
+    def __splitSnakeCase(self):
+        """
+        Private slot to split the selected snake case text.
+        """
+        editor = ericApp().getObject("ViewManager").activeWindow()
         if editor is None:
             return
         
         text = editor.selectedText()
         if text:
-            newText = "".join(text.split())
+            newText = text.replace("_", " ").lstrip(" ")
             if newText != text:
                 self.__applyChange(newText, editor)
     
-    def __camelCaseToUnderscore(self):
+    def __mergeSnakeCase(self):
+        """
+        Private slot to merge the selected text to snake case.
+        """
+        editor = ericApp().getObject("ViewManager").activeWindow()
+        if editor is None:
+            return
+        
+        text = editor.selectedText()
+        if text:
+            newText = "_".join(w.lower() for w in text.split())
+            if newText != text:
+                self.__applyChange(newText, editor)
+    
+    def __camelCaseToSnakeCase(self):
         """
         Private slot to convert camel case text to underscore separated text.
         """
-        editor = e5App().getObject("ViewManager").activeWindow()
+        editor = ericApp().getObject("ViewManager").activeWindow()
         if editor is None:
             return
         
         text = editor.selectedText()
         if text:
-            newText = re.sub(r"([A-Z])", r"_\1", text).lower()
-            if newText.startswith("_"):
-                newText = newText[1:]
+            newText = re.sub(r"([A-Z])", r"_\1", text).lower().lstrip("_")
+            if text.startswith("__"):
+                newText = "__" + newText
+            elif text.startswith("_"):
+                newText = "_" + newText
             if newText != text:
                 self.__applyChange(newText, editor)
     
-    def __underscoreToCamelCase(self, uppercaseFirst=False):
+    def __snakeCaseToCamelCase(self, uppercaseFirst=False):
         """
         Private slot to convert underscore separated text to camel case.
         
         @param uppercaseFirst flag indicating to upper case the
-            first character (boolean)
+            first character
+        @type bool
         """
-        editor = e5App().getObject("ViewManager").activeWindow()
+        editor = ericApp().getObject("ViewManager").activeWindow()
         if editor is None:
             return
         
         text = editor.selectedText()
         if text:
-            newText = "".join([s.capitalize() for s in text.split("_")])
+            newText = "".join(s.capitalize() for s in text.split("_"))
             if not uppercaseFirst:
                 newText = newText[0].lower() + newText[1:]
+            if text.startswith("__"):
+                newText = "__" + newText
+            elif text.startswith("_"):
+                newText = "_" + newText
             if newText != text:
                 self.__applyChange(newText, editor)
     
-    def __underscoreToCamelCaseUppercaseFirst(self):
+    def __snakeCaseToCamelCaseUppercaseFirst(self):
         """
         Private slot to convert underscore separated text to camel case
         upper casing the first character.
         """
-        self.__underscoreToCamelCase(True)
+        self.__snakeCaseToCamelCase(True)
 
 #
 # eflag: noqa = M801
Binary file PluginSplitMergeCamelCase.zip has changed
--- a/SplitMergeCamelCase.e4p	Fri May 28 19:09:47 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,505 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE Project SYSTEM "Project-5.1.dtd">
-<!-- eric project file for project SplitMergeCamelCase -->
-<!-- Copyright (C) 2020 Detlev Offenbach, detlev@die-offenbachs.de -->
-<Project version="5.1">
-  <Language>en</Language>
-  <Hash>68ce2010b207c039fed70a037e0f0241f43dc925</Hash>
-  <ProgLanguage mixed="0">Python3</ProgLanguage>
-  <ProjectType>E6Plugin</ProjectType>
-  <Description>Plug-in to split, merge or convert camel case text. It works with the current editor. The menu entries will only be selectable, if the current editor has some selected text.</Description>
-  <Version>2.x</Version>
-  <Author>Detlev Offenbach</Author>
-  <Email>detlev@die-offenbachs.de</Email>
-  <TranslationPattern>SplitMergeCamelCase/i18n/splitmergecamelcase_%language%.ts</TranslationPattern>
-  <Eol index="1"/>
-  <Sources>
-    <Source>PluginSplitMergeCamelCase.py</Source>
-    <Source>SplitMergeCamelCase/__init__.py</Source>
-    <Source>__init__.py</Source>
-  </Sources>
-  <Translations>
-    <Translation>SplitMergeCamelCase/i18n/splitmergecamelcase_de.qm</Translation>
-    <Translation>SplitMergeCamelCase/i18n/splitmergecamelcase_de.ts</Translation>
-    <Translation>SplitMergeCamelCase/i18n/splitmergecamelcase_en.qm</Translation>
-    <Translation>SplitMergeCamelCase/i18n/splitmergecamelcase_en.ts</Translation>
-    <Translation>SplitMergeCamelCase/i18n/splitmergecamelcase_es.qm</Translation>
-    <Translation>SplitMergeCamelCase/i18n/splitmergecamelcase_es.ts</Translation>
-    <Translation>SplitMergeCamelCase/i18n/splitmergecamelcase_ru.qm</Translation>
-    <Translation>SplitMergeCamelCase/i18n/splitmergecamelcase_ru.ts</Translation>
-  </Translations>
-  <Others>
-    <Other>.hgignore</Other>
-    <Other>ChangeLog</Other>
-    <Other>PKGLIST</Other>
-    <Other>PluginSplitMergeCamelCase.zip</Other>
-    <Other>SplitMergeCamelCase.e4p</Other>
-    <Other>SplitMergeCamelCase/Documentation/LICENSE.GPL3</Other>
-    <Other>SplitMergeCamelCase/Documentation/source</Other>
-  </Others>
-  <MainScript>PluginSplitMergeCamelCase.py</MainScript>
-  <Vcs>
-    <VcsType>Mercurial</VcsType>
-    <VcsOptions>
-      <dict>
-        <key>
-          <string>add</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>checkout</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>commit</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>diff</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>export</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>global</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>history</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>log</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>remove</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>status</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>tag</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-        <key>
-          <string>update</string>
-        </key>
-        <value>
-          <list>
-            <string></string>
-          </list>
-        </value>
-      </dict>
-    </VcsOptions>
-  </Vcs>
-  <FiletypeAssociations>
-    <FiletypeAssociation pattern="*.idl" type="INTERFACES"/>
-    <FiletypeAssociation pattern="*.py" type="SOURCES"/>
-    <FiletypeAssociation pattern="*.py3" type="SOURCES"/>
-    <FiletypeAssociation pattern="*.pyw" type="SOURCES"/>
-    <FiletypeAssociation pattern="*.pyw3" type="SOURCES"/>
-    <FiletypeAssociation pattern="*.qm" type="TRANSLATIONS"/>
-    <FiletypeAssociation pattern="*.qrc" type="RESOURCES"/>
-    <FiletypeAssociation pattern="*.ts" type="TRANSLATIONS"/>
-    <FiletypeAssociation pattern="*.ui" type="FORMS"/>
-    <FiletypeAssociation pattern="*.ui.h" type="FORMS"/>
-    <FiletypeAssociation pattern="Ui_*.py" type="__IGNORE__"/>
-  </FiletypeAssociations>
-  <Documentation>
-    <DocumentationParams>
-      <dict>
-        <key>
-          <string>ERIC4DOC</string>
-        </key>
-        <value>
-          <dict>
-            <key>
-              <string>cssFile</string>
-            </key>
-            <value>
-              <string>%PYTHON%/eric6/CSSs/default.css</string>
-            </value>
-            <key>
-              <string>ignoreDirectories</string>
-            </key>
-            <value>
-              <list>
-                <string>.eric5project</string>
-                <string>.hg</string>
-                <string>.ropeproject</string>
-                <string>_eric5project</string>
-                <string>_ropeproject</string>
-                <string>.eric6project</string>
-              </list>
-            </value>
-            <key>
-              <string>ignoreFilePatterns</string>
-            </key>
-            <value>
-              <list>
-                <string>Ui_*.py</string>
-              </list>
-            </value>
-            <key>
-              <string>outputDirectory</string>
-            </key>
-            <value>
-              <string>SplitMergeCamelCase/Documentation/source</string>
-            </value>
-            <key>
-              <string>qtHelpEnabled</string>
-            </key>
-            <value>
-              <bool>False</bool>
-            </value>
-            <key>
-              <string>useRecursion</string>
-            </key>
-            <value>
-              <bool>True</bool>
-            </value>
-          </dict>
-        </value>
-      </dict>
-    </DocumentationParams>
-  </Documentation>
-  <Checkers>
-    <CheckersParams>
-      <dict>
-        <key>
-          <string>Pep8Checker</string>
-        </key>
-        <value>
-          <dict>
-            <key>
-              <string>AnnotationsChecker</string>
-            </key>
-            <value>
-              <dict>
-                <key>
-                  <string>MaximumComplexity</string>
-                </key>
-                <value>
-                  <int>3</int>
-                </value>
-                <key>
-                  <string>MinimumCoverage</string>
-                </key>
-                <value>
-                  <int>75</int>
-                </value>
-              </dict>
-            </value>
-            <key>
-              <string>BlankLines</string>
-            </key>
-            <value>
-              <tuple>
-                <int>2</int>
-                <int>1</int>
-              </tuple>
-            </value>
-            <key>
-              <string>BuiltinsChecker</string>
-            </key>
-            <value>
-              <dict>
-                <key>
-                  <string>bytes</string>
-                </key>
-                <value>
-                  <list>
-                    <string>unicode</string>
-                  </list>
-                </value>
-                <key>
-                  <string>chr</string>
-                </key>
-                <value>
-                  <list>
-                    <string>unichr</string>
-                  </list>
-                </value>
-                <key>
-                  <string>str</string>
-                </key>
-                <value>
-                  <list>
-                    <string>unicode</string>
-                  </list>
-                </value>
-              </dict>
-            </value>
-            <key>
-              <string>CommentedCodeChecker</string>
-            </key>
-            <value>
-              <dict>
-                <key>
-                  <string>Aggressive</string>
-                </key>
-                <value>
-                  <bool>False</bool>
-                </value>
-              </dict>
-            </value>
-            <key>
-              <string>CopyrightAuthor</string>
-            </key>
-            <value>
-              <string></string>
-            </value>
-            <key>
-              <string>CopyrightMinFileSize</string>
-            </key>
-            <value>
-              <int>0</int>
-            </value>
-            <key>
-              <string>DocstringType</string>
-            </key>
-            <value>
-              <string>eric</string>
-            </value>
-            <key>
-              <string>EnabledCheckerCategories</string>
-            </key>
-            <value>
-              <string>C, D, E, M, N, S, W</string>
-            </value>
-            <key>
-              <string>ExcludeFiles</string>
-            </key>
-            <value>
-              <string>*/Ui_*.py, */*_rc.py,</string>
-            </value>
-            <key>
-              <string>ExcludeMessages</string>
-            </key>
-            <value>
-              <string>C101,E265,E266,E305,E402,M811,N802,N803,N807,N808,N821,W293,W504</string>
-            </value>
-            <key>
-              <string>FixCodes</string>
-            </key>
-            <value>
-              <string></string>
-            </value>
-            <key>
-              <string>FixIssues</string>
-            </key>
-            <value>
-              <bool>False</bool>
-            </value>
-            <key>
-              <string>FutureChecker</string>
-            </key>
-            <value>
-              <string></string>
-            </value>
-            <key>
-              <string>HangClosing</string>
-            </key>
-            <value>
-              <bool>False</bool>
-            </value>
-            <key>
-              <string>IncludeMessages</string>
-            </key>
-            <value>
-              <string></string>
-            </value>
-            <key>
-              <string>LineComplexity</string>
-            </key>
-            <value>
-              <int>20</int>
-            </value>
-            <key>
-              <string>LineComplexityScore</string>
-            </key>
-            <value>
-              <int>10</int>
-            </value>
-            <key>
-              <string>MaxCodeComplexity</string>
-            </key>
-            <value>
-              <int>10</int>
-            </value>
-            <key>
-              <string>MaxDocLineLength</string>
-            </key>
-            <value>
-              <int>79</int>
-            </value>
-            <key>
-              <string>MaxLineLength</string>
-            </key>
-            <value>
-              <int>79</int>
-            </value>
-            <key>
-              <string>NoFixCodes</string>
-            </key>
-            <value>
-              <string>E501</string>
-            </value>
-            <key>
-              <string>RepeatMessages</string>
-            </key>
-            <value>
-              <bool>True</bool>
-            </value>
-            <key>
-              <string>SecurityChecker</string>
-            </key>
-            <value>
-              <dict>
-                <key>
-                  <string>CheckTypedException</string>
-                </key>
-                <value>
-                  <bool>False</bool>
-                </value>
-                <key>
-                  <string>HardcodedTmpDirectories</string>
-                </key>
-                <value>
-                  <list>
-                    <string>/tmp</string>
-                    <string>/var/tmp</string>
-                    <string>/dev/shm</string>
-                    <string>~/tmp</string>
-                  </list>
-                </value>
-                <key>
-                  <string>InsecureHashes</string>
-                </key>
-                <value>
-                  <list>
-                    <string>md4</string>
-                    <string>md5</string>
-                    <string>sha</string>
-                    <string>sha1</string>
-                  </list>
-                </value>
-                <key>
-                  <string>InsecureSslProtocolVersions</string>
-                </key>
-                <value>
-                  <list>
-                    <string>PROTOCOL_SSLv2</string>
-                    <string>SSLv2_METHOD</string>
-                    <string>SSLv23_METHOD</string>
-                    <string>PROTOCOL_SSLv3</string>
-                    <string>PROTOCOL_TLSv1</string>
-                    <string>SSLv3_METHOD</string>
-                    <string>TLSv1_METHOD</string>
-                  </list>
-                </value>
-                <key>
-                  <string>WeakKeySizeDsaHigh</string>
-                </key>
-                <value>
-                  <string>1024</string>
-                </value>
-                <key>
-                  <string>WeakKeySizeDsaMedium</string>
-                </key>
-                <value>
-                  <string>2048</string>
-                </value>
-                <key>
-                  <string>WeakKeySizeEcHigh</string>
-                </key>
-                <value>
-                  <string>160</string>
-                </value>
-                <key>
-                  <string>WeakKeySizeEcMedium</string>
-                </key>
-                <value>
-                  <string>224</string>
-                </value>
-                <key>
-                  <string>WeakKeySizeRsaHigh</string>
-                </key>
-                <value>
-                  <string>1024</string>
-                </value>
-                <key>
-                  <string>WeakKeySizeRsaMedium</string>
-                </key>
-                <value>
-                  <string>2048</string>
-                </value>
-              </dict>
-            </value>
-            <key>
-              <string>ShowIgnored</string>
-            </key>
-            <value>
-              <bool>False</bool>
-            </value>
-            <key>
-              <string>ValidEncodings</string>
-            </key>
-            <value>
-              <string>latin-1, utf-8</string>
-            </value>
-          </dict>
-        </value>
-      </dict>
-    </CheckersParams>
-  </Checkers>
-</Project>
--- a/SplitMergeCamelCase.epj	Fri May 28 19:09:47 2021 +0200
+++ b/SplitMergeCamelCase.epj	Fri May 28 19:37:46 2021 +0200
@@ -113,14 +113,12 @@
     "DOCSTRING": "",
     "DOCUMENTATIONPARMS": {
       "ERIC4DOC": {
-        "cssFile": "%PYTHON%/eric6/CSSs/default.css",
+        "cssFile": "%PYTHON%/eric7/CSSs/default.css",
         "ignoreDirectories": [
-          ".eric5project",
           ".hg",
           ".ropeproject",
-          "_eric5project",
-          "_ropeproject",
-          ".eric6project"
+          ".eric6project",
+          ".eric7project"
         ],
         "ignoreFilePatterns": [
           "Ui_*.py"
@@ -133,17 +131,25 @@
     "EMAIL": "detlev@die-offenbachs.de",
     "EOL": 1,
     "FILETYPES": {
+      "*.epj": "OTHERS",
       "*.idl": "INTERFACES",
+      "*.md": "OTHERS",
+      "*.proto": "PROTOCOLS",
       "*.py": "SOURCES",
       "*.py3": "SOURCES",
       "*.pyw": "SOURCES",
       "*.pyw3": "SOURCES",
       "*.qm": "TRANSLATIONS",
-      "*.qrc": "RESOURCES",
+      "*.rst": "OTHERS",
       "*.ts": "TRANSLATIONS",
+      "*.txt": "OTHERS",
       "*.ui": "FORMS",
-      "*.ui.h": "FORMS",
-      "Ui_*.py": "__IGNORE__"
+      "GNUmakefile": "OTHERS",
+      "Makefile": "OTHERS",
+      "README": "OTHERS",
+      "README.*": "OTHERS",
+      "Ui_*.py": "__IGNORE__",
+      "makefile": "OTHERS"
     },
     "FORMS": [],
     "HASH": "68ce2010b207c039fed70a037e0f0241f43dc925",
@@ -169,7 +175,6 @@
       "ChangeLog",
       "PKGLIST",
       "PluginSplitMergeCamelCase.zip",
-      "SplitMergeCamelCase.e4p",
       "SplitMergeCamelCase/Documentation/LICENSE.GPL3",
       "SplitMergeCamelCase/Documentation/source",
       "SplitMergeCamelCase.epj"
@@ -177,7 +182,7 @@
     "OTHERTOOLSPARMS": {},
     "PACKAGERSPARMS": {},
     "PROGLANGUAGE": "Python3",
-    "PROJECTTYPE": "E6Plugin",
+    "PROJECTTYPE": "E7Plugin",
     "PROJECTTYPESPECIFICDATA": {},
     "PROTOCOLS": [],
     "RCCPARAMS": {
@@ -253,6 +258,6 @@
       ]
     },
     "VCSOTHERDATA": {},
-    "VERSION": "2.x"
+    "VERSION": ""
   }
 }
\ No newline at end of file
--- a/SplitMergeCamelCase/Documentation/source/Plugin_Tools_SplitMergeCamelCase.PluginSplitMergeCamelCase.html	Fri May 28 19:09:47 2021 +0200
+++ b/SplitMergeCamelCase/Documentation/source/Plugin_Tools_SplitMergeCamelCase.PluginSplitMergeCamelCase.html	Fri May 28 19:37:46 2021 +0200
@@ -77,7 +77,7 @@
 <td>Private method to change the selected text.</td>
 </tr>
 <tr>
-<td><a href="#SplitMergeCamelCasePlugin.__camelCaseToUnderscore">__camelCaseToUnderscore</a></td>
+<td><a href="#SplitMergeCamelCasePlugin.__camelCaseToSnakeCase">__camelCaseToSnakeCase</a></td>
 <td>Private slot to convert camel case text to underscore separated text.</td>
 </tr>
 <tr>
@@ -105,20 +105,32 @@
 <td>Private slot to merge the selected text to camel case.</td>
 </tr>
 <tr>
+<td><a href="#SplitMergeCamelCasePlugin.__mergeCamelCaseUppercaseFirst">__mergeCamelCaseUppercaseFirst</a></td>
+<td>Private slot to merge the selected text to camel case upper casing the first character.</td>
+</tr>
+<tr>
+<td><a href="#SplitMergeCamelCasePlugin.__mergeSnakeCase">__mergeSnakeCase</a></td>
+<td>Private slot to merge the selected text to snake case.</td>
+</tr>
+<tr>
 <td><a href="#SplitMergeCamelCasePlugin.__populateMenu">__populateMenu</a></td>
 <td>Private slot to populate the tools menu with our entries.</td>
 </tr>
 <tr>
+<td><a href="#SplitMergeCamelCasePlugin.__snakeCaseToCamelCase">__snakeCaseToCamelCase</a></td>
+<td>Private slot to convert underscore separated text to camel case.</td>
+</tr>
+<tr>
+<td><a href="#SplitMergeCamelCasePlugin.__snakeCaseToCamelCaseUppercaseFirst">__snakeCaseToCamelCaseUppercaseFirst</a></td>
+<td>Private slot to convert underscore separated text to camel case upper casing the first character.</td>
+</tr>
+<tr>
 <td><a href="#SplitMergeCamelCasePlugin.__splitCamelCase">__splitCamelCase</a></td>
 <td>Private slot to split the selected camel case text.</td>
 </tr>
 <tr>
-<td><a href="#SplitMergeCamelCasePlugin.__underscoreToCamelCase">__underscoreToCamelCase</a></td>
-<td>Private slot to convert underscore separated text to camel case.</td>
-</tr>
-<tr>
-<td><a href="#SplitMergeCamelCasePlugin.__underscoreToCamelCaseUppercaseFirst">__underscoreToCamelCaseUppercaseFirst</a></td>
-<td>Private slot to convert underscore separated text to camel case upper casing the first character.</td>
+<td><a href="#SplitMergeCamelCasePlugin.__splitSnakeCase">__splitSnakeCase</a></td>
+<td>Private slot to split the selected snake case text.</td>
 </tr>
 <tr>
 <td><a href="#SplitMergeCamelCasePlugin.activate">activate</a></td>
@@ -144,9 +156,9 @@
 </p>
 <dl>
 
-<dt><i>ui</i></dt>
+<dt><i>ui</i> (UserInterface)</dt>
 <dd>
-reference to the user interface object (UI.UserInterface)
+reference to the user interface object
 </dd>
 </dl>
 <a NAME="SplitMergeCamelCasePlugin.__applyChange" ID="SplitMergeCamelCasePlugin.__applyChange"></a>
@@ -158,19 +170,19 @@
 </p>
 <dl>
 
-<dt><i>newText</i></dt>
+<dt><i>newText</i> (str)</dt>
 <dd>
-new (converted) text (string)
+new (converted) text
 </dd>
-<dt><i>editor</i></dt>
+<dt><i>editor</i> (Editor)</dt>
 <dd>
 reference to the editor to apply the text
-            change to (Editor)
+            change to
 </dd>
 </dl>
-<a NAME="SplitMergeCamelCasePlugin.__camelCaseToUnderscore" ID="SplitMergeCamelCasePlugin.__camelCaseToUnderscore"></a>
-<h4>SplitMergeCamelCasePlugin.__camelCaseToUnderscore</h4>
-<b>__camelCaseToUnderscore</b>(<i></i>)
+<a NAME="SplitMergeCamelCasePlugin.__camelCaseToSnakeCase" ID="SplitMergeCamelCasePlugin.__camelCaseToSnakeCase"></a>
+<h4>SplitMergeCamelCasePlugin.__camelCaseToSnakeCase</h4>
+<b>__camelCaseToSnakeCase</b>(<i></i>)
 
 <p>
         Private slot to convert camel case text to underscore separated text.
@@ -184,9 +196,9 @@
 </p>
 <dl>
 
-<dt><i>editor</i></dt>
+<dt><i>editor</i> (Editor)</dt>
 <dd>
-reference to the editor (QScintilla.Editor)
+reference to the editor
 </dd>
 </dl>
 <a NAME="SplitMergeCamelCasePlugin.__editorOpened" ID="SplitMergeCamelCasePlugin.__editorOpened"></a>
@@ -198,9 +210,9 @@
 </p>
 <dl>
 
-<dt><i>editor</i></dt>
+<dt><i>editor</i> (Editor)</dt>
 <dd>
-reference to the new editor (QScintilla.Editor)
+reference to the new editor
 </dd>
 </dl>
 <a NAME="SplitMergeCamelCasePlugin.__editorShowMenu" ID="SplitMergeCamelCasePlugin.__editorShowMenu"></a>
@@ -213,15 +225,15 @@
 </p>
 <dl>
 
-<dt><i>menuName</i></dt>
+<dt><i>menuName</i> (str)</dt>
 <dd>
-name of the menu to be shown (string)
+name of the menu to be shown
 </dd>
-<dt><i>menu</i></dt>
+<dt><i>menu</i> (QMenu)</dt>
 <dd>
-reference to the menu (QMenu)
+reference to the menu
 </dd>
-<dt><i>editor</i></dt>
+<dt><i>editor</i> (Editor)</dt>
 <dd>
 reference to the editor
 </dd>
@@ -242,11 +254,34 @@
 </p>
 <a NAME="SplitMergeCamelCasePlugin.__mergeCamelCase" ID="SplitMergeCamelCasePlugin.__mergeCamelCase"></a>
 <h4>SplitMergeCamelCasePlugin.__mergeCamelCase</h4>
-<b>__mergeCamelCase</b>(<i></i>)
+<b>__mergeCamelCase</b>(<i>uppercaseFirst=False</i>)
 
 <p>
         Private slot to merge the selected text to camel case.
 </p>
+<dl>
+
+<dt><i>uppercaseFirst</i> (bool)</dt>
+<dd>
+flag indicating to upper case the
+            first character
+</dd>
+</dl>
+<a NAME="SplitMergeCamelCasePlugin.__mergeCamelCaseUppercaseFirst" ID="SplitMergeCamelCasePlugin.__mergeCamelCaseUppercaseFirst"></a>
+<h4>SplitMergeCamelCasePlugin.__mergeCamelCaseUppercaseFirst</h4>
+<b>__mergeCamelCaseUppercaseFirst</b>(<i></i>)
+
+<p>
+        Private slot to merge the selected text to camel case upper casing
+        the first character.
+</p>
+<a NAME="SplitMergeCamelCasePlugin.__mergeSnakeCase" ID="SplitMergeCamelCasePlugin.__mergeSnakeCase"></a>
+<h4>SplitMergeCamelCasePlugin.__mergeSnakeCase</h4>
+<b>__mergeSnakeCase</b>(<i></i>)
+
+<p>
+        Private slot to merge the selected text to snake case.
+</p>
 <a NAME="SplitMergeCamelCasePlugin.__populateMenu" ID="SplitMergeCamelCasePlugin.__populateMenu"></a>
 <h4>SplitMergeCamelCasePlugin.__populateMenu</h4>
 <b>__populateMenu</b>(<i>name, menu</i>)
@@ -256,15 +291,38 @@
 </p>
 <dl>
 
-<dt><i>name</i></dt>
+<dt><i>name</i> (str)</dt>
 <dd>
-name of the menu (string)
+name of the menu
 </dd>
-<dt><i>menu</i></dt>
+<dt><i>menu</i> (QMenu)</dt>
 <dd>
-reference to the menu to be populated (QMenu)
+reference to the menu to be populated
 </dd>
 </dl>
+<a NAME="SplitMergeCamelCasePlugin.__snakeCaseToCamelCase" ID="SplitMergeCamelCasePlugin.__snakeCaseToCamelCase"></a>
+<h4>SplitMergeCamelCasePlugin.__snakeCaseToCamelCase</h4>
+<b>__snakeCaseToCamelCase</b>(<i>uppercaseFirst=False</i>)
+
+<p>
+        Private slot to convert underscore separated text to camel case.
+</p>
+<dl>
+
+<dt><i>uppercaseFirst</i> (bool)</dt>
+<dd>
+flag indicating to upper case the
+            first character
+</dd>
+</dl>
+<a NAME="SplitMergeCamelCasePlugin.__snakeCaseToCamelCaseUppercaseFirst" ID="SplitMergeCamelCasePlugin.__snakeCaseToCamelCaseUppercaseFirst"></a>
+<h4>SplitMergeCamelCasePlugin.__snakeCaseToCamelCaseUppercaseFirst</h4>
+<b>__snakeCaseToCamelCaseUppercaseFirst</b>(<i></i>)
+
+<p>
+        Private slot to convert underscore separated text to camel case
+        upper casing the first character.
+</p>
 <a NAME="SplitMergeCamelCasePlugin.__splitCamelCase" ID="SplitMergeCamelCasePlugin.__splitCamelCase"></a>
 <h4>SplitMergeCamelCasePlugin.__splitCamelCase</h4>
 <b>__splitCamelCase</b>(<i></i>)
@@ -272,28 +330,12 @@
 <p>
         Private slot to split the selected camel case text.
 </p>
-<a NAME="SplitMergeCamelCasePlugin.__underscoreToCamelCase" ID="SplitMergeCamelCasePlugin.__underscoreToCamelCase"></a>
-<h4>SplitMergeCamelCasePlugin.__underscoreToCamelCase</h4>
-<b>__underscoreToCamelCase</b>(<i>uppercaseFirst=False</i>)
+<a NAME="SplitMergeCamelCasePlugin.__splitSnakeCase" ID="SplitMergeCamelCasePlugin.__splitSnakeCase"></a>
+<h4>SplitMergeCamelCasePlugin.__splitSnakeCase</h4>
+<b>__splitSnakeCase</b>(<i></i>)
 
 <p>
-        Private slot to convert underscore separated text to camel case.
-</p>
-<dl>
-
-<dt><i>uppercaseFirst</i></dt>
-<dd>
-flag indicating to upper case the
-            first character (boolean)
-</dd>
-</dl>
-<a NAME="SplitMergeCamelCasePlugin.__underscoreToCamelCaseUppercaseFirst" ID="SplitMergeCamelCasePlugin.__underscoreToCamelCaseUppercaseFirst"></a>
-<h4>SplitMergeCamelCasePlugin.__underscoreToCamelCaseUppercaseFirst</h4>
-<b>__underscoreToCamelCaseUppercaseFirst</b>(<i></i>)
-
-<p>
-        Private slot to convert underscore separated text to camel case
-        upper casing the first character.
+        Private slot to split the selected snake case text.
 </p>
 <a NAME="SplitMergeCamelCasePlugin.activate" ID="SplitMergeCamelCasePlugin.activate"></a>
 <h4>SplitMergeCamelCasePlugin.activate</h4>
@@ -305,7 +347,13 @@
 <dl>
 <dt>Return:</dt>
 <dd>
-tuple of None and activation status (boolean)
+tuple of None and activation status
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (None, bool)
 </dd>
 </dl>
 <a NAME="SplitMergeCamelCasePlugin.deactivate" ID="SplitMergeCamelCasePlugin.deactivate"></a>
--- a/SplitMergeCamelCase/Documentation/source/index-Plugin_Tools_SplitMergeCamelCase.SplitMergeCamelCase.html	Fri May 28 19:09:47 2021 +0200
+++ b/SplitMergeCamelCase/Documentation/source/index-Plugin_Tools_SplitMergeCamelCase.SplitMergeCamelCase.html	Fri May 28 19:37:46 2021 +0200
@@ -22,7 +22,7 @@
 <h1>Plugin_Tools_SplitMergeCamelCase.SplitMergeCamelCase</h1>
 
 <p>
-Package implementing the split, merge or convert camel case plug-in data.
+Package implementing the split, merge or convert camel/snake case plug-in data.
 </p>
 
 
--- a/SplitMergeCamelCase/Documentation/source/index-Plugin_Tools_SplitMergeCamelCase.html	Fri May 28 19:09:47 2021 +0200
+++ b/SplitMergeCamelCase/Documentation/source/index-Plugin_Tools_SplitMergeCamelCase.html	Fri May 28 19:37:46 2021 +0200
@@ -22,7 +22,7 @@
 <h1>Plugin_Tools_SplitMergeCamelCase</h1>
 
 <p>
-Package implementing the split, merge or convert camel case plug-in.
+Package implementing the split, merge or convert camel/snake case plug-in.
 </p>
 
 <h3>Packages</h3>
@@ -30,7 +30,7 @@
 
 <tr>
 <td><a href="index-Plugin_Tools_SplitMergeCamelCase.SplitMergeCamelCase.html">SplitMergeCamelCase</a></td>
-<td>Package implementing the split, merge or convert camel case plug-in data.</td>
+<td>Package implementing the split, merge or convert camel/snake case plug-in data.</td>
 </tr>
 </table>
 
--- a/SplitMergeCamelCase/Documentation/source/index.html	Fri May 28 19:09:47 2021 +0200
+++ b/SplitMergeCamelCase/Documentation/source/index.html	Fri May 28 19:37:46 2021 +0200
@@ -27,7 +27,7 @@
 
 <tr>
 <td><a href="index-Plugin_Tools_SplitMergeCamelCase.html">Plugin_Tools_SplitMergeCamelCase</a></td>
-<td>Package implementing the split, merge or convert camel case plug-in.</td>
+<td>Package implementing the split, merge or convert camel/snake case plug-in.</td>
 </tr>
 </table>
 
--- a/SplitMergeCamelCase/__init__.py	Fri May 28 19:09:47 2021 +0200
+++ b/SplitMergeCamelCase/__init__.py	Fri May 28 19:37:46 2021 +0200
@@ -4,5 +4,5 @@
 #
 
 """
-Package implementing the split, merge or convert camel case plug-in data.
+Package implementing the split, merge or convert camel/snake case plug-in data.
 """
Binary file SplitMergeCamelCase/i18n/splitmergecamelcase_de.qm has changed
--- a/SplitMergeCamelCase/i18n/splitmergecamelcase_de.ts	Fri May 28 19:09:47 2021 +0200
+++ b/SplitMergeCamelCase/i18n/splitmergecamelcase_de.ts	Fri May 28 19:37:46 2021 +0200
@@ -1,36 +1,52 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="de_DE" sourcelanguage="">
-<context>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE">
+  <context>
     <name>SplitMergeCamelCasePlugin</name>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="139"/>
-        <source>CamelCase Handling</source>
-        <translation>Groß-/Kleinschreibungsbehandlung</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="143" />
+      <source>Camel/Snake Case Handling</source>
+      <translation>Camel/Snake Case Bearbeitung</translation>
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="140"/>
-        <source>Split from CamelCase</source>
-        <translation>An Großbuchstaben auftrennen</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="145" />
+      <source>Split from Camel Case</source>
+      <translation>Camel Case auftrennen</translation>
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="148" />
+      <source>Merge to Camel Case</source>
+      <translation>Zu Camel Case zusammenführen</translation>
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="151" />
+      <source>Merge to Camel Case (upper case first)</source>
+      <translation>Zu Camel Case zusammenführen (erster Buchstabe groß)</translation>
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="142"/>
-        <source>Merge to CamelCase</source>
-        <translation>An Großbuchstaben zusammenführen</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="155" />
+      <source>Split from Snake Case</source>
+      <translation>Snake Case auftrennen</translation>
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="144"/>
-        <source>CamelCase to under_score</source>
-        <translation>Groß-/Kleinschreibung zu Unterstrich</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="158" />
+      <source>Merge to Snake Case</source>
+      <translation>Zu Snake Case zusammenführen</translation>
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="146"/>
-        <source>under_score to CamelCase</source>
-        <translation>Unterstrich zu Groß-/Kleinschreibung</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="162" />
+      <source>Camel Case to Snake Case</source>
+      <translation>Camel Case nach Snake Case</translation>
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="148"/>
-        <source>under_score to CamelCase (upper case first)</source>
-        <translation>Unterstrich zu Groß-/Kleinschreibung (kleiner erster Buchstabe)</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="165" />
+      <source>Snake Case to Camel Case</source>
+      <translation>Snake Case nach Camel Case</translation>
     </message>
-</context>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="168" />
+      <source>Snake Case to Camel Case (upper case first)</source>
+      <translation>Snake Case nach Camel Case (erster Buchstabe groß)</translation>
+    </message>
+  </context>
 </TS>
Binary file SplitMergeCamelCase/i18n/splitmergecamelcase_en.qm has changed
--- a/SplitMergeCamelCase/i18n/splitmergecamelcase_en.ts	Fri May 28 19:09:47 2021 +0200
+++ b/SplitMergeCamelCase/i18n/splitmergecamelcase_en.ts	Fri May 28 19:37:46 2021 +0200
@@ -1,36 +1,52 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="en_US" sourcelanguage="">
-<context>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US" sourcelanguage="">
+  <context>
     <name>SplitMergeCamelCasePlugin</name>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="139"/>
-        <source>CamelCase Handling</source>
-        <translation type="unfinished"></translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="143" />
+      <source>Camel/Snake Case Handling</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="140"/>
-        <source>Split from CamelCase</source>
-        <translation type="unfinished"></translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="145" />
+      <source>Split from Camel Case</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="148" />
+      <source>Merge to Camel Case</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="151" />
+      <source>Merge to Camel Case (upper case first)</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="142"/>
-        <source>Merge to CamelCase</source>
-        <translation type="unfinished"></translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="155" />
+      <source>Split from Snake Case</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="144"/>
-        <source>CamelCase to under_score</source>
-        <translation type="unfinished"></translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="158" />
+      <source>Merge to Snake Case</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="146"/>
-        <source>under_score to CamelCase</source>
-        <translation type="unfinished"></translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="162" />
+      <source>Camel Case to Snake Case</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="148"/>
-        <source>under_score to CamelCase (upper case first)</source>
-        <translation type="unfinished"></translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="165" />
+      <source>Snake Case to Camel Case</source>
+      <translation type="unfinished" />
     </message>
-</context>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="168" />
+      <source>Snake Case to Camel Case (upper case first)</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
 </TS>
--- a/SplitMergeCamelCase/i18n/splitmergecamelcase_es.ts	Fri May 28 19:09:47 2021 +0200
+++ b/SplitMergeCamelCase/i18n/splitmergecamelcase_es.ts	Fri May 28 19:37:46 2021 +0200
@@ -1,36 +1,76 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="es_ES" sourcelanguage="">
-<context>
+<!DOCTYPE TS>
+<TS version="2.0" language="es_ES" sourcelanguage="">
+  <context>
     <name>SplitMergeCamelCasePlugin</name>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="139"/>
-        <source>CamelCase Handling</source>
-        <translation>Manejo de CamelCase</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="143" />
+      <source>Camel/Snake Case Handling</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="145" />
+      <source>Split from Camel Case</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="140"/>
-        <source>Split from CamelCase</source>
-        <translation>Dividir a partir de CamelCase</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="148" />
+      <source>Merge to Camel Case</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="151" />
+      <source>Merge to Camel Case (upper case first)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="155" />
+      <source>Split from Snake Case</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="158" />
+      <source>Merge to Snake Case</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="142"/>
-        <source>Merge to CamelCase</source>
-        <translation>Mezclar como CamelCase</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="162" />
+      <source>Camel Case to Snake Case</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="144"/>
-        <source>CamelCase to under_score</source>
-        <translation>CamelCase a guión_bajo</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="165" />
+      <source>Snake Case to Camel Case</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="168" />
+      <source>Snake Case to Camel Case (upper case first)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <source>CamelCase Handling</source>
+      <translation type="vanished">Manejo de CamelCase</translation>
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="146"/>
-        <source>under_score to CamelCase</source>
-        <translation>guión_bajo a CamelCase</translation>
+      <source>Split from CamelCase</source>
+      <translation type="vanished">Dividir a partir de CamelCase</translation>
+    </message>
+    <message>
+      <source>Merge to CamelCase</source>
+      <translation type="vanished">Mezclar como CamelCase</translation>
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="148"/>
-        <source>under_score to CamelCase (upper case first)</source>
-        <translation>guión_bajo a CamelCase (mayúscula primero)</translation>
+      <source>CamelCase to under_score</source>
+      <translation type="vanished">CamelCase a guión_bajo</translation>
+    </message>
+    <message>
+      <source>under_score to CamelCase</source>
+      <translation type="vanished">guión_bajo a CamelCase</translation>
     </message>
-</context>
+    <message>
+      <source>under_score to CamelCase (upper case first)</source>
+      <translation type="vanished">guión_bajo a CamelCase (mayúscula primero)</translation>
+    </message>
+  </context>
 </TS>
--- a/SplitMergeCamelCase/i18n/splitmergecamelcase_ru.ts	Fri May 28 19:09:47 2021 +0200
+++ b/SplitMergeCamelCase/i18n/splitmergecamelcase_ru.ts	Fri May 28 19:37:46 2021 +0200
@@ -1,36 +1,76 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="2.0" language="ru" sourcelanguage="">
-<context>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru" sourcelanguage="">
+  <context>
     <name>SplitMergeCamelCasePlugin</name>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="139"/>
-        <source>CamelCase Handling</source>
-        <translation>Обработка по стандарту CamelCase</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="143" />
+      <source>Camel/Snake Case Handling</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="145" />
+      <source>Split from Camel Case</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="140"/>
-        <source>Split from CamelCase</source>
-        <translation>Разделение по CamelCase</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="148" />
+      <source>Merge to Camel Case</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="151" />
+      <source>Merge to Camel Case (upper case first)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="155" />
+      <source>Split from Snake Case</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="158" />
+      <source>Merge to Snake Case</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="142"/>
-        <source>Merge to CamelCase</source>
-        <translation>Слияние по CamelCase</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="162" />
+      <source>Camel Case to Snake Case</source>
+      <translation type="unfinished" />
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="144"/>
-        <source>CamelCase to under_score</source>
-        <translation>CamelCase конвертировать в under_score</translation>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="165" />
+      <source>Snake Case to Camel Case</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../../PluginSplitMergeCamelCase.py" line="168" />
+      <source>Snake Case to Camel Case (upper case first)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <source>CamelCase Handling</source>
+      <translation type="vanished">Обработка по стандарту CamelCase</translation>
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="146"/>
-        <source>under_score to CamelCase</source>
-        <translation>under_score конвертировать в сamelCase (маленькая первая буква)</translation>
+      <source>Split from CamelCase</source>
+      <translation type="vanished">Разделение по CamelCase</translation>
+    </message>
+    <message>
+      <source>Merge to CamelCase</source>
+      <translation type="vanished">Слияние по CamelCase</translation>
     </message>
     <message>
-        <location filename="../../PluginSplitMergeCamelCase.py" line="148"/>
-        <source>under_score to CamelCase (upper case first)</source>
-        <translation>under_score конвертировать в CamelCase (большая первая буква)</translation>
+      <source>CamelCase to under_score</source>
+      <translation type="vanished">CamelCase конвертировать в under_score</translation>
+    </message>
+    <message>
+      <source>under_score to CamelCase</source>
+      <translation type="vanished">under_score конвертировать в сamelCase (маленькая первая буква)</translation>
     </message>
-</context>
+    <message>
+      <source>under_score to CamelCase (upper case first)</source>
+      <translation type="vanished">under_score конвертировать в CamelCase (большая первая буква)</translation>
+    </message>
+  </context>
 </TS>
--- a/__init__.py	Fri May 28 19:09:47 2021 +0200
+++ b/__init__.py	Fri May 28 19:37:46 2021 +0200
@@ -4,5 +4,5 @@
 #
 
 """
-Package implementing the split, merge or convert camel case plug-in.
+Package implementing the split, merge or convert camel/snake case plug-in.
 """

eric ide

mercurial