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 |
---|---|---|---|
Raoul Snyman | Approve | ||
Review via email: mp+6402@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
Raoul Snyman (raoul-snyman) wrote : | # |
992 # for f in self.imgs:
993 # fl , nm = os.path.
994 # c = self.slide_
995 # self.slide_
996 # twi = QtGui.QTableWid
I know this is commented out, but looking at those variables, I can't see at a glance what they are supposed to be. Please can you make decently named variables.
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'openlp.pyw' | |||
2 | --- openlp.pyw 2009-05-04 13:48:12 +0000 | |||
3 | +++ openlp.pyw 2009-05-11 05:09:43 +0000 | |||
4 | @@ -26,7 +26,7 @@ | |||
5 | 26 | from openlp.core.lib import Receiver | 26 | from openlp.core.lib import Receiver |
6 | 27 | 27 | ||
7 | 28 | logging.basicConfig(level=logging.DEBUG, | 28 | logging.basicConfig(level=logging.DEBUG, |
9 | 29 | format=u'%(asctime)s %(name)-12s %(levelname)-8s %(message)s', | 29 | format=u'%(asctime)s %(msecs)d %(name)-12s %(levelname)-8s %(message)s', |
10 | 30 | datefmt=u'%m-%d %H:%M:%S', | 30 | datefmt=u'%m-%d %H:%M:%S', |
11 | 31 | filename=u'openlp.log', | 31 | filename=u'openlp.log', |
12 | 32 | filemode=u'w') | 32 | filemode=u'w') |
13 | 33 | 33 | ||
14 | === modified file 'openlp/core/lib/event.py' | |||
15 | --- openlp/core/lib/event.py 2009-04-06 18:45:45 +0000 | |||
16 | +++ openlp/core/lib/event.py 2009-05-09 07:01:33 +0000 | |||
17 | @@ -35,6 +35,7 @@ | |||
18 | 35 | AfterLoadService = 2 | 35 | AfterLoadService = 2 |
19 | 36 | BeforeSaveService = 3 | 36 | BeforeSaveService = 3 |
20 | 37 | AfterSaveService = 4 | 37 | AfterSaveService = 4 |
21 | 38 | LoadServiceItem = 5 | ||
22 | 38 | # Preview events | 39 | # Preview events |
23 | 39 | PreviewBeforeLoad = 11 | 40 | PreviewBeforeLoad = 11 |
24 | 40 | PreviewAfterLoad = 12 | 41 | PreviewAfterLoad = 12 |
25 | 41 | 42 | ||
26 | === modified file 'openlp/core/lib/renderer.py' | |||
27 | --- openlp/core/lib/renderer.py 2009-05-04 13:48:12 +0000 | |||
28 | +++ openlp/core/lib/renderer.py 2009-05-11 05:09:43 +0000 | |||
29 | @@ -19,8 +19,9 @@ | |||
30 | 19 | """ | 19 | """ |
31 | 20 | import logging | 20 | import logging |
32 | 21 | import os, os.path | 21 | import os, os.path |
33 | 22 | |||
34 | 23 | import sys | 22 | import sys |
35 | 23 | |||
36 | 24 | from datetime import * | ||
37 | 24 | from PyQt4 import QtGui, QtCore, Qt | 25 | from PyQt4 import QtGui, QtCore, Qt |
38 | 25 | 26 | ||
39 | 26 | from copy import copy | 27 | from copy import copy |
40 | @@ -95,6 +96,7 @@ | |||
41 | 95 | self.img=QtGui.QPixmap.fromImage(i.scaled(QtCore.QSize(neww, newh), Qt.Qt.KeepAspectRatio)) | 96 | self.img=QtGui.QPixmap.fromImage(i.scaled(QtCore.QSize(neww, newh), Qt.Qt.KeepAspectRatio)) |
42 | 96 | 97 | ||
43 | 97 | def set_paint_dest(self, p): | 98 | def set_paint_dest(self, p): |
44 | 99 | log.debug(u'set paint dest (frame) w %d h %d',p.width(), p.height()) | ||
45 | 98 | self._paint=p | 100 | self._paint=p |
46 | 99 | if self._bg_image_filename is not None: | 101 | if self._bg_image_filename is not None: |
47 | 100 | self.scale_bg_image() | 102 | self.scale_bg_image() |
48 | @@ -128,6 +130,7 @@ | |||
49 | 128 | assert(self._theme) | 130 | assert(self._theme) |
50 | 129 | assert(self._paint) | 131 | assert(self._paint) |
51 | 130 | log.debug(u'render background %s ', self._theme.background_type) | 132 | log.debug(u'render background %s ', self._theme.background_type) |
52 | 133 | bef = datetime.now() | ||
53 | 131 | p=QtGui.QPainter() | 134 | p=QtGui.QPainter() |
54 | 132 | p.begin(self._paint) | 135 | p.begin(self._paint) |
55 | 133 | if self._theme.background_type == u'solid': | 136 | if self._theme.background_type == u'solid': |
56 | @@ -172,6 +175,10 @@ | |||
57 | 172 | else: | 175 | else: |
58 | 173 | p.fillRect(self._paint.rect(), QtGui.QColor(u'#000000')) | 176 | p.fillRect(self._paint.rect(), QtGui.QColor(u'#000000')) |
59 | 174 | p.end() | 177 | p.end() |
60 | 178 | aft = datetime.now() | ||
61 | 179 | print "background time", bef, aft, aft-bef | ||
62 | 180 | |||
63 | 181 | log.debug(u'render background finish') | ||
64 | 175 | 182 | ||
65 | 176 | def split_set_of_lines(self, lines, footer): | 183 | def split_set_of_lines(self, lines, footer): |
66 | 177 | 184 | ||
67 | @@ -250,7 +257,7 @@ | |||
68 | 250 | 257 | ||
69 | 251 | def render_lines(self, lines, footer_lines=None): | 258 | def render_lines(self, lines, footer_lines=None): |
70 | 252 | """render a set of lines according to the theme, return bounding box""" | 259 | """render a set of lines according to the theme, return bounding box""" |
72 | 253 | log.debug(u'_render_lines %s', lines) | 260 | log.debug(u'render_lines - Start') |
73 | 254 | 261 | ||
74 | 255 | bbox=self._render_lines_unaligned(lines, False) # Main font | 262 | bbox=self._render_lines_unaligned(lines, False) # Main font |
75 | 256 | if footer_lines is not None: | 263 | if footer_lines is not None: |
76 | @@ -263,7 +270,7 @@ | |||
77 | 263 | 270 | ||
78 | 264 | if footer_lines is not None: | 271 | if footer_lines is not None: |
79 | 265 | bbox=self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) ) | 272 | bbox=self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) ) |
81 | 266 | 273 | log.debug(u'render_lines- Finish') | |
82 | 267 | return bbox | 274 | return bbox |
83 | 268 | 275 | ||
84 | 269 | def _render_lines_unaligned(self, lines, footer, tlcorner=(0,0)): | 276 | def _render_lines_unaligned(self, lines, footer, tlcorner=(0,0)): |
85 | @@ -274,13 +281,11 @@ | |||
86 | 274 | than a screenful (eg. by using split_set_of_lines) | 281 | than a screenful (eg. by using split_set_of_lines) |
87 | 275 | 282 | ||
88 | 276 | Returns the bounding box of the text as QRect""" | 283 | Returns the bounding box of the text as QRect""" |
90 | 277 | log.debug(u'render lines unaligned %s', lines) | 284 | log.debug(u'render lines unaligned Start') |
91 | 278 | x, y=tlcorner | 285 | x, y=tlcorner |
92 | 279 | brx=x | 286 | brx=x |
93 | 280 | bry=y | 287 | bry=y |
94 | 281 | for line in lines: | 288 | for line in lines: |
95 | 282 | #if (line == ''): | ||
96 | 283 | # continue | ||
97 | 284 | # render after current bottom, but at original left edge | 289 | # render after current bottom, but at original left edge |
98 | 285 | # keep track of right edge to see which is biggest | 290 | # keep track of right edge to see which is biggest |
99 | 286 | (thisx, bry) = self._render_single_line(line, footer, (x,bry)) | 291 | (thisx, bry) = self._render_single_line(line, footer, (x,bry)) |
100 | @@ -293,8 +298,7 @@ | |||
101 | 293 | p.setPen(QtGui.QPen(QtGui.QColor(0,0,255))) | 298 | p.setPen(QtGui.QPen(QtGui.QColor(0,0,255))) |
102 | 294 | p.drawRect(retval) | 299 | p.drawRect(retval) |
103 | 295 | p.end() | 300 | p.end() |
106 | 296 | 301 | log.debug(u'render lines unaligned Finish') | |
105 | 297 | |||
107 | 298 | return retval | 302 | return retval |
108 | 299 | 303 | ||
109 | 300 | def _render_single_line(self, line, footer, tlcorner=(0,0)): | 304 | def _render_single_line(self, line, footer, tlcorner=(0,0)): |
110 | @@ -396,16 +400,16 @@ | |||
111 | 396 | p.end() | 400 | p.end() |
112 | 397 | 401 | ||
113 | 398 | brcorner=(rightextent,y) | 402 | brcorner=(rightextent,y) |
114 | 403 | log.debug(u'Render single line Finish') | ||
115 | 399 | return brcorner | 404 | return brcorner |
116 | 400 | 405 | ||
117 | 401 | # xxx this is what to override for an SDL version | 406 | # xxx this is what to override for an SDL version |
118 | 402 | def _get_extent_and_render(self, line, footer, tlcorner=(0,0), draw=False, color=None): | 407 | def _get_extent_and_render(self, line, footer, tlcorner=(0,0), draw=False, color=None): |
119 | 403 | """Find bounding box of text - as render_single_line. | 408 | """Find bounding box of text - as render_single_line. |
120 | 404 | If draw is set, actually draw the text to the current DC as well | 409 | If draw is set, actually draw the text to the current DC as well |
121 | 405 | |||
122 | 406 | return width and height of text as a tuple (w,h)""" | 410 | return width and height of text as a tuple (w,h)""" |
123 | 407 | # setup defaults | 411 | # setup defaults |
125 | 408 | log.debug(u'_get_extent_and_render %s %s %s ', [line], tlcorner, draw) | 412 | #log.debug(u'_get_extent_and_render %s %s %s ', [line], tlcorner, draw) |
126 | 409 | p=QtGui.QPainter() | 413 | p=QtGui.QPainter() |
127 | 410 | p.begin(self._paint) | 414 | p.begin(self._paint) |
128 | 411 | # 'twould be more efficient to set this once when theme changes | 415 | # 'twould be more efficient to set this once when theme changes |
129 | 412 | 416 | ||
130 | === modified file 'openlp/core/lib/rendermanager.py' | |||
131 | --- openlp/core/lib/rendermanager.py 2009-05-04 13:48:12 +0000 | |||
132 | +++ openlp/core/lib/rendermanager.py 2009-05-11 05:09:43 +0000 | |||
133 | @@ -18,12 +18,31 @@ | |||
134 | 18 | Place, Suite 330, Boston, MA 02111-1307 USA | 18 | Place, Suite 330, Boston, MA 02111-1307 USA |
135 | 19 | """ | 19 | """ |
136 | 20 | import logging | 20 | import logging |
137 | 21 | import time | ||
138 | 22 | import os, os.path | 21 | import os, os.path |
139 | 23 | import sys | 22 | import sys |
140 | 23 | |||
141 | 24 | from datetime import * | ||
142 | 24 | from PyQt4 import QtGui, QtCore, Qt | 25 | from PyQt4 import QtGui, QtCore, Qt |
143 | 25 | from renderer import Renderer | 26 | from renderer import Renderer |
144 | 26 | 27 | ||
145 | 28 | import sys | ||
146 | 29 | import linecache | ||
147 | 30 | |||
148 | 31 | def traceit(frame, event, arg): | ||
149 | 32 | if event == "line": | ||
150 | 33 | lineno = frame.f_lineno | ||
151 | 34 | filename = frame.f_globals["__file__"] | ||
152 | 35 | if (filename.endswith(".pyc") or | ||
153 | 36 | filename.endswith(".pyo")): | ||
154 | 37 | filename = filename[:-1] | ||
155 | 38 | name = frame.f_globals["__name__"] | ||
156 | 39 | line = linecache.getline(filename, lineno) | ||
157 | 40 | if name.startswith("openlp"): | ||
158 | 41 | print "%s:%s: %s" % (name, lineno, line.rstrip()) | ||
159 | 42 | return traceit | ||
160 | 43 | |||
161 | 44 | |||
162 | 45 | |||
163 | 27 | class RenderManager: | 46 | class RenderManager: |
164 | 28 | """ | 47 | """ |
165 | 29 | Class to pull all Renderer interactions into one place. | 48 | Class to pull all Renderer interactions into one place. |
166 | @@ -51,6 +70,7 @@ | |||
167 | 51 | self.theme = self.default_theme | 70 | self.theme = self.default_theme |
168 | 52 | log.debug(u'theme is now %s', self.theme) | 71 | log.debug(u'theme is now %s', self.theme) |
169 | 53 | self.themedata = self.theme_manager.getThemeData(self.theme) | 72 | self.themedata = self.theme_manager.getThemeData(self.theme) |
170 | 73 | self.calculate_default(self.screen_list[self.current_display]['size']) | ||
171 | 54 | self.renderer.set_theme(self.themedata) | 74 | self.renderer.set_theme(self.themedata) |
172 | 55 | self.build_text_rectangle(self.themedata) | 75 | self.build_text_rectangle(self.themedata) |
173 | 56 | 76 | ||
174 | @@ -74,7 +94,7 @@ | |||
175 | 74 | self.renderer.set_text_rectangle(main_rect,footer_rect) | 94 | self.renderer.set_text_rectangle(main_rect,footer_rect) |
176 | 75 | 95 | ||
177 | 76 | def generate_preview(self, themedata): | 96 | def generate_preview(self, themedata): |
179 | 77 | log.debug(u'generate preview ') | 97 | log.debug(u'generate preview') |
180 | 78 | self.calculate_default(QtCore.QSize(800,600)) | 98 | self.calculate_default(QtCore.QSize(800,600)) |
181 | 79 | self.renderer.set_theme(themedata) | 99 | self.renderer.set_theme(themedata) |
182 | 80 | self.build_text_rectangle(themedata) | 100 | self.build_text_rectangle(themedata) |
183 | @@ -102,11 +122,18 @@ | |||
184 | 102 | 122 | ||
185 | 103 | def generate_slide(self,main_text, footer_text): | 123 | def generate_slide(self,main_text, footer_text): |
186 | 104 | log.debug(u'generate slide') | 124 | log.debug(u'generate slide') |
187 | 125 | #sys.settrace(traceit) | ||
188 | 126 | |||
189 | 105 | self.calculate_default(self.screen_list[self.current_display]['size']) | 127 | self.calculate_default(self.screen_list[self.current_display]['size']) |
190 | 106 | 128 | ||
191 | 129 | bef = datetime.now() | ||
192 | 107 | frame = QtGui.QPixmap(self.width, self.height) | 130 | frame = QtGui.QPixmap(self.width, self.height) |
193 | 131 | aft = datetime.now() | ||
194 | 132 | print "framebuild time", bef, aft, aft-bef | ||
195 | 133 | |||
196 | 108 | self.renderer.set_paint_dest(frame) | 134 | self.renderer.set_paint_dest(frame) |
197 | 109 | answer=self.renderer.render_lines(main_text, footer_text) | 135 | answer=self.renderer.render_lines(main_text, footer_text) |
198 | 136 | #sys.settrace() | ||
199 | 110 | return frame | 137 | return frame |
200 | 111 | 138 | ||
201 | 112 | def calculate_default(self, screen): | 139 | def calculate_default(self, screen): |
202 | 113 | 140 | ||
203 | === modified file 'openlp/core/lib/serviceitem.py' | |||
204 | --- openlp/core/lib/serviceitem.py 2009-05-04 13:48:12 +0000 | |||
205 | +++ openlp/core/lib/serviceitem.py 2009-05-11 05:09:43 +0000 | |||
206 | @@ -44,7 +44,6 @@ | |||
207 | 44 | self.items = [] | 44 | self.items = [] |
208 | 45 | self.iconic_representation = None | 45 | self.iconic_representation = None |
209 | 46 | self.raw_slides = None | 46 | self.raw_slides = None |
210 | 47 | self.format_slides = [] | ||
211 | 48 | self.frames = [] | 47 | self.frames = [] |
212 | 49 | self.raw_footer = None | 48 | self.raw_footer = None |
213 | 50 | self.theme = None | 49 | self.theme = None |
214 | @@ -74,11 +73,11 @@ | |||
215 | 74 | else: | 73 | else: |
216 | 75 | self.render_manager.set_override_theme(self.theme) | 74 | self.render_manager.set_override_theme(self.theme) |
217 | 76 | log.debug(u'Formatting slides') | 75 | log.debug(u'Formatting slides') |
223 | 77 | for slide in self.raw_slides: | 76 | if len(self.frames) == 0 : |
224 | 78 | self.format_slides.append(self.render_manager.format_slide(slide, False)) | 77 | for slide in self.raw_slides: |
225 | 79 | log.debug(u'Rendering slides') | 78 | formated = self.render_manager.format_slide(slide, False) |
226 | 80 | for slide in self.format_slides: | 79 | frame = self.render_manager.generate_slide(formated, self.raw_footer) |
227 | 81 | self.frames.append(self.render_manager.generate_slide(slide, self.raw_footer)) | 80 | self.frames.append({u'formatted': formated, u'image': frame}) |
228 | 82 | 81 | ||
229 | 83 | 82 | ||
230 | 84 | def get_parent_node(self): | 83 | def get_parent_node(self): |
231 | 85 | 84 | ||
232 | === modified file 'openlp/core/ui/mainwindow.py' | |||
233 | --- openlp/core/ui/mainwindow.py 2009-05-04 08:15:48 +0000 | |||
234 | +++ openlp/core/ui/mainwindow.py 2009-05-09 07:01:33 +0000 | |||
235 | @@ -92,6 +92,7 @@ | |||
236 | 92 | self.ThemeManagerContents.eventManager = self.EventManager | 92 | self.ThemeManagerContents.eventManager = self.EventManager |
237 | 93 | self.ThemeManagerContents.renderManager = self.RenderManager | 93 | self.ThemeManagerContents.renderManager = self.RenderManager |
238 | 94 | self.ServiceManagerContents.renderManager = self.RenderManager | 94 | self.ServiceManagerContents.renderManager = self.RenderManager |
239 | 95 | self.ServiceManagerContents.eventManager = self.EventManager | ||
240 | 95 | self.ThemeManagerContents.serviceManager = self.ServiceManagerContents | 96 | self.ThemeManagerContents.serviceManager = self.ServiceManagerContents |
241 | 96 | self.ThemeManagerContents.loadThemes() | 97 | self.ThemeManagerContents.loadThemes() |
242 | 97 | 98 | ||
243 | 98 | 99 | ||
244 | === modified file 'openlp/core/ui/servicemanager.py' | |||
245 | --- openlp/core/ui/servicemanager.py 2009-05-04 08:15:48 +0000 | |||
246 | +++ openlp/core/ui/servicemanager.py 2009-05-11 05:09:43 +0000 | |||
247 | @@ -18,101 +18,97 @@ | |||
248 | 18 | Place, Suite 330, Boston, MA 02111-1307 USA | 18 | Place, Suite 330, Boston, MA 02111-1307 USA |
249 | 19 | """ | 19 | """ |
250 | 20 | import os | 20 | import os |
251 | 21 | import logging | ||
252 | 21 | 22 | ||
253 | 22 | from time import sleep | 23 | from time import sleep |
254 | 23 | from copy import deepcopy | 24 | from copy import deepcopy |
255 | 24 | 25 | ||
258 | 25 | from PyQt4.QtCore import * | 26 | from PyQt4 import QtCore, QtGui |
257 | 26 | from PyQt4.QtGui import * | ||
259 | 27 | 27 | ||
260 | 28 | # from openlp.core.resources import * | ||
261 | 29 | # from openlp.core.ui import AboutForm, AlertForm, SettingsForm, SlideController | ||
262 | 30 | from openlp.core.lib import OpenLPToolbar | 28 | from openlp.core.lib import OpenLPToolbar |
263 | 31 | from openlp.core.lib import ServiceItem | 29 | from openlp.core.lib import ServiceItem |
264 | 32 | from openlp.core.lib import RenderManager | 30 | from openlp.core.lib import RenderManager |
265 | 33 | from openlp.core import translate | 31 | from openlp.core import translate |
348 | 34 | 32 | from openlp.core.lib import Event, EventType, EventManager | |
349 | 35 | # from openlp.core import PluginManager | 33 | |
350 | 36 | import logging | 34 | #class ServiceData(QtCore.QAbstractItemModel): |
351 | 37 | 35 | # """ | |
352 | 38 | class ServiceData(QAbstractItemModel): | 36 | # Tree of items for an order of service. |
353 | 39 | """ | 37 | # Includes methods for reading and writing the contents to an OOS file |
354 | 40 | Tree of items for an order of service. | 38 | # Root contains a list of ServiceItems |
355 | 41 | Includes methods for reading and writing the contents to an OOS file | 39 | # """ |
356 | 42 | Root contains a list of ServiceItems | 40 | # global log |
357 | 43 | """ | 41 | # log=logging.getLogger(u'ServiceData') |
358 | 44 | global log | 42 | # def __init__(self): |
359 | 45 | log=logging.getLogger(u'ServiceData') | 43 | # QtCore.QAbstractItemModel.__init__(self) |
360 | 46 | def __init__(self): | 44 | # self.items=[] |
361 | 47 | QAbstractItemModel.__init__(self) | 45 | # log.info("Starting") |
362 | 48 | self.items=[] | 46 | # |
363 | 49 | log.info("Starting") | 47 | # def clearItems(self): |
364 | 50 | 48 | # self.items = [] | |
365 | 51 | def clearItems(self): | 49 | # |
366 | 52 | self.items = [] | 50 | # def columnCount(self, parent=None): |
367 | 53 | 51 | # return 1; # always only a single column (for now) | |
368 | 54 | def columnCount(self, parent): | 52 | # |
369 | 55 | return 1; # always only a single column (for now) | 53 | # def rowCount(self, parent=None): |
370 | 56 | 54 | # return len(self.items) | |
371 | 57 | def rowCount(self, parent): | 55 | # |
372 | 58 | return len(self.items) | 56 | # def insertRow(self, row, service_item): |
373 | 59 | 57 | # self.beginInsertRows(QtCore.QModelIndex(),row,row) | |
374 | 60 | def insertRow(self, row, service_item): | 58 | # log.info("insert row %s:%s" % (row,service_item)) |
375 | 61 | self.beginInsertRows(QModelIndex(),row,row) | 59 | # self.items.insert(row, service_item) |
376 | 62 | log.info("insert row %s:%s" % (row,service_item)) | 60 | # log.info("Items: %s" % self.items) |
377 | 63 | self.items.insert(row, service_item) | 61 | # self.endInsertRows() |
378 | 64 | log.info("Items: %s" % self.items) | 62 | # |
379 | 65 | self.endInsertRows() | 63 | # def removeRow(self, row): |
380 | 66 | 64 | # self.beginRemoveRows(QtCore.QModelIndex(), row,row) | |
381 | 67 | def removeRow(self, row): | 65 | # self.items.pop(row) |
382 | 68 | self.beginRemoveRows(QModelIndex(), row,row) | 66 | # self.endRemoveRows() |
383 | 69 | self.items.pop(row) | 67 | # |
384 | 70 | self.endRemoveRows() | 68 | # def addRow(self, service_item): |
385 | 71 | 69 | # self.insertRow(len(self.items), service_item) | |
386 | 72 | def addRow(self, item): | 70 | # |
387 | 73 | self.insertRow(len(self.items), item) | 71 | # def index(self, row, col, parent = QtCore.QModelIndex()): |
388 | 74 | 72 | # return self.createIndex(row,col) | |
389 | 75 | def index(self, row, col, parent = QModelIndex()): | 73 | # |
390 | 76 | return self.createIndex(row,col) | 74 | # def parent(self, index=QtCore.QModelIndex()): |
391 | 77 | 75 | # return QtCore.QModelIndex() # no children as yet | |
392 | 78 | def parent(self, index=QModelIndex()): | 76 | # |
393 | 79 | return QModelIndex() # no children as yet | 77 | # def data(self, index, role): |
394 | 80 | 78 | # """ | |
395 | 81 | def data(self, index, role): | 79 | # Called by the service manager to draw us in the service window |
396 | 82 | """ | 80 | # """ |
397 | 83 | Called by the service manager to draw us in the service window | 81 | # log.debug(u'data %s %d', index, role) |
398 | 84 | """ | 82 | # row = index.row() |
399 | 85 | log.debug(u'data %s %d', index, role) | 83 | # if row > len(self.items): # if the last row is selected and deleted, we then get called with an empty row! |
400 | 86 | row=index.row() | 84 | # return QtCore.QVariant() |
401 | 87 | if row > len(self.items): # if the last row is selected and deleted, we then get called with an empty row! | 85 | # item = self.items[row] |
402 | 88 | return QVariant() | 86 | # if role == QtCore.Qt.DisplayRole: |
403 | 89 | item=self.items[row] | 87 | # retval= item.title + u':' + item.shortname |
404 | 90 | if role==Qt.DisplayRole: | 88 | # elif role == QtCore.Qt.DecorationRole: |
405 | 91 | retval= item.title + u':' + item.shortname | 89 | # retval = item.iconic_representation |
406 | 92 | elif role == Qt.DecorationRole: | 90 | # elif role == QtCore.Qt.ToolTipRole: |
407 | 93 | retval = item.iconic_representation | 91 | # retval = None |
408 | 94 | elif role == Qt.ToolTipRole: | 92 | # else: |
409 | 95 | retval= None | 93 | # retval = None |
410 | 96 | else: | 94 | # if retval == None: |
411 | 97 | retval= None | 95 | # retval = QtCore.QVariant() |
412 | 98 | if retval == None: | 96 | ## log.info("Returning"+ str(retval)) |
413 | 99 | retval=QVariant() | 97 | # if type(retval) is not type(QtCore.QVariant): |
414 | 100 | # log.info("Returning"+ str(retval)) | 98 | # return QtCore.QVariant(retval) |
415 | 101 | if type(retval) is not type(QVariant): | 99 | # else: |
416 | 102 | return QVariant(retval) | 100 | # return retval |
417 | 103 | else: | 101 | # |
418 | 104 | return retval | 102 | # def __iter__(self): |
419 | 105 | 103 | # for i in self.items: | |
420 | 106 | def __iter__(self): | 104 | # yield i |
421 | 107 | for i in self.items: | 105 | # |
422 | 108 | yield i | 106 | # def item(self, row): |
423 | 109 | 107 | # log.info("Get Item:%d -> %s" %(row, str(self.items))) | |
424 | 110 | def item(self, row): | 108 | # return self.items[row] |
425 | 111 | log.info("Get Item:%d -> %s" %(row, str(self.items))) | 109 | |
426 | 112 | return self.items[row] | 110 | |
427 | 113 | 111 | class ServiceManager(QtGui.QWidget): | |
346 | 114 | |||
347 | 115 | class ServiceManager(QWidget): | ||
428 | 116 | 112 | ||
429 | 117 | """Manages the orders of service. Currently this involves taking | 113 | """Manages the orders of service. Currently this involves taking |
430 | 118 | text strings from plugins and adding them to an OOS file. In | 114 | text strings from plugins and adding them to an OOS file. In |
431 | @@ -124,48 +120,52 @@ | |||
432 | 124 | log=logging.getLogger(u'ServiceManager') | 120 | log=logging.getLogger(u'ServiceManager') |
433 | 125 | 121 | ||
434 | 126 | def __init__(self, parent): | 122 | def __init__(self, parent): |
436 | 127 | QWidget.__init__(self) | 123 | QtGui.QWidget.__init__(self) |
437 | 128 | self.parent=parent | 124 | self.parent=parent |
439 | 129 | self.Layout = QVBoxLayout(self) | 125 | self.Layout = QtGui.QVBoxLayout(self) |
440 | 130 | self.Layout.setSpacing(0) | 126 | self.Layout.setSpacing(0) |
441 | 131 | self.Layout.setMargin(0) | 127 | self.Layout.setMargin(0) |
442 | 132 | self.Toolbar = OpenLPToolbar(self) | 128 | self.Toolbar = OpenLPToolbar(self) |
446 | 133 | self.Toolbar.addToolbarButton("Move to top", ":/services/service_top.png", | 129 | self.Toolbar.addToolbarButton(u'Move to top', u':/services/service_top.png', |
447 | 134 | translate(u'ServiceManager', u'Move to start'), self.onServiceTop) | 130 | translate(u'ServiceManager', u'Move to top'), self.onServiceTop) |
448 | 135 | self.Toolbar.addToolbarButton("Move up", ":/services/service_up.png", | 131 | self.Toolbar.addToolbarButton(u'Move up', u':/services/service_up.png', |
449 | 136 | translate(u'ServiceManager', u'Move up order'), self.onServiceUp) | 132 | translate(u'ServiceManager', u'Move up order'), self.onServiceUp) |
451 | 137 | self.Toolbar.addToolbarButton("Move down", ":/services/service_down.png", | 133 | self.Toolbar.addToolbarButton(u'Move down', u':/services/service_down.png', |
452 | 138 | translate(u'ServiceManager', u'Move down order'), self.onServiceDown) | 134 | translate(u'ServiceManager', u'Move down order'), self.onServiceDown) |
454 | 139 | self.Toolbar.addToolbarButton("Move to bottom", ":/services/service_bottom.png", | 135 | self.Toolbar.addToolbarButton(u'Move to bottom', u':/services/service_bottom.png', |
455 | 140 | translate(u'ServiceManager', u'Move to end'), self.onServiceEnd) | 136 | translate(u'ServiceManager', u'Move to end'), self.onServiceEnd) |
456 | 141 | self.Toolbar.addSeparator() | 137 | self.Toolbar.addSeparator() |
458 | 142 | self.Toolbar.addToolbarButton("New Service", ":/services/service_new.png", | 138 | self.Toolbar.addToolbarButton(u'New Service', u':/services/service_new.png', |
459 | 143 | translate(u'ServiceManager', u'Create a new Service'), self.onNewService) | 139 | translate(u'ServiceManager', u'Create a new Service'), self.onNewService) |
461 | 144 | self.Toolbar.addToolbarButton("Delete From Service", ":/services/service_delete.png", | 140 | self.Toolbar.addToolbarButton(u'Delete From Service', u':/services/service_delete.png', |
462 | 145 | translate(u'ServiceManager', u'Delete From Service'), self.onDeleteFromService) | 141 | translate(u'ServiceManager', u'Delete From Service'), self.onDeleteFromService) |
463 | 146 | self.Toolbar.addSeparator() | 142 | self.Toolbar.addSeparator() |
465 | 147 | self.Toolbar.addToolbarButton("Save Service", ":/services/service_save.png", | 143 | self.Toolbar.addToolbarButton(u'Save Service', u':/services/service_save.png', |
466 | 148 | translate(u'ServiceManager', u'Save Service'), self.onSaveService) | 144 | translate(u'ServiceManager', u'Save Service'), self.onSaveService) |
468 | 149 | self.Toolbar.addToolbarButton("Load Service", ":/services/service_open.png", | 145 | self.Toolbar.addToolbarButton(u'Load Service', u':/services/service_open.png', |
469 | 150 | translate(u'ServiceManager', u'Load Existing'), self.onLoadService) | 146 | translate(u'ServiceManager', u'Load Existing'), self.onLoadService) |
470 | 151 | 147 | ||
471 | 152 | self.Toolbar.addSeparator() | 148 | self.Toolbar.addSeparator() |
475 | 153 | self.ThemeComboBox = QComboBox(self.Toolbar) | 149 | self.ThemeComboBox = QtGui.QComboBox(self.Toolbar) |
476 | 154 | self.ThemeComboBox.setSizeAdjustPolicy(QComboBox.AdjustToContents) | 150 | self.ThemeComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents) |
477 | 155 | self.ThemeWidget = QWidgetAction(self.Toolbar) | 151 | self.ThemeWidget = QtGui.QWidgetAction(self.Toolbar) |
478 | 156 | self.ThemeWidget.setDefaultWidget(self.ThemeComboBox) | 152 | self.ThemeWidget.setDefaultWidget(self.ThemeComboBox) |
479 | 157 | self.Toolbar.addAction(self.ThemeWidget) | 153 | self.Toolbar.addAction(self.ThemeWidget) |
480 | 158 | |||
481 | 159 | self.Layout.addWidget(self.Toolbar) | 154 | self.Layout.addWidget(self.Toolbar) |
482 | 160 | 155 | ||
491 | 161 | self.TreeView = QTreeView(self) | 156 | self.serviceManagerList = QtGui.QTreeWidget(self) |
492 | 162 | self.service_data=ServiceData() | 157 | self.serviceManagerList.setEditTriggers(QtGui.QAbstractItemView.CurrentChanged|QtGui.QAbstractItemView.DoubleClicked|QtGui.QAbstractItemView.EditKeyPressed) |
493 | 163 | self.TreeView.setModel(self.service_data) | 158 | self.serviceManagerList.setDragDropMode(QtGui.QAbstractItemView.DragDrop) |
494 | 164 | self.TreeView.setAlternatingRowColors(True) | 159 | self.serviceManagerList.setAlternatingRowColors(True) |
495 | 165 | self.Layout.addWidget(self.TreeView) | 160 | self.serviceManagerList.setObjectName("serviceManagerList") |
496 | 166 | 161 | self.serviceManagerList .__class__.dragEnterEvent=self.dragEnterEvent | |
497 | 167 | QObject.connect(self.ThemeComboBox, | 162 | self.serviceManagerList .__class__.dragMoveEvent=self.dragEnterEvent |
498 | 168 | SIGNAL("activated(int)"), self.onThemeComboBoxSelected) | 163 | self.serviceManagerList .__class__.dropEvent =self.dropEvent |
499 | 164 | |||
500 | 165 | self.Layout.addWidget(self.serviceManagerList) | ||
501 | 166 | |||
502 | 167 | QtCore.QObject.connect(self.ThemeComboBox, | ||
503 | 168 | QtCore.SIGNAL("activated(int)"), self.onThemeComboBoxSelected) | ||
504 | 169 | 169 | ||
505 | 170 | def onServiceTop(self): | 170 | def onServiceTop(self): |
506 | 171 | pass | 171 | pass |
507 | @@ -191,40 +191,36 @@ | |||
508 | 191 | def onLoadService(self): | 191 | def onLoadService(self): |
509 | 192 | Pass | 192 | Pass |
510 | 193 | 193 | ||
511 | 194 | |||
512 | 195 | |||
513 | 196 | |||
514 | 197 | def onThemeComboBoxSelected(self, currentIndex): | 194 | def onThemeComboBoxSelected(self, currentIndex): |
515 | 198 | self.renderManager.default_theme = self.ThemeComboBox.currentText() | 195 | self.renderManager.default_theme = self.ThemeComboBox.currentText() |
516 | 199 | 196 | ||
517 | 200 | def addServiceItem(self, item): | 197 | def addServiceItem(self, item): |
545 | 201 | """Adds service item""" | 198 | treewidgetitem = QtGui.QTreeWidgetItem(self.serviceManagerList) |
546 | 202 | log.info("addServiceItem") | 199 | treewidgetitem.setText(0,item.title + u':' + item.shortname) |
547 | 203 | indexes=self.TreeView.selectedIndexes() | 200 | treewidgetitem.setIcon(0,item.iconic_representation) |
548 | 204 | assert len(indexes) <= 1 # can only have one selected index in this view | 201 | treewidgetitem.setExpanded(True) |
549 | 205 | if indexes == []: | 202 | item.render() |
550 | 206 | log.info("No row") | 203 | for frame in item.frames: |
551 | 207 | row = None | 204 | treewidgetitem1 = QtGui.QTreeWidgetItem(treewidgetitem) |
552 | 208 | selected_item = None | 205 | text = frame[u'formatted'][0] |
553 | 209 | else: | 206 | treewidgetitem1.setText(0,text[:10]) |
554 | 210 | row=indexes[0].row() | 207 | #treewidgetitem1.setIcon(0,frame[u'image']) |
555 | 211 | # if currently selected is of correct type, add it to it | 208 | |
556 | 212 | log.info("row:%d"%row) | 209 | def dragEnterEvent(self, event): |
557 | 213 | selected_item=self.service_data.item(row) | 210 | """ |
558 | 214 | 211 | Accept Drag events | |
559 | 215 | if type(selected_item) == type(item): | 212 | """ |
560 | 216 | log.info("Add to existing item") | 213 | event.accept() |
561 | 217 | selected_item.add(item) | 214 | |
562 | 218 | else: | 215 | def dropEvent(self, event): |
563 | 219 | log.info("Create new item") | 216 | """ |
564 | 220 | if row is None: | 217 | Handle the release of the event and trigger the plugin |
565 | 221 | self.service_data.addRow(item) | 218 | to add the data |
566 | 222 | else: | 219 | """ |
567 | 223 | self.service_data.insertRow(row+1, item) | 220 | link=event.mimeData() |
568 | 224 | 221 | if link.hasText(): | |
569 | 225 | def removeServiceItem(self): | 222 | plugin = event.mimeData().text() |
570 | 226 | """Remove currently selected item""" | 223 | self.eventManager.post_event(Event(EventType.LoadServiceItem, plugin)) |
544 | 227 | pass | ||
571 | 228 | 224 | ||
572 | 229 | def oos_as_text(self): | 225 | def oos_as_text(self): |
573 | 230 | text=[] | 226 | text=[] |
574 | @@ -247,6 +243,9 @@ | |||
575 | 247 | oosfile.close() | 243 | oosfile.close() |
576 | 248 | 244 | ||
577 | 249 | def updateThemeList(self, theme_list): | 245 | def updateThemeList(self, theme_list): |
578 | 246 | """ | ||
579 | 247 | Called from ThemeManager when the Themes have changed | ||
580 | 248 | """ | ||
581 | 250 | self.ThemeComboBox.clear() | 249 | self.ThemeComboBox.clear() |
582 | 251 | for theme in theme_list: | 250 | for theme in theme_list: |
583 | 252 | self.ThemeComboBox.addItem(theme) | 251 | self.ThemeComboBox.addItem(theme) |
584 | 253 | 252 | ||
585 | === modified file 'openlp/core/ui/slidecontroller.py' | |||
586 | --- openlp/core/ui/slidecontroller.py 2009-05-04 13:48:12 +0000 | |||
587 | +++ openlp/core/ui/slidecontroller.py 2009-05-11 05:09:43 +0000 | |||
588 | @@ -20,13 +20,12 @@ | |||
589 | 20 | import logging | 20 | import logging |
590 | 21 | import os | 21 | import os |
591 | 22 | 22 | ||
594 | 23 | from PyQt4.QtCore import * | 23 | from PyQt4 import QtCore, QtGui |
593 | 24 | from PyQt4.QtGui import * | ||
595 | 25 | 24 | ||
596 | 26 | from openlp.core.lib import OpenLPToolbar | 25 | from openlp.core.lib import OpenLPToolbar |
597 | 27 | from openlp.core import translate | 26 | from openlp.core import translate |
598 | 28 | 27 | ||
600 | 29 | class SlideData(QAbstractListModel): | 28 | class SlideData(QtCore.QAbstractListModel): |
601 | 30 | """ | 29 | """ |
602 | 31 | Tree of items for an order of Theme. | 30 | Tree of items for an order of Theme. |
603 | 32 | Includes methods for reading and writing the contents to an OOS file | 31 | Includes methods for reading and writing the contents to an OOS file |
604 | @@ -36,13 +35,13 @@ | |||
605 | 36 | log=logging.getLogger(u'SlideData') | 35 | log=logging.getLogger(u'SlideData') |
606 | 37 | 36 | ||
607 | 38 | def __init__(self): | 37 | def __init__(self): |
609 | 39 | QAbstractListModel.__init__(self) | 38 | QtCore.QAbstractListModel.__init__(self) |
610 | 40 | self.items=[] | 39 | self.items=[] |
611 | 41 | self.rowheight=50 | 40 | self.rowheight=50 |
612 | 42 | self.maximagewidth=self.rowheight*16/9.0; | 41 | self.maximagewidth=self.rowheight*16/9.0; |
613 | 43 | log.info(u'Starting') | 42 | log.info(u'Starting') |
614 | 44 | 43 | ||
616 | 45 | def clearItems(self): | 44 | def clear(self): |
617 | 46 | self.items=[] | 45 | self.items=[] |
618 | 47 | 46 | ||
619 | 48 | def columnCount(self, parent): | 47 | def columnCount(self, parent): |
620 | @@ -51,36 +50,36 @@ | |||
621 | 51 | def rowCount(self, parent=None): | 50 | def rowCount(self, parent=None): |
622 | 52 | return len(self.items) | 51 | return len(self.items) |
623 | 53 | 52 | ||
626 | 54 | def insertRow(self, row, frame): | 53 | def insertRow(self, row, frame, framenumber): |
627 | 55 | self.beginInsertRows(QModelIndex(),row,row) | 54 | self.beginInsertRows(QtCore.QModelIndex(),row,row) |
628 | 56 | log.info(u'insert row %d' % row) | 55 | log.info(u'insert row %d' % row) |
629 | 57 | # create a preview image | 56 | # create a preview image |
632 | 58 | frame1 = frame.scaled(QSize(350,260)) | 57 | frame1 = frame.scaled(QtCore.QSize(350,260), QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) |
633 | 59 | self.items.insert(row,(frame1)) | 58 | self.items.insert(row,(frame1, framenumber)) |
634 | 60 | log.info(u'Items: %s' % self.items) | 59 | log.info(u'Items: %s' % self.items) |
635 | 61 | self.endInsertRows() | 60 | self.endInsertRows() |
636 | 62 | 61 | ||
637 | 63 | def removeRow(self, row): | 62 | def removeRow(self, row): |
639 | 64 | self.beginRemoveRows(QModelIndex(), row,row) | 63 | self.beginRemoveRows(QtCore.QModelIndex(), row,row) |
640 | 65 | self.items.pop(row) | 64 | self.items.pop(row) |
641 | 66 | self.endRemoveRows() | 65 | self.endRemoveRows() |
642 | 67 | 66 | ||
645 | 68 | def addRow(self, frame): | 67 | def addRow(self, frame, framenumber): |
646 | 69 | self.insertRow(len(self.items), frame) | 68 | self.insertRow(len(self.items), frame, framenumber) |
647 | 70 | 69 | ||
648 | 71 | def data(self, index, role): | 70 | def data(self, index, role): |
649 | 72 | row=index.row() | 71 | row=index.row() |
650 | 73 | if row > len(self.items): # if the last row is selected and deleted, we then get called with an empty row! | 72 | if row > len(self.items): # if the last row is selected and deleted, we then get called with an empty row! |
652 | 74 | return QVariant() | 73 | return QtCore.QVariant() |
653 | 75 | # if role==Qt.DisplayRole: | 74 | # if role==Qt.DisplayRole: |
654 | 76 | # retval= self.items[row][1] | 75 | # retval= self.items[row][1] |
657 | 77 | if role == Qt.DecorationRole: | 76 | if role == QtCore.Qt.DecorationRole: |
658 | 78 | retval= self.items[row]#[0] | 77 | retval= self.items[row][0] |
659 | 79 | else: | 78 | else: |
661 | 80 | retval= QVariant() | 79 | retval= QtCore.QVariant() |
662 | 81 | # log.info("Returning"+ str(retval)) | 80 | # log.info("Returning"+ str(retval)) |
665 | 82 | if type(retval) is not type(QVariant): | 81 | if type(retval) is not type(QtCore.QVariant): |
666 | 83 | return QVariant(retval) | 82 | return QtCore.QVariant(retval) |
667 | 84 | else: | 83 | else: |
668 | 85 | return retval | 84 | return retval |
669 | 86 | 85 | ||
670 | @@ -101,75 +100,84 @@ | |||
671 | 101 | return filelist | 100 | return filelist |
672 | 102 | 101 | ||
673 | 103 | 102 | ||
675 | 104 | class SlideController(QWidget): | 103 | class SlideController(QtGui.QWidget): |
676 | 105 | global log | 104 | global log |
677 | 106 | log=logging.getLogger(u'SlideController') | 105 | log=logging.getLogger(u'SlideController') |
678 | 107 | 106 | ||
679 | 108 | def __init__(self, control_splitter, isLive): | 107 | def __init__(self, control_splitter, isLive): |
681 | 109 | QWidget.__init__(self) | 108 | QtGui.QWidget.__init__(self) |
682 | 110 | self.isLive = isLive | 109 | self.isLive = isLive |
686 | 111 | self.Panel = QWidget(control_splitter) | 110 | self.Panel = QtGui.QWidget(control_splitter) |
687 | 112 | self.Splitter = QSplitter(self.Panel) | 111 | self.Splitter = QtGui.QSplitter(self.Panel) |
688 | 113 | self.Splitter.setOrientation(Qt.Vertical) | 112 | self.Splitter.setOrientation(QtCore.Qt.Vertical) |
689 | 114 | 113 | ||
691 | 115 | self.PanelLayout = QVBoxLayout(self.Panel) | 114 | self.PanelLayout = QtGui.QVBoxLayout(self.Panel) |
692 | 116 | self.PanelLayout.addWidget(self.Splitter) | 115 | self.PanelLayout.addWidget(self.Splitter) |
693 | 117 | self.PanelLayout.setSpacing(50) | 116 | self.PanelLayout.setSpacing(50) |
694 | 118 | self.PanelLayout.setMargin(0) | 117 | self.PanelLayout.setMargin(0) |
695 | 119 | 118 | ||
697 | 120 | self.Controller = QScrollArea(self.Splitter) | 119 | self.Controller = QtGui.QScrollArea(self.Splitter) |
698 | 121 | self.Controller.setWidgetResizable(True) | 120 | self.Controller.setWidgetResizable(True) |
699 | 122 | 121 | ||
701 | 123 | self.PreviewListView = QListView(self.Splitter) | 122 | self.PreviewListView = QtGui.QListView(self.Splitter) |
702 | 123 | self.PreviewListView.setEditTriggers(QtGui.QAbstractItemView.CurrentChanged) | ||
703 | 124 | self.PreviewListView.setAlternatingRowColors(True) | 124 | self.PreviewListView.setAlternatingRowColors(True) |
704 | 125 | self.PreviewListData = SlideData() | 125 | self.PreviewListData = SlideData() |
705 | 126 | self.PreviewListView.setModel(self.PreviewListData) | 126 | self.PreviewListView.setModel(self.PreviewListData) |
706 | 127 | self.PreviewListView.setSelectionRectVisible(True) | ||
707 | 127 | 128 | ||
709 | 128 | self.Controller.setGeometry(QRect(0, 0, 828, 536)) | 129 | self.Controller.setGeometry(QtCore.QRect(0, 0, 828, 536)) |
710 | 129 | self.Controller.setWidget(self.PreviewListView) | 130 | self.Controller.setWidget(self.PreviewListView) |
711 | 130 | 131 | ||
712 | 131 | self.Toolbar = OpenLPToolbar(self.Splitter) | 132 | self.Toolbar = OpenLPToolbar(self.Splitter) |
714 | 132 | sizeToolbarPolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) | 133 | sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) |
715 | 133 | sizeToolbarPolicy.setHorizontalStretch(0) | 134 | sizeToolbarPolicy.setHorizontalStretch(0) |
716 | 134 | sizeToolbarPolicy.setVerticalStretch(0) | 135 | sizeToolbarPolicy.setVerticalStretch(0) |
717 | 135 | sizeToolbarPolicy.setHeightForWidth(self.Toolbar.sizePolicy().hasHeightForWidth()) | 136 | sizeToolbarPolicy.setHeightForWidth(self.Toolbar.sizePolicy().hasHeightForWidth()) |
718 | 136 | 137 | ||
719 | 137 | if self.isLive: | 138 | if self.isLive: |
721 | 138 | self.Toolbar.addToolbarButton("First Slide", ":/slides/slide_first.png", | 139 | self.Toolbar.addToolbarButton(u'First Slide', u':/slides/slide_first.png', |
722 | 139 | translate(u'SlideController', u'Move to first'), self.onSlideSelectedFirst) | 140 | translate(u'SlideController', u'Move to first'), self.onSlideSelectedFirst) |
724 | 140 | self.Toolbar.addToolbarButton("Last Slide", ":/slides/slide_previous.png", | 141 | self.Toolbar.addToolbarButton(u'Last Slide', u':/slides/slide_previous.png', |
725 | 141 | translate(u'SlideController', u'Move to previous'), self.onSlideSelectedPrevious) | 142 | translate(u'SlideController', u'Move to previous'), self.onSlideSelectedPrevious) |
727 | 142 | self.Toolbar.addToolbarButton("First Slide", ":/slides/slide_next.png", | 143 | self.Toolbar.addToolbarButton(u'First Slide', u':/slides/slide_next.png', |
728 | 143 | translate(u'SlideController', u'Move to next'), self.onSlideSelectedNext) | 144 | translate(u'SlideController', u'Move to next'), self.onSlideSelectedNext) |
729 | 144 | if self.isLive: | 145 | if self.isLive: |
731 | 145 | self.Toolbar.addToolbarButton("Last Slide", ":/slides/slide_last.png", | 146 | self.Toolbar.addToolbarButton(u'Last Slide', u':/slides/slide_last.png', |
732 | 146 | translate(u'SlideController', u'Move to last'), self.onSlideSelectedLast) | 147 | translate(u'SlideController', u'Move to last'), self.onSlideSelectedLast) |
733 | 147 | self.Toolbar.addSeparator() | 148 | self.Toolbar.addSeparator() |
735 | 148 | self.Toolbar.addToolbarButton("Close Sscreen", ":/slides/slide_close.png", | 149 | self.Toolbar.addToolbarButton(u'Close Screen', u':/slides/slide_close.png', |
736 | 149 | translate(u'SlideController', u'Close Screen'), self.onBlankScreen) | 150 | translate(u'SlideController', u'Close Screen'), self.onBlankScreen) |
737 | 150 | 151 | ||
738 | 151 | self.Toolbar.setSizePolicy(sizeToolbarPolicy) | 152 | self.Toolbar.setSizePolicy(sizeToolbarPolicy) |
739 | 152 | 153 | ||
742 | 153 | self.SlidePreview = QLabel(self.Splitter) | 154 | self.SlidePreview = QtGui.QLabel(self.Splitter) |
743 | 154 | sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) | 155 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) |
744 | 155 | sizePolicy.setHorizontalStretch(0) | 156 | sizePolicy.setHorizontalStretch(0) |
745 | 156 | sizePolicy.setVerticalStretch(0) | 157 | sizePolicy.setVerticalStretch(0) |
746 | 157 | sizePolicy.setHeightForWidth(self.SlidePreview.sizePolicy().hasHeightForWidth()) | 158 | sizePolicy.setHeightForWidth(self.SlidePreview.sizePolicy().hasHeightForWidth()) |
747 | 158 | self.SlidePreview.setSizePolicy(sizePolicy) | 159 | self.SlidePreview.setSizePolicy(sizePolicy) |
751 | 159 | self.SlidePreview.setMinimumSize(QSize(250, 190)) | 160 | self.SlidePreview.setMinimumSize(QtCore.QSize(250, 190)) |
752 | 160 | self.SlidePreview.setFrameShape(QFrame.WinPanel) | 161 | self.SlidePreview.setFrameShape(QtGui.QFrame.WinPanel) |
753 | 161 | self.SlidePreview.setFrameShadow(QFrame.Sunken) | 162 | self.SlidePreview.setFrameShadow(QtGui.QFrame.Sunken) |
754 | 162 | self.SlidePreview.setLineWidth(1) | 163 | self.SlidePreview.setLineWidth(1) |
755 | 163 | self.SlidePreview.setScaledContents(True) | 164 | self.SlidePreview.setScaledContents(True) |
760 | 164 | self.SlidePreview.setObjectName("SlidePreview") | 165 | self.SlidePreview.setObjectName(u'SlidePreview') |
761 | 165 | 166 | ||
762 | 166 | QObject.connect(self.PreviewListView, | 167 | QtCore.QObject.connect(self.PreviewListView, |
763 | 167 | SIGNAL("clicked(QModelIndex)"), self.onSlideSelected) | 168 | QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected) |
764 | 169 | QtCore.QObject.connect(self.PreviewListView, | ||
765 | 170 | QtCore.SIGNAL(u'clicked(QListViewItem)'), self.onCurrentItemChanged) | ||
766 | 171 | |||
767 | 172 | |||
768 | 173 | |||
769 | 174 | def onCurrentItemChanged(self, current, previous): | ||
770 | 175 | print u'Method slideControllerList currentItemChanged called', current, previous | ||
771 | 168 | 176 | ||
772 | 169 | def onSlideSelectedFirst(self): | 177 | def onSlideSelectedFirst(self): |
773 | 170 | row = self.PreviewListData.createIndex(0, 0) | 178 | row = self.PreviewListData.createIndex(0, 0) |
774 | 171 | if row.isValid(): | 179 | if row.isValid(): |
776 | 172 | self.PreviewListView.selectionModel().setCurrentIndex(row, QItemSelectionModel.SelectCurrent) | 180 | self.PreviewListView.selectionModel().setCurrentIndex(row, QtGui.QItemSelectionModel.SelectCurrent) |
777 | 173 | self.onSlideSelected(row) | 181 | self.onSlideSelected(row) |
778 | 174 | 182 | ||
779 | 175 | def onSlideSelectedNext(self): | 183 | def onSlideSelectedNext(self): |
780 | @@ -182,10 +190,9 @@ | |||
781 | 182 | rowNumber = index.row() + 1 | 190 | rowNumber = index.row() + 1 |
782 | 183 | row = self.PreviewListData.createIndex(rowNumber , 0) | 191 | row = self.PreviewListData.createIndex(rowNumber , 0) |
783 | 184 | if row.isValid(): | 192 | if row.isValid(): |
785 | 185 | self.PreviewListView.selectionModel().setCurrentIndex(row, QItemSelectionModel.SelectCurrent) | 193 | self.PreviewListView.selectionModel().setCurrentIndex(row, QtGui.QItemSelectionModel.SelectCurrent) |
786 | 186 | self.onSlideSelected(row) | 194 | self.onSlideSelected(row) |
787 | 187 | 195 | ||
788 | 188 | |||
789 | 189 | def onSlideSelectedPrevious(self): | 196 | def onSlideSelectedPrevious(self): |
790 | 190 | indexes = self.PreviewListView.selectedIndexes() | 197 | indexes = self.PreviewListView.selectedIndexes() |
791 | 191 | rowNumber = 0 | 198 | rowNumber = 0 |
792 | @@ -196,13 +203,13 @@ | |||
793 | 196 | rowNumber = index.row() - 1 | 203 | rowNumber = index.row() - 1 |
794 | 197 | row = self.PreviewListData.createIndex(rowNumber , 0) | 204 | row = self.PreviewListData.createIndex(rowNumber , 0) |
795 | 198 | if row.isValid(): | 205 | if row.isValid(): |
797 | 199 | self.PreviewListView.selectionModel().setCurrentIndex(row, QItemSelectionModel.SelectCurrent) | 206 | self.PreviewListView.selectionModel().setCurrentIndex(row, QtGui.QItemSelectionModel.SelectCurrent) |
798 | 200 | self.onSlideSelected(row) | 207 | self.onSlideSelected(row) |
799 | 201 | 208 | ||
800 | 202 | def onSlideSelectedLast(self): | 209 | def onSlideSelectedLast(self): |
801 | 203 | row = self.PreviewListData.createIndex(self.PreviewListData.rowCount() - 1 , 0) | 210 | row = self.PreviewListData.createIndex(self.PreviewListData.rowCount() - 1 , 0) |
802 | 204 | if row.isValid(): | 211 | if row.isValid(): |
804 | 205 | self.PreviewListView.selectionModel().setCurrentIndex(row, QItemSelectionModel.SelectCurrent) | 212 | self.PreviewListView.selectionModel().setCurrentIndex(row, QtGui.QItemSelectionModel.SelectCurrent) |
805 | 206 | self.onSlideSelected(row) | 213 | self.onSlideSelected(row) |
806 | 207 | 214 | ||
807 | 208 | def onBlankScreen(self): | 215 | def onBlankScreen(self): |
808 | @@ -213,21 +220,25 @@ | |||
809 | 213 | self.previewFrame(frame) | 220 | self.previewFrame(frame) |
810 | 214 | 221 | ||
811 | 215 | def previewFrame(self, frame): | 222 | def previewFrame(self, frame): |
813 | 216 | self.SlidePreview.setPixmap(frame) | 223 | self.SlidePreview.setPixmap(frame[0]) |
814 | 217 | if self.isLive: | 224 | if self.isLive: |
816 | 218 | self.mainDisplay.frameView(frame) | 225 | no = frame[1] |
817 | 226 | LiveFrame = self.serviceitem.frames[no][u'image'] | ||
818 | 227 | self.mainDisplay.frameView(LiveFrame) | ||
819 | 219 | 228 | ||
820 | 220 | def addServiceItem(self, serviceitem): | 229 | def addServiceItem(self, serviceitem): |
821 | 221 | log.debug(u'addServiceItem') | 230 | log.debug(u'addServiceItem') |
822 | 222 | self.serviceitem = serviceitem | 231 | self.serviceitem = serviceitem |
823 | 223 | self.serviceitem.render() | 232 | self.serviceitem.render() |
825 | 224 | self.PreviewListData.clearItems() | 233 | self.PreviewListData.clear() |
826 | 234 | framenumber = 0 | ||
827 | 225 | for frame in self.serviceitem.frames: | 235 | for frame in self.serviceitem.frames: |
829 | 226 | self.PreviewListData.addRow(frame) | 236 | self.PreviewListData.addRow(frame[u'image'], framenumber) |
830 | 237 | framenumber += 1 | ||
831 | 227 | 238 | ||
832 | 228 | row = self.PreviewListData.createIndex(0, 0) | 239 | row = self.PreviewListData.createIndex(0, 0) |
833 | 229 | if row.isValid(): | 240 | if row.isValid(): |
835 | 230 | self.PreviewListView.selectionModel().setCurrentIndex(row, QItemSelectionModel.SelectCurrent) | 241 | self.PreviewListView.selectionModel().setCurrentIndex(row, QtGui.QItemSelectionModel.SelectCurrent) |
836 | 231 | self.onSlideSelected(row) | 242 | self.onSlideSelected(row) |
837 | 232 | 243 | ||
838 | 233 | def render(self): | 244 | def render(self): |
839 | 234 | 245 | ||
840 | === modified file 'openlp/core/ui/test/test_service_manager.py' | |||
841 | --- openlp/core/ui/test/test_service_manager.py 2009-03-04 21:57:18 +0000 | |||
842 | +++ openlp/core/ui/test/test_service_manager.py 2009-05-09 07:01:33 +0000 | |||
843 | @@ -25,7 +25,7 @@ | |||
844 | 25 | mypath=os.path.split(os.path.abspath(__file__))[0] | 25 | mypath=os.path.split(os.path.abspath(__file__))[0] |
845 | 26 | sys.path.insert(0,(os.path.join(mypath, '..','..', '..','..'))) | 26 | sys.path.insert(0,(os.path.join(mypath, '..','..', '..','..'))) |
846 | 27 | from openlp.core.ui import ServiceManager | 27 | from openlp.core.ui import ServiceManager |
848 | 28 | from openlp.plugins.images import ImageServiceItem | 28 | from openlp.plugins.images.lib import ImageServiceItem |
849 | 29 | 29 | ||
850 | 30 | import logging | 30 | import logging |
851 | 31 | logging.basicConfig(filename="test_service_manager.log",level=logging.INFO, filemode="w") | 31 | logging.basicConfig(filename="test_service_manager.log",level=logging.INFO, filemode="w") |
852 | @@ -47,7 +47,7 @@ | |||
853 | 47 | app = QtGui.QApplication([]) | 47 | app = QtGui.QApplication([]) |
854 | 48 | except UnboundLocalError: | 48 | except UnboundLocalError: |
855 | 49 | app = QtGui.QApplication([]) | 49 | app = QtGui.QApplication([]) |
857 | 50 | 50 | ||
858 | 51 | 51 | ||
859 | 52 | def teardown_class(self): | 52 | def teardown_class(self): |
860 | 53 | pass | 53 | pass |
861 | @@ -84,7 +84,7 @@ | |||
862 | 84 | assert lines[0].startswith("# <openlp.plugins.images.imageserviceitem.ImageServiceItem object") | 84 | assert lines[0].startswith("# <openlp.plugins.images.imageserviceitem.ImageServiceItem object") |
863 | 85 | assert lines[1] == "test.gif" | 85 | assert lines[1] == "test.gif" |
864 | 86 | log.info("done") | 86 | log.info("done") |
866 | 87 | 87 | ||
867 | 88 | def test_2items_as_separate_items(self): | 88 | def test_2items_as_separate_items(self): |
868 | 89 | # If nothing is selected when item is added, a new base service item is added | 89 | # If nothing is selected when item is added, a new base service item is added |
869 | 90 | log.info("test_2items_as_separate_items") | 90 | log.info("test_2items_as_separate_items") |
870 | @@ -105,7 +105,7 @@ | |||
871 | 105 | assert lines[3] == "test2.gif" | 105 | assert lines[3] == "test2.gif" |
872 | 106 | assert lines[4] == "test3.gif" | 106 | assert lines[4] == "test3.gif" |
873 | 107 | log.info("done") | 107 | log.info("done") |
875 | 108 | 108 | ||
876 | 109 | def test_2items_merged(self): | 109 | def test_2items_merged(self): |
877 | 110 | # If the first object is selected when item is added it should be extended | 110 | # If the first object is selected when item is added it should be extended |
878 | 111 | log.info("test_2items_merged") | 111 | log.info("test_2items_merged") |
879 | @@ -134,7 +134,7 @@ | |||
880 | 134 | # move to top, bottom | 134 | # move to top, bottom |
881 | 135 | # new and save as | 135 | # new and save as |
882 | 136 | # deleting items | 136 | # deleting items |
884 | 137 | 137 | ||
885 | 138 | if __name__=="__main__": | 138 | if __name__=="__main__": |
886 | 139 | 139 | ||
887 | 140 | t=TestServiceManager_base() | 140 | t=TestServiceManager_base() |
888 | 141 | 141 | ||
889 | === modified file 'openlp/core/ui/thememanager.py' | |||
890 | --- openlp/core/ui/thememanager.py 2009-05-04 08:15:48 +0000 | |||
891 | +++ openlp/core/ui/thememanager.py 2009-05-11 05:09:43 +0000 | |||
892 | @@ -72,7 +72,7 @@ | |||
893 | 72 | preview = QPixmap(str(filename)) | 72 | preview = QPixmap(str(filename)) |
894 | 73 | width = self.maximagewidth | 73 | width = self.maximagewidth |
895 | 74 | height = self.rowheight | 74 | height = self.rowheight |
897 | 75 | preview = preview.scaled(width, height, Qt.KeepAspectRatio) | 75 | preview = preview.scaled(width, height, Qt.KeepAspectRatio, Qt.SmoothTransformation) |
898 | 76 | realwidth = preview.width() | 76 | realwidth = preview.width() |
899 | 77 | realheight = preview.height() | 77 | realheight = preview.height() |
900 | 78 | # and move it to the centre of the preview space | 78 | # and move it to the centre of the preview space |
901 | 79 | 79 | ||
902 | === modified file 'openlp/plugins/custom/customplugin.py' | |||
903 | --- openlp/plugins/custom/customplugin.py 2009-04-10 06:06:41 +0000 | |||
904 | +++ openlp/plugins/custom/customplugin.py 2009-05-09 07:01:33 +0000 | |||
905 | @@ -60,3 +60,6 @@ | |||
906 | 60 | if event.event_type == EventType.ThemeListChanged: | 60 | if event.event_type == EventType.ThemeListChanged: |
907 | 61 | log.debug(u'New Theme request received') | 61 | log.debug(u'New Theme request received') |
908 | 62 | self.edit_custom_form.loadThemes(self.theme_manager.getThemes()) | 62 | self.edit_custom_form.loadThemes(self.theme_manager.getThemes()) |
909 | 63 | if event.event_type == EventType.LoadServiceItem and event.payload == 'Custom': | ||
910 | 64 | log.debug(u'Load Service Item received') | ||
911 | 65 | self.media_item.onCustomAddClick() | ||
912 | 63 | 66 | ||
913 | === modified file 'openlp/plugins/custom/lib/mediaitem.py' | |||
914 | --- openlp/plugins/custom/lib/mediaitem.py 2009-05-04 13:48:12 +0000 | |||
915 | +++ openlp/plugins/custom/lib/mediaitem.py 2009-05-09 07:01:33 +0000 | |||
916 | @@ -109,6 +109,8 @@ | |||
917 | 109 | self.CustomListView.setAlternatingRowColors(True) | 109 | self.CustomListView.setAlternatingRowColors(True) |
918 | 110 | self.CustomListData = TextListData() | 110 | self.CustomListData = TextListData() |
919 | 111 | self.CustomListView.setModel(self.CustomListData) | 111 | self.CustomListView.setModel(self.CustomListData) |
920 | 112 | self.CustomListView.setDragEnabled(True) | ||
921 | 113 | self.CustomListView .__class__.mouseMoveEvent =self.onMouseMoveEvent | ||
922 | 112 | 114 | ||
923 | 113 | self.PageLayout.addWidget(self.CustomListView) | 115 | self.PageLayout.addWidget(self.CustomListView) |
924 | 114 | 116 | ||
925 | @@ -233,3 +235,27 @@ | |||
926 | 233 | service_item.title = title | 235 | service_item.title = title |
927 | 234 | service_item.raw_slides = raw_slides | 236 | service_item.raw_slides = raw_slides |
928 | 235 | service_item.raw_footer = raw_footer | 237 | service_item.raw_footer = raw_footer |
929 | 238 | |||
930 | 239 | def onMouseMoveEvent(self, event): | ||
931 | 240 | """ | ||
932 | 241 | Drag and drop eventDo not care what data is selected | ||
933 | 242 | as the recepient will use events to request the data move | ||
934 | 243 | just tell it what plugin to call | ||
935 | 244 | """ | ||
936 | 245 | if event.buttons() != QtCore.Qt.LeftButton: | ||
937 | 246 | return | ||
938 | 247 | |||
939 | 248 | items = self.CustomListView.selectedIndexes() | ||
940 | 249 | if items == []: | ||
941 | 250 | return | ||
942 | 251 | |||
943 | 252 | drag = QtGui.QDrag(self) | ||
944 | 253 | mimeData = QtCore.QMimeData() | ||
945 | 254 | drag.setMimeData(mimeData) | ||
946 | 255 | for item in items: | ||
947 | 256 | mimeData.setText(u'Custom') | ||
948 | 257 | |||
949 | 258 | dropAction = drag.start(QtCore.Qt.CopyAction) | ||
950 | 259 | |||
951 | 260 | if dropAction == QtCore.Qt.CopyAction: | ||
952 | 261 | self.close() | ||
953 | 236 | 262 | ||
954 | === modified file 'openlp/plugins/images/__init__.py' | |||
955 | --- openlp/plugins/images/__init__.py 2009-03-07 09:21:27 +0000 | |||
956 | +++ openlp/plugins/images/__init__.py 2009-05-11 05:09:43 +0000 | |||
957 | @@ -18,6 +18,6 @@ | |||
958 | 18 | Place, Suite 330, Boston, MA 02111-1307 USA | 18 | Place, Suite 330, Boston, MA 02111-1307 USA |
959 | 19 | """ | 19 | """ |
960 | 20 | 20 | ||
963 | 21 | from imageplugin import ImagePlugin | 21 | #from imageplugin import ImagePlugin |
964 | 22 | from imageserviceitem import ImageServiceItem | 22 | #from imageserviceitem import ImageServiceItem |
965 | 23 | 23 | ||
966 | 24 | 24 | ||
967 | === modified file 'openlp/plugins/images/lib/imageserviceitem.py' | |||
968 | --- openlp/plugins/images/lib/imageserviceitem.py 2009-03-17 05:05:04 +0000 | |||
969 | +++ openlp/plugins/images/lib/imageserviceitem.py 2009-05-09 07:01:33 +0000 | |||
970 | @@ -39,7 +39,7 @@ | |||
971 | 39 | it simply tells the slide controller to use it??? | 39 | it simply tells the slide controller to use it??? |
972 | 40 | 40 | ||
973 | 41 | It contains 1 or more images | 41 | It contains 1 or more images |
975 | 42 | 42 | ||
976 | 43 | """ | 43 | """ |
977 | 44 | global log | 44 | global log |
978 | 45 | log=logging.getLogger("ImageServiceItem") | 45 | log=logging.getLogger("ImageServiceItem") |
979 | @@ -56,7 +56,7 @@ | |||
980 | 56 | # c.uniformItemSizes=True | 56 | # c.uniformItemSizes=True |
981 | 57 | # c.setModel(self.imgs) | 57 | # c.setModel(self.imgs) |
982 | 58 | # c.setGeometry(0,0,200,200) | 58 | # c.setGeometry(0,0,200,200) |
984 | 59 | 59 | ||
985 | 60 | def render(self): | 60 | def render(self): |
986 | 61 | """ | 61 | """ |
987 | 62 | The render method is what the plugin uses to render its meda to the | 62 | The render method is what the plugin uses to render its meda to the |
988 | @@ -64,7 +64,7 @@ | |||
989 | 64 | """ | 64 | """ |
990 | 65 | # render the "image chooser first" | 65 | # render the "image chooser first" |
991 | 66 | # for f in self.imgs: | 66 | # for f in self.imgs: |
993 | 67 | # fl , nm = os.path.split(str(f)) | 67 | # fl , nm = os.path.split(str(f)) |
994 | 68 | # c = self.slide_controller.rowCount() | 68 | # c = self.slide_controller.rowCount() |
995 | 69 | # self.slide_controller.setRowCount(c+1) | 69 | # self.slide_controller.setRowCount(c+1) |
996 | 70 | # twi = QtGui.QTableWidgetItem(str(f)) | 70 | # twi = QtGui.QTableWidgetItem(str(f)) |
997 | @@ -72,7 +72,7 @@ | |||
998 | 72 | # twi = QtGui.QTableWidgetItem(str(nm)) | 72 | # twi = QtGui.QTableWidgetItem(str(nm)) |
999 | 73 | # self.slide_controller.setItem(c , 1, twi) | 73 | # self.slide_controller.setItem(c , 1, twi) |
1000 | 74 | # self.slide_controller.setRowHeight(c, 80) | 74 | # self.slide_controller.setRowHeight(c, 80) |
1002 | 75 | 75 | ||
1003 | 76 | # render the preview screen here | 76 | # render the preview screen here |
1004 | 77 | 77 | ||
1005 | 78 | def get_parent_node(self): | 78 | def get_parent_node(self): |
1006 | @@ -92,7 +92,7 @@ | |||
1007 | 92 | log.info("add Item..."+str(data)) | 92 | log.info("add Item..."+str(data)) |
1008 | 93 | for filename in data.get_file_list(): | 93 | for filename in data.get_file_list(): |
1009 | 94 | self.add(filename) | 94 | self.add(filename) |
1011 | 95 | 95 | ||
1012 | 96 | 96 | ||
1013 | 97 | def get_oos_text(self): | 97 | def get_oos_text(self): |
1014 | 98 | """ | 98 | """ |
1015 | @@ -100,7 +100,7 @@ | |||
1016 | 100 | """ | 100 | """ |
1017 | 101 | log.info("Get oos text") | 101 | log.info("Get oos text") |
1018 | 102 | log.info(str(self.imgs)) | 102 | log.info(str(self.imgs)) |
1020 | 103 | log.info(str(self.imgs.get_file_list())) | 103 | # log.info(str(self.imgs.get_file_list())) |
1021 | 104 | return '\n'.join(self.imgs.get_file_list()) | 104 | return '\n'.join(self.imgs.get_file_list()) |
1022 | 105 | 105 | ||
1023 | 106 | def set_from_oos(self, text): | 106 | def set_from_oos(self, text): |
1024 | @@ -111,4 +111,4 @@ | |||
1025 | 111 | files=text.split('\n') | 111 | files=text.split('\n') |
1026 | 112 | for f in files: | 112 | for f in files: |
1027 | 113 | self.imgs.addRow(f) | 113 | self.imgs.addRow(f) |
1029 | 114 | 114 | ||
1030 | 115 | 115 | ||
1031 | === modified file 'openlp/plugins/images/lib/listwithpreviews.py' | |||
1032 | --- openlp/plugins/images/lib/listwithpreviews.py 2009-03-08 12:41:07 +0000 | |||
1033 | +++ openlp/plugins/images/lib/listwithpreviews.py 2009-05-11 05:09:43 +0000 | |||
1034 | @@ -29,7 +29,7 @@ | |||
1035 | 29 | if os.path.exists(filename): | 29 | if os.path.exists(filename): |
1036 | 30 | preview = QPixmap(str(filename)) | 30 | preview = QPixmap(str(filename)) |
1037 | 31 | w=self.maximagewidth;h=self.rowheight | 31 | w=self.maximagewidth;h=self.rowheight |
1039 | 32 | preview = preview.scaled(w,h, Qt.KeepAspectRatio) | 32 | preview = preview.scaled(w,h, Qt.KeepAspectRatio, Qt.SmoothTransformation) |
1040 | 33 | realw=preview.width(); realh=preview.height() | 33 | realw=preview.width(); realh=preview.height() |
1041 | 34 | # and move it to the centre of the preview space | 34 | # and move it to the centre of the preview space |
1042 | 35 | p=QPixmap(w,h) | 35 | p=QPixmap(w,h) |
1043 | 36 | 36 | ||
1044 | === removed file 'resources/.openlp/data/bible/afr1953.sqlite' | |||
1045 | 37 | Binary files resources/.openlp/data/bible/afr1953.sqlite 2009-05-01 16:29:36 +0000 and resources/.openlp/data/bible/afr1953.sqlite 1970-01-01 00:00:00 +0000 differ | 37 | Binary files resources/.openlp/data/bible/afr1953.sqlite 2009-05-01 16:29:36 +0000 and resources/.openlp/data/bible/afr1953.sqlite 1970-01-01 00:00:00 +0000 differ |
Add Drag and drop from Custom plugin to ServiceManager
Improve rendering of images for all code sections so they look nice.
Note RenderManager are to review performance of the Renderer.
Prints in Renderer/