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:
|
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Tim Bentley (trb143) wrote : | # |
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Michael Gorven (mgorven) wrote : | # |
+ if self.VerseListV
+ invalid += 1
+
if invalid == 1:
Any reason that you don't set self.valid directly instead of using invalid? If
there is a reason, please change the check to be "invalid != 0".
+ if override == u'True':
Maybe use the convertStringTo
review approve
review:
Approve
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Raoul Snyman (raoul-snyman) : | # |
review:
Approve
lp:~trb143/openlp/ThemeManager2
updated
- 434. By Tim Bentley
-
Fix rendering problems and issues with CustomSlides
- 435. By Tim Bentley
-
rename bibles for gushie
- 436. By Tim Bentley
-
Missed
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'openlp/core/lib/renderer.py' |
2 | --- openlp/core/lib/renderer.py 2009-04-28 19:20:03 +0000 |
3 | +++ openlp/core/lib/renderer.py 2009-05-01 05:02:53 +0000 |
4 | @@ -33,7 +33,7 @@ |
5 | """All the functions for rendering a set of words onto a Device Context |
6 | |
7 | How to use: |
8 | - set the words to be displayed with a call to set_words_openlp() - this returns an array of screenfuls of data |
9 | + set the words to be displayed with a call to format_slide() - this returns an array of screenfuls of data |
10 | set a theme (if you need) with set_theme |
11 | tell it which DC to render to with set_DC() |
12 | set the borders of where you want the text (if not the whole DC) with set_text_rectangle() |
13 | @@ -102,8 +102,7 @@ |
14 | def format_slide(self, words, footer): |
15 | log.debug(u'format_slide %s', words) |
16 | verses=[] |
17 | - words=words.replace(u'\r\n', u'\n') |
18 | - verses_text = words.split(u'\n') |
19 | + verses_text = words.splitlines() |
20 | for v in verses_text: |
21 | lines=v.split(u'\n') |
22 | verses.append(self.split_set_of_lines(lines, footer)[0]) |
23 | |
24 | === modified file 'openlp/core/lib/rendermanager.py' |
25 | --- openlp/core/lib/rendermanager.py 2009-04-25 06:38:21 +0000 |
26 | +++ openlp/core/lib/rendermanager.py 2009-05-01 05:02:53 +0000 |
27 | @@ -43,32 +43,41 @@ |
28 | self.calculate_default(self.screen_list[self.current_display-1][1]) |
29 | self.frame = None |
30 | |
31 | - def set_default_theme(self, theme): |
32 | - log.debug("default theme set to %s", theme) |
33 | - self.default_theme = self.theme_manager.getThemeData(theme) |
34 | - self.renderer.set_theme(self.default_theme) |
35 | - |
36 | - self.renderer.set_text_rectangle(QtCore.QRect(10,0, self.width-1, self.height-1), |
37 | - QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start)) |
38 | - |
39 | - |
40 | - def set_theme(self, theme): |
41 | - log.debug("theme set to %s", theme) |
42 | - self.theme = theme |
43 | - self.renderer.set_theme(self.theme) |
44 | - |
45 | - self.renderer.set_text_rectangle(QtCore.QRect(10,0, self.width-1, self.height-1), |
46 | - QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start)) |
47 | + def set_override_theme(self, theme): |
48 | + log.debug("set override theme to %s", theme) |
49 | + if theme is not None: |
50 | + self.theme = theme |
51 | + else: |
52 | + self.theme = self.default_theme |
53 | + log.debug("theme is now %s", self.theme) |
54 | + self.themedata = self.theme_manager.getThemeData(self.theme) |
55 | + self.renderer.set_theme(self.themedata) |
56 | + self.build_text_rectangle(self.themedata) |
57 | + |
58 | + def build_text_rectangle(self, theme): |
59 | + |
60 | + main_rect = None |
61 | + footer_rect = None |
62 | + |
63 | if theme.font_main_override == False: |
64 | - pass |
65 | + main_rect = QtCore.QRect(10,0, self.width-1, self.height-1) |
66 | + else: |
67 | + main_rect = QtCore.QRect(int(theme.font_main_x) , int(theme.font_main_y), |
68 | + int(theme.font_main_width)-1, int(theme.font_main_height)-1) |
69 | + |
70 | if theme.font_footer_override == False: |
71 | - pass |
72 | - |
73 | - def generate_preview(self): |
74 | + footer_rect = QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start) |
75 | + else: |
76 | + footer_rect = QtCore.QRect(int(theme.font_footer_x),int(theme.font_footer_y), |
77 | + int(theme.font_footer_width)-1, int(theme.font_footer_height)-1) |
78 | + |
79 | + self.renderer.set_text_rectangle(main_rect,footer_rect) |
80 | + |
81 | + def generate_preview(self, themedata): |
82 | self.calculate_default(QtCore.QSize(800,600)) |
83 | + self.renderer.set_theme(themedata) |
84 | |
85 | - self.renderer.set_text_rectangle(QtCore.QRect(10,0, self.width-1, self.height-1), |
86 | - QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start)) |
87 | + self.build_text_rectangle(themedata) |
88 | |
89 | frame = QtGui.QPixmap(self.width, self.height) |
90 | self.renderer.set_paint_dest(frame) |
91 | @@ -87,22 +96,12 @@ |
92 | |
93 | def format_slide(self, words, footer): |
94 | self.calculate_default(QtCore.QSize(800,600)) |
95 | - |
96 | - self.renderer.set_text_rectangle(QtCore.QRect(10,0, self.width-1, self.height-1), |
97 | - QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start)) |
98 | - |
99 | return self.renderer.format_slide(words, footer) |
100 | |
101 | def generate_slide(self,main_text, footer_text, preview=True): |
102 | if preview == True: |
103 | self.calculate_default(QtCore.QSize(800,600)) |
104 | |
105 | - self.renderer.set_text_rectangle(QtCore.QRect(10,0, self.width-1, self.height-1), |
106 | - QtCore.QRect(10,self.footer_start, self.width-1, self.height-self.footer_start)) |
107 | - |
108 | - #frame = QtGui.QPixmap(self.width, self.height) |
109 | - #self.renderer.set_paint_dest(frame) |
110 | - #print main_text |
111 | answer=self.renderer.render_lines(main_text, footer_text) |
112 | return self.frame |
113 | |
114 | |
115 | === modified file 'openlp/core/lib/songxmlhandler.py' |
116 | --- openlp/core/lib/songxmlhandler.py 2009-04-06 18:45:45 +0000 |
117 | +++ openlp/core/lib/songxmlhandler.py 2009-04-30 21:02:28 +0000 |
118 | @@ -81,6 +81,7 @@ |
119 | iter=self.song_xml.getiterator() |
120 | verse_list = [] |
121 | for element in iter: |
122 | + #print element.tag, element.attrib, element.text |
123 | if element.tag == u'verse': |
124 | verse_list.append([element.attrib, element.text]) |
125 | return verse_list |
126 | |
127 | === modified file 'openlp/core/lib/themexmlhandler.py' |
128 | --- openlp/core/lib/themexmlhandler.py 2009-04-21 19:45:50 +0000 |
129 | +++ openlp/core/lib/themexmlhandler.py 2009-04-30 21:02:28 +0000 |
130 | @@ -151,11 +151,12 @@ |
131 | |
132 | element = self.theme_xml.createElement(u'location') |
133 | element.setAttribute(u'override',override) |
134 | - if override == True: |
135 | - element.setAttribute(u'x',str(xpos)) |
136 | - element.setAttribute(u'y',str(ypos)) |
137 | - element.setAttribute(u'width',str(width)) |
138 | - element.setAttribute(u'height',str(height)) |
139 | + |
140 | + if override == u'True': |
141 | + element.setAttribute(u'x',xpos) |
142 | + element.setAttribute(u'y',ypos) |
143 | + element.setAttribute(u'width',width) |
144 | + element.setAttribute(u'height',height) |
145 | background.appendChild(element) |
146 | |
147 | def add_display(self, shadow, shadowColor, outline, outlineColor, horizontal, vertical, wrap): |
148 | |
149 | === modified file 'openlp/core/ui/amendthemeform.py' |
150 | --- openlp/core/ui/amendthemeform.py 2009-04-28 19:20:03 +0000 |
151 | +++ openlp/core/ui/amendthemeform.py 2009-04-30 21:02:28 +0000 |
152 | @@ -111,12 +111,21 @@ |
153 | #else: |
154 | #newtheme.add_background_image(str(self.theme.)) |
155 | |
156 | - new_theme.add_font(str(self.theme.font_main_name), str(self.theme.font_main_color), str(self.theme.font_main_proportion), u'False') |
157 | - new_theme.add_font(str(self.theme.font_footer_name), str(self.theme.font_footer_color), str(self.theme.font_footer_proportion), u'False', u'footer') |
158 | - new_theme.add_display(str(self.theme.display_shadow), str(self.theme.display_shadow_color), str(self.theme.display_outline), str(self.theme.display_outline_color), |
159 | - str(self.theme.display_horizontalAlign), str(self.theme.display_verticalAlign), str(self.theme.display_wrapStyle)) |
160 | + new_theme.add_font(str(self.theme.font_main_name), str(self.theme.font_main_color), |
161 | + str(self.theme.font_main_proportion), str(self.theme.font_main_override),u'main', |
162 | + str(self.theme.font_main_x), str(self.theme.font_main_y), str(self.theme.font_main_width), |
163 | + str(self.theme.font_main_height)) |
164 | + new_theme.add_font(str(self.theme.font_footer_name), str(self.theme.font_footer_color), |
165 | + str(self.theme.font_footer_proportion), str(self.theme.font_footer_override),u'footer', |
166 | + str(self.theme.font_footer_x), str(self.theme.font_footer_y), str(self.theme.font_footer_width), |
167 | + str(self.theme.font_footer_height) ) |
168 | + new_theme.add_display(str(self.theme.display_shadow), str(self.theme.display_shadow_color), |
169 | + str(self.theme.display_outline), str(self.theme.display_outline_color), |
170 | + str(self.theme.display_horizontalAlign), str(self.theme.display_verticalAlign), |
171 | + str(self.theme.display_wrapStyle)) |
172 | |
173 | theme = new_theme.extract_xml() |
174 | + |
175 | self.thememanager.saveTheme(theme_name, theme) |
176 | return QtGui.QDialog.accept(self) |
177 | |
178 | @@ -124,6 +133,7 @@ |
179 | self.path = path |
180 | |
181 | def loadTheme(self, theme): |
182 | + log.debug(u'LoadTheme %s ', theme) |
183 | if theme == None: |
184 | self.theme.parse(self.baseTheme()) |
185 | else: |
186 | @@ -207,27 +217,24 @@ |
187 | self.theme.font_footer_proportion = value |
188 | self.previewTheme(self.theme) |
189 | |
190 | - def onFontFooterDefaultCheckBoxChanged(self): |
191 | - self.stateChanging(self.theme) |
192 | - self.previewTheme(self.theme) |
193 | |
194 | def onFontFooterDefaultCheckBoxChanged(self, value): |
195 | if value == 2: # checked |
196 | self.theme.font_footer_override = False |
197 | else: |
198 | self.theme.font_footer_override = True |
199 | - if int(self.theme.font_footer_x) == 0 and int(self.theme.font_footer_y) == 0 and \ |
200 | - int(self.theme.font_footer_width) == 0 and int(self.theme.font_footer_height) == 0: |
201 | - self.theme.font_footer_x = u'10' |
202 | - self.theme.font_footer_y = u'730' |
203 | - self.theme.font_footer_width = u'1024' |
204 | - self.theme.font_footer_height = u'38' |
205 | - |
206 | - self.FontFooterXSpinBox.setValue(int(self.theme.font_footer_x)) |
207 | - self.FontFooterYSpinBox.setValue(int(self.theme.font_footer_y)) |
208 | - self.FontFooterWidthSpinBox.setValue(int(self.theme.font_footer_width)) |
209 | - self.FontFooterHeightSpinBox.setValue(int(self.theme.font_footer_height)) |
210 | - |
211 | + |
212 | + if int(self.theme.font_footer_x) == 0 and int(self.theme.font_footer_y) == 0 and \ |
213 | + int(self.theme.font_footer_width) == 0 and int(self.theme.font_footer_height) == 0: |
214 | + self.theme.font_footer_x = u'10' |
215 | + self.theme.font_footer_y = u'730' |
216 | + self.theme.font_footer_width = u'1024' |
217 | + self.theme.font_footer_height = u'38' |
218 | + |
219 | + self.FontFooterXSpinBox.setValue(int(self.theme.font_footer_x)) |
220 | + self.FontFooterYSpinBox.setValue(int(self.theme.font_footer_y)) |
221 | + self.FontFooterWidthSpinBox.setValue(int(self.theme.font_footer_width)) |
222 | + self.FontFooterHeightSpinBox.setValue(int(self.theme.font_footer_height)) |
223 | |
224 | self.stateChanging(self.theme) |
225 | self.previewTheme(self.theme) |
226 | @@ -354,19 +361,18 @@ |
227 | #Local Methods |
228 | # |
229 | def baseTheme(self): |
230 | - log.debug(u'base Theme') |
231 | + log.debug(u'base theme created') |
232 | newtheme = ThemeXML() |
233 | newtheme.new_document(u'New Theme') |
234 | newtheme.add_background_solid(str(u'#000000')) |
235 | - newtheme.add_font(str(QFont().family()), str(u'#FFFFFF'), str(30), False) |
236 | - newtheme.add_font(str(QFont().family()), str(u'#FFFFFF'), str(12), False, u'footer') |
237 | - newtheme.add_display(str(False), str(u'#FFFFFF'), str(False), str(u'#FFFFFF'), |
238 | + newtheme.add_font(str(QFont().family()), str(u'#FFFFFF'), str(30), u'False') |
239 | + newtheme.add_font(str(QFont().family()), str(u'#FFFFFF'), str(12), u'False', u'footer') |
240 | + newtheme.add_display(u'False', str(u'#FFFFFF'), u'False', str(u'#FFFFFF'), |
241 | str(0), str(0), str(0)) |
242 | |
243 | return newtheme.extract_xml() |
244 | |
245 | def paintUi(self, theme): |
246 | - print theme # leave as helpful for initial development |
247 | self.stateChanging(theme) |
248 | self.ThemeNameEdit.setText(self.theme.theme_name) |
249 | if self.theme.background_mode == u'opaque': |
250 | |
251 | === modified file 'openlp/core/ui/servicemanager.py' |
252 | --- openlp/core/ui/servicemanager.py 2009-04-28 19:20:03 +0000 |
253 | +++ openlp/core/ui/servicemanager.py 2009-04-30 21:02:28 +0000 |
254 | @@ -143,7 +143,7 @@ |
255 | QtCore.SIGNAL("activated(int)"), self.onThemeComboBoxSelected) |
256 | |
257 | def onThemeComboBoxSelected(self, currentIndex): |
258 | - self.renderManager.set_default_theme(self.ThemeComboBox.currentText()) |
259 | + self.renderManager.default_theme = self.ThemeComboBox.currentText() |
260 | |
261 | def addServiceItem(self, item): |
262 | """Adds service item""" |
263 | @@ -197,5 +197,5 @@ |
264 | self.ThemeComboBox.clear() |
265 | for theme in theme_list: |
266 | self.ThemeComboBox.addItem(theme) |
267 | - self.renderManager.set_default_theme(self.ThemeComboBox.currentText()) |
268 | + self.renderManager.default_theme = self.ThemeComboBox.currentText() |
269 | |
270 | |
271 | === modified file 'openlp/core/ui/slidecontroller.py' |
272 | --- openlp/core/ui/slidecontroller.py 2009-04-25 06:11:15 +0000 |
273 | +++ openlp/core/ui/slidecontroller.py 2009-04-30 21:02:28 +0000 |
274 | @@ -33,31 +33,35 @@ |
275 | self.PaneLayout.setSpacing(50) |
276 | self.PaneLayout.setMargin(0) |
277 | |
278 | -# self.Controller = QtGui.QGraphicsView(self.Splitter) |
279 | + #self.VerseListView = QtGui.QListWidget(customEditDialog) |
280 | + #self.VerseListView.setObjectName("VerseListView") |
281 | + #self.horizontalLayout_4.addWidget(self.VerseListView) |
282 | + |
283 | self.Controller = QtGui.QScrollArea(self.Splitter) |
284 | self.Controller.setWidgetResizable(True) |
285 | + |
286 | self.ControllerContents = QtGui.QWidget(self.Controller) |
287 | self.ControllerContents.setGeometry(QtCore.QRect(0, 0, 228, 536)) |
288 | self.Controller.setGeometry(QtCore.QRect(0, 0, 828, 536)) |
289 | + |
290 | self.Controller.setWidget(self.ControllerContents) |
291 | |
292 | - #self.Screen = QtGui.QGraphicsView(self.Splitter) |
293 | - #self.Screen.setMaximumSize(QtCore.QSize(16777215, 250)) |
294 | - |
295 | - |
296 | - self.ThemePreview = QtGui.QLabel(self.Splitter) |
297 | + self.SlidePreview = QtGui.QLabel(self.Splitter) |
298 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) |
299 | sizePolicy.setHorizontalStretch(0) |
300 | sizePolicy.setVerticalStretch(0) |
301 | - sizePolicy.setHeightForWidth(self.ThemePreview.sizePolicy().hasHeightForWidth()) |
302 | - self.ThemePreview.setSizePolicy(sizePolicy) |
303 | - self.ThemePreview.setMinimumSize(QtCore.QSize(250, 190)) |
304 | - self.ThemePreview.setFrameShape(QtGui.QFrame.WinPanel) |
305 | - self.ThemePreview.setFrameShadow(QtGui.QFrame.Sunken) |
306 | - self.ThemePreview.setLineWidth(1) |
307 | - self.ThemePreview.setScaledContents(True) |
308 | - self.ThemePreview.setObjectName("ThemePreview") |
309 | - |
310 | + sizePolicy.setHeightForWidth(self.SlidePreview.sizePolicy().hasHeightForWidth()) |
311 | + self.SlidePreview.setSizePolicy(sizePolicy) |
312 | + self.SlidePreview.setMinimumSize(QtCore.QSize(250, 190)) |
313 | + self.SlidePreview.setFrameShape(QtGui.QFrame.WinPanel) |
314 | + self.SlidePreview.setFrameShadow(QtGui.QFrame.Sunken) |
315 | + self.SlidePreview.setLineWidth(1) |
316 | + self.SlidePreview.setScaledContents(True) |
317 | + self.SlidePreview.setObjectName("SlidePreview") |
318 | |
319 | def previewFrame(self, frame): |
320 | - self.ThemePreview.setPixmap(frame) |
321 | + self.SlidePreview.setPixmap(frame) |
322 | + |
323 | + imageLabel = QtGui.QLabel() |
324 | + imageLabel.setPixmap(frame) |
325 | + self.Controller.setWidget(imageLabel) |
326 | |
327 | === modified file 'openlp/core/ui/thememanager.py' |
328 | --- openlp/core/ui/thememanager.py 2009-04-28 19:20:03 +0000 |
329 | +++ openlp/core/ui/thememanager.py 2009-04-29 19:07:13 +0000 |
330 | @@ -219,7 +219,6 @@ |
331 | |
332 | def loadThemes(self): |
333 | log.debug(u'Load themes from dir') |
334 | -# self.themelist = [u'African Sunset', u'Snowy Mountains', u'Wilderness', u'Wet and Windy London'] |
335 | for root, dirs, files in os.walk(self.path): |
336 | for name in files: |
337 | if name.endswith(u'.png'): |
338 | @@ -232,6 +231,7 @@ |
339 | return self.Theme_data.getList() |
340 | |
341 | def getThemeData(self, themename): |
342 | + log.debug(u'getthemedata for theme %s', themename) |
343 | xml_file = os.path.join(self.path, str(themename), str(themename)+u'.xml') |
344 | xml = fileToXML(xml_file) |
345 | theme = ThemeXML() |
346 | @@ -344,9 +344,8 @@ |
347 | im.save(samplepathname, u'png') |
348 | log.debug(u'Theme image written to %s',samplepathname) |
349 | |
350 | - def generateImage(self, theme): |
351 | - log.debug(u'generateImage %s ', theme) |
352 | - self.renderManager.set_theme(theme) |
353 | - frame = self.renderManager.generate_preview() |
354 | + def generateImage(self, themedata): |
355 | + log.debug(u'generateImage %s ', themedata) |
356 | + frame = self.renderManager.generate_preview(themedata) |
357 | return frame |
358 | |
359 | |
360 | === modified file 'openlp/plugins/bibles/lib/mediaitem.py' |
361 | --- openlp/plugins/bibles/lib/mediaitem.py 2009-04-25 06:11:15 +0000 |
362 | +++ openlp/plugins/bibles/lib/mediaitem.py 2009-04-29 19:07:13 +0000 |
363 | @@ -355,6 +355,7 @@ |
364 | if len(footer_lines) <= 1: |
365 | footer_lines.append(book) |
366 | |
367 | + self.parent.render_manager.set_override_theme(None) |
368 | frame=self.parent.render_manager.generate_slide(main_lines, footer_lines) |
369 | self.parent.preview_controller.previewFrame(frame) |
370 | |
371 | |
372 | === modified file 'openlp/plugins/custom/forms/editcustomform.py' |
373 | --- openlp/plugins/custom/forms/editcustomform.py 2009-04-07 19:03:36 +0000 |
374 | +++ openlp/plugins/custom/forms/editcustomform.py 2009-05-01 05:02:53 +0000 |
375 | @@ -80,7 +80,7 @@ |
376 | if id != 0: |
377 | self.customSlide = self.custommanager.get_custom(id) |
378 | self.TitleEdit.setText(self.customSlide.title) |
379 | - self.CreditEdit.setText(self.customSlide.title) |
380 | + self.CreditEdit.setText(self.customSlide.credits) |
381 | |
382 | songXML=SongXMLParser(self.customSlide.text) |
383 | verseList = songXML.get_verses() |
384 | @@ -170,5 +170,9 @@ |
385 | self.TitleLabel.setStyleSheet('color: red') |
386 | else: |
387 | self.TitleLabel.setStyleSheet('color: black') |
388 | + |
389 | + if self.VerseListView.count() == 0: # must have 1 slide |
390 | + invalid += 1 |
391 | + |
392 | if invalid == 1: |
393 | self.valid = False |
394 | |
395 | === modified file 'openlp/plugins/custom/lib/mediaitem.py' |
396 | --- openlp/plugins/custom/lib/mediaitem.py 2009-04-25 06:11:15 +0000 |
397 | +++ openlp/plugins/custom/lib/mediaitem.py 2009-04-30 21:02:28 +0000 |
398 | @@ -189,21 +189,29 @@ |
399 | main_lines=[] |
400 | footer_lines = [] |
401 | slide = None |
402 | + theme = None |
403 | for index in indexes: |
404 | id = self.CustomListData.getId(index) |
405 | customSlide = self.parent.custommanager.get_custom(id) |
406 | title = customSlide.title |
407 | - credit = customSlide.title |
408 | + credit = customSlide.credits |
409 | + theme = customSlide.theme_name |
410 | + if len(theme) == 0 or theme == None: |
411 | + self.parent.render_manager.set_override_theme(None) |
412 | + else: |
413 | + self.parent.render_manager.set_override_theme(theme) |
414 | |
415 | songXML=SongXMLParser(customSlide.text) |
416 | verseList = songXML.get_verses() |
417 | for verse in verseList: |
418 | slide = self.parent.render_manager.format_slide(verse[1], False) |
419 | + print verse |
420 | + print slide |
421 | |
422 | footer_lines.append(title + u' '+ credit) |
423 | - |
424 | - frame=self.parent.render_manager.generate_slide(slide, footer_lines) |
425 | - self.parent.preview_controller.previewFrame(frame) |
426 | + if slide is not None: |
427 | + frame=self.parent.render_manager.generate_slide(slide, footer_lines, False) |
428 | + self.parent.preview_controller.previewFrame(frame) |
429 | |
430 | def onCustomLiveClick(self): |
431 | pass |
More Renderer cleanups
Fix bugs in custom where it is possible to have no slides
RenderManager not handles theme decisions correctly and allows the overrides to work.
Fix up themes so most functions work correctly. (You can even have footers at the top of the page)