PluginSplitMergeCamelCase.py

Sat, 31 Dec 2022 16:28:00 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 31 Dec 2022 16:28:00 +0100
branch
eric7
changeset 58
f0ea8edb3c5a
parent 55
dbc20f5da446
child 59
67f35ee56a57
permissions
-rw-r--r--

Updated copyright for 2023.

1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
1 # -*- coding: utf-8 -*-
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
2
58
f0ea8edb3c5a Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 55
diff changeset
3 # Copyright (c) 2013 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
4 #
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
5
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
6 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
7 Module implementing the split, merge or convert camel case plug-in.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
8 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
9
45
e12f7ab5f6c0 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
10 import contextlib
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
11 import os
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
12 import re
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
13
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
14 from PyQt6.QtCore import QObject, QTranslator
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
15 from PyQt6.QtWidgets import QMenu
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
16
55
dbc20f5da446 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
17 from eric7.EricWidgets.EricApplication import ericApp
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
18
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
19 # Start-Of-Header
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
20 name = "Camel Case Handling Plug-in"
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
21 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
22 autoactivate = True
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
23 deactivateable = True
55
dbc20f5da446 Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 54
diff changeset
24 version = "10.1.0"
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
25 className = "SplitMergeCamelCasePlugin"
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
26 packageName = "SplitMergeCamelCase"
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
27 shortDescription = "Split, merge or convert camel/snake case text"
42
81b488b5ad5d Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
28 longDescription = (
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
29 """This plug-in implements a tool to split or merge camel case """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
30 """or snake case text. It also offers the capability to convert"""
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
31 """ text between these case variants. It works with the text of"""
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
32 """ the current editor. The menu entries will only be enabled,"""
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
33 """ if the current editor has some selected text."""
42
81b488b5ad5d Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
34 )
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
35 needsRestart = False
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
36 pyqtApi = 2
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
37 # End-Of-Header
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
38
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
39 error = ""
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
40
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
41
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
42 class SplitMergeCamelCasePlugin(QObject):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
43 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
44 Class implementing the split, merge or convert camel case plug-in.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
45 """
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
46
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
47 def __init__(self, ui):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
48 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
49 Constructor
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
50
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
51 @param ui reference to the user interface object
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
52 @type UserInterface
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 """
45
e12f7ab5f6c0 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
54 super().__init__(ui)
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55 self.__ui = ui
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
56
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
57 self.__translator = None
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
58 self.__loadTranslator()
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
59
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
60 self.__initMenu()
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
61
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
62 self.__editors = {}
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
63 self.__mainActions = []
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
64
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
65 def activate(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
66 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
67 Public method to activate this plugin.
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
68
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
69 @return tuple of None and activation status
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
70 @rtype tuple of (None, bool)
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
71 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
72 global error
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
73 error = "" # clear previous error
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
74
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75 self.__ui.showMenu.connect(self.__populateMenu)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
76
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
77 menu = self.__ui.getMenu("plugin_tools")
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
78 if menu is not None:
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
79 if not menu.isEmpty():
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
80 act = menu.addSeparator()
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
81 self.__mainActions.append(act)
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
82 act = menu.addMenu(self.__menu)
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
83 self.__mainActions.append(act)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
84
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
85 ericApp().getObject("ViewManager").editorOpenedEd.connect(self.__editorOpened)
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
86 ericApp().getObject("ViewManager").editorClosedEd.connect(self.__editorClosed)
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
87
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
88 for editor in ericApp().getObject("ViewManager").getOpenEditors():
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
89 self.__editorOpened(editor)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
90
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
91 return None, True
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
92
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
93 def deactivate(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
95 Public method to deactivate this plugin.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
97 self.__ui.showMenu.disconnect(self.__populateMenu)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
98
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
99 menu = self.__ui.getMenu("plugin_tools")
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
100 if menu is not None:
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
101 for act in self.__mainActions:
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
102 menu.removeAction(act)
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
103 self.__mainActions = []
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
104
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
105 ericApp().getObject("ViewManager").editorOpenedEd.disconnect(
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
106 self.__editorOpened
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
107 )
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
108 ericApp().getObject("ViewManager").editorClosedEd.disconnect(
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
109 self.__editorClosed
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
110 )
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
111
13
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
112 for editor, acts in self.__editors.items():
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
113 editor.showMenu.disconnect(self.__editorShowMenu)
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
114 menu = editor.getMenu("Tools")
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
115 if menu is not None:
13
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
116 for act in acts:
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
117 menu.removeAction(act)
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
118 self.__editors = {}
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
119
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
120 def __loadTranslator(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
121 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
122 Private method to load the translation file.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
123 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
124 if self.__ui is not None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
125 loc = self.__ui.getLocale()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
126 if loc and loc != "C":
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
127 locale_dir = os.path.join(
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
128 os.path.dirname(__file__), "SplitMergeCamelCase", "i18n"
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
129 )
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
130 translation = "splitmergecamelcase_{0}".format(loc)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
131 translator = QTranslator(None)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
132 loaded = translator.load(translation, locale_dir)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
133 if loaded:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
134 self.__translator = translator
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
135 ericApp().installTranslator(self.__translator)
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
136 else:
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
137 print(
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
138 "Warning: translation file '{0}' could not be"
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
139 " loaded.".format(translation)
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
140 )
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
141 print("Using default.")
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
142
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
143 def __initMenu(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
144 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
145 Private method to initialize the camel case handling menu.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
146 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
147 self.__menu = QMenu(self.tr("Camel/Snake Case Handling"))
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
148 self.__menu.addAction(self.tr("Split from Camel Case"), self.__splitCamelCase)
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
149 self.__menu.addAction(self.tr("Merge to Camel Case"), self.__mergeCamelCase)
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
150 self.__menu.addAction(
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
151 self.tr("Merge to Camel Case (upper case first)"),
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
152 self.__mergeCamelCaseUppercaseFirst,
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
153 )
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
154 self.__menu.addSeparator()
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
155 self.__menu.addAction(self.tr("Split from Snake Case"), self.__splitSnakeCase)
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
156 self.__menu.addAction(self.tr("Merge to Snake Case"), self.__mergeSnakeCase)
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
157 self.__menu.addSeparator()
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
158 self.__menu.addAction(
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
159 self.tr("Camel Case to Snake Case"), self.__camelCaseToSnakeCase
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
160 )
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
161 self.__menu.addAction(
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
162 self.tr("Snake Case to Camel Case"), self.__snakeCaseToCamelCase
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
163 )
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
164 self.__menu.addAction(
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
165 self.tr("Snake Case to Camel Case (upper case first)"),
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
166 self.__snakeCaseToCamelCaseUppercaseFirst,
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
167 )
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
168
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
169 def __populateMenu(self, name, menu):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
170 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
171 Private slot to populate the tools menu with our entries.
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
172
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
173 @param name name of the menu
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
174 @type str
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
175 @param menu reference to the menu to be populated
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
176 @type QMenu
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
177 """
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
178 if name not in ["Tools", "PluginTools"]:
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
179 return
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
180
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
181 editor = ericApp().getObject("ViewManager").activeWindow()
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
182
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
183 if name == "Tools":
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
184 if not menu.isEmpty():
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
185 menu.addSeparator()
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
186 act = menu.addMenu(self.__menu)
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
187 act.setEnabled(editor is not None and editor.hasSelectedText())
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
188 elif name == "PluginTools" and self.__mainActions:
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
189 self.__menu.setEnabled(editor is not None and editor.hasSelectedText())
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
190
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
191 def __editorOpened(self, editor):
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
192 """
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
193 Private slot called, when a new editor was opened.
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
194
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
195 @param editor reference to the new editor
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
196 @type Editor
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
197 """
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
198 menu = editor.getMenu("Tools")
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
199 if menu is not None:
13
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
200 self.__editors[editor] = []
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
201 if not menu.isEmpty():
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
202 act = menu.addSeparator()
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
203 self.__editors[editor].append(act)
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
204 act = menu.addMenu(self.__menu)
13
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
205 self.__editors[editor].append(act)
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
206 editor.showMenu.connect(self.__editorShowMenu)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
207
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
208 def __editorClosed(self, editor):
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
209 """
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
210 Private slot called, when an editor was closed.
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
211
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
212 @param editor reference to the editor
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
213 @type Editor
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
214 """
45
e12f7ab5f6c0 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
215 with contextlib.suppress(KeyError):
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
216 del self.__editors[editor]
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
217
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
218 def __editorShowMenu(self, menuName, menu, editor):
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
219 """
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
220 Private slot called, when the the editor context menu or a submenu is
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
221 about to be shown.
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
222
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
223 @param menuName name of the menu to be shown
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
224 @type str
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
225 @param menu reference to the menu
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
226 @type QMenu
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
227 @param editor reference to the editor
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
228 @type Editor
10
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
229 """
97dd3b380cfd Added support for the editor Tools context menu (as of eric5 5.4.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
230 if menuName == "Tools":
30
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
231 if self.__menu.menuAction() not in menu.actions():
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
232 # Re-add our menu
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
233 self.__editors[editor] = []
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
234 if not menu.isEmpty():
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
235 act = menu.addSeparator()
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
236 self.__editors[editor].append(act)
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
237 act = menu.addMenu(self.__menu)
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
238 self.__editors[editor].append(act)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
239
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
240 self.__menu.setEnabled(editor.hasSelectedText())
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
241
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
242 def __applyChange(self, newText, editor):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
243 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
244 Private method to change the selected text.
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
245
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
246 @param newText new (converted) text
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
247 @type str
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
248 @param editor reference to the editor to apply the text
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
249 change to
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
250 @type Editor
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
251 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
252 editor.beginUndoAction()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
253 editor.replaceSelectedText(newText)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
254 editor.endUndoAction()
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
255
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
256 def __splitCamelCase(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
257 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
258 Private slot to split the selected camel case text.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
259 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
260 editor = ericApp().getObject("ViewManager").activeWindow()
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
261 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
262 return
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
263
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
264 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
265 if text:
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
266 newText = re.sub(r"([A-Z])", r" \1", text).lstrip(" ")
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
267 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
268 self.__applyChange(newText, editor)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
269
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
270 def __mergeCamelCase(self, uppercaseFirst=False):
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
272 Private slot to merge the selected text to camel case.
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
273
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
274 @param uppercaseFirst flag indicating to upper case the
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
275 first character
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
276 @type bool
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
277 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
278 editor = ericApp().getObject("ViewManager").activeWindow()
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
279 if editor is None:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
280 return
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
281
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
282 text = editor.selectedText()
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
283 if text:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
284 newText = "".join(w[0].upper() + w[1:] for w in text.split())
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
285 if not uppercaseFirst:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
286 newText = newText[0].lower() + newText[1:]
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
287 if newText != text:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
288 self.__applyChange(newText, editor)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
289
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
290 def __mergeCamelCaseUppercaseFirst(self):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
291 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
292 Private slot to merge the selected text to camel case upper casing
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
293 the first character.
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
294 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
295 self.__mergeCamelCase(True)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
296
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
297 def __splitSnakeCase(self):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
298 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
299 Private slot to split the selected snake case text.
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
300 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
301 editor = ericApp().getObject("ViewManager").activeWindow()
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
302 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
303 return
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
304
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
305 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
306 if text:
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
307 newText = text.replace("_", " ").lstrip(" ")
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
308 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
309 self.__applyChange(newText, editor)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
310
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
311 def __mergeSnakeCase(self):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
312 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
313 Private slot to merge the selected text to snake case.
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
314 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
315 editor = ericApp().getObject("ViewManager").activeWindow()
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
316 if editor is None:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
317 return
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
318
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
319 text = editor.selectedText()
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
320 if text:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
321 newText = "_".join(w.lower() for w in text.split())
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
322 if newText != text:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
323 self.__applyChange(newText, editor)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
324
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
325 def __camelCaseToSnakeCase(self):
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
326 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
327 Private slot to convert camel case text to underscore separated text.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
328 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
329 editor = ericApp().getObject("ViewManager").activeWindow()
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
330 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
331 return
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
332
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
333 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
334 if text:
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
335 newText = re.sub(r"([A-Z])", r"_\1", text).lower().lstrip("_")
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
336 if text.startswith("__"):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
337 newText = "__" + newText
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
338 elif text.startswith("_"):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
339 newText = "_" + newText
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
340 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
341 self.__applyChange(newText, editor)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
342
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
343 def __snakeCaseToCamelCase(self, uppercaseFirst=False):
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
344 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
345 Private slot to convert underscore separated text to camel case.
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
346
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
347 @param uppercaseFirst flag indicating to upper case the
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
348 first character
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
349 @type bool
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
350 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
351 editor = ericApp().getObject("ViewManager").activeWindow()
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
352 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
353 return
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
354
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
355 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
356 if text:
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
357 newText = "".join(s.capitalize() for s in text.split("_"))
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
358 if not uppercaseFirst:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
359 newText = newText[0].lower() + newText[1:]
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
360 if text.startswith("__"):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
361 newText = "__" + newText
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
362 elif text.startswith("_"):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
363 newText = "_" + newText
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
364 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
365 self.__applyChange(newText, editor)
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
366
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
367 def __snakeCaseToCamelCaseUppercaseFirst(self):
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
368 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
369 Private slot to convert underscore separated text to camel case
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
370 upper casing the first character.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
371 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
372 self.__snakeCaseToCamelCase(True)
38
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
373
54
a29b5f01c2fa Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 52
diff changeset
374
38
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
375 #
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
376 # eflag: noqa = M801

eric ide

mercurial