Merge lp:~trb143/openlp/ThemeManager2 into lp:openlp
- ThemeManager2
- Merge into trunk
Proposed by
Tim Bentley
Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp:~trb143/openlp/ThemeManager2 |
Merge into: | lp:openlp |
Diff against target: | None lines |
To merge this branch: | bzr merge lp:~trb143/openlp/ThemeManager2 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Raoul Snyman | Approve | ||
Michael Gorven (community) | Approve | ||
Review via email: mp+5302@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Tim Bentley (trb143) wrote : | # |
Revision history for this message
Michael Gorven (mgorven) wrote : | # |
+ log.debug(u'Handle event called with event %s' %event.event_type)
Pass event.event_type as a parameter.
+ if os.path.splitext (file) [1].lower () in [u'.xml']:
I'd prefer:
if os.path.
review approve
review:
Approve
Revision history for this message
Raoul Snyman (raoul-snyman) wrote : | # |
If you wanted to, you could make the __init__ function of ThemeXML take named parameters so that it's a little cooler, like so:
theme = ThemeXML(
It would cut 2 lines down to 1. Just a nice-to-have though.
review:
Approve
lp:~trb143/openlp/ThemeManager2
updated
- 430. By Tim Bentley
-
Fixes from last merge
<email address hidden>
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'openlp/core/__init__.py' | |||
2 | --- openlp/core/__init__.py 2009-04-06 18:45:45 +0000 | |||
3 | +++ openlp/core/__init__.py 2009-04-07 19:03:36 +0000 | |||
4 | @@ -29,8 +29,5 @@ | |||
5 | 29 | return QtGui.QApplication.translate(context, text, None, QtGui.QApplication.UnicodeUTF8) | 29 | return QtGui.QApplication.translate(context, text, None, QtGui.QApplication.UnicodeUTF8) |
6 | 30 | 30 | ||
7 | 31 | def fileToXML(xmlfile): | 31 | def fileToXML(xmlfile): |
12 | 32 | file=open(xmlfile) | 32 | return open(xmlfile).read() |
9 | 33 | xml =''.join(file.readlines()) # read the file and change list to a string | ||
10 | 34 | file.close() | ||
11 | 35 | return xml | ||
13 | 36 | 33 | ||
14 | 37 | 34 | ||
15 | === modified file 'openlp/core/lib/__init__.py' | |||
16 | --- openlp/core/lib/__init__.py 2009-03-28 20:12:22 +0000 | |||
17 | +++ openlp/core/lib/__init__.py 2009-04-07 19:45:21 +0000 | |||
18 | @@ -31,9 +31,8 @@ | |||
19 | 31 | from toolbar import OpenLPToolbar | 31 | from toolbar import OpenLPToolbar |
20 | 32 | from songxmlhandler import SongXMLBuilder | 32 | from songxmlhandler import SongXMLBuilder |
21 | 33 | from songxmlhandler import SongXMLParser | 33 | from songxmlhandler import SongXMLParser |
24 | 34 | from themexmlhandler import ThemeXMLBuilder | 34 | from themexmlhandler import ThemeXML |
23 | 35 | from themexmlhandler import ThemeXMLParser | ||
25 | 36 | 35 | ||
26 | 37 | __all__ = ['PluginConfig', 'Plugin', 'SettingsTab', 'MediaManagerItem', 'Event', 'EventType' | 36 | __all__ = ['PluginConfig', 'Plugin', 'SettingsTab', 'MediaManagerItem', 'Event', 'EventType' |
27 | 38 | 'XmlRootClass', 'ServiceItem', 'Receiver', 'OpenLPToolbar', 'SongXMLBuilder', | 37 | 'XmlRootClass', 'ServiceItem', 'Receiver', 'OpenLPToolbar', 'SongXMLBuilder', |
29 | 39 | 'SongXMLParser', 'EventManager', 'ThemeXMLBuilder', 'ThemeXMLParser'] | 38 | 'SongXMLParser', 'EventManager', 'ThemeXML'] |
30 | 40 | 39 | ||
31 | === modified file 'openlp/core/lib/themexmlhandler.py' | |||
32 | --- openlp/core/lib/themexmlhandler.py 2009-04-06 18:45:45 +0000 | |||
33 | +++ openlp/core/lib/themexmlhandler.py 2009-04-07 19:45:21 +0000 | |||
34 | @@ -24,7 +24,7 @@ | |||
35 | 24 | from xml.dom.minidom import Document | 24 | from xml.dom.minidom import Document |
36 | 25 | from xml.etree.ElementTree import ElementTree, XML, dump | 25 | from xml.etree.ElementTree import ElementTree, XML, dump |
37 | 26 | 26 | ||
39 | 27 | class ThemeXMLBuilder(): | 27 | class ThemeXML(): |
40 | 28 | def __init__(self): | 28 | def __init__(self): |
41 | 29 | # Create the minidom document | 29 | # Create the minidom document |
42 | 30 | self.theme_xml = Document() | 30 | self.theme_xml = Document() |
43 | @@ -154,8 +154,7 @@ | |||
44 | 154 | # Print our newly created XML | 154 | # Print our newly created XML |
45 | 155 | return self.theme_xml.toxml() | 155 | return self.theme_xml.toxml() |
46 | 156 | 156 | ||
49 | 157 | class ThemeXMLParser(): | 157 | def parse(self, xml): |
48 | 158 | def __init__(self, xml): | ||
50 | 159 | theme_xml = ElementTree(element=XML(xml)) | 158 | theme_xml = ElementTree(element=XML(xml)) |
51 | 160 | iter=theme_xml.getiterator() | 159 | iter=theme_xml.getiterator() |
52 | 161 | master = u'' | 160 | master = u'' |
53 | 162 | 161 | ||
54 | === modified file 'openlp/core/ui/thememanager.py' | |||
55 | --- openlp/core/ui/thememanager.py 2009-04-06 18:45:45 +0000 | |||
56 | +++ openlp/core/ui/thememanager.py 2009-04-07 19:45:21 +0000 | |||
57 | @@ -37,8 +37,7 @@ | |||
58 | 37 | from openlp.core.lib import EventType | 37 | from openlp.core.lib import EventType |
59 | 38 | from openlp.core.lib import EventManager | 38 | from openlp.core.lib import EventManager |
60 | 39 | from openlp.core.lib import OpenLPToolbar | 39 | from openlp.core.lib import OpenLPToolbar |
63 | 40 | from openlp.core.lib import ThemeXMLBuilder | 40 | from openlp.core.lib import ThemeXML |
62 | 41 | from openlp.core.lib import ThemeXMLParser | ||
64 | 42 | from openlp.core.utils import ConfigHelper | 41 | from openlp.core.utils import ConfigHelper |
65 | 43 | 42 | ||
66 | 44 | 43 | ||
67 | @@ -52,6 +51,7 @@ | |||
68 | 52 | """ | 51 | """ |
69 | 53 | global log | 52 | global log |
70 | 54 | log=logging.getLogger(u'ThemeData') | 53 | log=logging.getLogger(u'ThemeData') |
71 | 54 | |||
72 | 55 | def __init__(self): | 55 | def __init__(self): |
73 | 56 | QAbstractItemModel.__init__(self) | 56 | QAbstractItemModel.__init__(self) |
74 | 57 | self.items=[] | 57 | self.items=[] |
75 | @@ -132,9 +132,13 @@ | |||
76 | 132 | log.info(u'Get Item:%d -> %s' %(row, str(self.items))) | 132 | log.info(u'Get Item:%d -> %s' %(row, str(self.items))) |
77 | 133 | return self.items[row] | 133 | return self.items[row] |
78 | 134 | 134 | ||
79 | 135 | def getList(self): | ||
80 | 136 | filelist = [item[3] for item in self.items]; | ||
81 | 137 | return filelist | ||
82 | 138 | |||
83 | 135 | class ThemeManager(QWidget): | 139 | class ThemeManager(QWidget): |
84 | 136 | """ | 140 | """ |
86 | 137 | Manages the orders of Theme. C | 141 | Manages the orders of Theme. |
87 | 138 | """ | 142 | """ |
88 | 139 | global log | 143 | global log |
89 | 140 | log=logging.getLogger(u'ThemeManager') | 144 | log=logging.getLogger(u'ThemeManager') |
90 | @@ -178,6 +182,7 @@ | |||
91 | 178 | self.eventManager = eventManager | 182 | self.eventManager = eventManager |
92 | 179 | 183 | ||
93 | 180 | def onAddTheme(self): | 184 | def onAddTheme(self): |
94 | 185 | self.amendThemeForm.loadTheme(None) | ||
95 | 181 | self.amendThemeForm.exec_() | 186 | self.amendThemeForm.exec_() |
96 | 182 | 187 | ||
97 | 183 | def onEditTheme(self): | 188 | def onEditTheme(self): |
98 | @@ -213,7 +218,7 @@ | |||
99 | 213 | self.eventManager.post_event(Event(EventType.ThemeListChanged)) | 218 | self.eventManager.post_event(Event(EventType.ThemeListChanged)) |
100 | 214 | 219 | ||
101 | 215 | def getThemes(self): | 220 | def getThemes(self): |
103 | 216 | return self.themelist | 221 | return self.Theme_data.getList() |
104 | 217 | 222 | ||
105 | 218 | def checkThemesExists(self, dir): | 223 | def checkThemesExists(self, dir): |
106 | 219 | log.debug(u'check themes') | 224 | log.debug(u'check themes') |
107 | @@ -232,7 +237,7 @@ | |||
108 | 232 | fullpath = os.path.join(dir, file) | 237 | fullpath = os.path.join(dir, file) |
109 | 233 | names = file.split(u'/') | 238 | names = file.split(u'/') |
110 | 234 | xml_data = zip.read(file) | 239 | xml_data = zip.read(file) |
112 | 235 | if file.endswith(u'.xml'): | 240 | if os.path.splitext (file) [1].lower () in [u'.xml']: |
113 | 236 | if self.checkVersion1(xml_data): | 241 | if self.checkVersion1(xml_data): |
114 | 237 | filexml = self.migrateVersion122(filename, fullpath, xml_data) | 242 | filexml = self.migrateVersion122(filename, fullpath, xml_data) |
115 | 238 | outfile = open(fullpath, 'w') | 243 | outfile = open(fullpath, 'w') |
116 | @@ -240,7 +245,7 @@ | |||
117 | 240 | outfile.close() | 245 | outfile.close() |
118 | 241 | self.generateImage(dir,names[0], filexml) | 246 | self.generateImage(dir,names[0], filexml) |
119 | 242 | else: | 247 | else: |
121 | 243 | if file.endswith(u'.bmp'): | 248 | if os.path.splitext (file) [1].lower () in [u'.bmp']: |
122 | 244 | if fullpath is not os.path.join(dir, file): | 249 | if fullpath is not os.path.join(dir, file): |
123 | 245 | outfile = open(fullpath, 'w') | 250 | outfile = open(fullpath, 'w') |
124 | 246 | outfile.write(zip.read(file)) | 251 | outfile.write(zip.read(file)) |
125 | @@ -259,7 +264,7 @@ | |||
126 | 259 | log.debug(u'migrateVersion122 %s %s', filename , fullpath) | 264 | log.debug(u'migrateVersion122 %s %s', filename , fullpath) |
127 | 260 | t=Theme(xml_data) | 265 | t=Theme(xml_data) |
128 | 261 | 266 | ||
130 | 262 | newtheme = ThemeXMLBuilder() | 267 | newtheme = ThemeXML() |
131 | 263 | newtheme.new_document(t.Name) | 268 | newtheme.new_document(t.Name) |
132 | 264 | if t.BackgroundType == 0: | 269 | if t.BackgroundType == 0: |
133 | 265 | newtheme.add_background_solid(str(t.BackgroundParameter1.name())) | 270 | newtheme.add_background_solid(str(t.BackgroundParameter1.name())) |
134 | @@ -285,7 +290,8 @@ | |||
135 | 285 | 290 | ||
136 | 286 | def generateImage(self, dir, name, theme_xml): | 291 | def generateImage(self, dir, name, theme_xml): |
137 | 287 | log.debug(u'generateImage %s %s ', dir, theme_xml) | 292 | log.debug(u'generateImage %s %s ', dir, theme_xml) |
139 | 288 | theme = ThemeXMLParser(theme_xml) | 293 | theme = ThemeXML() |
140 | 294 | theme.parse(theme_xml) | ||
141 | 289 | #print theme | 295 | #print theme |
142 | 290 | size=QtCore.QSize(800,600) | 296 | size=QtCore.QSize(800,600) |
143 | 291 | frame=TstFrame(size) | 297 | frame=TstFrame(size) |
144 | 292 | 298 | ||
145 | === modified file 'openlp/plugins/custom/customplugin.py' | |||
146 | --- openlp/plugins/custom/customplugin.py 2009-03-25 20:30:48 +0000 | |||
147 | +++ openlp/plugins/custom/customplugin.py 2009-04-07 19:03:36 +0000 | |||
148 | @@ -23,15 +23,17 @@ | |||
149 | 23 | 23 | ||
150 | 24 | from openlp.core.resources import * | 24 | from openlp.core.resources import * |
151 | 25 | from openlp.core.lib import Plugin, Event | 25 | from openlp.core.lib import Plugin, Event |
152 | 26 | from openlp.core.lib import EventType | ||
153 | 26 | from forms import EditCustomForm | 27 | from forms import EditCustomForm |
154 | 27 | from openlp.plugins.custom.lib import CustomManager, CustomTab, CustomMediaItem, CustomServiceItem | 28 | from openlp.plugins.custom.lib import CustomManager, CustomTab, CustomMediaItem, CustomServiceItem |
155 | 28 | 29 | ||
156 | 30 | |||
157 | 29 | class CustomPlugin(Plugin): | 31 | class CustomPlugin(Plugin): |
158 | 30 | 32 | ||
159 | 31 | global log | 33 | global log |
160 | 32 | log=logging.getLogger(u'CustomPlugin') | 34 | log=logging.getLogger(u'CustomPlugin') |
161 | 33 | log.info(u'Custom Plugin loaded') | 35 | log.info(u'Custom Plugin loaded') |
163 | 34 | 36 | ||
164 | 35 | def __init__(self, plugin_helpers): | 37 | def __init__(self, plugin_helpers): |
165 | 36 | # Call the parent constructor | 38 | # Call the parent constructor |
166 | 37 | Plugin.__init__(self, u'Custom', u'1.9.0', plugin_helpers) | 39 | Plugin.__init__(self, u'Custom', u'1.9.0', plugin_helpers) |
167 | @@ -49,9 +51,12 @@ | |||
168 | 49 | # Create the CustomManagerItem object | 51 | # Create the CustomManagerItem object |
169 | 50 | self.media_item = CustomMediaItem(self, self.icon, u'Custom Slides') | 52 | self.media_item = CustomMediaItem(self, self.icon, u'Custom Slides') |
170 | 51 | return self.media_item | 53 | return self.media_item |
172 | 52 | 54 | ||
173 | 53 | def handle_event(self, event): | 55 | def handle_event(self, event): |
174 | 54 | """ | 56 | """ |
175 | 55 | Handle the event contained in the event object. | 57 | Handle the event contained in the event object. |
176 | 56 | """ | 58 | """ |
178 | 57 | log.debug(u'Handle event called with event %s' %event.get_type()) | 59 | log.debug(u'Handle event called with event %s' %event.event_type) |
179 | 60 | if event.event_type == EventType.ThemeListChanged: | ||
180 | 61 | log.debug(u'New Theme request received') | ||
181 | 62 | self.edit_custom_form.loadThemes(self.theme_manager.getThemes()) | ||
182 | 58 | 63 | ||
183 | === modified file 'openlp/plugins/custom/forms/editcustomform.py' | |||
184 | --- openlp/plugins/custom/forms/editcustomform.py 2009-03-25 20:30:48 +0000 | |||
185 | +++ openlp/plugins/custom/forms/editcustomform.py 2009-04-07 19:03:36 +0000 | |||
186 | @@ -32,7 +32,7 @@ | |||
187 | 32 | Constructor | 32 | Constructor |
188 | 33 | """ | 33 | """ |
189 | 34 | QtGui.QDialog.__init__(self, parent) | 34 | QtGui.QDialog.__init__(self, parent) |
191 | 35 | #self.parent = parent | 35 | #self.parent = parent |
192 | 36 | self.setupUi(self) | 36 | self.setupUi(self) |
193 | 37 | # Connecting signals and slots | 37 | # Connecting signals and slots |
194 | 38 | QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), self.rejected) | 38 | QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), self.rejected) |
195 | @@ -43,18 +43,18 @@ | |||
196 | 43 | QtCore.QObject.connect(self.DeleteButton, QtCore.SIGNAL("pressed()"), self.onDeleteButtonPressed) | 43 | QtCore.QObject.connect(self.DeleteButton, QtCore.SIGNAL("pressed()"), self.onDeleteButtonPressed) |
197 | 44 | QtCore.QObject.connect(self.ClearButton, QtCore.SIGNAL("pressed()"), self.onClearButtonPressed) | 44 | QtCore.QObject.connect(self.ClearButton, QtCore.SIGNAL("pressed()"), self.onClearButtonPressed) |
198 | 45 | QtCore.QObject.connect(self.UpButton, QtCore.SIGNAL("pressed()"), self.onUpButtonPressed) | 45 | QtCore.QObject.connect(self.UpButton, QtCore.SIGNAL("pressed()"), self.onUpButtonPressed) |
201 | 46 | QtCore.QObject.connect(self.DownButton, QtCore.SIGNAL("pressed()"), self.onDownButtonPressed) | 46 | QtCore.QObject.connect(self.DownButton, QtCore.SIGNAL("pressed()"), self.onDownButtonPressed) |
202 | 47 | QtCore.QObject.connect(self.TitleEdit, QtCore.SIGNAL("lostFocus()"), self.validate) | 47 | QtCore.QObject.connect(self.TitleEdit, QtCore.SIGNAL("lostFocus()"), self.validate) |
203 | 48 | 48 | ||
205 | 49 | QtCore.QObject.connect(self.VerseListView, | 49 | QtCore.QObject.connect(self.VerseListView, |
206 | 50 | QtCore.SIGNAL("itemDoubleClicked(QListWidgetItem*)"), self.onVerseListViewSelected) | 50 | QtCore.SIGNAL("itemDoubleClicked(QListWidgetItem*)"), self.onVerseListViewSelected) |
208 | 51 | QtCore.QObject.connect(self.VerseListView, | 51 | QtCore.QObject.connect(self.VerseListView, |
209 | 52 | QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.onVerseListViewPressed) | 52 | QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.onVerseListViewPressed) |
210 | 53 | # Create other objects and forms | 53 | # Create other objects and forms |
211 | 54 | self.custommanager = custommanager | 54 | self.custommanager = custommanager |
212 | 55 | self.initialise() | 55 | self.initialise() |
215 | 56 | self.VerseListView.setAlternatingRowColors(True) | 56 | self.VerseListView.setAlternatingRowColors(True) |
216 | 57 | 57 | ||
217 | 58 | def initialise(self): | 58 | def initialise(self): |
218 | 59 | self.valid = True | 59 | self.valid = True |
219 | 60 | self.DeleteButton.setEnabled(False) | 60 | self.DeleteButton.setEnabled(False) |
220 | @@ -64,10 +64,15 @@ | |||
221 | 64 | self.CreditEdit.setText('') | 64 | self.CreditEdit.setText('') |
222 | 65 | self.VerseTextEdit.clear() | 65 | self.VerseTextEdit.clear() |
223 | 66 | self.VerseListView.clear() | 66 | self.VerseListView.clear() |
225 | 67 | #make sure we have a new item | 67 | #make sure we have a new item |
226 | 68 | self.customSlide = CustomSlide() | 68 | self.customSlide = CustomSlide() |
227 | 69 | self.ThemecomboBox.addItem(u'') | 69 | self.ThemecomboBox.addItem(u'') |
229 | 70 | #self.theme_manager.getThemes() | 70 | |
230 | 71 | def loadThemes(self, themelist): | ||
231 | 72 | self.ThemecomboBox.clear() | ||
232 | 73 | self.ThemecomboBox.addItem(u'') | ||
233 | 74 | for themename in themelist: | ||
234 | 75 | self.ThemecomboBox.addItem(themename) | ||
235 | 71 | 76 | ||
236 | 72 | def loadCustom(self, id): | 77 | def loadCustom(self, id): |
237 | 73 | self.customSlide = CustomSlide() | 78 | self.customSlide = CustomSlide() |
238 | @@ -76,12 +81,19 @@ | |||
239 | 76 | self.customSlide = self.custommanager.get_custom(id) | 81 | self.customSlide = self.custommanager.get_custom(id) |
240 | 77 | self.TitleEdit.setText(self.customSlide.title) | 82 | self.TitleEdit.setText(self.customSlide.title) |
241 | 78 | self.CreditEdit.setText(self.customSlide.title) | 83 | self.CreditEdit.setText(self.customSlide.title) |
243 | 79 | 84 | ||
244 | 80 | songXML=SongXMLParser(self.customSlide.text) | 85 | songXML=SongXMLParser(self.customSlide.text) |
245 | 81 | verseList = songXML.get_verses() | 86 | verseList = songXML.get_verses() |
246 | 82 | for verse in verseList: | 87 | for verse in verseList: |
247 | 83 | self.VerseListView.addItem(verse[1]) | 88 | self.VerseListView.addItem(verse[1]) |
248 | 89 | theme = str(self.customSlide.theme_name) | ||
249 | 90 | id = self.ThemecomboBox.findText(theme, QtCore.Qt.MatchExactly) | ||
250 | 91 | if id == -1: | ||
251 | 92 | id = 0 # Not Found | ||
252 | 93 | self.ThemecomboBox.setCurrentIndex(id) | ||
253 | 84 | self.validate() | 94 | self.validate() |
254 | 95 | else: | ||
255 | 96 | self.ThemecomboBox.setCurrentIndex(0) | ||
256 | 85 | 97 | ||
257 | 86 | def accept(self): | 98 | def accept(self): |
258 | 87 | self.validate() | 99 | self.validate() |
259 | @@ -96,6 +108,7 @@ | |||
260 | 96 | self.customSlide.title = unicode(self.TitleEdit.displayText()) | 108 | self.customSlide.title = unicode(self.TitleEdit.displayText()) |
261 | 97 | self.customSlide.text = unicode(sxml.extract_xml()) | 109 | self.customSlide.text = unicode(sxml.extract_xml()) |
262 | 98 | self.customSlide.credits = unicode(self.CreditEdit.displayText()) | 110 | self.customSlide.credits = unicode(self.CreditEdit.displayText()) |
263 | 111 | self.customSlide.theme_name = unicode(self.ThemecomboBox.currentText()) | ||
264 | 99 | self.custommanager.save_slide(self.customSlide) | 112 | self.custommanager.save_slide(self.customSlide) |
265 | 100 | self.close() | 113 | self.close() |
266 | 101 | 114 | ||
267 | @@ -114,7 +127,7 @@ | |||
268 | 114 | if selectedRow != self.VerseListView.count() - 1: # zero base arrays | 127 | if selectedRow != self.VerseListView.count() - 1: # zero base arrays |
269 | 115 | qw = self.VerseListView.takeItem(selectedRow) | 128 | qw = self.VerseListView.takeItem(selectedRow) |
270 | 116 | self.VerseListView.insertItem(selectedRow + 1, qw) | 129 | self.VerseListView.insertItem(selectedRow + 1, qw) |
272 | 117 | self.VerseListView.setCurrentRow(selectedRow + 1) | 130 | self.VerseListView.setCurrentRow(selectedRow + 1) |
273 | 118 | 131 | ||
274 | 119 | def onClearButtonPressed(self): | 132 | def onClearButtonPressed(self): |
275 | 120 | self.VerseTextEdit.clear() | 133 | self.VerseTextEdit.clear() |
276 | @@ -122,7 +135,7 @@ | |||
277 | 122 | def onVerseListViewPressed(self, item): | 135 | def onVerseListViewPressed(self, item): |
278 | 123 | self.DeleteButton.setEnabled(True) | 136 | self.DeleteButton.setEnabled(True) |
279 | 124 | self.EditButton.setEnabled(True) | 137 | self.EditButton.setEnabled(True) |
281 | 125 | 138 | ||
282 | 126 | def onVerseListViewSelected(self, item): | 139 | def onVerseListViewSelected(self, item): |
283 | 127 | self.VerseTextEdit.setPlainText(item.text()) | 140 | self.VerseTextEdit.setPlainText(item.text()) |
284 | 128 | self.DeleteButton.setEnabled(False) | 141 | self.DeleteButton.setEnabled(False) |
Fix issues from last merge
Add Theme handling to Custom plugin