Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp:~trb143/openlp/servicing |
Merge into: | lp:openlp |
Diff against target: | None lines |
To merge this branch: | bzr merge lp:~trb143/openlp/servicing |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Tim Bentley | Approve | ||
Raoul Snyman | Approve | ||
Review via email: mp+6981@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
Tim Bentley (trb143) : | # |
review:
Approve
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-05-30 18:44:16 +0000 | |||
3 | +++ openlp/core/lib/renderer.py 2009-06-02 16:25:36 +0000 | |||
4 | @@ -29,7 +29,7 @@ | |||
5 | 29 | class Renderer: | 29 | class Renderer: |
6 | 30 | 30 | ||
7 | 31 | global log | 31 | global log |
9 | 32 | log=logging.getLogger(u'Renderer') | 32 | log = logging.getLogger(u'Renderer') |
10 | 33 | log.info(u'Renderer Loaded') | 33 | log.info(u'Renderer Loaded') |
11 | 34 | """All the functions for rendering a set of words onto a Device Context | 34 | """All the functions for rendering a set of words onto a Device Context |
12 | 35 | 35 | ||
13 | @@ -44,7 +44,7 @@ | |||
14 | 44 | def __init__(self): | 44 | def __init__(self): |
15 | 45 | self._rect = None | 45 | self._rect = None |
16 | 46 | self._debug = 0 | 46 | self._debug = 0 |
18 | 47 | self.words = None | 47 | #self.words = None |
19 | 48 | self._right_margin = 64 # the amount of right indent | 48 | self._right_margin = 64 # the amount of right indent |
20 | 49 | self._shadow_offset = 5 | 49 | self._shadow_offset = 5 |
21 | 50 | self._outline_offset = 2 | 50 | self._outline_offset = 2 |
22 | @@ -103,38 +103,68 @@ | |||
23 | 103 | if self._bg_image_filename is not None: | 103 | if self._bg_image_filename is not None: |
24 | 104 | self.scale_bg_image() | 104 | self.scale_bg_image() |
25 | 105 | if self._bg_frame is None: | 105 | if self._bg_frame is None: |
27 | 106 | self._render_background() | 106 | self._generate_background_frame() |
28 | 107 | 107 | ||
29 | 108 | def format_slide(self, words, footer): | 108 | def format_slide(self, words, footer): |
30 | 109 | """ | 109 | """ |
31 | 110 | External API to sort out the text to pe placed on the frame | 110 | External API to sort out the text to pe placed on the frame |
32 | 111 | """ | 111 | """ |
33 | 112 | #print "########## Format Slide ##################" | ||
34 | 112 | log.debug(u'format_slide %s', words) | 113 | log.debug(u'format_slide %s', words) |
35 | 113 | verses = [] | 114 | verses = [] |
37 | 114 | words=words.replace("\r\n", "\n") | 115 | words = words.replace("\r\n", "\n") |
38 | 115 | verses_text = words.split(u'\n\n') | 116 | verses_text = words.split(u'\n\n') |
39 | 117 | text = [] | ||
40 | 116 | for verse in verses_text: | 118 | for verse in verses_text: |
41 | 117 | lines = verse.split(u'\n') | 119 | lines = verse.split(u'\n') |
55 | 118 | verses.append(self.split_set_of_lines(lines, footer)[0]) | 120 | for line in lines: |
56 | 119 | self.words = verses | 121 | text.append(line) |
57 | 120 | verses_text = [] | 122 | |
58 | 121 | for v in verses: | 123 | split_text = self._split_set_of_lines(text, False) |
59 | 122 | verses_text.append(u'\n'.join(v).lstrip()) # remove first \n | 124 | #print "split text ", split_text |
60 | 123 | return verses_text | 125 | #print "text ", text |
61 | 124 | 126 | return split_text | |
62 | 125 | def render_screen(self, screennum): | 127 | |
63 | 126 | log.debug(u'render screen\n %s %s ', screennum, self.words[screennum]) | 128 | # def render_screen(self, screennum): |
64 | 127 | t = 0.0 | 129 | # log.debug(u'render screen\n %s %s ', screennum, self.words[screennum]) |
65 | 128 | words = self.words[screennum] | 130 | # t = 0.0 |
66 | 129 | retval = self._render_lines(words) | 131 | # words = self.words[screennum] |
67 | 130 | return retval | 132 | # retval = self._render_lines(words) |
68 | 133 | # return retval | ||
69 | 131 | 134 | ||
70 | 132 | def set_text_rectangle(self, rect_main, rect_footer): | 135 | def set_text_rectangle(self, rect_main, rect_footer): |
72 | 133 | """ Sets the rectangle within which text should be rendered""" | 136 | """ |
73 | 137 | Sets the rectangle within which text should be rendered | ||
74 | 138 | """ | ||
75 | 134 | self._rect = rect_main | 139 | self._rect = rect_main |
76 | 135 | self._rect_footer = rect_footer | 140 | self._rect_footer = rect_footer |
77 | 136 | 141 | ||
79 | 137 | def _render_background(self): | 142 | def generate_frame_from_lines(self, lines, footer_lines=None): |
80 | 143 | """ | ||
81 | 144 | Render a set of lines according to the theme, return bounding box | ||
82 | 145 | """ | ||
83 | 146 | #print "########## Generate frame from lines ##################" | ||
84 | 147 | log.debug(u'generate_frame_from_lines - Start') | ||
85 | 148 | |||
86 | 149 | #print "Render Lines ", lines | ||
87 | 150 | |||
88 | 151 | bbox = self._render_lines_unaligned(lines, False) | ||
89 | 152 | if footer_lines is not None: | ||
90 | 153 | bbox1 = self._render_lines_unaligned(footer_lines, True) | ||
91 | 154 | |||
92 | 155 | # reset the frame. first time do not worrk about what you paint on. | ||
93 | 156 | self._frame = QtGui.QPixmap(self._bg_frame) | ||
94 | 157 | |||
95 | 158 | x, y = self._correctAlignment(self._rect, bbox) | ||
96 | 159 | bbox = self._render_lines_unaligned(lines, False, (x, y)) | ||
97 | 160 | |||
98 | 161 | if footer_lines is not None: | ||
99 | 162 | bbox = self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) ) | ||
100 | 163 | log.debug(u'generate_frame_from_lines - Finish') | ||
101 | 164 | |||
102 | 165 | return self._frame | ||
103 | 166 | |||
104 | 167 | def _generate_background_frame(self): | ||
105 | 138 | """ | 168 | """ |
106 | 139 | Generate a background frame to the same size as the frame to be used | 169 | Generate a background frame to the same size as the frame to be used |
107 | 140 | Results cached for performance reasons. | 170 | Results cached for performance reasons. |
108 | @@ -150,14 +180,14 @@ | |||
109 | 150 | elif self._theme.background_type == u'gradient' : # gradient | 180 | elif self._theme.background_type == u'gradient' : # gradient |
110 | 151 | gradient = None | 181 | gradient = None |
111 | 152 | if self._theme.background_direction == u'horizontal': | 182 | if self._theme.background_direction == u'horizontal': |
113 | 153 | w = int(self._frame.width())/2 | 183 | w = int(self._frame.width()) / 2 |
114 | 154 | gradient = QtGui.QLinearGradient(w, 0, w, self._frame.height()) # vertical | 184 | gradient = QtGui.QLinearGradient(w, 0, w, self._frame.height()) # vertical |
115 | 155 | elif self._theme.background_direction == u'vertical': | 185 | elif self._theme.background_direction == u'vertical': |
117 | 156 | h = int(self._frame.height())/2 | 186 | h = int(self._frame.height()) / 2 |
118 | 157 | gradient = QtGui.QLinearGradient(0, h, self._frame.width(), h) # Horizontal | 187 | gradient = QtGui.QLinearGradient(0, h, self._frame.width(), h) # Horizontal |
119 | 158 | else: | 188 | else: |
122 | 159 | w = int(self._frame.width())/2 | 189 | w = int(self._frame.width()) / 2 |
123 | 160 | h = int(self._frame.height())/2 | 190 | h = int(self._frame.height()) / 2 |
124 | 161 | gradient = QtGui.QRadialGradient(w, h, w) # Circular | 191 | gradient = QtGui.QRadialGradient(w, h, w) # Circular |
125 | 162 | 192 | ||
126 | 163 | gradient.setColorAt(0, QtGui.QColor(self._theme.background_startColor)) | 193 | gradient.setColorAt(0, QtGui.QColor(self._theme.background_startColor)) |
127 | @@ -177,10 +207,7 @@ | |||
128 | 177 | painter.drawPath(rectPath) | 207 | painter.drawPath(rectPath) |
129 | 178 | 208 | ||
130 | 179 | elif self._theme.background_type== u'image': # image | 209 | elif self._theme.background_type== u'image': # image |
131 | 180 | #r = self._frame.rect() | ||
132 | 181 | #log.debug(u'Image size details %d %d %d %d ', r.x(), r.y(), r.width(),r.height()) | ||
133 | 182 | if self.bg_image is not None: | 210 | if self.bg_image is not None: |
134 | 183 | #painter.drawPixmap(self.background_offsetx,self.background_offsety, self.bg_image) | ||
135 | 184 | painter.drawPixmap(0 ,0 , self.bg_image) | 211 | painter.drawPixmap(0 ,0 , self.bg_image) |
136 | 185 | else: | 212 | else: |
137 | 186 | painter.fillRect(self._frame.rect(), QtGui.QColor(u'#000000')) | 213 | painter.fillRect(self._frame.rect(), QtGui.QColor(u'#000000')) |
138 | @@ -189,69 +216,82 @@ | |||
139 | 189 | print "background time", bef, aft, aft-bef | 216 | print "background time", bef, aft, aft-bef |
140 | 190 | log.debug(u'render background finish') | 217 | log.debug(u'render background finish') |
141 | 191 | 218 | ||
145 | 192 | def split_set_of_lines(self, lines, footer): | 219 | def _split_set_of_lines(self, lines, footer): |
146 | 193 | 220 | """ | |
147 | 194 | """Given a list of lines, decide how to split them best if they don't all fit on the screen | 221 | Given a list of lines, decide how to split them best if they don't all fit on the screen |
148 | 195 | - this is done by splitting at 1/2, 1/3 or 1/4 of the set | 222 | - this is done by splitting at 1/2, 1/3 or 1/4 of the set |
149 | 196 | If it doesn't fit, even at this size, just split at each opportunity | 223 | If it doesn't fit, even at this size, just split at each opportunity |
150 | 197 | 224 | ||
151 | 198 | We'll do this by getting the bounding box of each line, and then summing them appropriately | 225 | We'll do this by getting the bounding box of each line, and then summing them appropriately |
152 | 199 | Returns a list of [lists of lines], one set for each screenful | 226 | Returns a list of [lists of lines], one set for each screenful |
153 | 200 | """ | 227 | """ |
154 | 201 | log.debug(u'Split set of lines') | ||
155 | 202 | bboxes = [] | 228 | bboxes = [] |
156 | 229 | #print "lines ", lines | ||
157 | 230 | |||
158 | 203 | for line in lines: | 231 | for line in lines: |
161 | 204 | bboxes.append(self._render_single_line(line, footer)) | 232 | bboxes.append(self._render_and_wrap_single_line(line, footer)) |
162 | 205 | #print line, bboxes | 233 | #print "bboxes ", bboxes |
163 | 206 | 234 | ||
164 | 207 | numlines = len(lines) | 235 | numlines = len(lines) |
165 | 208 | bottom = self._rect.bottom() | 236 | bottom = self._rect.bottom() |
179 | 209 | #for ratio in (numlines): #, numlines/2, numlines/3, numlines/4): | 237 | |
180 | 210 | ratio = numlines | 238 | count = 0 |
181 | 211 | good = 1 | 239 | |
182 | 212 | startline = 0 | 240 | for ratio in (numlines, numlines/2, numlines/3, numlines/4): |
183 | 213 | endline = startline + ratio | 241 | good = 1 |
184 | 214 | while (endline <= numlines): | 242 | startline = 0 |
185 | 215 | by = 0 | 243 | endline = startline + ratio |
186 | 216 | for (x, y) in bboxes[startline:endline]: | 244 | while (endline <= numlines and endline != 0): |
187 | 217 | by += y | 245 | count += 1 |
188 | 218 | #print by | 246 | if count > 100: |
189 | 219 | #print by , bottom | 247 | #print "busted" |
190 | 220 | if by > bottom: | 248 | break |
191 | 221 | good=0 | 249 | by = 0 |
192 | 250 | for (x,y) in bboxes[startline:endline]: | ||
193 | 251 | #print by, startline, endline, x, y, bottom | ||
194 | 252 | by += y | ||
195 | 253 | #print "by ", by , bottom, startline, endline, numlines, ratio | ||
196 | 254 | if by > bottom: | ||
197 | 255 | good = 0 | ||
198 | 256 | break | ||
199 | 257 | startline += ratio | ||
200 | 258 | endline = startline + ratio | ||
201 | 259 | if good == 1: | ||
202 | 222 | break | 260 | break |
203 | 223 | startline += ratio | ||
204 | 224 | endline = startline+ratio | ||
205 | 225 | # if good == 1: | ||
206 | 226 | # break | ||
207 | 227 | #print "---------" | ||
208 | 228 | 261 | ||
209 | 229 | retval = [] | 262 | retval = [] |
210 | 230 | numlines_per_page = ratio | 263 | numlines_per_page = ratio |
211 | 264 | #print "good ", good, ratio | ||
212 | 231 | if good: | 265 | if good: |
213 | 232 | c = 0 | 266 | c = 0 |
214 | 233 | thislines = [] | 267 | thislines = [] |
215 | 234 | while c < numlines: | 268 | while c < numlines: |
216 | 235 | thislines.append(lines[c]) | 269 | thislines.append(lines[c]) |
217 | 236 | c += 1 | 270 | c += 1 |
218 | 271 | #print "c ", c, len(thislines), numlines_per_page, thislines | ||
219 | 237 | if len(thislines) == numlines_per_page: | 272 | if len(thislines) == numlines_per_page: |
220 | 238 | retval.append(thislines) | 273 | retval.append(thislines) |
221 | 239 | thislines = [] | 274 | thislines = [] |
222 | 275 | if len(thislines) > 0: | ||
223 | 276 | retval.append(thislines) | ||
224 | 277 | #print "extra ", thislines | ||
225 | 240 | else: | 278 | else: |
227 | 241 | # log.debug(u" "Just split where you can" | 279 | # print "Just split where you can" |
228 | 242 | retval = [] | 280 | retval = [] |
229 | 243 | startline = 0 | 281 | startline = 0 |
231 | 244 | endline = startline+1 | 282 | endline = startline + 1 |
232 | 245 | while (endline <= numlines): | 283 | while (endline <= numlines): |
233 | 246 | by = 0 | 284 | by = 0 |
235 | 247 | for (x, y) in bboxes[startline:endline]: | 285 | for (x,y) in bboxes[startline:endline]: |
236 | 248 | by += y | 286 | by += y |
237 | 249 | if by > bottom: | 287 | if by > bottom: |
238 | 250 | retval.append(lines[startline:endline-1]) | 288 | retval.append(lines[startline:endline-1]) |
239 | 251 | startline = endline-1 | 289 | startline = endline-1 |
241 | 252 | endline = startline # gets incremented below | 290 | # gets incremented below |
242 | 291 | endline = startline | ||
243 | 253 | by = 0 | 292 | by = 0 |
244 | 254 | endline += 1 | 293 | endline += 1 |
245 | 294 | #print "retval ", retval | ||
246 | 255 | return retval | 295 | return retval |
247 | 256 | 296 | ||
248 | 257 | def _correctAlignment(self, rect, bbox): | 297 | def _correctAlignment(self, rect, bbox): |
249 | @@ -259,32 +299,13 @@ | |||
250 | 259 | if int(self._theme.display_verticalAlign) == 0: # top align | 299 | if int(self._theme.display_verticalAlign) == 0: # top align |
251 | 260 | y = rect.top() | 300 | y = rect.top() |
252 | 261 | elif int(self._theme.display_verticalAlign) == 2: # bottom align | 301 | elif int(self._theme.display_verticalAlign) == 2: # bottom align |
254 | 262 | y = rect.bottom()-bbox.height() | 302 | y = rect.bottom() - bbox.height() |
255 | 263 | elif int(self._theme.display_verticalAlign) == 1: # centre align | 303 | elif int(self._theme.display_verticalAlign) == 1: # centre align |
257 | 264 | y = rect.top()+(rect.height()-bbox.height())/2 | 304 | y = rect.top() + (rect.height() - bbox.height()) / 2 |
258 | 265 | else: | 305 | else: |
260 | 266 | assert(0, u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign) | 306 | assert(0 , u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign) |
261 | 267 | return x, y | 307 | return x, y |
262 | 268 | 308 | ||
263 | 269 | def render_lines(self, lines, footer_lines=None): | ||
264 | 270 | """render a set of lines according to the theme, return bounding box""" | ||
265 | 271 | log.debug(u'render_lines - Start') | ||
266 | 272 | |||
267 | 273 | bbox = self._render_lines_unaligned(lines, False) # Main font | ||
268 | 274 | if footer_lines is not None: | ||
269 | 275 | bbox1 = self._render_lines_unaligned(footer_lines, True) # Footer Font | ||
270 | 276 | |||
271 | 277 | self._frame = QtGui.QPixmap(self._bg_frame) | ||
272 | 278 | |||
273 | 279 | x, y = self._correctAlignment(self._rect, bbox) | ||
274 | 280 | bbox = self._render_lines_unaligned(lines, False, (x, y)) | ||
275 | 281 | |||
276 | 282 | if footer_lines is not None: | ||
277 | 283 | bbox = self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) ) | ||
278 | 284 | log.debug(u'render_lines- Finish') | ||
279 | 285 | |||
280 | 286 | return self._frame | ||
281 | 287 | |||
282 | 288 | def _render_lines_unaligned(self, lines, footer, tlcorner=(0,0)): | 309 | def _render_lines_unaligned(self, lines, footer, tlcorner=(0,0)): |
283 | 289 | """ | 310 | """ |
284 | 290 | Given a list of lines to render, render each one in turn | 311 | Given a list of lines to render, render each one in turn |
285 | @@ -301,7 +322,7 @@ | |||
286 | 301 | for line in lines: | 322 | for line in lines: |
287 | 302 | # render after current bottom, but at original left edge | 323 | # render after current bottom, but at original left edge |
288 | 303 | # keep track of right edge to see which is biggest | 324 | # keep track of right edge to see which is biggest |
290 | 304 | (thisx, bry) = self._render_single_line(line, footer, (x , bry)) | 325 | (thisx, bry) = self._render_and_wrap_single_line(line, footer, (x , bry)) |
291 | 305 | if (thisx > brx): | 326 | if (thisx > brx): |
292 | 306 | brx = thisx | 327 | brx = thisx |
293 | 307 | retval = QtCore.QRect(x, y,brx-x, bry-y) | 328 | retval = QtCore.QRect(x, y,brx-x, bry-y) |
294 | @@ -314,7 +335,7 @@ | |||
295 | 314 | log.debug(u'render lines unaligned Finish') | 335 | log.debug(u'render lines unaligned Finish') |
296 | 315 | return retval | 336 | return retval |
297 | 316 | 337 | ||
299 | 317 | def _render_single_line(self, line, footer, tlcorner=(0,0)): | 338 | def _render_and_wrap_single_line(self, line, footer, tlcorner=(0,0)): |
300 | 318 | """ | 339 | """ |
301 | 319 | Render a single line of words onto the DC, top left corner | 340 | Render a single line of words onto the DC, top left corner |
302 | 320 | specified. | 341 | specified. |
303 | @@ -335,10 +356,10 @@ | |||
304 | 335 | lines = [] | 356 | lines = [] |
305 | 336 | maxx = self._rect.width(); | 357 | maxx = self._rect.width(); |
306 | 337 | maxy = self._rect.height(); | 358 | maxy = self._rect.height(); |
308 | 338 | while (len(words)>0): | 359 | while (len(words) > 0): |
309 | 339 | w , h = self._get_extent_and_render(thisline, footer) | 360 | w , h = self._get_extent_and_render(thisline, footer) |
310 | 340 | rhs = w + x | 361 | rhs = w + x |
312 | 341 | if rhs < maxx-self._right_margin: | 362 | if rhs < maxx - self._right_margin: |
313 | 342 | lines.append(thisline) | 363 | lines.append(thisline) |
314 | 343 | words = words[lastword:] | 364 | words = words[lastword:] |
315 | 344 | thisline = ' '.join(words) | 365 | thisline = ' '.join(words) |
316 | @@ -373,10 +394,10 @@ | |||
317 | 373 | x = rightextent - w | 394 | x = rightextent - w |
318 | 374 | elif align == 1: # right align | 395 | elif align == 1: # right align |
319 | 375 | rightextent = maxx | 396 | rightextent = maxx |
321 | 376 | x = maxx-w | 397 | x = maxx - w |
322 | 377 | elif align == 2: # centre | 398 | elif align == 2: # centre |
325 | 378 | x = (maxx-w) / 2; | 399 | x = (maxx - w) / 2; |
326 | 379 | rightextent = x+w | 400 | rightextent = x + w |
327 | 380 | # now draw the text, and any outlines/shadows | 401 | # now draw the text, and any outlines/shadows |
328 | 381 | if self._theme.display_shadow: | 402 | if self._theme.display_shadow: |
329 | 382 | self._get_extent_and_render(line, footer,tlcorner=(x+self._shadow_offset,y+self._shadow_offset), | 403 | self._get_extent_and_render(line, footer,tlcorner=(x+self._shadow_offset,y+self._shadow_offset), |
330 | @@ -441,7 +462,6 @@ | |||
331 | 441 | QtGui.QFont.Normal, # weight | 462 | QtGui.QFont.Normal, # weight |
332 | 442 | 0)# italic | 463 | 0)# italic |
333 | 443 | font.setPixelSize(int(self._theme.font_main_proportion)) | 464 | font.setPixelSize(int(self._theme.font_main_proportion)) |
334 | 444 | #log.debug(u'Font details %s %s %s %d', self._theme.font_main_name, self._theme.font_main_proportion, font.family(), font.pointSize()) | ||
335 | 445 | painter.setFont(font) | 465 | painter.setFont(font) |
336 | 446 | if color == None: | 466 | if color == None: |
337 | 447 | if footer: | 467 | if footer: |
338 | @@ -454,9 +474,9 @@ | |||
339 | 454 | metrics=QtGui.QFontMetrics(font) | 474 | metrics=QtGui.QFontMetrics(font) |
340 | 455 | # xxx some fudges to make it exactly like wx! Take 'em out later | 475 | # xxx some fudges to make it exactly like wx! Take 'em out later |
341 | 456 | w = metrics.width(line) | 476 | w = metrics.width(line) |
343 | 457 | h = metrics.height()-2 | 477 | h = metrics.height() - 2 |
344 | 458 | if draw: | 478 | if draw: |
346 | 459 | painter.drawText(x, y+metrics.height()-metrics.descent()-1, line) | 479 | painter.drawText(x, y + metrics.ascent() , line) |
347 | 460 | painter.end() | 480 | painter.end() |
348 | 461 | return (w, h) | 481 | return (w, h) |
349 | 462 | 482 | ||
350 | 463 | 483 | ||
351 | === modified file 'openlp/core/lib/rendermanager.py' | |||
352 | --- openlp/core/lib/rendermanager.py 2009-05-22 18:30:25 +0000 | |||
353 | +++ openlp/core/lib/rendermanager.py 2009-06-01 17:50:37 +0000 | |||
354 | @@ -136,10 +136,9 @@ | |||
355 | 136 | lines1.append(u'Amazing Grace (John Newton)' ) | 136 | lines1.append(u'Amazing Grace (John Newton)' ) |
356 | 137 | lines1.append(u'Public Domain') | 137 | lines1.append(u'Public Domain') |
357 | 138 | lines1.append(u'CCLI xxx') | 138 | lines1.append(u'CCLI xxx') |
362 | 139 | return self.renderer.render_lines(lines, lines1) | 139 | return self.renderer.generate_frame_from_lines(lines, lines1) |
363 | 140 | 140 | ||
364 | 141 | 141 | def format_slide(self, words): | |
361 | 142 | def format_slide(self, words, footer): | ||
365 | 143 | log.debug(u'format slide') | 142 | log.debug(u'format slide') |
366 | 144 | self.calculate_default(self.screen_list[self.current_display]['size']) | 143 | self.calculate_default(self.screen_list[self.current_display]['size']) |
367 | 145 | self.build_text_rectangle(self.themedata) | 144 | self.build_text_rectangle(self.themedata) |
368 | @@ -151,7 +150,7 @@ | |||
369 | 151 | self.calculate_default(self.screen_list[self.current_display]['size']) | 150 | self.calculate_default(self.screen_list[self.current_display]['size']) |
370 | 152 | self.build_text_rectangle(self.themedata) | 151 | self.build_text_rectangle(self.themedata) |
371 | 153 | self.renderer.set_frame_dest(self.width, self.height) | 152 | self.renderer.set_frame_dest(self.width, self.height) |
373 | 154 | return self.renderer.render_lines(main_text, footer_text) | 153 | return self.renderer.generate_frame_from_lines(main_text, footer_text) |
374 | 155 | 154 | ||
375 | 156 | def calculate_default(self, screen): | 155 | def calculate_default(self, screen): |
376 | 157 | log.debug(u'calculate default %s' , screen) | 156 | log.debug(u'calculate default %s' , screen) |
377 | 158 | 157 | ||
378 | === modified file 'openlp/core/lib/serviceitem.py' | |||
379 | --- openlp/core/lib/serviceitem.py 2009-05-22 18:30:25 +0000 | |||
380 | +++ openlp/core/lib/serviceitem.py 2009-06-02 16:25:36 +0000 | |||
381 | @@ -58,15 +58,17 @@ | |||
382 | 58 | """ | 58 | """ |
383 | 59 | log.debug(u'Render called') | 59 | log.debug(u'Render called') |
384 | 60 | if self.theme == None: | 60 | if self.theme == None: |
386 | 61 | self.render_manager.set_override_theme(None) | 61 | self.plugin.render_manager.set_override_theme(None) |
387 | 62 | else: | 62 | else: |
389 | 63 | self.render_manager.set_override_theme(self.theme) | 63 | self.plugin.render_manager.set_override_theme(self.theme) |
390 | 64 | log.debug(u'Formatting slides') | 64 | log.debug(u'Formatting slides') |
391 | 65 | if len(self.frames) == 0 and len(self.raw_slides) > 0 : | 65 | if len(self.frames) == 0 and len(self.raw_slides) > 0 : |
392 | 66 | for slide in self.raw_slides: | 66 | for slide in self.raw_slides: |
396 | 67 | formated = self.render_manager.format_slide(slide, False) | 67 | formated = self.plugin.render_manager.format_slide(slide) |
397 | 68 | frame = self.render_manager.generate_slide(formated, self.raw_footer) | 68 | #print formated |
398 | 69 | self.frames.append({u'title': formated, u'image': frame}) | 69 | for format in formated: |
399 | 70 | frame = self.plugin.render_manager.generate_slide(format, self.raw_footer) | ||
400 | 71 | self.frames.append({u'title': format, u'image': frame}) | ||
401 | 70 | else: | 72 | else: |
402 | 71 | if len(self.command_files) > 0: | 73 | if len(self.command_files) > 0: |
403 | 72 | pass | 74 | pass |
404 | 73 | 75 | ||
405 | === modified file 'openlp/core/ui/alertform.py' | |||
406 | --- openlp/core/ui/alertform.py 2009-05-20 20:17:20 +0000 | |||
407 | +++ openlp/core/ui/alertform.py 2009-06-01 17:50:37 +0000 | |||
408 | @@ -18,17 +18,19 @@ | |||
409 | 18 | Place, Suite 330, Boston, MA 02111-1307 USA | 18 | Place, Suite 330, Boston, MA 02111-1307 USA |
410 | 19 | """ | 19 | """ |
411 | 20 | import logging | 20 | import logging |
412 | 21 | |||
413 | 21 | from PyQt4 import QtCore, QtGui | 22 | from PyQt4 import QtCore, QtGui |
414 | 22 | from openlp.core.lib import translate | 23 | from openlp.core.lib import translate |
415 | 23 | 24 | ||
416 | 24 | class AlertForm(QtGui.QDialog): | 25 | class AlertForm(QtGui.QDialog): |
417 | 25 | global log | 26 | global log |
419 | 26 | log=logging.getLogger(u'AlertForm') | 27 | log = logging.getLogger(u'AlertForm') |
420 | 27 | 28 | ||
421 | 28 | def __init__(self, parent=None): | 29 | def __init__(self, parent=None): |
423 | 29 | QtGui.QDialog.__init__(self, parent) | 30 | QtGui.QDialog.__init__(self, None) |
424 | 31 | self.parent = parent | ||
425 | 30 | self.setupUi(self) | 32 | self.setupUi(self) |
427 | 31 | log.info(u'Defined') | 33 | log.debug(u'Defined') |
428 | 32 | 34 | ||
429 | 33 | def setupUi(self, AlertForm): | 35 | def setupUi(self, AlertForm): |
430 | 34 | AlertForm.setObjectName("AlertForm") | 36 | AlertForm.setObjectName("AlertForm") |
431 | @@ -92,7 +94,6 @@ | |||
432 | 92 | self.DisplayButton.setText(translate("AlertForm", u'Display')) | 94 | self.DisplayButton.setText(translate("AlertForm", u'Display')) |
433 | 93 | self.CancelButton.setText(translate("AlertForm", u'Cancel')) | 95 | self.CancelButton.setText(translate("AlertForm", u'Cancel')) |
434 | 94 | 96 | ||
435 | 95 | |||
436 | 96 | def load_settings(self): | 97 | def load_settings(self): |
437 | 97 | pass | 98 | pass |
438 | 98 | 99 | ||
439 | @@ -100,4 +101,4 @@ | |||
440 | 100 | pass | 101 | pass |
441 | 101 | 102 | ||
442 | 102 | def onDisplayClicked(self): | 103 | def onDisplayClicked(self): |
444 | 103 | pass | 104 | self.parent.mainDisplay.alert(self.parent.settingsForm.AlertsTab, self.AlertEntryEditItem.text()) |
445 | 104 | 105 | ||
446 | === modified file 'openlp/core/ui/generaltab.py' | |||
447 | --- openlp/core/ui/generaltab.py 2009-05-20 20:17:20 +0000 | |||
448 | +++ openlp/core/ui/generaltab.py 2009-06-01 17:50:37 +0000 | |||
449 | @@ -20,7 +20,7 @@ | |||
450 | 20 | 20 | ||
451 | 21 | from PyQt4 import QtCore, QtGui | 21 | from PyQt4 import QtCore, QtGui |
452 | 22 | 22 | ||
454 | 23 | from openlp.core.lib import SettingsTab, translate | 23 | from openlp.core.lib import SettingsTab, translate, str_to_bool |
455 | 24 | 24 | ||
456 | 25 | class GeneralTab(SettingsTab): | 25 | class GeneralTab(SettingsTab): |
457 | 26 | """ | 26 | """ |
458 | @@ -113,6 +113,19 @@ | |||
459 | 113 | QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) | 113 | QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) |
460 | 114 | self.GeneralRightLayout.addItem(self.GeneralRightSpacer) | 114 | self.GeneralRightLayout.addItem(self.GeneralRightSpacer) |
461 | 115 | self.GeneralLayout.addWidget(self.GeneralRightWidget) | 115 | self.GeneralLayout.addWidget(self.GeneralRightWidget) |
462 | 116 | QtCore.QObject.connect(self.MonitorComboBox, | ||
463 | 117 | QtCore.SIGNAL("activated(int)"), self.onMonitorComboBoxChanged) | ||
464 | 118 | QtCore.QObject.connect(self.WarningCheckBox, | ||
465 | 119 | QtCore.SIGNAL("stateChanged(int)"), self.onWarningCheckBoxChanged) | ||
466 | 120 | QtCore.QObject.connect(self.AutoOpenCheckBox, | ||
467 | 121 | QtCore.SIGNAL("stateChanged(int)"), self.onAutoOpenCheckBoxChanged) | ||
468 | 122 | QtCore.QObject.connect(self.NumberEdit, | ||
469 | 123 | QtCore.SIGNAL("lostFocus()"), self.onNumberEditLostFocus) | ||
470 | 124 | QtCore.QObject.connect(self.UsernameEdit, | ||
471 | 125 | QtCore.SIGNAL("lostFocus()"), self.onUsernameEditLostFocus) | ||
472 | 126 | QtCore.QObject.connect(self.PasswordEdit, | ||
473 | 127 | QtCore.SIGNAL("lostFocus()"), self.onPasswordEditLostFocus) | ||
474 | 128 | |||
475 | 116 | 129 | ||
476 | 117 | def retranslateUi(self): | 130 | def retranslateUi(self): |
477 | 118 | self.MonitorGroupBox.setTitle(translate(u'GeneralTab', u'Monitors')) | 131 | self.MonitorGroupBox.setTitle(translate(u'GeneralTab', u'Monitors')) |
478 | @@ -126,7 +139,29 @@ | |||
479 | 126 | self.UsernameLabel.setText(translate(u'GeneralTab', u'SongSelect Username:')) | 139 | self.UsernameLabel.setText(translate(u'GeneralTab', u'SongSelect Username:')) |
480 | 127 | self.PasswordLabel.setText(translate(u'GeneralTab', u'SongSelect Password:')) | 140 | self.PasswordLabel.setText(translate(u'GeneralTab', u'SongSelect Password:')) |
481 | 128 | 141 | ||
483 | 129 | def initialise(self): | 142 | def onMonitorComboBoxChanged(self): |
484 | 143 | self.MonitorNumber = self.MonitorComboBox.currentIndex() | ||
485 | 144 | |||
486 | 145 | def onAutoOpenCheckBoxChanged(self, value): | ||
487 | 146 | self.AutoOpen = False | ||
488 | 147 | if value == 2: # we have a set value convert to True/False | ||
489 | 148 | self.AutoOpen = True | ||
490 | 149 | |||
491 | 150 | def onWarningCheckBoxChanged(self, value): | ||
492 | 151 | self.Warning = False | ||
493 | 152 | if value == 2: # we have a set value convert to True/False | ||
494 | 153 | self.Warning = True | ||
495 | 154 | |||
496 | 155 | def onNumberEditLostFocus(self): | ||
497 | 156 | self.CCLNumber = self.NumberEdit.displayText() | ||
498 | 157 | |||
499 | 158 | def onUsernameEditLostFocus(self): | ||
500 | 159 | self.Username = self.UsernameEdit.displayText() | ||
501 | 160 | |||
502 | 161 | def onPasswordEditLostFocus(self): | ||
503 | 162 | self.Password = self.PasswordEdit.displayText() | ||
504 | 163 | |||
505 | 164 | def load(self): | ||
506 | 130 | for screen in self.screen_list: | 165 | for screen in self.screen_list: |
507 | 131 | screen_name = translate(u'GeneralTab', u'Screen') + u' ' + \ | 166 | screen_name = translate(u'GeneralTab', u'Screen') + u' ' + \ |
508 | 132 | str(screen['number'] + 1) | 167 | str(screen['number'] + 1) |
509 | @@ -134,3 +169,25 @@ | |||
510 | 134 | screen_name = screen_name + u' (' + \ | 169 | screen_name = screen_name + u' (' + \ |
511 | 135 | translate(u'GeneralTab', u'primary') + u')' | 170 | translate(u'GeneralTab', u'primary') + u')' |
512 | 136 | self.MonitorComboBox.addItem(screen_name) | 171 | self.MonitorComboBox.addItem(screen_name) |
513 | 172 | |||
514 | 173 | self.MonitorNumber = int(self.config.get_config(u'Monitor', u'0')) | ||
515 | 174 | self.Warning = str_to_bool(self.config.get_config(u'Warning', u"False")) | ||
516 | 175 | self.AutoOpen = str_to_bool(self.config.get_config(u'Auto Open', u"False")) | ||
517 | 176 | self.CCLNumber = str(self.config.get_config('CCL Number', u'XXX')) | ||
518 | 177 | self.Username = str(self.config.get_config('User Name', u'')) | ||
519 | 178 | self.Password = str(self.config.get_config('Password', u'')) | ||
520 | 179 | |||
521 | 180 | self.MonitorComboBox.setCurrentIndex(self.MonitorNumber) | ||
522 | 181 | self.WarningCheckBox.setChecked(self.Warning) | ||
523 | 182 | self.AutoOpenCheckBox.setChecked(self.AutoOpen) | ||
524 | 183 | self.NumberEdit.setText(self.CCLNumber) | ||
525 | 184 | self.UsernameEdit.setText(self.Username) | ||
526 | 185 | self.PasswordEdit.setText(self.Password) | ||
527 | 186 | |||
528 | 187 | def save(self): | ||
529 | 188 | self.config.set_config(u'Monitor',str(self.MonitorNumber)) | ||
530 | 189 | self.config.set_config(u'Warning', str(self.Warning)) | ||
531 | 190 | self.config.set_config(u'Auto Open', str(self.AutoOpen)) | ||
532 | 191 | self.config.set_config('CCL Number', str(self.CCLNumber)) | ||
533 | 192 | self.config.set_config('User Name',str(self.Username)) | ||
534 | 193 | self.config.set_config('Password', str(self.Password )) | ||
535 | 137 | 194 | ||
536 | === modified file 'openlp/core/ui/maindisplay.py' | |||
537 | --- openlp/core/ui/maindisplay.py 2009-05-20 20:17:20 +0000 | |||
538 | +++ openlp/core/ui/maindisplay.py 2009-06-01 17:50:37 +0000 | |||
539 | @@ -18,8 +18,9 @@ | |||
540 | 18 | Place, Suite 330, Boston, MA 02111-1307 USA | 18 | Place, Suite 330, Boston, MA 02111-1307 USA |
541 | 19 | """ | 19 | """ |
542 | 20 | 20 | ||
544 | 21 | from PyQt4 import QtCore, QtGui | 21 | from PyQt4 import QtCore, QtGui, QtTest |
545 | 22 | 22 | ||
546 | 23 | from time import sleep | ||
547 | 23 | from openlp.core.lib import translate | 24 | from openlp.core.lib import translate |
548 | 24 | 25 | ||
549 | 25 | class MainDisplay(QtGui.QWidget): | 26 | class MainDisplay(QtGui.QWidget): |
550 | @@ -32,6 +33,9 @@ | |||
551 | 32 | self.display.setScaledContents(True) | 33 | self.display.setScaledContents(True) |
552 | 33 | self.displayBlank = False | 34 | self.displayBlank = False |
553 | 34 | self.blankFrame= None | 35 | self.blankFrame= None |
554 | 36 | self.alertactive = False | ||
555 | 37 | self.alerttext = u'' | ||
556 | 38 | self.alertTab = None | ||
557 | 35 | 39 | ||
558 | 36 | def setup(self, screenNumber): | 40 | def setup(self, screenNumber): |
559 | 37 | """ | 41 | """ |
560 | @@ -55,19 +59,55 @@ | |||
561 | 55 | self.showMinimized() | 59 | self.showMinimized() |
562 | 56 | 60 | ||
563 | 57 | painter=QtGui.QPainter() | 61 | painter=QtGui.QPainter() |
565 | 58 | self.blankFrame = QtGui.QPixmap(800, 600) | 62 | self.blankFrame = QtGui.QPixmap(screen['size'].width(), screen['size'].height()) |
566 | 59 | painter.begin(self.blankFrame) | 63 | painter.begin(self.blankFrame) |
567 | 60 | painter.fillRect(self.blankFrame.rect(), QtGui.QColor(u'#000000')) | 64 | painter.fillRect(self.blankFrame.rect(), QtGui.QColor(u'#000000')) |
568 | 65 | self.frameView(self.blankFrame) | ||
569 | 61 | 66 | ||
570 | 62 | def frameView(self, frame): | 67 | def frameView(self, frame): |
571 | 63 | self.frame = frame | 68 | self.frame = frame |
573 | 64 | if self.displayBlank == False: | 69 | if not self.displayBlank: |
574 | 65 | self.display.setPixmap(frame) | 70 | self.display.setPixmap(frame) |
575 | 71 | elif self.alertactive: | ||
576 | 72 | self.displayAlert() | ||
577 | 66 | 73 | ||
578 | 67 | def blankDisplay(self): | 74 | def blankDisplay(self): |
580 | 68 | if self.displayBlank == False: | 75 | if not self.displayBlank: |
581 | 69 | self.displayBlank = True | 76 | self.displayBlank = True |
582 | 70 | self.display.setPixmap(self.blankFrame) | 77 | self.display.setPixmap(self.blankFrame) |
583 | 71 | else: | 78 | else: |
584 | 72 | self.displayBlank = False | 79 | self.displayBlank = False |
585 | 73 | self.frameView(self.frame) | 80 | self.frameView(self.frame) |
586 | 81 | |||
587 | 82 | def alert(self, alertTab, text): | ||
588 | 83 | """ | ||
589 | 84 | Called from the Alert Tab | ||
590 | 85 | alertTab = details from AlertTab | ||
591 | 86 | text = display text | ||
592 | 87 | screen = screen number to be displayed on. | ||
593 | 88 | """ | ||
594 | 89 | self.alerttext = text | ||
595 | 90 | self.alertTab = alertTab | ||
596 | 91 | if len(text) > 0: | ||
597 | 92 | self.alertactive = True | ||
598 | 93 | self.displayAlert() | ||
599 | 94 | self.alertactive = False | ||
600 | 95 | |||
601 | 96 | def displayAlert(self): | ||
602 | 97 | alertframe = QtGui.QPixmap(self.frame) | ||
603 | 98 | painter = QtGui.QPainter(alertframe) | ||
604 | 99 | top = alertframe.rect().height() * 0.9 | ||
605 | 100 | painter.fillRect(QtCore.QRect(0, top , alertframe.rect().width(), alertframe.rect().height() - top), QtGui.QColor(self.alertTab.bg_color)) | ||
606 | 101 | font = QtGui.QFont() | ||
607 | 102 | font.setFamily(self.alertTab.font_face) | ||
608 | 103 | font.setBold(True) | ||
609 | 104 | font.setPointSize(40) | ||
610 | 105 | painter.setFont(font) | ||
611 | 106 | painter.setPen(QtGui.QColor(self.alertTab.font_color)) | ||
612 | 107 | x, y = (0, top) | ||
613 | 108 | metrics=QtGui.QFontMetrics(font) | ||
614 | 109 | painter.drawText(x, y+metrics.height()-metrics.descent()-1, self.alerttext) | ||
615 | 110 | painter.end() | ||
616 | 111 | self.display.setPixmap(alertframe) | ||
617 | 112 | QtTest.QTest.qWait(self.alertTab.timeout*1000) | ||
618 | 113 | self.display.setPixmap(self.frame) | ||
619 | 74 | 114 | ||
620 | === modified file 'openlp/core/ui/mainwindow.py' | |||
621 | --- openlp/core/ui/mainwindow.py 2009-06-01 19:47:05 +0000 | |||
622 | +++ openlp/core/ui/mainwindow.py 2009-06-02 16:25:36 +0000 | |||
623 | @@ -40,7 +40,7 @@ | |||
624 | 40 | self.mainDisplay = MainDisplay(None, screens) | 40 | self.mainDisplay = MainDisplay(None, screens) |
625 | 41 | self.screenList = screens | 41 | self.screenList = screens |
626 | 42 | self.EventManager = EventManager() | 42 | self.EventManager = EventManager() |
628 | 43 | self.alertForm = AlertForm() | 43 | self.alertForm = AlertForm(self) |
629 | 44 | self.aboutForm = AboutForm() | 44 | self.aboutForm = AboutForm() |
630 | 45 | self.settingsForm = SettingsForm(self.screenList, self) | 45 | self.settingsForm = SettingsForm(self.screenList, self) |
631 | 46 | 46 | ||
632 | @@ -88,26 +88,9 @@ | |||
633 | 88 | self.plugin_manager.initialise_plugins() | 88 | self.plugin_manager.initialise_plugins() |
634 | 89 | 89 | ||
635 | 90 | # Once all components are initialised load the Themes | 90 | # Once all components are initialised load the Themes |
650 | 91 | log.info(u'Load Themes and Managers') | 91 | log.info(u'Load Themes') |
637 | 92 | self.PreviewController.ServiceManager = self.ServiceManagerContents | ||
638 | 93 | self.LiveController.ServiceManager = self.ServiceManagerContents | ||
639 | 94 | |||
640 | 95 | self.ThemeManagerContents.EventManager = self.EventManager | ||
641 | 96 | self.ThemeManagerContents.RenderManager = self.RenderManager | ||
642 | 97 | self.ThemeManagerContents.ServiceManager = self.ServiceManagerContents | ||
643 | 98 | #self.ThemeManagerContents.ThemesTab = self.ServiceManagerContents.ThemesTab | ||
644 | 99 | |||
645 | 100 | self.ServiceManagerContents.RenderManager = self.RenderManager | ||
646 | 101 | self.ServiceManagerContents.EventManager = self.EventManager | ||
647 | 102 | self.ServiceManagerContents.LiveController = self.LiveController | ||
648 | 103 | self.ServiceManagerContents.PreviewController = self.PreviewController | ||
649 | 104 | |||
651 | 105 | self.ThemeManagerContents.loadThemes() | 92 | self.ThemeManagerContents.loadThemes() |
652 | 106 | 93 | ||
653 | 107 | # Initialise SlideControllers | ||
654 | 108 | log.info(u'Set Up SlideControllers') | ||
655 | 109 | self.LiveController.mainDisplay = self.mainDisplay | ||
656 | 110 | |||
657 | 111 | def onCloseEvent(self, event): | 94 | def onCloseEvent(self, event): |
658 | 112 | """ | 95 | """ |
659 | 113 | Hook to close the main window and display windows on exit | 96 | Hook to close the main window and display windows on exit |
660 | @@ -128,6 +111,7 @@ | |||
661 | 128 | main_icon.addPixmap(QtGui.QPixmap(u':/icon/openlp-logo-16x16.png'), | 111 | main_icon.addPixmap(QtGui.QPixmap(u':/icon/openlp-logo-16x16.png'), |
662 | 129 | QtGui.QIcon.Normal, QtGui.QIcon.Off) | 112 | QtGui.QIcon.Normal, QtGui.QIcon.Off) |
663 | 130 | self.mainWindow.setWindowIcon(main_icon) | 113 | self.mainWindow.setWindowIcon(main_icon) |
664 | 114 | |||
665 | 131 | self.MainContent = QtGui.QWidget(self.mainWindow) | 115 | self.MainContent = QtGui.QWidget(self.mainWindow) |
666 | 132 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) | 116 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) |
667 | 133 | sizePolicy.setHorizontalStretch(0) | 117 | sizePolicy.setHorizontalStretch(0) |
668 | @@ -144,8 +128,10 @@ | |||
669 | 144 | self.ControlSplitter.setOrientation(QtCore.Qt.Horizontal) | 128 | self.ControlSplitter.setOrientation(QtCore.Qt.Horizontal) |
670 | 145 | self.ControlSplitter.setObjectName(u'ControlSplitter') | 129 | self.ControlSplitter.setObjectName(u'ControlSplitter') |
671 | 146 | self.MainContentLayout.addWidget(self.ControlSplitter) | 130 | self.MainContentLayout.addWidget(self.ControlSplitter) |
674 | 147 | self.PreviewController = SlideController(self.mainWindow, self.ControlSplitter, False) | 131 | |
675 | 148 | self.LiveController = SlideController(self.mainWindow, self.ControlSplitter, True) | 132 | self.PreviewController = SlideController( self.ControlSplitter, self, False) |
676 | 133 | self.LiveController = SlideController(self.ControlSplitter, self, True) | ||
677 | 134 | |||
678 | 149 | self.MenuBar = QtGui.QMenuBar(self.mainWindow) | 135 | self.MenuBar = QtGui.QMenuBar(self.mainWindow) |
679 | 150 | self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27)) | 136 | self.MenuBar.setGeometry(QtCore.QRect(0, 0, 1087, 27)) |
680 | 151 | self.MenuBar.setObjectName(u'MenuBar') | 137 | self.MenuBar.setObjectName(u'MenuBar') |
681 | @@ -172,12 +158,13 @@ | |||
682 | 172 | self.StatusBar = QtGui.QStatusBar(self.mainWindow) | 158 | self.StatusBar = QtGui.QStatusBar(self.mainWindow) |
683 | 173 | self.StatusBar.setObjectName(u'StatusBar') | 159 | self.StatusBar.setObjectName(u'StatusBar') |
684 | 174 | self.mainWindow.setStatusBar(self.StatusBar) | 160 | self.mainWindow.setStatusBar(self.StatusBar) |
685 | 161 | |||
686 | 175 | self.MediaManagerDock = QtGui.QDockWidget(self.mainWindow) | 162 | self.MediaManagerDock = QtGui.QDockWidget(self.mainWindow) |
692 | 176 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) | 163 | #MmSizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) |
693 | 177 | sizePolicy.setHorizontalStretch(0) | 164 | #MmSizePolicy.setHorizontalStretch(0) |
694 | 178 | sizePolicy.setVerticalStretch(0) | 165 | #MmSizePolicy.setVerticalStretch(0) |
695 | 179 | sizePolicy.setHeightForWidth(self.MediaManagerDock.sizePolicy().hasHeightForWidth()) | 166 | #MmSizePolicy.setHeightForWidth(self.MediaManagerDock.sizePolicy().hasHeightForWidth()) |
696 | 180 | self.MediaManagerDock.setSizePolicy(sizePolicy) | 167 | #self.MediaManagerDock.setSizePolicy(MmSizePolicy) |
697 | 181 | icon = QtGui.QIcon() | 168 | icon = QtGui.QIcon() |
698 | 182 | icon.addPixmap(QtGui.QPixmap(u':/system/system_mediamanager.png'), | 169 | icon.addPixmap(QtGui.QPixmap(u':/system/system_mediamanager.png'), |
699 | 183 | QtGui.QIcon.Normal, QtGui.QIcon.Off) | 170 | QtGui.QIcon.Normal, QtGui.QIcon.Off) |
700 | @@ -187,11 +174,11 @@ | |||
701 | 187 | self.MediaManagerDock.setObjectName(u'MediaManagerDock') | 174 | self.MediaManagerDock.setObjectName(u'MediaManagerDock') |
702 | 188 | self.MediaManagerDock.setMinimumWidth(250) | 175 | self.MediaManagerDock.setMinimumWidth(250) |
703 | 189 | self.MediaManagerContents = QtGui.QWidget() | 176 | self.MediaManagerContents = QtGui.QWidget() |
709 | 190 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) | 177 | #sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) |
710 | 191 | sizePolicy.setHorizontalStretch(0) | 178 | #sizePolicy.setHorizontalStretch(0) |
711 | 192 | sizePolicy.setVerticalStretch(0) | 179 | #sizePolicy.setVerticalStretch(0) |
712 | 193 | sizePolicy.setHeightForWidth(self.MediaManagerContents.sizePolicy().hasHeightForWidth()) | 180 | #sizePolicy.setHeightForWidth(self.MediaManagerContents.sizePolicy().hasHeightForWidth()) |
713 | 194 | self.MediaManagerContents.setSizePolicy(sizePolicy) | 181 | #self.MediaManagerContents.setSizePolicy(sizePolicy) |
714 | 195 | self.MediaManagerContents.setObjectName(u'MediaManagerContents') | 182 | self.MediaManagerContents.setObjectName(u'MediaManagerContents') |
715 | 196 | self.MediaManagerLayout = QtGui.QHBoxLayout(self.MediaManagerContents) | 183 | self.MediaManagerLayout = QtGui.QHBoxLayout(self.MediaManagerContents) |
716 | 197 | self.MediaManagerLayout.setContentsMargins(0, 2, 0, 0) | 184 | self.MediaManagerLayout.setContentsMargins(0, 2, 0, 0) |
717 | @@ -202,6 +189,7 @@ | |||
718 | 202 | self.MediaManagerLayout.addWidget(self.MediaToolBox) | 189 | self.MediaManagerLayout.addWidget(self.MediaToolBox) |
719 | 203 | self.MediaManagerDock.setWidget(self.MediaManagerContents) | 190 | self.MediaManagerDock.setWidget(self.MediaManagerContents) |
720 | 204 | self.mainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock) | 191 | self.mainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.MediaManagerDock) |
721 | 192 | |||
722 | 205 | #Sevice Manager Defined | 193 | #Sevice Manager Defined |
723 | 206 | self.ServiceManagerDock = QtGui.QDockWidget(self.mainWindow) | 194 | self.ServiceManagerDock = QtGui.QDockWidget(self.mainWindow) |
724 | 207 | ServiceManagerIcon = QtGui.QIcon() | 195 | ServiceManagerIcon = QtGui.QIcon() |
725 | @@ -213,6 +201,7 @@ | |||
726 | 213 | self.ServiceManagerContents = ServiceManager(self) | 201 | self.ServiceManagerContents = ServiceManager(self) |
727 | 214 | self.ServiceManagerDock.setWidget(self.ServiceManagerContents) | 202 | self.ServiceManagerDock.setWidget(self.ServiceManagerContents) |
728 | 215 | self.mainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.ServiceManagerDock) | 203 | self.mainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.ServiceManagerDock) |
729 | 204 | |||
730 | 216 | #Theme Manager Defined | 205 | #Theme Manager Defined |
731 | 217 | self.ThemeManagerDock = QtGui.QDockWidget(self.mainWindow) | 206 | self.ThemeManagerDock = QtGui.QDockWidget(self.mainWindow) |
732 | 218 | ThemeManagerIcon = QtGui.QIcon() | 207 | ThemeManagerIcon = QtGui.QIcon() |
733 | @@ -227,6 +216,7 @@ | |||
734 | 227 | self.ThemeManagerDock.setWidget(self.ThemeManagerContents) | 216 | self.ThemeManagerDock.setWidget(self.ThemeManagerContents) |
735 | 228 | self.mainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.ThemeManagerDock) | 217 | self.mainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.ThemeManagerDock) |
736 | 229 | 218 | ||
737 | 219 | #Menu Items define | ||
738 | 230 | self.FileNewItem = QtGui.QAction(self.mainWindow) | 220 | self.FileNewItem = QtGui.QAction(self.mainWindow) |
739 | 231 | self.FileNewItem.setIcon( | 221 | self.FileNewItem.setIcon( |
740 | 232 | self.ServiceManagerContents.Toolbar.getIconFromTitle(u'New Service')) | 222 | self.ServiceManagerContents.Toolbar.getIconFromTitle(u'New Service')) |
741 | @@ -397,22 +387,7 @@ | |||
742 | 397 | self.HelpMenu.setTitle(translate(u'mainWindow', u'&Help')) | 387 | self.HelpMenu.setTitle(translate(u'mainWindow', u'&Help')) |
743 | 398 | self.MediaManagerDock.setWindowTitle(translate(u'mainWindow', u'Media Manager')) | 388 | self.MediaManagerDock.setWindowTitle(translate(u'mainWindow', u'Media Manager')) |
744 | 399 | self.ServiceManagerDock.setWindowTitle(translate(u'mainWindow', u'Service Manager')) | 389 | self.ServiceManagerDock.setWindowTitle(translate(u'mainWindow', u'Service Manager')) |
745 | 400 | # self.ServiceManagerContents.MoveTopButton.setText(translate(u'mainWindow', u'Move To Top')) | ||
746 | 401 | # self.ServiceManagerContents.MoveUpButton.setText(translate(u'mainWindow', u'Move Up')) | ||
747 | 402 | # self.ServiceManagerContents.MoveDownButton.setText(translate(u'mainWindow', u'Move Down')) | ||
748 | 403 | # self.ServiceManagerContents.MoveBottomButton.setText(translate(u'mainWindow', u'Move To Bottom')) | ||
749 | 404 | # self.ServiceManagerContents.NewItem.setText(translate(u'mainWindow', u'New Service')) | ||
750 | 405 | # self.ServiceManagerContents.OpenItem.setText(translate(u'mainWindow', u'Open Service')) | ||
751 | 406 | # self.ServiceManagerContents.SaveItem.setText(translate(u'mainWindow', u'Save Service')) | ||
752 | 407 | # self.ServiceManagerContents.ThemeComboBox.setItemText(0, translate(u'mainWindow', u'African Sunset')) | ||
753 | 408 | # self.ServiceManagerContents.ThemeComboBox.setItemText(1, translate(u'mainWindow', u'Snowy Mountains')) | ||
754 | 409 | # self.ServiceManagerContents.ThemeComboBox.setItemText(2, translate(u'mainWindow', u'Wilderness')) | ||
755 | 410 | self.ThemeManagerDock.setWindowTitle(translate(u'mainWindow', u'Theme Manager')) | 390 | self.ThemeManagerDock.setWindowTitle(translate(u'mainWindow', u'Theme Manager')) |
756 | 411 | # self.ThemeNewItem.setText(translate(u'mainWindow', u'New Theme')) | ||
757 | 412 | # self.ThemeEditItem.setText(translate(u'mainWindow', u'Edit Theme')) | ||
758 | 413 | # self.ThemeDeleteButton.setText(translate(u'mainWindow', u'Delete Theme')) | ||
759 | 414 | # self.ThemeImportButton.setText(translate(u'mainWindow', u'Import Theme')) | ||
760 | 415 | # self.ThemeExportButton.setText(translate(u'mainWindow', u'Export Theme')) | ||
761 | 416 | self.FileNewItem.setText(translate(u'mainWindow', u'&New')) | 391 | self.FileNewItem.setText(translate(u'mainWindow', u'&New')) |
762 | 417 | self.FileNewItem.setToolTip(translate(u'mainWindow', u'New Service')) | 392 | self.FileNewItem.setToolTip(translate(u'mainWindow', u'New Service')) |
763 | 418 | self.FileNewItem.setStatusTip(translate(u'mainWindow', u'Create a new Service')) | 393 | self.FileNewItem.setStatusTip(translate(u'mainWindow', u'Create a new Service')) |
764 | @@ -470,7 +445,7 @@ | |||
765 | 470 | 445 | ||
766 | 471 | def show(self): | 446 | def show(self): |
767 | 472 | self.mainWindow.showMaximized() | 447 | self.mainWindow.showMaximized() |
769 | 473 | self.mainDisplay.setup(0) | 448 | self.mainDisplay.setup(self.settingsForm.GeneralTab.MonitorNumber) |
770 | 474 | self.mainDisplay.show() | 449 | self.mainDisplay.show() |
771 | 475 | 450 | ||
772 | 476 | def onHelpAboutItemClicked(self): | 451 | def onHelpAboutItemClicked(self): |
773 | 477 | 452 | ||
774 | === modified file 'openlp/core/ui/servicemanager.py' | |||
775 | --- openlp/core/ui/servicemanager.py 2009-05-22 18:30:25 +0000 | |||
776 | +++ openlp/core/ui/servicemanager.py 2009-06-01 17:50:37 +0000 | |||
777 | @@ -126,7 +126,7 @@ | |||
778 | 126 | 126 | ||
779 | 127 | def onThemeComboBoxSelected(self, currentIndex): | 127 | def onThemeComboBoxSelected(self, currentIndex): |
780 | 128 | self.service_theme = self.ThemeComboBox.currentText() | 128 | self.service_theme = self.ThemeComboBox.currentText() |
782 | 129 | self.RenderManager.set_service_theme(self.service_theme) | 129 | self.parent.RenderManager.set_service_theme(self.service_theme) |
783 | 130 | self.config.set_config(u'theme service theme', self.service_theme) | 130 | self.config.set_config(u'theme service theme', self.service_theme) |
784 | 131 | 131 | ||
785 | 132 | def addServiceItem(self, item): | 132 | def addServiceItem(self, item): |
786 | @@ -147,11 +147,11 @@ | |||
787 | 147 | 147 | ||
788 | 148 | def makePreview(self): | 148 | def makePreview(self): |
789 | 149 | item, count = self.findServiceItem() | 149 | item, count = self.findServiceItem() |
791 | 150 | self.PreviewController.addServiceManagerItem(self.serviceItems[item][u'data'], count) | 150 | self.parent.PreviewController.addServiceManagerItem(self.serviceItems[item][u'data'], count) |
792 | 151 | 151 | ||
793 | 152 | def makeLive(self): | 152 | def makeLive(self): |
794 | 153 | item, count = self.findServiceItem() | 153 | item, count = self.findServiceItem() |
796 | 154 | self.LiveController.addServiceManagerItem(self.serviceItems[item][u'data'], count) | 154 | self.parent.LiveController.addServiceManagerItem(self.serviceItems[item][u'data'], count) |
797 | 155 | 155 | ||
798 | 156 | def findServiceItem(self): | 156 | def findServiceItem(self): |
799 | 157 | items = self.ServiceManagerList.selectedItems() | 157 | items = self.ServiceManagerList.selectedItems() |
800 | @@ -182,7 +182,7 @@ | |||
801 | 182 | link = event.mimeData() | 182 | link = event.mimeData() |
802 | 183 | if link.hasText(): | 183 | if link.hasText(): |
803 | 184 | plugin = event.mimeData().text() | 184 | plugin = event.mimeData().text() |
805 | 185 | self.EventManager.post_event(Event(EventType.LoadServiceItem, plugin)) | 185 | self.parent.EventManager.post_event(Event(EventType.LoadServiceItem, plugin)) |
806 | 186 | 186 | ||
807 | 187 | def oos_as_text(self): | 187 | def oos_as_text(self): |
808 | 188 | text=[] | 188 | text=[] |
809 | @@ -218,4 +218,4 @@ | |||
810 | 218 | id = 0 | 218 | id = 0 |
811 | 219 | self.service_theme = u'' | 219 | self.service_theme = u'' |
812 | 220 | self.ThemeComboBox.setCurrentIndex(id) | 220 | self.ThemeComboBox.setCurrentIndex(id) |
814 | 221 | self.RenderManager.set_service_theme(self.service_theme) | 221 | self.parent.RenderManager.set_service_theme(self.service_theme) |
815 | 222 | 222 | ||
816 | === modified file 'openlp/core/ui/slidecontroller.py' | |||
817 | --- openlp/core/ui/slidecontroller.py 2009-06-01 19:47:05 +0000 | |||
818 | +++ openlp/core/ui/slidecontroller.py 2009-06-02 16:25:36 +0000 | |||
819 | @@ -98,11 +98,12 @@ | |||
820 | 98 | 98 | ||
821 | 99 | class SlideController(QtGui.QWidget): | 99 | class SlideController(QtGui.QWidget): |
822 | 100 | global log | 100 | global log |
824 | 101 | log=logging.getLogger(u'SlideController') | 101 | log = logging.getLogger(u'SlideController') |
825 | 102 | 102 | ||
828 | 103 | def __init__(self, parent, control_splitter, isLive): | 103 | def __init__(self, control_splitter, parent, isLive): |
829 | 104 | QtGui.QWidget.__init__(self, parent) | 104 | QtGui.QWidget.__init__(self, parent.mainWindow) |
830 | 105 | self.isLive = isLive | 105 | self.isLive = isLive |
831 | 106 | self.parent = parent | ||
832 | 106 | self.Panel = QtGui.QWidget(control_splitter) | 107 | self.Panel = QtGui.QWidget(control_splitter) |
833 | 107 | self.Splitter = QtGui.QSplitter(self.Panel) | 108 | self.Splitter = QtGui.QSplitter(self.Panel) |
834 | 108 | self.Splitter.setOrientation(QtCore.Qt.Vertical) | 109 | self.Splitter.setOrientation(QtCore.Qt.Vertical) |
835 | @@ -127,6 +128,7 @@ | |||
836 | 127 | self.PreviewListView.setWrapping(False) | 128 | self.PreviewListView.setWrapping(False) |
837 | 128 | self.PreviewListView.setModel(self.PreviewListData) | 129 | self.PreviewListView.setModel(self.PreviewListData) |
838 | 129 | #self.PreviewListView.setSelectionRectVisible(True) | 130 | #self.PreviewListView.setSelectionRectVisible(True) |
839 | 131 | |||
840 | 130 | self.PreviewListView.setSpacing(0) | 132 | self.PreviewListView.setSpacing(0) |
841 | 131 | self.PreviewListView.setObjectName("PreviewListView") | 133 | self.PreviewListView.setObjectName("PreviewListView") |
842 | 132 | self.ControllerLayout.addWidget(self.PreviewListView) | 134 | self.ControllerLayout.addWidget(self.PreviewListView) |
843 | @@ -236,7 +238,7 @@ | |||
844 | 236 | if self.isLive: | 238 | if self.isLive: |
845 | 237 | no = frame[1] | 239 | no = frame[1] |
846 | 238 | LiveFrame = self.serviceitem.frames[no][u'image'] | 240 | LiveFrame = self.serviceitem.frames[no][u'image'] |
848 | 239 | self.mainDisplay.frameView(LiveFrame) | 241 | self.parent.mainDisplay.frameView(LiveFrame) |
849 | 240 | 242 | ||
850 | 241 | def addServiceItem(self, serviceitem): | 243 | def addServiceItem(self, serviceitem): |
851 | 242 | log.debug(u'addServiceItem') | 244 | log.debug(u'addServiceItem') |
852 | 243 | 245 | ||
853 | === modified file 'openlp/core/ui/thememanager.py' | |||
854 | --- openlp/core/ui/thememanager.py 2009-05-22 05:14:55 +0000 | |||
855 | +++ openlp/core/ui/thememanager.py 2009-06-01 17:50:37 +0000 | |||
856 | @@ -215,8 +215,8 @@ | |||
857 | 215 | for name in files: | 215 | for name in files: |
858 | 216 | if name.endswith(u'.png'): | 216 | if name.endswith(u'.png'): |
859 | 217 | self.themeData.addRow(os.path.join(self.path, name)) | 217 | self.themeData.addRow(os.path.join(self.path, name)) |
862 | 218 | self.EventManager.post_event(Event(EventType.ThemeListChanged)) | 218 | self.parent.EventManager.post_event(Event(EventType.ThemeListChanged)) |
863 | 219 | self.ServiceManager.updateThemeList(self.getThemes()) | 219 | self.parent.ServiceManagerContents.updateThemeList(self.getThemes()) |
864 | 220 | self.parent.settingsForm.ThemesTab.updateThemeList(self.getThemes()) | 220 | self.parent.settingsForm.ThemesTab.updateThemeList(self.getThemes()) |
865 | 221 | 221 | ||
866 | 222 | def getThemes(self): | 222 | def getThemes(self): |
867 | @@ -335,7 +335,7 @@ | |||
868 | 335 | outfile = open(theme_file, u'w') | 335 | outfile = open(theme_file, u'w') |
869 | 336 | outfile.write(theme_xml) | 336 | outfile.write(theme_xml) |
870 | 337 | outfile.close() | 337 | outfile.close() |
872 | 338 | if image_from is not None: | 338 | if image_from is not None and image_from != image_to: |
873 | 339 | shutil.copyfile(image_from, image_to) | 339 | shutil.copyfile(image_from, image_to) |
874 | 340 | self.generateAndSaveImage(self.path, name, theme_xml) | 340 | self.generateAndSaveImage(self.path, name, theme_xml) |
875 | 341 | self.themeData.clearItems() | 341 | self.themeData.clearItems() |
876 | @@ -356,7 +356,7 @@ | |||
877 | 356 | 356 | ||
878 | 357 | def generateImage(self, themedata): | 357 | def generateImage(self, themedata): |
879 | 358 | log.debug(u'generateImage %s ', themedata) | 358 | log.debug(u'generateImage %s ', themedata) |
881 | 359 | frame = self.RenderManager.generate_preview(themedata) | 359 | frame = self.parent.RenderManager.generate_preview(themedata) |
882 | 360 | return frame | 360 | return frame |
883 | 361 | 361 | ||
884 | 362 | def getPreviewImage(self, theme): | 362 | def getPreviewImage(self, theme): |
885 | 363 | 363 | ||
886 | === modified file 'openlp/plugins/bibles/forms/bibleimportdialog.py' | |||
887 | --- openlp/plugins/bibles/forms/bibleimportdialog.py 2009-05-01 22:26:43 +0000 | |||
888 | +++ openlp/plugins/bibles/forms/bibleimportdialog.py 2009-06-01 17:50:37 +0000 | |||
889 | @@ -128,6 +128,7 @@ | |||
890 | 128 | self.PasswordLabel.setObjectName("PasswordLabel") | 128 | self.PasswordLabel.setObjectName("PasswordLabel") |
891 | 129 | self.ProxySettingsLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.PasswordLabel) | 129 | self.ProxySettingsLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.PasswordLabel) |
892 | 130 | self.PasswordEdit = QtGui.QLineEdit(self.ProxyGroupBox) | 130 | self.PasswordEdit = QtGui.QLineEdit(self.ProxyGroupBox) |
893 | 131 | self.PasswordEdit.setEchoMode(QtGui.QLineEdit.Password) | ||
894 | 131 | self.PasswordEdit.setObjectName("PasswordEdit") | 132 | self.PasswordEdit.setObjectName("PasswordEdit") |
895 | 132 | self.ProxySettingsLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.PasswordEdit) | 133 | self.ProxySettingsLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.PasswordEdit) |
896 | 133 | self.WebBibleLayout.addWidget(self.ProxyGroupBox) | 134 | self.WebBibleLayout.addWidget(self.ProxyGroupBox) |
897 | 134 | 135 | ||
898 | === modified file 'openlp/plugins/bibles/lib/mediaitem.py' | |||
899 | --- openlp/plugins/bibles/lib/mediaitem.py 2009-05-22 19:36:16 +0000 | |||
900 | +++ openlp/plugins/bibles/lib/mediaitem.py 2009-06-01 17:50:37 +0000 | |||
901 | @@ -345,21 +345,18 @@ | |||
902 | 345 | def onBibleLiveClick(self): | 345 | def onBibleLiveClick(self): |
903 | 346 | service_item = ServiceItem(self.parent) | 346 | service_item = ServiceItem(self.parent) |
904 | 347 | service_item.addIcon( ":/media/media_verse.png") | 347 | service_item.addIcon( ":/media/media_verse.png") |
905 | 348 | service_item.render_manager = self.parent.render_manager | ||
906 | 349 | self.generateSlideData(service_item) | 348 | self.generateSlideData(service_item) |
907 | 350 | self.parent.live_controller.addServiceItem(service_item) | 349 | self.parent.live_controller.addServiceItem(service_item) |
908 | 351 | 350 | ||
909 | 352 | def onBibleAddClick(self): | 351 | def onBibleAddClick(self): |
910 | 353 | service_item = ServiceItem(self.parent) | 352 | service_item = ServiceItem(self.parent) |
911 | 354 | service_item.addIcon( ":/media/media_verse.png") | 353 | service_item.addIcon( ":/media/media_verse.png") |
912 | 355 | service_item.render_manager = self.parent.render_manager | ||
913 | 356 | self.generateSlideData(service_item) | 354 | self.generateSlideData(service_item) |
914 | 357 | self.parent.service_manager.addServiceItem(service_item) | 355 | self.parent.service_manager.addServiceItem(service_item) |
915 | 358 | 356 | ||
916 | 359 | def onBiblePreviewClick(self): | 357 | def onBiblePreviewClick(self): |
917 | 360 | service_item = ServiceItem(self.parent) | 358 | service_item = ServiceItem(self.parent) |
918 | 361 | service_item.addIcon( ":/media/media_verse.png") | 359 | service_item.addIcon( ":/media/media_verse.png") |
919 | 362 | service_item.render_manager = self.parent.render_manager | ||
920 | 363 | self.generateSlideData(service_item) | 360 | self.generateSlideData(service_item) |
921 | 364 | self.parent.preview_controller.addServiceItem(service_item) | 361 | self.parent.preview_controller.addServiceItem(service_item) |
922 | 365 | 362 | ||
923 | 366 | 363 | ||
924 | === modified file 'openlp/plugins/custom/lib/mediaitem.py' | |||
925 | --- openlp/plugins/custom/lib/mediaitem.py 2009-05-21 16:07:01 +0000 | |||
926 | +++ openlp/plugins/custom/lib/mediaitem.py 2009-06-01 17:50:37 +0000 | |||
927 | @@ -210,7 +210,6 @@ | |||
928 | 210 | log.debug(u'Custom Preview Requested') | 210 | log.debug(u'Custom Preview Requested') |
929 | 211 | service_item = ServiceItem(self.parent) | 211 | service_item = ServiceItem(self.parent) |
930 | 212 | service_item.addIcon( ":/media/media_song.png") | 212 | service_item.addIcon( ":/media/media_song.png") |
931 | 213 | service_item.render_manager = self.parent.render_manager | ||
932 | 214 | self.generateSlideData(service_item) | 213 | self.generateSlideData(service_item) |
933 | 215 | self.parent.preview_controller.addServiceItem(service_item) | 214 | self.parent.preview_controller.addServiceItem(service_item) |
934 | 216 | 215 | ||
935 | @@ -218,7 +217,6 @@ | |||
936 | 218 | log.debug(u'Custom Live Requested') | 217 | log.debug(u'Custom Live Requested') |
937 | 219 | service_item = ServiceItem(self.parent) | 218 | service_item = ServiceItem(self.parent) |
938 | 220 | service_item.addIcon( ":/media/media_song.png") | 219 | service_item.addIcon( ":/media/media_song.png") |
939 | 221 | service_item.render_manager = self.parent.render_manager | ||
940 | 222 | self.generateSlideData(service_item) | 220 | self.generateSlideData(service_item) |
941 | 223 | self.parent.live_controller.addServiceItem(service_item) | 221 | self.parent.live_controller.addServiceItem(service_item) |
942 | 224 | 222 | ||
943 | @@ -226,7 +224,6 @@ | |||
944 | 226 | log.debug(u'Custom Add Requested') | 224 | log.debug(u'Custom Add Requested') |
945 | 227 | service_item = ServiceItem(self.parent) | 225 | service_item = ServiceItem(self.parent) |
946 | 228 | service_item.addIcon( ":/media/media_song.png") | 226 | service_item.addIcon( ":/media/media_song.png") |
947 | 229 | service_item.render_manager = self.parent.render_manager | ||
948 | 230 | self.generateSlideData(service_item) | 227 | self.generateSlideData(service_item) |
949 | 231 | self.parent.service_manager.addServiceItem(service_item) | 228 | self.parent.service_manager.addServiceItem(service_item) |
950 | 232 | 229 | ||
951 | 233 | 230 | ||
952 | === modified file 'openlp/plugins/images/lib/mediaitem.py' | |||
953 | --- openlp/plugins/images/lib/mediaitem.py 2009-05-22 18:30:25 +0000 | |||
954 | +++ openlp/plugins/images/lib/mediaitem.py 2009-06-01 17:50:37 +0000 | |||
955 | @@ -159,7 +159,6 @@ | |||
956 | 159 | log.debug(u'Image Preview Requested') | 159 | log.debug(u'Image Preview Requested') |
957 | 160 | service_item = ServiceItem(self.parent) | 160 | service_item = ServiceItem(self.parent) |
958 | 161 | service_item.addIcon( ":/media/media_image.png") | 161 | service_item.addIcon( ":/media/media_image.png") |
959 | 162 | service_item.render_manager = self.parent.render_manager | ||
960 | 163 | self.generateSlideData(service_item) | 162 | self.generateSlideData(service_item) |
961 | 164 | self.parent.preview_controller.addServiceItem(service_item) | 163 | self.parent.preview_controller.addServiceItem(service_item) |
962 | 165 | 164 | ||
963 | @@ -167,7 +166,6 @@ | |||
964 | 167 | log.debug(u'Image Live Requested') | 166 | log.debug(u'Image Live Requested') |
965 | 168 | service_item = ServiceItem(self.parent) | 167 | service_item = ServiceItem(self.parent) |
966 | 169 | service_item.addIcon( ":/media/media_image.png") | 168 | service_item.addIcon( ":/media/media_image.png") |
967 | 170 | service_item.render_manager = self.parent.render_manager | ||
968 | 171 | self.generateSlideData(service_item) | 169 | self.generateSlideData(service_item) |
969 | 172 | self.parent.live_controller.addServiceItem(service_item) | 170 | self.parent.live_controller.addServiceItem(service_item) |
970 | 173 | 171 | ||
971 | @@ -175,6 +173,5 @@ | |||
972 | 175 | log.debug(u'Image Add Requested') | 173 | log.debug(u'Image Add Requested') |
973 | 176 | service_item = ServiceItem(self.parent) | 174 | service_item = ServiceItem(self.parent) |
974 | 177 | service_item.addIcon( ":/media/media_image.png") | 175 | service_item.addIcon( ":/media/media_image.png") |
975 | 178 | service_item.render_manager = self.parent.render_manager | ||
976 | 179 | self.generateSlideData(service_item) | 176 | self.generateSlideData(service_item) |
977 | 180 | self.parent.service_manager.addServiceItem(service_item) | 177 | self.parent.service_manager.addServiceItem(service_item) |
978 | 181 | 178 | ||
979 | === added file 'openlp/plugins/presentations/lib/presentationtab.py' | |||
980 | --- openlp/plugins/presentations/lib/presentationtab.py 1970-01-01 00:00:00 +0000 | |||
981 | +++ openlp/plugins/presentations/lib/presentationtab.py 2009-06-01 18:37:06 +0000 | |||
982 | @@ -0,0 +1,135 @@ | |||
983 | 1 | # -*- coding: utf-8 -*- | ||
984 | 2 | # vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 | ||
985 | 3 | """ | ||
986 | 4 | OpenLP - Open Source Lyrics Projection | ||
987 | 5 | Copyright (c) 2008 Raoul Snyman | ||
988 | 6 | Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley, | ||
989 | 7 | |||
990 | 8 | This program is free software; you can redistribute it and/or modify it under | ||
991 | 9 | the terms of the GNU General Public License as published by the Free Software | ||
992 | 10 | Foundation; version 2 of the License. | ||
993 | 11 | |||
994 | 12 | This program is distributed in the hope that it will be useful, but WITHOUT ANY | ||
995 | 13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A | ||
996 | 14 | PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
997 | 15 | |||
998 | 16 | You should have received a copy of the GNU General Public License along with | ||
999 | 17 | this program; if not, write to the Free Software Foundation, Inc., 59 Temple | ||
1000 | 18 | Place, Suite 330, Boston, MA 02111-1307 USA | ||
1001 | 19 | """ | ||
1002 | 20 | |||
1003 | 21 | from PyQt4 import Qt, QtCore, QtGui | ||
1004 | 22 | |||
1005 | 23 | from openlp.core.lib import SettingsTab, translate | ||
1006 | 24 | |||
1007 | 25 | class PresentationTab(SettingsTab): | ||
1008 | 26 | """ | ||
1009 | 27 | BiblesTab is the Bibles settings tab in the settings dialog. | ||
1010 | 28 | """ | ||
1011 | 29 | def __init__(self): | ||
1012 | 30 | SettingsTab.__init__(self, u'Presentation') | ||
1013 | 31 | |||
1014 | 32 | def setupUi(self): | ||
1015 | 33 | self.setObjectName(u'BiblesTab') | ||
1016 | 34 | self.BibleLayout = QtGui.QHBoxLayout(self) | ||
1017 | 35 | self.BibleLayout.setSpacing(8) | ||
1018 | 36 | self.BibleLayout.setMargin(8) | ||
1019 | 37 | self.BibleLayout.setObjectName(u'BibleLayout') | ||
1020 | 38 | self.BibleLeftWidget = QtGui.QWidget(self) | ||
1021 | 39 | self.BibleLeftWidget.setObjectName(u'BibleLeftWidget') | ||
1022 | 40 | self.BibleLeftLayout = QtGui.QVBoxLayout(self.BibleLeftWidget) | ||
1023 | 41 | self.BibleLeftLayout.setObjectName(u'BibleLeftLayout') | ||
1024 | 42 | self.BibleLeftLayout.setSpacing(8) | ||
1025 | 43 | self.BibleLeftLayout.setMargin(0) | ||
1026 | 44 | |||
1027 | 45 | self.VerseDisplayGroupBox = QtGui.QGroupBox(self) | ||
1028 | 46 | self.VerseDisplayGroupBox.setObjectName(u'VerseDisplayGroupBox') | ||
1029 | 47 | self.VerseDisplayLayout = QtGui.QGridLayout(self.VerseDisplayGroupBox) | ||
1030 | 48 | self.VerseDisplayLayout.setMargin(8) | ||
1031 | 49 | self.VerseDisplayLayout.setObjectName(u'VerseDisplayLayout') | ||
1032 | 50 | self.VerseTypeWidget = QtGui.QWidget(self.VerseDisplayGroupBox) | ||
1033 | 51 | self.VerseTypeWidget.setObjectName(u'VerseTypeWidget') | ||
1034 | 52 | self.VerseTypeLayout = QtGui.QHBoxLayout(self.VerseTypeWidget) | ||
1035 | 53 | self.VerseTypeLayout.setSpacing(8) | ||
1036 | 54 | self.VerseTypeLayout.setMargin(0) | ||
1037 | 55 | self.VerseTypeLayout.setObjectName(u'VerseTypeLayout') | ||
1038 | 56 | |||
1039 | 57 | self.PowerpointCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox) | ||
1040 | 58 | self.PowerpointCheckBox.setObjectName("PowerpointCheckBox") | ||
1041 | 59 | self.VerseDisplayLayout.addWidget(self.PowerpointCheckBox, 0, 0, 1, 1) | ||
1042 | 60 | |||
1043 | 61 | self.PowerpointPath = QtGui.QLineEdit(self.VerseDisplayGroupBox) | ||
1044 | 62 | self.PowerpointPath.setObjectName("PowerpointPath") | ||
1045 | 63 | self.VerseDisplayLayout.addWidget(self.PowerpointPath, 1, 0, 1, 1) | ||
1046 | 64 | |||
1047 | 65 | self.ImpressCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox) | ||
1048 | 66 | self.ImpressCheckBox.setObjectName("ImpressCheckBox") | ||
1049 | 67 | self.VerseDisplayLayout.addWidget(self.ImpressCheckBox, 2, 0, 1, 1) | ||
1050 | 68 | |||
1051 | 69 | self.ImpressPath = QtGui.QLineEdit(self.VerseDisplayGroupBox) | ||
1052 | 70 | self.ImpressPath.setObjectName("ImpressPath") | ||
1053 | 71 | self.VerseDisplayLayout.addWidget(self.ImpressPath, 3, 0, 1, 1) | ||
1054 | 72 | |||
1055 | 73 | self.BibleThemeWidget = QtGui.QWidget(self.VerseDisplayGroupBox) | ||
1056 | 74 | self.BibleThemeWidget.setObjectName(u'BibleThemeWidget') | ||
1057 | 75 | self.BibleThemeLayout = QtGui.QHBoxLayout(self.BibleThemeWidget) | ||
1058 | 76 | self.BibleThemeLayout.setSpacing(8) | ||
1059 | 77 | self.BibleThemeLayout.setMargin(0) | ||
1060 | 78 | self.BibleThemeLayout.setObjectName(u'BibleThemeLayout') | ||
1061 | 79 | |||
1062 | 80 | self.BibleLeftLayout.addWidget(self.VerseDisplayGroupBox) | ||
1063 | 81 | self.BibleLeftSpacer = QtGui.QSpacerItem(40, 20, | ||
1064 | 82 | QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) | ||
1065 | 83 | self.BibleLeftLayout.addItem(self.BibleLeftSpacer) | ||
1066 | 84 | self.BibleLayout.addWidget(self.BibleLeftWidget) | ||
1067 | 85 | |||
1068 | 86 | self.BibleRightWidget = QtGui.QWidget(self) | ||
1069 | 87 | self.BibleRightWidget.setObjectName(u'BibleRightWidget') | ||
1070 | 88 | self.BibleRightLayout = QtGui.QVBoxLayout(self.BibleRightWidget) | ||
1071 | 89 | self.BibleRightLayout.setObjectName(u'BibleRightLayout') | ||
1072 | 90 | self.BibleRightLayout.setSpacing(8) | ||
1073 | 91 | self.BibleRightLayout.setMargin(0) | ||
1074 | 92 | self.BibleRightSpacer = QtGui.QSpacerItem(50, 20, | ||
1075 | 93 | QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) | ||
1076 | 94 | self.BibleRightLayout.addItem(self.BibleRightSpacer) | ||
1077 | 95 | self.BibleLayout.addWidget(self.BibleRightWidget) | ||
1078 | 96 | |||
1079 | 97 | # Signals and slots | ||
1080 | 98 | #QtCore.QObject.connect(self.NewChaptersCheckBox, | ||
1081 | 99 | # QtCore.SIGNAL("stateChanged(int)"), self.onNewChaptersCheckBoxChanged) | ||
1082 | 100 | |||
1083 | 101 | def retranslateUi(self): | ||
1084 | 102 | self.PowerpointCheckBox.setText(translate('PresentationTab', 'Powerpoint available:')) | ||
1085 | 103 | self.ImpressCheckBox.setText(translate('PresentationTab', 'Impress available:')) | ||
1086 | 104 | self.PowerpointPath.setText(u'powerpoint.exe ') | ||
1087 | 105 | self.ImpressPath.setText(u'openoffice.org -nologo -show ') | ||
1088 | 106 | |||
1089 | 107 | def onNewChaptersCheckBoxChanged(self): | ||
1090 | 108 | check_state = self.NewChaptersCheckBox.checkState() | ||
1091 | 109 | self.show_new_chapters = False | ||
1092 | 110 | if check_state == 2: # we have a set value convert to True/False | ||
1093 | 111 | self.show_new_chapters = True | ||
1094 | 112 | |||
1095 | 113 | |||
1096 | 114 | def load(self): | ||
1097 | 115 | pass | ||
1098 | 116 | # self.paragraph_style = (self.config.get_config(u'paragraph style', u'True')) | ||
1099 | 117 | # self.show_new_chapters = (self.config.get_config(u'display new chapter', u"False")) | ||
1100 | 118 | # self.display_style = int(self.config.get_config(u'display brackets', u'0')) | ||
1101 | 119 | # self.bible_theme = int(self.config.get_config(u'bible theme', u'0')) | ||
1102 | 120 | # self.bible_search = (self.config.get_config(u'search as type', u'True')) | ||
1103 | 121 | # if self.paragraph_style: | ||
1104 | 122 | # self.ParagraphRadioButton.setChecked(True) | ||
1105 | 123 | # else: | ||
1106 | 124 | # self.VerseRadioButton.setChecked(True) | ||
1107 | 125 | # self.NewChaptersCheckBox.setChecked(self.show_new_chapters) | ||
1108 | 126 | # self.DisplayStyleComboBox.setCurrentIndex(self.display_style) | ||
1109 | 127 | # self.BibleSearchCheckBox.setChecked(self.bible_search) | ||
1110 | 128 | |||
1111 | 129 | def save(self): | ||
1112 | 130 | pass | ||
1113 | 131 | # self.config.set_config(u'paragraph style', str(self.paragraph_style)) | ||
1114 | 132 | # self.config.set_config(u'display new chapter', str(self.show_new_chapters)) | ||
1115 | 133 | # self.config.set_config(u'display brackets', str(self.display_style)) | ||
1116 | 134 | # self.config.set_config(u'search as type', str(self.bible_search)) | ||
1117 | 135 | # self.config.set_config(u'bible theme', str(self.bible_theme)) |
Fixes and New features
Renderer Page splits and ServiceItem is happy with that
fix PresentationTab (missing)
Add Alerts
Add GeneralTab saving of settings.
Add GeneralTab to Screen Selection code.