PluginSplitMergeCamelCase.py

Thu, 10 Jan 2019 14:21:10 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 10 Jan 2019 14:21:10 +0100
changeset 40
fccc7b2859e9
parent 39
47534763ef9b
child 41
a7bfbf2f4348
permissions
-rw-r--r--

Updated copyright for 2019.

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
40
fccc7b2859e9 Updated copyright for 2019.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
3 # Copyright (c) 2013 - 2019 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
38
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
10 from __future__ import unicode_literals
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
11
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
12 import os
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
13 import re
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
14
24
37d06c3a577e Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
15 from PyQt5.QtCore import QObject, QTranslator
37d06c3a577e Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 22
diff changeset
16 from PyQt5.QtWidgets import QMenu
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
17
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
18 from E5Gui.E5Application import e5App
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
19
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
20 # Start-Of-Header
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
21 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
22 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
23 autoactivate = True
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
24 deactivateable = True
38
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
25 version = "2.1.1"
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
26 className = "SplitMergeCamelCasePlugin"
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
27 packageName = "SplitMergeCamelCase"
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
28 shortDescription = "Split, merge or convert camel case text"
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
29 longDescription = \
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
30 """This plug-in implements a tool to split, merge or convert""" \
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
31 """ camel case text. It works with the text of the current""" \
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
32 """ editor. The menu entries will only be selectable, if the""" \
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
33 """ current editor has some selected text."""
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
34 needsRestart = False
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
35 pyqtApi = 2
22
7845a580e12f Released as stable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 20
diff changeset
36 python2Compatible = True
1
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
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
50 @param ui reference to the user interface object (UI.UserInterface)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
51 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
52 QObject.__init__(self, ui)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 self.__ui = ui
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
54
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55 self.__translator = None
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
56 self.__loadTranslator()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
57
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
58 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
59
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 self.__editors = {}
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
61 self.__mainActions = []
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
62
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
63 def activate(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
65 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
66
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
67 @return tuple of None and activation status (boolean)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
68 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
69 global error
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
70 error = "" # clear previous error
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 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
73
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
74 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
75 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
76 if not menu.isEmpty():
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
77 act = menu.addSeparator()
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
78 self.__mainActions.append(act)
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
79 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
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
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
82 e5App().getObject("ViewManager").editorOpenedEd.connect(
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
83 self.__editorOpened)
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
84 e5App().getObject("ViewManager").editorClosedEd.connect(
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.__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
86
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 for editor in e5App().getObject("ViewManager").getOpenEditors():
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 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
89
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
90 return None, True
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
91
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92 def deactivate(self):
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 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
95 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 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
97
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
98 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
99 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
100 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
101 menu.removeAction(act)
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
102 self.__mainActions = []
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
103
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
104 e5App().getObject("ViewManager").editorOpenedEd.disconnect(
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
105 self.__editorOpened)
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
106 e5App().getObject("ViewManager").editorClosedEd.disconnect(
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.__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
108
13
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
109 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
110 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
111 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
112 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
113 for act in acts:
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
114 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
115 self.__editors = {}
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
116
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
117 def __loadTranslator(self):
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 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
120 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
121 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
122 loc = self.__ui.getLocale()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
123 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
124 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
125 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
126 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
127 translator = QTranslator(None)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
128 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
129 if loaded:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
130 self.__translator = translator
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
131 e5App().installTranslator(self.__translator)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
132 else:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
133 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
134 " loaded.".format(translation))
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
135 print("Using default.")
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
136
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
137 def __initMenu(self):
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 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
140 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
141 self.__menu = QMenu(self.tr("CamelCase Handling"))
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
142 self.__menu.addAction(self.tr("Split from CamelCase"),
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
143 self.__splitCamelCase)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
144 self.__menu.addAction(self.tr("Merge to CamelCase"),
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
145 self.__mergeCamelCase)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
146 self.__menu.addAction(self.tr("CamelCase to under_score"),
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
147 self.__camelCaseToUnderscore)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
148 self.__menu.addAction(self.tr("under_score to CamelCase"),
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
149 self.__underscoreToCamelCase)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
150 self.__menu.addAction(
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
151 self.tr("under_score to CamelCase (upper case first)"),
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
152 self.__underscoreToCamelCaseUppercaseFirst)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
153
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
154 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
155 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
156 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
157
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
158 @param name name of the menu (string)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
159 @param menu reference to the menu to be populated (QMenu)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
160 """
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
161 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
162 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
163
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
164 editor = e5App().getObject("ViewManager").activeWindow()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
165
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
166 if name == "Tools":
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
167 if not menu.isEmpty():
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
168 menu.addSeparator()
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
169 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
170 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
171 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
172 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
173 editor.hasSelectedText())
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
174
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
175 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
176 """
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
177 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
178
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
179 @param editor reference to the new editor (QScintilla.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
180 """
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
181 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
182 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
183 self.__editors[editor] = []
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
184 if not menu.isEmpty():
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
185 act = menu.addSeparator()
78a70b22b350 Refined the support of the editor Tools context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
186 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
187 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
188 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
189 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
190
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 __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
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 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
194
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 @param editor reference to the editor (QScintilla.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
196 """
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 try:
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 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
199 except KeyError:
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 pass
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
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 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
203 """
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 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
205 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
206
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 @param menuName name of the menu to be shown (string)
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 @param menu reference to the menu (QMenu)
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 @param editor reference to the 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
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 if menuName == "Tools":
30
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
212 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
213 # Re-add our menu
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
214 self.__editors[editor] = []
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
215 if not menu.isEmpty():
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
216 act = menu.addSeparator()
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
217 self.__editors[editor].append(act)
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
218 act = menu.addMenu(self.__menu)
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
219 self.__editors[editor].append(act)
018aac3a028a Added code to repopulate the Tools menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
220
34
534d80d15217 Adaptation for the new plug-in tools menu handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
221 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
222
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
223 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
224 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
225 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
226
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
227 @param newText new (converted) text (string)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
228 @param editor reference to the editor to apply the text
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
229 change to (Editor)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
230 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
231 editor.beginUndoAction()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
232 editor.replaceSelectedText(newText)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
233 editor.endUndoAction()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
234
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
235 def __splitCamelCase(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
236 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
237 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
238 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
239 editor = e5App().getObject("ViewManager").activeWindow()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
240 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
241 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
242
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
243 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
244 if text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
245 newText = re.sub(r"([A-Z])", r" \1", text)
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
246 if newText.startswith(" "):
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
247 newText = newText[1:]
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
248 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
249 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
250
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
251 def __mergeCamelCase(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
252 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
253 Private slot to merge the selected text to camel case.
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 = e5App().getObject("ViewManager").activeWindow()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
256 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
257 return
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 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
260 if text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
261 newText = "".join(text.split())
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
262 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
263 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
264
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
265 def __camelCaseToUnderscore(self):
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 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
268 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
269 editor = e5App().getObject("ViewManager").activeWindow()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
270 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
272
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
273 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
274 if text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
275 newText = re.sub(r"([A-Z])", r"_\1", text).lower()
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
276 if newText.startswith("_"):
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
277 newText = newText[1:]
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
278 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
279 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
280
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
281 def __underscoreToCamelCase(self, uppercaseFirst=False):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
282 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
283 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
284
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
285 @param uppercaseFirst flag indicating to upper case the
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
286 first character (boolean)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
287 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
288 editor = e5App().getObject("ViewManager").activeWindow()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
289 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
290 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
291
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
292 text = editor.selectedText()
20
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
293 if text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
294 newText = "".join([s.capitalize() for s in text.split("_")])
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
295 if not uppercaseFirst:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
296 newText = newText[0].lower() + newText[1:]
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
297 if newText != text:
8b4c08b95279 Made the code more robust.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 19
diff changeset
298 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
299
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
300 def __underscoreToCamelCaseUppercaseFirst(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
301 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
302 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
303 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
304 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
305 self.__underscoreToCamelCase(True)
38
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
306
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
307 #
f37203f8c985 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 37
diff changeset
308 # eflag: noqa = M801

eric ide

mercurial