Status: | Merged | ||||||||
---|---|---|---|---|---|---|---|---|---|
Merged at revision: | not available | ||||||||
Proposed branch: | lp:~trb143/openlp/bugfixes | ||||||||
Merge into: | lp:openlp | ||||||||
Diff against target: | None lines | ||||||||
To merge this branch: | bzr merge lp:~trb143/openlp/bugfixes | ||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Raoul Snyman | Approve | ||
Review via email:
|
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Tim Bentley (trb143) wrote : | # |
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Raoul Snyman (raoul-snyman) : | # |
review:
Approve
lp:~trb143/openlp/bugfixes
updated
- 511. By Tim Bentley
-
SlideController clean up
Image Plugin Cleanup
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-08-10 19:11:54 +0000 | |||
3 | +++ openlp.pyw 2009-08-24 04:30:04 +0000 | |||
4 | @@ -52,7 +52,7 @@ | |||
5 | 52 | pass | 52 | pass |
6 | 53 | #provide a listener for widgets to reqest a screen update. | 53 | #provide a listener for widgets to reqest a screen update. |
7 | 54 | QtCore.QObject.connect(Receiver.get_receiver(), | 54 | QtCore.QObject.connect(Receiver.get_receiver(), |
9 | 55 | QtCore.SIGNAL(u'openlpprocessevents'), self.processEvents) | 55 | QtCore.SIGNAL(u'process_events'), self.processEvents) |
10 | 56 | self.setApplicationName(u'openlp.org') | 56 | self.setApplicationName(u'openlp.org') |
11 | 57 | self.setApplicationVersion(u'1.9.0') | 57 | self.setApplicationVersion(u'1.9.0') |
12 | 58 | self.splash = SplashScreen(self.applicationVersion()) | 58 | self.splash = SplashScreen(self.applicationVersion()) |
13 | 59 | 59 | ||
14 | === modified file 'openlp/core/lib/eventreceiver.py' | |||
15 | --- openlp/core/lib/eventreceiver.py 2009-07-10 15:45:17 +0000 | |||
16 | +++ openlp/core/lib/eventreceiver.py 2009-08-24 05:10:04 +0000 | |||
17 | @@ -32,10 +32,6 @@ | |||
18 | 32 | def send_message(self, event, msg=None): | 32 | def send_message(self, event, msg=None): |
19 | 33 | self.emit(QtCore.SIGNAL(event), msg) | 33 | self.emit(QtCore.SIGNAL(event), msg) |
20 | 34 | 34 | ||
21 | 35 | def received(self, msg=None): | ||
22 | 36 | print msg | ||
23 | 37 | |||
24 | 38 | |||
25 | 39 | class Receiver(): | 35 | class Receiver(): |
26 | 40 | """ | 36 | """ |
27 | 41 | Class to allow events to be passed from different parts of the system. | 37 | Class to allow events to be passed from different parts of the system. |
28 | @@ -56,9 +52,5 @@ | |||
29 | 56 | Receiver.eventreceiver.send_message(event, msg) | 52 | Receiver.eventreceiver.send_message(event, msg) |
30 | 57 | 53 | ||
31 | 58 | @staticmethod | 54 | @staticmethod |
32 | 59 | def receive(): | ||
33 | 60 | Receiver.eventreceiver.receive() | ||
34 | 61 | |||
35 | 62 | @staticmethod | ||
36 | 63 | def get_receiver(): | 55 | def get_receiver(): |
37 | 64 | return Receiver.eventreceiver | 56 | return Receiver.eventreceiver |
38 | 65 | 57 | ||
39 | === modified file 'openlp/core/ui/maindisplay.py' | |||
40 | --- openlp/core/ui/maindisplay.py 2009-08-12 04:57:24 +0000 | |||
41 | +++ openlp/core/ui/maindisplay.py 2009-08-24 04:30:04 +0000 | |||
42 | @@ -21,7 +21,7 @@ | |||
43 | 21 | from PyQt4 import QtCore, QtGui | 21 | from PyQt4 import QtCore, QtGui |
44 | 22 | 22 | ||
45 | 23 | from time import sleep | 23 | from time import sleep |
47 | 24 | from openlp.core.lib import translate, EventManager, Event, EventType | 24 | from openlp.core.lib import translate, EventManager, Event, EventType, Receiver |
48 | 25 | 25 | ||
49 | 26 | class MainDisplay(QtGui.QWidget): | 26 | class MainDisplay(QtGui.QWidget): |
50 | 27 | """ | 27 | """ |
51 | @@ -60,6 +60,8 @@ | |||
52 | 60 | self.timer_id = 0 | 60 | self.timer_id = 0 |
53 | 61 | # Register the main form as an event consumer. | 61 | # Register the main form as an event consumer. |
54 | 62 | self.parent.EventManager.register(self) | 62 | self.parent.EventManager.register(self) |
55 | 63 | QtCore.QObject.connect(Receiver.get_receiver(), | ||
56 | 64 | QtCore.SIGNAL(u'live_slide_blank'), self.blankDisplay) | ||
57 | 63 | 65 | ||
58 | 64 | def handle_event(self, event): | 66 | def handle_event(self, event): |
59 | 65 | """ | 67 | """ |
60 | 66 | 68 | ||
61 | === modified file 'openlp/core/ui/slidecontroller.py' | |||
62 | --- openlp/core/ui/slidecontroller.py 2009-08-10 20:10:20 +0000 | |||
63 | +++ openlp/core/ui/slidecontroller.py 2009-08-24 05:10:04 +0000 | |||
64 | @@ -21,7 +21,7 @@ | |||
65 | 21 | import os | 21 | import os |
66 | 22 | 22 | ||
67 | 23 | from PyQt4 import QtCore, QtGui | 23 | from PyQt4 import QtCore, QtGui |
69 | 24 | from openlp.core.lib import OpenLPToolbar, translate, buildIcon | 24 | from openlp.core.lib import OpenLPToolbar, translate, buildIcon, Receiver |
70 | 25 | 25 | ||
71 | 26 | class SlideList(QtGui.QTableWidget): | 26 | class SlideList(QtGui.QTableWidget): |
72 | 27 | """ | 27 | """ |
73 | @@ -64,9 +64,11 @@ | |||
74 | 64 | Set up the Slide Controller. | 64 | Set up the Slide Controller. |
75 | 65 | """ | 65 | """ |
76 | 66 | self.toolbarList = {} | 66 | self.toolbarList = {} |
77 | 67 | self.previewList = {} | ||
78 | 68 | QtGui.QWidget.__init__(self, parent) | 67 | QtGui.QWidget.__init__(self, parent) |
79 | 69 | self.isLive = isLive | 68 | self.isLive = isLive |
80 | 69 | self.prefix = u'preview_' | ||
81 | 70 | if isLive: | ||
82 | 71 | self.prefix = u'live_' | ||
83 | 70 | self.parent = parent | 72 | self.parent = parent |
84 | 71 | self.Panel = QtGui.QWidget(parent.ControlSplitter) | 73 | self.Panel = QtGui.QWidget(parent.ControlSplitter) |
85 | 72 | self.Splitter = QtGui.QSplitter(self.Panel) | 74 | self.Splitter = QtGui.QSplitter(self.Panel) |
86 | @@ -118,19 +120,40 @@ | |||
87 | 118 | self.grid.setMargin(8) | 120 | self.grid.setMargin(8) |
88 | 119 | self.grid.setObjectName(u'grid') | 121 | self.grid.setObjectName(u'grid') |
89 | 120 | # Actual preview screen | 122 | # Actual preview screen |
93 | 121 | masterPreview = MasterPreview(self.PreviewFrame).getPreview() | 123 | self.SlidePreview = QtGui.QLabel(self.parent) |
94 | 122 | self.registerPreview(u'master', masterPreview) | 124 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, |
95 | 123 | self.SlidePreview = self.retrievePreview(u'master') | 125 | QtGui.QSizePolicy.Fixed) |
96 | 126 | sizePolicy.setHorizontalStretch(0) | ||
97 | 127 | sizePolicy.setVerticalStretch(0) | ||
98 | 128 | sizePolicy.setHeightForWidth( | ||
99 | 129 | self.SlidePreview.sizePolicy().hasHeightForWidth()) | ||
100 | 130 | self.SlidePreview.setSizePolicy(sizePolicy) | ||
101 | 131 | self.SlidePreview.setFixedSize(QtCore.QSize(250, 210)) | ||
102 | 132 | self.SlidePreview.setFrameShape(QtGui.QFrame.Box) | ||
103 | 133 | self.SlidePreview.setFrameShadow(QtGui.QFrame.Plain) | ||
104 | 134 | self.SlidePreview.setLineWidth(1) | ||
105 | 135 | self.SlidePreview.setScaledContents(True) | ||
106 | 136 | self.SlidePreview.setObjectName(u'SlidePreview') | ||
107 | 124 | self.grid.addWidget(self.SlidePreview, 0, 0, 1, 1) | 137 | self.grid.addWidget(self.SlidePreview, 0, 0, 1, 1) |
108 | 125 | # Signals | 138 | # Signals |
109 | 126 | QtCore.QObject.connect(self.PreviewListWidget, | 139 | QtCore.QObject.connect(self.PreviewListWidget, |
111 | 127 | QtCore.SIGNAL(u'clicked(QModelIndex)'), self.BaseToolbar.onSlideSelected) | 140 | QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected) |
112 | 128 | QtCore.QObject.connect(self.PreviewListWidget, | 141 | QtCore.QObject.connect(self.PreviewListWidget, |
118 | 129 | QtCore.SIGNAL(u'activated(QModelIndex)'), self.BaseToolbar.onSlideSelected) | 142 | QtCore.SIGNAL(u'activated(QModelIndex)'), self.onSlideSelected) |
119 | 130 | # Add Late Arrivals | 143 | # Window Event Handlers |
120 | 131 | self.BaseToolbar.PreviewListWidget = self.PreviewListWidget | 144 | QtCore.QObject.connect(Receiver.get_receiver(), |
121 | 132 | self.BaseToolbar.SlidePreview = self.SlidePreview | 145 | QtCore.SIGNAL(u'%sslide_first'% self.prefix), self.onSlideSelectedFirst) |
122 | 133 | self.BaseToolbar.mainDisplay = self.parent.mainDisplay | 146 | QtCore.QObject.connect(Receiver.get_receiver(), |
123 | 147 | QtCore.SIGNAL(u'%sslide_previous'% self.prefix), self.onSlideSelectedPrevious) | ||
124 | 148 | QtCore.QObject.connect(Receiver.get_receiver(), | ||
125 | 149 | QtCore.SIGNAL(u'%sslide_next'% self.prefix), self.onSlideSelectedNext) | ||
126 | 150 | QtCore.QObject.connect(Receiver.get_receiver(), | ||
127 | 151 | QtCore.SIGNAL(u'%sslide_last'% self.prefix), self.onSlideSelectedLast) | ||
128 | 152 | QtCore.QObject.connect(Receiver.get_receiver(), | ||
129 | 153 | QtCore.SIGNAL(u'%sslide_start_loop'% self.prefix), self.onStartLoop) | ||
130 | 154 | QtCore.QObject.connect(Receiver.get_receiver(), | ||
131 | 155 | QtCore.SIGNAL(u'%sslide_stop_loop'% self.prefix), self.onStopLoop) | ||
132 | 156 | |||
133 | 134 | 157 | ||
134 | 135 | def registerToolbar(self, handle,controller): | 158 | def registerToolbar(self, handle,controller): |
135 | 136 | """ | 159 | """ |
136 | @@ -144,18 +167,6 @@ | |||
137 | 144 | #store the handle name in lower case so no probems later | 167 | #store the handle name in lower case so no probems later |
138 | 145 | self.toolbarList[handle.lower()] = controller | 168 | self.toolbarList[handle.lower()] = controller |
139 | 146 | 169 | ||
140 | 147 | def registerPreview(self, handle,controller): | ||
141 | 148 | """ | ||
142 | 149 | Register a new preview with the controller | ||
143 | 150 | ``handle`` | ||
144 | 151 | Identifier for the preview being stored this should equal the | ||
145 | 152 | plugins name. | ||
146 | 153 | ``controller`` | ||
147 | 154 | The preview class which should extend MasterToolbar | ||
148 | 155 | """ | ||
149 | 156 | #store the handle name in lower case so no probems later | ||
150 | 157 | self.previewList[handle.lower()] = controller | ||
151 | 158 | |||
152 | 159 | def retrieveToolbar(self, handle): | 170 | def retrieveToolbar(self, handle): |
153 | 160 | """ | 171 | """ |
154 | 161 | Find the toolbar and return master if none present | 172 | Find the toolbar and return master if none present |
155 | @@ -167,38 +178,22 @@ | |||
156 | 167 | toolbar = self.toolbarList[handle.lower()] | 178 | toolbar = self.toolbarList[handle.lower()] |
157 | 168 | except: | 179 | except: |
158 | 169 | toolbar = self.toolbarList[u'master'] | 180 | toolbar = self.toolbarList[u'master'] |
159 | 170 | toolbar.PreviewListWidget = self.PreviewListWidget | ||
160 | 171 | toolbar.SlidePreview = self.SlidePreview | ||
161 | 172 | toolbar.mainDisplay = self.parent.mainDisplay | ||
162 | 173 | return toolbar | 181 | return toolbar |
163 | 174 | 182 | ||
164 | 175 | def retrievePreview(self, handle): | ||
165 | 176 | """ | ||
166 | 177 | Find the preview and return master if none present | ||
167 | 178 | Add extra information back into toolbar class | ||
168 | 179 | ``handle`` | ||
169 | 180 | Identifier for the toolbar being requested | ||
170 | 181 | """ | ||
171 | 182 | try: | ||
172 | 183 | preview = self.previewList[handle.lower()] | ||
173 | 184 | except: | ||
174 | 185 | preview = self.previewList[u'master'] | ||
175 | 186 | return preview | ||
176 | 187 | |||
177 | 188 | def addServiceItem(self, item): | 183 | def addServiceItem(self, item): |
178 | 189 | """ | 184 | """ |
179 | 190 | Method to install the service item into the controller and | 185 | Method to install the service item into the controller and |
180 | 191 | request the correct the toolbar of the plugin | 186 | request the correct the toolbar of the plugin |
181 | 192 | Called by plugins | 187 | Called by plugins |
182 | 193 | """ | 188 | """ |
183 | 194 | self.SlidePreview = self.retrievePreview(item.shortname) | ||
184 | 195 | self.BaseToolbar = self.retrieveToolbar(item.shortname) | 189 | self.BaseToolbar = self.retrieveToolbar(item.shortname) |
185 | 196 | self.ControllerLayout.removeWidget(self.Toolbar) | 190 | self.ControllerLayout.removeWidget(self.Toolbar) |
186 | 197 | #remove the old toolbar | 191 | #remove the old toolbar |
187 | 198 | self.Toolbar.clear() | 192 | self.Toolbar.clear() |
188 | 199 | self.Toolbar = self.BaseToolbar.getToolbar() | 193 | self.Toolbar = self.BaseToolbar.getToolbar() |
189 | 200 | self.ControllerLayout.addWidget(self.Toolbar) | 194 | self.ControllerLayout.addWidget(self.Toolbar) |
191 | 201 | self.BaseToolbar.addServiceItem(item) | 195 | item.render() |
192 | 196 | self.displayServiceManagerItems(item, 0) | ||
193 | 202 | 197 | ||
194 | 203 | def addServiceManagerItem(self, item, slideno): | 198 | def addServiceManagerItem(self, item, slideno): |
195 | 204 | """ | 199 | """ |
196 | @@ -206,45 +201,133 @@ | |||
197 | 206 | request the correct the toolbar of the plugin | 201 | request the correct the toolbar of the plugin |
198 | 207 | Called by ServiceManager | 202 | Called by ServiceManager |
199 | 208 | """ | 203 | """ |
200 | 209 | self.SlidePreview = self.retrievePreview(item.shortname) | ||
201 | 210 | self.BaseToolbar = self.retrieveToolbar(item.shortname) | 204 | self.BaseToolbar = self.retrieveToolbar(item.shortname) |
202 | 211 | self.ControllerLayout.removeWidget(self.Toolbar) | 205 | self.ControllerLayout.removeWidget(self.Toolbar) |
203 | 212 | #remove the old toolbar | 206 | #remove the old toolbar |
204 | 213 | self.Toolbar.clear() | 207 | self.Toolbar.clear() |
205 | 214 | self.Toolbar = self.BaseToolbar.getToolbar() | 208 | self.Toolbar = self.BaseToolbar.getToolbar() |
206 | 215 | self.ControllerLayout.addWidget(self.Toolbar) | 209 | self.ControllerLayout.addWidget(self.Toolbar) |
239 | 216 | self.BaseToolbar.addServiceManagerItem(item, slideno) | 210 | self.displayServiceManagerItems(item, slideno) |
240 | 217 | 211 | ||
241 | 218 | 212 | def displayServiceManagerItems(self, serviceitem, slideno): | |
242 | 219 | class MasterPreview(QtCore.QObject): | 213 | """ |
243 | 220 | """ | 214 | Loads a ServiceItem into the system from ServiceManager |
244 | 221 | Class from which all Previews should extend allowing plugins to | 215 | Display the slide number passed |
245 | 222 | have their own previews | 216 | """ |
246 | 223 | """ | 217 | log.debug(u'add Service Manager Item') |
247 | 224 | def __init__(self, parent): | 218 | self.serviceitem = serviceitem |
248 | 225 | self.parent = parent | 219 | slide_pixmap = QtGui.QPixmap.fromImage(self.serviceitem.frames[0][u'image']) |
249 | 226 | QtCore.QObject.__init__(self) | 220 | slide_width = 300 |
250 | 227 | self.definePreview() | 221 | slide_height = slide_width * slide_pixmap.height() / slide_pixmap.width() |
251 | 228 | 222 | self.PreviewListWidget.clear() | |
252 | 229 | def getPreview(self): | 223 | self.PreviewListWidget.setRowCount(0) |
253 | 230 | return self.SlidePreview | 224 | self.PreviewListWidget.setColumnWidth(0, slide_width) |
254 | 231 | 225 | for framenumber, frame in enumerate(self.serviceitem.frames): | |
255 | 232 | def definePreview(self): | 226 | self.PreviewListWidget.setRowCount(self.PreviewListWidget.rowCount() + 1) |
256 | 233 | self.SlidePreview = QtGui.QLabel(self.parent) | 227 | pixmap = QtGui.QPixmap.fromImage(frame[u'image']) |
257 | 234 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, | 228 | item = QtGui.QTableWidgetItem() |
258 | 235 | QtGui.QSizePolicy.Fixed) | 229 | label = QtGui.QLabel() |
259 | 236 | sizePolicy.setHorizontalStretch(0) | 230 | label.setMargin(8) |
260 | 237 | sizePolicy.setVerticalStretch(0) | 231 | label.setScaledContents(True) |
261 | 238 | sizePolicy.setHeightForWidth( | 232 | label.setPixmap(pixmap) |
262 | 239 | self.SlidePreview.sizePolicy().hasHeightForWidth()) | 233 | self.PreviewListWidget.setCellWidget(framenumber, 0, label) |
263 | 240 | self.SlidePreview.setSizePolicy(sizePolicy) | 234 | self.PreviewListWidget.setItem(framenumber, 0, item) |
264 | 241 | self.SlidePreview.setFixedSize(QtCore.QSize(250, 210)) | 235 | self.PreviewListWidget.setRowHeight(framenumber, slide_height) |
265 | 242 | self.SlidePreview.setFrameShape(QtGui.QFrame.Box) | 236 | slide_width = self.PreviewListWidget.viewport().size().width() |
266 | 243 | self.SlidePreview.setFrameShadow(QtGui.QFrame.Plain) | 237 | self.PreviewListWidget.setColumnWidth(0, slide_width) |
267 | 244 | self.SlidePreview.setLineWidth(1) | 238 | if slideno > self.PreviewListWidget.rowCount(): |
268 | 245 | self.SlidePreview.setScaledContents(True) | 239 | self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount()) |
269 | 246 | self.SlidePreview.setObjectName(u'SlidePreview') | 240 | else: |
270 | 247 | 241 | self.PreviewListWidget.selectRow(slideno) | |
271 | 242 | self.onSlideSelected() | ||
272 | 243 | self.PreviewListWidget.setFocus() | ||
273 | 244 | |||
274 | 245 | #Screen event methods | ||
275 | 246 | def onSlideSelected(self): | ||
276 | 247 | """ | ||
277 | 248 | Generate the preview when you click on a slide. | ||
278 | 249 | if this is the Live Controller also display on the screen | ||
279 | 250 | """ | ||
280 | 251 | row = self.PreviewListWidget.currentRow() | ||
281 | 252 | if row > -1 and row < self.PreviewListWidget.rowCount(): | ||
282 | 253 | label = self.PreviewListWidget.cellWidget(row, 0) | ||
283 | 254 | smallframe = label.pixmap() | ||
284 | 255 | frame = self.serviceitem.frames[row][u'image'] | ||
285 | 256 | self.SlidePreview.setPixmap(smallframe) | ||
286 | 257 | if self.isLive: | ||
287 | 258 | self.parent.mainDisplay.frameView(frame) | ||
288 | 259 | |||
289 | 260 | def onSlideSelectedFirst(self): | ||
290 | 261 | """ | ||
291 | 262 | Go to the first slide. | ||
292 | 263 | """ | ||
293 | 264 | print "oSSF" | ||
294 | 265 | self.PreviewListWidget.selectRow(0) | ||
295 | 266 | self.onSlideSelected() | ||
296 | 267 | |||
297 | 268 | def onBlankScreen(self): | ||
298 | 269 | """ | ||
299 | 270 | Blank the screen. | ||
300 | 271 | """ | ||
301 | 272 | self.parent.mainDisplay.blankDisplay() | ||
302 | 273 | |||
303 | 274 | def onSlideSelected(self): | ||
304 | 275 | """ | ||
305 | 276 | Generate the preview when you click on a slide. | ||
306 | 277 | if this is the Live Controller also display on the screen | ||
307 | 278 | """ | ||
308 | 279 | row = self.PreviewListWidget.currentRow() | ||
309 | 280 | if row > -1 and row < self.PreviewListWidget.rowCount(): | ||
310 | 281 | label = self.PreviewListWidget.cellWidget(row, 0) | ||
311 | 282 | smallframe = label.pixmap() | ||
312 | 283 | frame = self.serviceitem.frames[row][u'image'] | ||
313 | 284 | self.SlidePreview.setPixmap(smallframe) | ||
314 | 285 | if self.isLive: | ||
315 | 286 | self.parent.mainDisplay.frameView(frame) | ||
316 | 287 | |||
317 | 288 | def onSlideSelectedNext(self): | ||
318 | 289 | """ | ||
319 | 290 | Go to the next slide. | ||
320 | 291 | """ | ||
321 | 292 | row = self.PreviewListWidget.currentRow() + 1 | ||
322 | 293 | if row == self.PreviewListWidget.rowCount(): | ||
323 | 294 | row = 0 | ||
324 | 295 | self.PreviewListWidget.selectRow(row) | ||
325 | 296 | self.onSlideSelected() | ||
326 | 297 | |||
327 | 298 | def onSlideSelectedPrevious(self): | ||
328 | 299 | """ | ||
329 | 300 | Go to the previous slide. | ||
330 | 301 | """ | ||
331 | 302 | row = self.PreviewListWidget.currentRow() - 1 | ||
332 | 303 | if row == -1: | ||
333 | 304 | row = self.PreviewListWidget.rowCount() - 1 | ||
334 | 305 | self.PreviewListWidget.selectRow(row) | ||
335 | 306 | self.onSlideSelected() | ||
336 | 307 | |||
337 | 308 | def onSlideSelectedLast(self): | ||
338 | 309 | """ | ||
339 | 310 | Go to the last slide. | ||
340 | 311 | """ | ||
341 | 312 | self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount() - 1) | ||
342 | 313 | self.onSlideSelected() | ||
343 | 314 | |||
344 | 315 | def onStartLoop(self, value): | ||
345 | 316 | """ | ||
346 | 317 | Go to the last slide. | ||
347 | 318 | """ | ||
348 | 319 | if self.PreviewListWidget.rowCount() > 1: | ||
349 | 320 | self.timer_id = self.startTimer(int(value) * 1000) | ||
350 | 321 | |||
351 | 322 | def onStopLoop(self): | ||
352 | 323 | """ | ||
353 | 324 | Go to the last slide. | ||
354 | 325 | """ | ||
355 | 326 | self.killTimer(self.timer_id) | ||
356 | 327 | |||
357 | 328 | def timerEvent(self, event): | ||
358 | 329 | if event.timerId() == self.timer_id: | ||
359 | 330 | self.onSlideSelectedNext() | ||
360 | 248 | 331 | ||
361 | 249 | class MasterToolbar(QtCore.QObject): | 332 | class MasterToolbar(QtCore.QObject): |
362 | 250 | """ | 333 | """ |
363 | @@ -255,11 +338,19 @@ | |||
364 | 255 | QtCore.QObject.__init__(self) | 338 | QtCore.QObject.__init__(self) |
365 | 256 | self.PreviewListWidget = QtGui.QListWidget() | 339 | self.PreviewListWidget = QtGui.QListWidget() |
366 | 257 | self.isLive = isLive | 340 | self.isLive = isLive |
367 | 341 | self.prefix = u'preview_' | ||
368 | 342 | if isLive: | ||
369 | 343 | self.prefix = u'live_' | ||
370 | 258 | 344 | ||
371 | 259 | def getToolbar(self): | 345 | def getToolbar(self): |
372 | 260 | #define toolbar here as it needs to be redefined each time | 346 | #define toolbar here as it needs to be redefined each time |
373 | 261 | #as the clear destroys it. | 347 | #as the clear destroys it. |
374 | 262 | self.defineToolbar() | 348 | self.defineToolbar() |
375 | 349 | self.defineZone1() | ||
376 | 350 | self.defineZone2() | ||
377 | 351 | self.defineZone3() | ||
378 | 352 | self.defineZone4() | ||
379 | 353 | self.defineZone5() | ||
380 | 263 | return self.Toolbar | 354 | return self.Toolbar |
381 | 264 | 355 | ||
382 | 265 | def defineToolbar(self): | 356 | def defineToolbar(self): |
383 | @@ -273,130 +364,53 @@ | |||
384 | 273 | self.Toolbar.sizePolicy().hasHeightForWidth()) | 364 | self.Toolbar.sizePolicy().hasHeightForWidth()) |
385 | 274 | self.Toolbar.setSizePolicy(sizeToolbarPolicy) | 365 | self.Toolbar.setSizePolicy(sizeToolbarPolicy) |
386 | 275 | 366 | ||
387 | 367 | def defineZone1(self): | ||
388 | 368 | #Dummy Zone | ||
389 | 369 | pass | ||
390 | 370 | |||
391 | 371 | def defineZone2(self): | ||
392 | 276 | if self.isLive: | 372 | if self.isLive: |
393 | 277 | self.Toolbar.addToolbarButton(u'First Slide', | 373 | self.Toolbar.addToolbarButton(u'First Slide', |
394 | 278 | u':/slides/slide_first.png', | 374 | u':/slides/slide_first.png', |
395 | 279 | translate(u'SlideController', u'Move to first'), | 375 | translate(u'SlideController', u'Move to first'), |
397 | 280 | self.onSlideSelectedFirst) | 376 | self.onSlideFirst) |
398 | 281 | self.Toolbar.addToolbarButton(u'Previous Slide', | 377 | self.Toolbar.addToolbarButton(u'Previous Slide', |
399 | 282 | u':/slides/slide_previous.png', | 378 | u':/slides/slide_previous.png', |
400 | 283 | translate(u'SlideController', u'Move to previous'), | 379 | translate(u'SlideController', u'Move to previous'), |
402 | 284 | self.onSlideSelectedPrevious) | 380 | self.onSlidePrevious) |
403 | 285 | self.Toolbar.addToolbarButton(u'Next Slide', | 381 | self.Toolbar.addToolbarButton(u'Next Slide', |
404 | 286 | u':/slides/slide_next.png', | 382 | u':/slides/slide_next.png', |
405 | 287 | translate(u'SlideController', u'Move to next'), | 383 | translate(u'SlideController', u'Move to next'), |
407 | 288 | self.onSlideSelectedNext) | 384 | self.onSlideNext) |
408 | 289 | if self.isLive: | 385 | if self.isLive: |
409 | 290 | self.Toolbar.addToolbarButton(u'Last Slide', | 386 | self.Toolbar.addToolbarButton(u'Last Slide', |
410 | 291 | u':/slides/slide_last.png', | 387 | u':/slides/slide_last.png', |
411 | 292 | translate(u'SlideController', u'Move to last'), | 388 | translate(u'SlideController', u'Move to last'), |
413 | 293 | self.onSlideSelectedLast) | 389 | self.onSlideLast) |
414 | 390 | |||
415 | 391 | def defineZone3(self): | ||
416 | 392 | #Dummy Zone | ||
417 | 393 | pass | ||
418 | 394 | |||
419 | 395 | def defineZone4(self): | ||
420 | 396 | if self.isLive: | ||
421 | 294 | self.Toolbar.addSeparator() | 397 | self.Toolbar.addSeparator() |
422 | 295 | self.Toolbar.addToolbarButton(u'Close Screen', | 398 | self.Toolbar.addToolbarButton(u'Close Screen', |
423 | 296 | u':/slides/slide_close.png', | 399 | u':/slides/slide_close.png', |
424 | 297 | translate(u'SlideController', u'Close Screen'), | 400 | translate(u'SlideController', u'Close Screen'), |
426 | 298 | self.onBlankScreen) | 401 | self.onSlideBlank) |
427 | 299 | 402 | ||
433 | 300 | def serviceLoaded(self): | 403 | def defineZone5(self): |
434 | 301 | """ | 404 | #Dummy Zone |
430 | 302 | method to allow toolbars to know when the service item | ||
431 | 303 | is fully in place | ||
432 | 304 | """ | ||
435 | 305 | pass | 405 | pass |
436 | 306 | 406 | ||
533 | 307 | def onSlideSelectedFirst(self): | 407 | def onSlideFirst(self): |
534 | 308 | """ | 408 | Receiver().send_message(u'%sslide_first'% self.prefix) |
535 | 309 | Go to the first slide. | 409 | def onSlidePrevious(self): |
536 | 310 | """ | 410 | Receiver().send_message(u'%sslide_previous'% self.prefix) |
537 | 311 | self.PreviewListWidget.selectRow(0) | 411 | def onSlideNext(self): |
538 | 312 | self.onSlideSelected() | 412 | Receiver().send_message(u'%sslide_next'% self.prefix) |
539 | 313 | 413 | def onSlideLast(self): | |
540 | 314 | def onSlideSelectedNext(self): | 414 | Receiver().send_message(u'%sslide_last' % self.prefix) |
541 | 315 | """ | 415 | def onSlideBlank(self): |
542 | 316 | Go to the next slide. | 416 | Receiver().send_message(u'%sslide_blank' % self.prefix) |
447 | 317 | """ | ||
448 | 318 | row = self.PreviewListWidget.currentRow() + 1 | ||
449 | 319 | if row == self.PreviewListWidget.rowCount(): | ||
450 | 320 | row = 0 | ||
451 | 321 | self.PreviewListWidget.selectRow(row) | ||
452 | 322 | self.onSlideSelected() | ||
453 | 323 | |||
454 | 324 | def onSlideSelectedPrevious(self): | ||
455 | 325 | """ | ||
456 | 326 | Go to the previous slide. | ||
457 | 327 | """ | ||
458 | 328 | row = self.PreviewListWidget.currentRow() - 1 | ||
459 | 329 | if row == -1: | ||
460 | 330 | row = self.PreviewListWidget.rowCount() - 1 | ||
461 | 331 | self.PreviewListWidget.selectRow(row) | ||
462 | 332 | self.onSlideSelected() | ||
463 | 333 | |||
464 | 334 | def onSlideSelectedLast(self): | ||
465 | 335 | """ | ||
466 | 336 | Go to the last slide. | ||
467 | 337 | """ | ||
468 | 338 | self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount() - 1) | ||
469 | 339 | self.onSlideSelected() | ||
470 | 340 | |||
471 | 341 | def onBlankScreen(self): | ||
472 | 342 | """ | ||
473 | 343 | Blank the screen. | ||
474 | 344 | """ | ||
475 | 345 | self.mainDisplay.blankDisplay() | ||
476 | 346 | |||
477 | 347 | def onSlideSelected(self): | ||
478 | 348 | """ | ||
479 | 349 | Generate the preview when you click on a slide. | ||
480 | 350 | if this is the Live Controller also display on the screen | ||
481 | 351 | """ | ||
482 | 352 | row = self.PreviewListWidget.currentRow() | ||
483 | 353 | if row > -1 and row < self.PreviewListWidget.rowCount(): | ||
484 | 354 | label = self.PreviewListWidget.cellWidget(row, 0) | ||
485 | 355 | smallframe = label.pixmap() | ||
486 | 356 | frame = self.serviceitem.frames[row][u'image'] | ||
487 | 357 | self.SlidePreview.setPixmap(smallframe) | ||
488 | 358 | if self.isLive: | ||
489 | 359 | self.mainDisplay.frameView(frame) | ||
490 | 360 | |||
491 | 361 | def addServiceItem(self, serviceitem, slideno = 1): | ||
492 | 362 | """ | ||
493 | 363 | Loads a ServiceItem into the system from plugins | ||
494 | 364 | Display the first slide | ||
495 | 365 | """ | ||
496 | 366 | log.debug(u'add Service Item') | ||
497 | 367 | serviceitem.render() | ||
498 | 368 | self.addServiceManagerItem(serviceitem, 0) | ||
499 | 369 | |||
500 | 370 | def addServiceManagerItem(self, serviceitem, slideno): | ||
501 | 371 | """ | ||
502 | 372 | Loads a ServiceItem into the system from ServiceManager | ||
503 | 373 | Display the slide number passed | ||
504 | 374 | """ | ||
505 | 375 | log.debug(u'add Service Manager Item') | ||
506 | 376 | self.serviceitem = serviceitem | ||
507 | 377 | slide_pixmap = QtGui.QPixmap.fromImage(self.serviceitem.frames[0][u'image']) | ||
508 | 378 | slide_width = 300 | ||
509 | 379 | slide_height = slide_width * slide_pixmap.height() / slide_pixmap.width() | ||
510 | 380 | self.PreviewListWidget.clear() | ||
511 | 381 | self.PreviewListWidget.setRowCount(0) | ||
512 | 382 | self.PreviewListWidget.setColumnWidth(0, slide_width) | ||
513 | 383 | for framenumber, frame in enumerate(self.serviceitem.frames): | ||
514 | 384 | self.PreviewListWidget.setRowCount(self.PreviewListWidget.rowCount() + 1) | ||
515 | 385 | pixmap = QtGui.QPixmap.fromImage(frame[u'image']) | ||
516 | 386 | item = QtGui.QTableWidgetItem() | ||
517 | 387 | label = QtGui.QLabel() | ||
518 | 388 | label.setMargin(8) | ||
519 | 389 | label.setScaledContents(True) | ||
520 | 390 | label.setPixmap(pixmap) | ||
521 | 391 | self.PreviewListWidget.setCellWidget(framenumber, 0, label) | ||
522 | 392 | self.PreviewListWidget.setItem(framenumber, 0, item) | ||
523 | 393 | self.PreviewListWidget.setRowHeight(framenumber, slide_height) | ||
524 | 394 | slide_width = self.PreviewListWidget.viewport().size().width() | ||
525 | 395 | self.PreviewListWidget.setColumnWidth(0, slide_width) | ||
526 | 396 | if slideno > self.PreviewListWidget.rowCount(): | ||
527 | 397 | self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount()) | ||
528 | 398 | else: | ||
529 | 399 | self.PreviewListWidget.selectRow(slideno) | ||
530 | 400 | self.onSlideSelected() | ||
531 | 401 | self.serviceLoaded() | ||
532 | 402 | self.PreviewListWidget.setFocus() | ||
543 | 403 | 417 | ||
544 | === modified file 'openlp/plugins/bibles/lib/bibleCSVimpl.py' | |||
545 | --- openlp/plugins/bibles/lib/bibleCSVimpl.py 2009-07-09 16:51:25 +0000 | |||
546 | +++ openlp/plugins/bibles/lib/bibleCSVimpl.py 2009-08-24 04:30:04 +0000 | |||
547 | @@ -60,7 +60,7 @@ | |||
548 | 60 | count += 1 | 60 | count += 1 |
549 | 61 | #Flush the screen events | 61 | #Flush the screen events |
550 | 62 | if count % 3 == 0: | 62 | if count % 3 == 0: |
552 | 63 | Receiver().send_message(u'openlpprocessevents') | 63 | Receiver().send_message(u'process_events') |
553 | 64 | count = 0 | 64 | count = 0 |
554 | 65 | 65 | ||
555 | 66 | count = 0 | 66 | count = 0 |
556 | @@ -83,5 +83,5 @@ | |||
557 | 83 | count += 1 | 83 | count += 1 |
558 | 84 | #Every x verses repaint the screen | 84 | #Every x verses repaint the screen |
559 | 85 | if count % 3 == 0: | 85 | if count % 3 == 0: |
561 | 86 | Receiver().send_message(u'openlpprocessevents') | 86 | Receiver().send_message(u'process_events') |
562 | 87 | count = 0 | 87 | count = 0 |
563 | 88 | 88 | ||
564 | === modified file 'openlp/plugins/bibles/lib/bibleOSISimpl.py' | |||
565 | --- openlp/plugins/bibles/lib/bibleOSISimpl.py 2009-07-13 20:08:43 +0000 | |||
566 | +++ openlp/plugins/bibles/lib/bibleOSISimpl.py 2009-08-24 04:30:04 +0000 | |||
567 | @@ -149,13 +149,13 @@ | |||
568 | 149 | self.abbrevOfBible[p[0]], testament) | 149 | self.abbrevOfBible[p[0]], testament) |
569 | 150 | dialogobject.incrementProgressBar( | 150 | dialogobject.incrementProgressBar( |
570 | 151 | self.booksOfBible[p[0]]) | 151 | self.booksOfBible[p[0]]) |
572 | 152 | Receiver().send_message(u'openlpprocessevents') | 152 | Receiver().send_message(u'process_events') |
573 | 153 | count = 0 | 153 | count = 0 |
574 | 154 | self.bibledb.add_verse(book.id, p[1], p[2], text) | 154 | self.bibledb.add_verse(book.id, p[1], p[2], text) |
575 | 155 | count += 1 | 155 | count += 1 |
576 | 156 | #Every 3 verses repaint the screen | 156 | #Every 3 verses repaint the screen |
577 | 157 | if count % 3 == 0: | 157 | if count % 3 == 0: |
579 | 158 | Receiver().send_message(u'openlpprocessevents') | 158 | Receiver().send_message(u'process_events') |
580 | 159 | count = 0 | 159 | count = 0 |
581 | 160 | 160 | ||
582 | 161 | def remove_block(self, start_tag, end_tag, text): | 161 | def remove_block(self, start_tag, end_tag, text): |
583 | 162 | 162 | ||
584 | === modified file 'openlp/plugins/bibles/lib/mediaitem.py' | |||
585 | --- openlp/plugins/bibles/lib/mediaitem.py 2009-08-15 11:02:24 +0000 | |||
586 | +++ openlp/plugins/bibles/lib/mediaitem.py 2009-08-24 04:30:04 +0000 | |||
587 | @@ -252,7 +252,7 @@ | |||
588 | 252 | 252 | ||
589 | 253 | def setQuickMsg2(self, text): | 253 | def setQuickMsg2(self, text): |
590 | 254 | self.QuickMsg2.setText(translate(u'BibleMediaItem', unicode(text))) | 254 | self.QuickMsg2.setText(translate(u'BibleMediaItem', unicode(text))) |
592 | 255 | Receiver().send_message(u'openlpprocessevents') | 255 | Receiver().send_message(u'process_events') |
593 | 256 | #minor delay to get the events processed | 256 | #minor delay to get the events processed |
594 | 257 | time.sleep(0.5) | 257 | time.sleep(0.5) |
595 | 258 | 258 | ||
596 | 259 | 259 | ||
597 | === modified file 'openlp/plugins/images/lib/__init__.py' | |||
598 | --- openlp/plugins/images/lib/__init__.py 2009-07-03 20:32:33 +0000 | |||
599 | +++ openlp/plugins/images/lib/__init__.py 2009-08-24 05:13:27 +0000 | |||
600 | @@ -18,5 +18,5 @@ | |||
601 | 18 | Place, Suite 330, Boston, MA 02111-1307 USA | 18 | Place, Suite 330, Boston, MA 02111-1307 USA |
602 | 19 | """ | 19 | """ |
603 | 20 | from mediaitem import ImageMediaItem | 20 | from mediaitem import ImageMediaItem |
605 | 21 | from imageslidecontroller import ImageToolbar | 21 | from imagetoolbar import ImageToolbar |
606 | 22 | from imagetab import ImageTab | 22 | from imagetab import ImageTab |
607 | 23 | 23 | ||
608 | === renamed file 'openlp/plugins/images/lib/imageslidecontroller.py' => 'openlp/plugins/images/lib/imagetoolbar.py' | |||
609 | --- openlp/plugins/images/lib/imageslidecontroller.py 2009-08-09 17:58:37 +0000 | |||
610 | +++ openlp/plugins/images/lib/imagetoolbar.py 2009-08-24 05:13:27 +0000 | |||
611 | @@ -21,7 +21,7 @@ | |||
612 | 21 | import os | 21 | import os |
613 | 22 | 22 | ||
614 | 23 | from PyQt4 import QtCore, QtGui | 23 | from PyQt4 import QtCore, QtGui |
616 | 24 | from openlp.core.lib import OpenLPToolbar, translate | 24 | from openlp.core.lib import OpenLPToolbar, translate, Receiver |
617 | 25 | from openlp.core.ui.slidecontroller import MasterToolbar | 25 | from openlp.core.ui.slidecontroller import MasterToolbar |
618 | 26 | 26 | ||
619 | 27 | class ImageToolbar(MasterToolbar): | 27 | class ImageToolbar(MasterToolbar): |
620 | @@ -31,40 +31,8 @@ | |||
621 | 31 | self.parent = parent | 31 | self.parent = parent |
622 | 32 | self.Toolbar = None | 32 | self.Toolbar = None |
623 | 33 | self.isLive = isLive | 33 | self.isLive = isLive |
624 | 34 | self.defineToolbar() | ||
625 | 35 | 34 | ||
658 | 36 | def defineToolbar(self): | 35 | def defineZone5(self): |
627 | 37 | # Controller toolbar | ||
628 | 38 | self.Toolbar = OpenLPToolbar(self) | ||
629 | 39 | sizeToolbarPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, | ||
630 | 40 | QtGui.QSizePolicy.Fixed) | ||
631 | 41 | sizeToolbarPolicy.setHorizontalStretch(0) | ||
632 | 42 | sizeToolbarPolicy.setVerticalStretch(0) | ||
633 | 43 | sizeToolbarPolicy.setHeightForWidth( | ||
634 | 44 | self.Toolbar.sizePolicy().hasHeightForWidth()) | ||
635 | 45 | if self.isLive: | ||
636 | 46 | self.Toolbar.addToolbarButton(u'First Slide', | ||
637 | 47 | u':/slides/slide_first.png', | ||
638 | 48 | translate(u'SlideController', u'Move to first'), | ||
639 | 49 | self.onSlideSelectedFirst) | ||
640 | 50 | self.Toolbar.addToolbarButton(u'Previous Slide', | ||
641 | 51 | u':/slides/slide_previous.png', | ||
642 | 52 | translate(u'SlideController', u'Move to previous'), | ||
643 | 53 | self.onSlideSelectedPrevious) | ||
644 | 54 | self.Toolbar.addToolbarButton(u'Next Slide', | ||
645 | 55 | u':/slides/slide_next.png', | ||
646 | 56 | translate(u'SlideController', u'Move to next'), | ||
647 | 57 | self.onSlideSelectedNext) | ||
648 | 58 | if self.isLive: | ||
649 | 59 | self.Toolbar.addToolbarButton(u'Last Slide', | ||
650 | 60 | u':/slides/slide_last.png', | ||
651 | 61 | translate(u'SlideController', u'Move to last'), | ||
652 | 62 | self.onSlideSelectedLast) | ||
653 | 63 | self.Toolbar.addSeparator() | ||
654 | 64 | self.Toolbar.addToolbarButton(u'Close Screen', | ||
655 | 65 | u':/slides/slide_close.png', | ||
656 | 66 | translate(u'SlideController', u'Close Screen'), | ||
657 | 67 | self.onBlankScreen) | ||
659 | 68 | self.Toolbar.addSeparator() | 36 | self.Toolbar.addSeparator() |
660 | 69 | self.Toolbar.addToolbarButton(u'Start Loop', | 37 | self.Toolbar.addToolbarButton(u'Start Loop', |
661 | 70 | u':/media/media_time.png', | 38 | u':/media/media_time.png', |
662 | @@ -79,28 +47,17 @@ | |||
663 | 79 | self.SpinWidget = QtGui.QWidgetAction(self.Toolbar) | 47 | self.SpinWidget = QtGui.QWidgetAction(self.Toolbar) |
664 | 80 | self.SpinWidget.setDefaultWidget(self.DelaySpinBox) | 48 | self.SpinWidget.setDefaultWidget(self.DelaySpinBox) |
665 | 81 | self.Toolbar.addAction(self.SpinWidget) | 49 | self.Toolbar.addAction(self.SpinWidget) |
668 | 82 | #self.Layout.addWidget(self.Toolbar) | 50 | self.DelaySpinBox.setValue(self.parent.parent.ImageTab.loop_delay) |
667 | 83 | self.Toolbar.setSizePolicy(sizeToolbarPolicy) | ||
669 | 84 | self.DelaySpinBox.setSuffix(translate(u'ImageSlideController', u's')) | 51 | self.DelaySpinBox.setSuffix(translate(u'ImageSlideController', u's')) |
670 | 85 | 52 | ||
671 | 86 | def serviceLoaded(self): | ||
672 | 87 | self.DelaySpinBox.setValue(self.parent.parent.ImageTab.loop_delay) | ||
673 | 88 | if self.PreviewListWidget.rowCount() == 1: | ||
674 | 89 | self.DelaySpinBox.setEnabled(False) | ||
675 | 90 | |||
676 | 91 | def onStartLoop(self): | 53 | def onStartLoop(self): |
677 | 92 | """ | 54 | """ |
679 | 93 | Go to the last slide. | 55 | Trigger the slide controller to start to loop passing the delay |
680 | 94 | """ | 56 | """ |
683 | 95 | if self.PreviewListWidget.rowCount() > 1: | 57 | Receiver().send_message(u'%sslide_start_loop' % self.prefix, self.DelaySpinBox.value()) |
682 | 96 | self.timer_id = self.startTimer(int(self.TimeoutSpinBox.value()) * 1000) | ||
684 | 97 | 58 | ||
685 | 98 | def onStopLoop(self): | 59 | def onStopLoop(self): |
686 | 99 | """ | 60 | """ |
688 | 100 | Go to the last slide. | 61 | Trigger the slide controller to stop the loop |
689 | 101 | """ | 62 | """ |
695 | 102 | self.killTimer(self.timer_id) | 63 | Receiver().send_message(u'%sslide_stop_loop' % self.prefix) |
691 | 103 | |||
692 | 104 | def timerEvent(self, event): | ||
693 | 105 | if event.timerId() == self.timer_id: | ||
694 | 106 | self.onSlideSelectedNext() | ||
696 | 107 | 64 | ||
697 | === modified file 'openlp/plugins/images/lib/mediaitem.py' | |||
698 | --- openlp/plugins/images/lib/mediaitem.py 2009-07-04 05:52:30 +0000 | |||
699 | +++ openlp/plugins/images/lib/mediaitem.py 2009-08-24 17:43:15 +0000 | |||
700 | @@ -22,7 +22,7 @@ | |||
701 | 22 | 22 | ||
702 | 23 | from PyQt4 import QtCore, QtGui | 23 | from PyQt4 import QtCore, QtGui |
703 | 24 | from openlp.core.lib import MediaManagerItem, ServiceItem, translate, BaseListWithDnD, buildIcon | 24 | from openlp.core.lib import MediaManagerItem, ServiceItem, translate, BaseListWithDnD, buildIcon |
705 | 25 | from openlp.plugins.images.lib.imageslidecontroller import ImageToolbar | 25 | from openlp.plugins.images.lib.imagetoolbar import ImageToolbar |
706 | 26 | 26 | ||
707 | 27 | # We have to explicitly create separate classes for each plugin | 27 | # We have to explicitly create separate classes for each plugin |
708 | 28 | # in order for DnD to the Service manager to work correctly. | 28 | # in order for DnD to the Service manager to work correctly. |
709 | @@ -54,7 +54,7 @@ | |||
710 | 54 | # be instanced by the base MediaManagerItem | 54 | # be instanced by the base MediaManagerItem |
711 | 55 | self.ListViewWithDnD_class = ImageListView | 55 | self.ListViewWithDnD_class = ImageListView |
712 | 56 | self.ServiceItemIconName = u':/media/media_image.png' | 56 | self.ServiceItemIconName = u':/media/media_image.png' |
714 | 57 | 57 | self.servicePath = None | |
715 | 58 | MediaManagerItem.__init__(self, parent, icon, title) | 58 | MediaManagerItem.__init__(self, parent, icon, title) |
716 | 59 | #create and install our own slide controller toolbar | 59 | #create and install our own slide controller toolbar |
717 | 60 | imageToolbar = ImageToolbar(self, True) | 60 | imageToolbar = ImageToolbar(self, True) |
718 | @@ -63,21 +63,37 @@ | |||
719 | 63 | def initialise(self): | 63 | def initialise(self): |
720 | 64 | self.ListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) | 64 | self.ListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) |
721 | 65 | self.ListView.setIconSize(QtCore.QSize(88,50)) | 65 | self.ListView.setIconSize(QtCore.QSize(88,50)) |
722 | 66 | self.servicePath = os.path.join(self.parent.config.get_data_path(), u'.thumbnails') | ||
723 | 67 | if os.path.exists(self.servicePath) == False: | ||
724 | 68 | os.mkdir(self.servicePath) | ||
725 | 66 | self.loadList(self.parent.config.load_list(self.ConfigSection)) | 69 | self.loadList(self.parent.config.load_list(self.ConfigSection)) |
726 | 67 | 70 | ||
727 | 68 | def onDeleteClick(self): | 71 | def onDeleteClick(self): |
728 | 69 | item = self.ListView.currentItem() | 72 | item = self.ListView.currentItem() |
729 | 70 | if item is not None: | 73 | if item is not None: |
730 | 74 | try: | ||
731 | 75 | os.remove(os.path.join(self.servicePath, unicode(item.text()))) | ||
732 | 76 | except: | ||
733 | 77 | #if not present do not worry | ||
734 | 78 | pass | ||
735 | 71 | item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] | 79 | item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] |
736 | 72 | row = self.ListView.row(item) | 80 | row = self.ListView.row(item) |
737 | 73 | self.ListView.takeItem(row) | 81 | self.ListView.takeItem(row) |
739 | 74 | self.parent.config.set_list(self.ConfigSection, self.ListData.getFileList()) | 82 | self.parent.config.set_list(self.ConfigSection, self.getFileList()) |
740 | 75 | 83 | ||
741 | 76 | def loadList(self, list): | 84 | def loadList(self, list): |
742 | 77 | for file in list: | 85 | for file in list: |
743 | 78 | (path, filename) = os.path.split(unicode(file)) | 86 | (path, filename) = os.path.split(unicode(file)) |
744 | 87 | thumb = os.path.join(self.servicePath, filename) | ||
745 | 88 | if os.path.exists(thumb): | ||
746 | 89 | icon = buildIcon(thumb) | ||
747 | 90 | else: | ||
748 | 91 | icon = buildIcon(unicode(file)) | ||
749 | 92 | pixmap = icon.pixmap(QtCore.QSize(88,50)) | ||
750 | 93 | ext = os.path.splitext(thumb)[1].lower() | ||
751 | 94 | pixmap.save(thumb, ext[1:]) | ||
752 | 79 | item_name = QtGui.QListWidgetItem(filename) | 95 | item_name = QtGui.QListWidgetItem(filename) |
754 | 80 | item_name.setIcon(buildIcon(file)) | 96 | item_name.setIcon(icon) |
755 | 81 | item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file)) | 97 | item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file)) |
756 | 82 | self.ListView.addItem(item_name) | 98 | self.ListView.addItem(item_name) |
757 | 83 | 99 | ||
758 | 84 | 100 | ||
759 | === modified file 'openlp/plugins/remotes/remoteclient-cli.py' | |||
760 | --- openlp/plugins/remotes/remoteclient-cli.py 2009-08-12 16:29:00 +0000 | |||
761 | +++ openlp/plugins/remotes/remoteclient-cli.py 2009-08-24 05:10:04 +0000 | |||
762 | @@ -51,6 +51,8 @@ | |||
763 | 51 | help="Action to be undertaken") | 51 | help="Action to be undertaken") |
764 | 52 | parser.add_option("-m", "--message", | 52 | parser.add_option("-m", "--message", |
765 | 53 | help="Message to be passed for the action") | 53 | help="Message to be passed for the action") |
766 | 54 | parser.add_option("-n", "--slidenext", | ||
767 | 55 | help="Trigger the next slide") | ||
768 | 54 | 56 | ||
769 | 55 | (options, args) = parser.parse_args() | 57 | (options, args) = parser.parse_args() |
770 | 56 | if len(args) > 0: | 58 | if len(args) > 0: |
771 | @@ -62,6 +64,11 @@ | |||
772 | 62 | elif options.address is None: | 64 | elif options.address is None: |
773 | 63 | parser.print_help() | 65 | parser.print_help() |
774 | 64 | parser.error("IP address missing") | 66 | parser.error("IP address missing") |
775 | 67 | elif options.slidenext is not None: | ||
776 | 68 | options.event = u'next_slide' | ||
777 | 69 | options.message = u'' | ||
778 | 70 | text = format_message(options) | ||
779 | 71 | sendData(options, text) | ||
780 | 65 | else: | 72 | else: |
781 | 66 | text = format_message(options) | 73 | text = format_message(options) |
782 | 67 | sendData(options, text) | 74 | sendData(options, text) |
783 | 68 | 75 | ||
784 | === modified file 'openlp/plugins/remotes/remoteplugin.py' | |||
785 | --- openlp/plugins/remotes/remoteplugin.py 2009-08-15 07:33:01 +0000 | |||
786 | +++ openlp/plugins/remotes/remoteplugin.py 2009-08-24 05:10:04 +0000 | |||
787 | @@ -22,7 +22,7 @@ | |||
788 | 22 | 22 | ||
789 | 23 | from PyQt4 import QtNetwork, QtGui, QtCore | 23 | from PyQt4 import QtNetwork, QtGui, QtCore |
790 | 24 | 24 | ||
792 | 25 | from openlp.core.lib import Plugin, Event, EventType | 25 | from openlp.core.lib import Plugin, Event, EventType, Receiver |
793 | 26 | from openlp.plugins.remotes.lib import RemoteTab | 26 | from openlp.plugins.remotes.lib import RemoteTab |
794 | 27 | 27 | ||
795 | 28 | class RemotesPlugin(Plugin): | 28 | class RemotesPlugin(Plugin): |
796 | @@ -59,7 +59,8 @@ | |||
797 | 59 | 59 | ||
798 | 60 | if event == u'alert': | 60 | if event == u'alert': |
799 | 61 | self.event_manager.post_event(Event(u'RemotePlugin', EventType.TriggerAlert , unicode(datagram[pos + 1:]))) | 61 | self.event_manager.post_event(Event(u'RemotePlugin', EventType.TriggerAlert , unicode(datagram[pos + 1:]))) |
801 | 62 | 62 | if event == u'next_slide': | |
802 | 63 | Receiver().send_message(u'live_slide_next') | ||
803 | 63 | 64 | ||
804 | 64 | 65 | ||
805 | 65 | 66 |
Fix up the slide controller to fit better with the planned design.
Fix the Image Plugin to work with new slide controller
Fix the Image Plugin so it loads images faster and fix bug in delete code.