PluginSplitMergeCamelCase.py

Thu, 30 Dec 2021 12:40:47 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 30 Dec 2021 12:40:47 +0100
branch
eric7
changeset 52
8dcfbc830b52
parent 51
f862797030d1
child 54
a29b5f01c2fa
permissions
-rw-r--r--

Updated version info to indicate relation to eric7.

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
51
f862797030d1 Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 48
diff changeset
3 # Copyright (c) 2013 - 2022 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
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
17 from 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
52
8dcfbc830b52 Updated version info to indicate relation to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 51
diff changeset
24 version = "10.0.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 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
46 def __init__(self, ui):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
47 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
48 Constructor
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
49
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
50 @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
51 @type UserInterface
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
52 """
45
e12f7ab5f6c0 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
53 super().__init__(ui)
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
54 self.__ui = ui
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
56 self.__translator = None
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
57 self.__loadTranslator()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
58
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
59 self.__initMenu()
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
60
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
61 self.__editors = {}
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
62 self.__mainActions = []
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
63
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64 def activate(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
65 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
66 Public method to activate this plugin.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
67
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
68 @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
69 @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
70 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
71 global error
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
72 error = "" # clear previous error
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
73
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
74 self.__ui.showMenu.connect(self.__populateMenu)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
76 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
77 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
78 if not menu.isEmpty():
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
79 act = menu.addSeparator()
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
80 self.__mainActions.append(act)
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
81 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
82 self.__mainActions.append(act)
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
83
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
84 ericApp().getObject("ViewManager").editorOpenedEd.connect(
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
85 self.__editorOpened)
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
86 ericApp().getObject("ViewManager").editorClosedEd.connect(
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
87 self.__editorClosed)
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
88
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
89 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
90 self.__editorOpened(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
91
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92 return None, True
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
93
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94 def deactivate(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
95 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 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
97 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
98 self.__ui.showMenu.disconnect(self.__populateMenu)
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
99
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
100 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
101 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
102 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
103 menu.removeAction(act)
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
104 self.__mainActions = []
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
105
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
106 ericApp().getObject("ViewManager").editorOpenedEd.disconnect(
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
107 self.__editorOpened)
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(
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
109 self.__editorClosed)
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
110
13
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
111 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
112 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
113 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
114 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
115 for act in acts:
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
116 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
117 self.__editors = {}
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
118
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
119 def __loadTranslator(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
120 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
121 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
122 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
123 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
124 loc = self.__ui.getLocale()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
125 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
126 locale_dir = os.path.join(
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
127 os.path.dirname(__file__), "SplitMergeCamelCase", "i18n")
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
128 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
129 translator = QTranslator(None)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
130 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
131 if loaded:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
132 self.__translator = translator
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
133 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
134 else:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
135 print("Warning: translation file '{0}' could not be"
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
136 " loaded.".format(translation))
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
137 print("Using default.")
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
138
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
139 def __initMenu(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
140 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
141 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
142 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
143 self.__menu = QMenu(self.tr("Camel/Snake Case Handling"))
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
144 self.__menu.addAction(
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
145 self.tr("Split from Camel Case"),
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
146 self.__splitCamelCase)
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
147 self.__menu.addAction(
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
148 self.tr("Merge to Camel Case"),
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
149 self.__mergeCamelCase)
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)"),
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
152 self.__mergeCamelCaseUppercaseFirst)
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
153 self.__menu.addSeparator()
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
154 self.__menu.addAction(
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
155 self.tr("Split from Snake Case"),
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
156 self.__splitSnakeCase)
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
157 self.__menu.addAction(
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
158 self.tr("Merge to Snake Case"),
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
159 self.__mergeSnakeCase)
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
160 self.__menu.addSeparator()
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
161 self.__menu.addAction(
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
162 self.tr("Camel Case to Snake Case"),
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
163 self.__camelCaseToSnakeCase)
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"),
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
166 self.__snakeCaseToCamelCase)
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
167 self.__menu.addAction(
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
168 self.tr("Snake Case to Camel Case (upper case first)"),
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
169 self.__snakeCaseToCamelCaseUppercaseFirst)
1
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 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
172 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
173 Private slot to populate the tools menu with our entries.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
174
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
175 @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
176 @type str
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
177 @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
178 @type QMenu
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
179 """
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
180 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
181 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
182
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
183 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
184
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
185 if name == "Tools":
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
186 if not menu.isEmpty():
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
187 menu.addSeparator()
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
188 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
189 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
190 elif name == "PluginTools" and self.__mainActions:
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
191 self.__menu.setEnabled(editor is not None and
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
192 editor.hasSelectedText())
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
193
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
194 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
195 """
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
196 Private slot called, when a new editor was opened.
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
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
198 @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
199 @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
200 """
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
201 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
202 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
203 self.__editors[editor] = []
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
204 if not menu.isEmpty():
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
205 act = menu.addSeparator()
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
206 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
207 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
208 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
209 editor.showMenu.connect(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
210
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
211 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
212 """
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
213 Private slot called, when an editor was closed.
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
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
215 @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
216 @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
217 """
45
e12f7ab5f6c0 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
218 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
219 del self.__editors[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
220
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 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
222 """
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
223 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
224 about to be shown.
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
225
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
226 @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
227 @type str
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
228 @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
229 @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
230 @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
231 @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
232 """
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
233 if menuName == "Tools":
30
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
234 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
235 # Re-add our menu
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
236 self.__editors[editor] = []
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
237 if not menu.isEmpty():
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
238 act = menu.addSeparator()
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
239 self.__editors[editor].append(act)
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
240 act = menu.addMenu(self.__menu)
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
241 self.__editors[editor].append(act)
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
242
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
243 self.__menu.setEnabled(editor.hasSelectedText())
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
244
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
245 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
246 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
247 Private method to change the selected text.
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
248
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
249 @param newText new (converted) text
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
250 @type str
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
251 @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
252 change to
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
253 @type Editor
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
254 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
255 editor.beginUndoAction()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
256 editor.replaceSelectedText(newText)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
257 editor.endUndoAction()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
258
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
259 def __splitCamelCase(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
260 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
261 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
262 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
263 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
264 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
265 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
266
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
267 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
268 if text:
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
269 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
270 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
271 self.__applyChange(newText, editor)
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
272
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
273 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
274 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
275 Private slot to merge the selected text to camel case.
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
276
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
277 @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
278 first character
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
279 @type bool
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
280 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
281 editor = ericApp().getObject("ViewManager").activeWindow()
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
282 if editor is None:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
283 return
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
284
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
285 text = editor.selectedText()
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
286 if text:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
287 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
288 if not uppercaseFirst:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
289 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
290 if newText != text:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
291 self.__applyChange(newText, editor)
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
292
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
293 def __mergeCamelCaseUppercaseFirst(self):
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 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
296 the first character.
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
297 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
298 self.__mergeCamelCase(True)
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
299
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
300 def __splitSnakeCase(self):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
301 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
302 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
303 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
304 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
305 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
306 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
307
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
308 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
309 if text:
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
310 newText = text.replace("_", " ").lstrip(" ")
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
311 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
312 self.__applyChange(newText, editor)
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
313
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
314 def __mergeSnakeCase(self):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
315 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
316 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
317 """
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
318 editor = ericApp().getObject("ViewManager").activeWindow()
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
319 if editor is None:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
320 return
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
321
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
322 text = editor.selectedText()
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
323 if text:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
324 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
325 if newText != text:
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
326 self.__applyChange(newText, editor)
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
327
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
328 def __camelCaseToSnakeCase(self):
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
329 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
330 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
331 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
332 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
333 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
334 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
335
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
336 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
337 if text:
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
338 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
339 if text.startswith("__"):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
340 newText = "__" + newText
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
341 elif text.startswith("_"):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
342 newText = "_" + newText
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
343 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
344 self.__applyChange(newText, editor)
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
345
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
346 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
347 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
348 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
349
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
350 @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
351 first character
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
352 @type bool
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
353 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
354 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
355 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
356 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
357
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
358 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
359 if text:
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
360 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
361 if not uppercaseFirst:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
362 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
363 if text.startswith("__"):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
364 newText = "__" + newText
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
365 elif text.startswith("_"):
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
366 newText = "_" + newText
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
367 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
368 self.__applyChange(newText, editor)
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
369
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
370 def __snakeCaseToCamelCaseUppercaseFirst(self):
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
371 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
372 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
373 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
374 """
48
4f0e000eab79 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
375 self.__snakeCaseToCamelCase(True)
38
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
376
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
377 #
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
378 # eflag: noqa = M801

eric ide

mercurial