PluginSplitMergeCamelCase.py

Mon, 23 Dec 2013 11:47:13 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 23 Dec 2013 11:47:13 +0100
changeset 6
98590f1781bc
parent 1
1ff6dcf50215
child 10
97dd3b380cfd
permissions
-rw-r--r--

Added Spanish translations provided by Jaime Seuma.

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
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
3 # Copyright (c) 2013 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
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
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
10 import os
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
11 import re
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
12
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
13 from PyQt4.QtCore import QObject, QTranslator
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
14 from PyQt4.QtGui import QMenu
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
15
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
16 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
17
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
18 # Start-Of-Header
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
19 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
20 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
21 autoactivate = True
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
22 deactivateable = True
6
98590f1781bc Added Spanish translations provided by Jaime Seuma.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
23 version = "0.2.0"
1
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
24 className = "SplitMergeCamelCasePlugin"
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
25 packageName = "SplitMergeCamelCase"
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
26 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
27 longDescription = \
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
28 """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
29 """ 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
30 """ 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
31 """ 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
32 needsRestart = False
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
33 pyqtApi = 2
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
34 # End-Of-Header
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
35
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
36 error = ""
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
37
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 class SplitMergeCamelCasePlugin(QObject):
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 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
42 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
43 def __init__(self, ui):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
44 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
45 Constructor
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
46
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
47 @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
48 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
49 QObject.__init__(self, ui)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
50 self.__ui = ui
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 self.__translator = None
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 self.__loadTranslator()
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.__initMenu()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
56
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
57 def activate(self):
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 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
60
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
61 @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
62 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
63 global error
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64 error = "" # clear previous error
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 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
67
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
68 return None, True
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
69
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
70 def deactivate(self):
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 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
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.disconnect(self.__populateMenu)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
76 def __loadTranslator(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
77 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
78 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
79 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
80 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
81 loc = self.__ui.getLocale()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
82 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
83 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
84 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
85 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
86 translator = QTranslator(None)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
87 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
88 if loaded:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
89 self.__translator = translator
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
90 e5App().installTranslator(self.__translator)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
91 else:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92 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
93 " loaded.".format(translation))
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94 print("Using default.")
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 def __initMenu(self):
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 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
99 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
100 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
101 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
102 self.__splitCamelCase)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
103 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
104 self.__mergeCamelCase)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
105 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
106 self.__camelCaseToUnderscore)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
107 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
108 self.__underscoreToCamelCase)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
109 self.__menu.addAction(
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110 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
111 self.__underscoreToCamelCaseUppercaseFirst)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
112
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
113 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
114 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
115 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
116
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
117 @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
118 @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
119 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
120 if name != "Tools":
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
121 return
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 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
124 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
125 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
126
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
127 if not menu.isEmpty():
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
128 menu.addSeparator()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
129
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
130 act = menu.addMenu(self.__menu)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
131 act.setEnabled(editor.hasSelectedText())
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
132
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
133 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
134 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
135 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
136
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
137 @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
138 @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
139 change to (Editor)
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 editor.beginUndoAction()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
142 editor.replaceSelectedText(newText)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
143 editor.endUndoAction()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
144
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
145 def __splitCamelCase(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
146 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
147 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
148 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
149 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
150 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
151 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
152
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
153 text = editor.selectedText()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
154 newText = re.sub(r"([A-Z])", r" \1", text)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
155 if newText.startswith(" "):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
156 newText = newText[1:]
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
157 if newText != text:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
158 self.__applyChange(newText, editor)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
159
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
160 def __mergeCamelCase(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
161 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
162 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
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 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
166 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
167
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
168 text = editor.selectedText()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
169 newText = "".join(text.split())
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
170 if newText != text:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
171 self.__applyChange(newText, editor)
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 def __camelCaseToUnderscore(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
174 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
175 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
176 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
177 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
178 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
179 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
180
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
181 text = editor.selectedText()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
182 newText = re.sub(r"([A-Z])", r"_\1", text).lower()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
183 if newText.startswith("_"):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
184 newText = newText[1:]
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
185 if newText != text:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
186 self.__applyChange(newText, editor)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
187
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
188 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
189 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
190 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
191
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
192 @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
193 first character (boolean)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
194 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
195 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
196 if editor is None:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
197 return
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
198
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
199 text = editor.selectedText()
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
200 newText = "".join([s.capitalize() for s in text.split("_")])
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
201 if not uppercaseFirst:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
202 newText = newText[0].lower() + newText[1:]
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
203 if newText != text:
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
204 self.__applyChange(newText, editor)
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
205
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
206 def __underscoreToCamelCaseUppercaseFirst(self):
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
207 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
208 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
209 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
210 """
1ff6dcf50215 Finished implementation of the camel case handler plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
211 self.__underscoreToCamelCase(True)

eric ide

mercurial