From ab12f73a21e374969bfe1827a23140a4e5aa2293 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 10 Nov 2009 20:44:02 +0000 Subject: [PATCH 1/7] spacing cleanups --- openlp/core/ui/maindisplay.py | 11 +++++------ openlp/core/ui/slidecontroller.py | 5 ----- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index ebd810c5c..0a442e6bb 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -262,17 +262,16 @@ class MainDisplay(DisplayWidget): self.firstTime = False else: self.mediaObject.enqueue(Phonon.MediaSource(file)) - self.onMediaPlay(message[3]) + self.onMediaPlay() - def onMediaPlay(self, live=True): - log.debug(u'Play the new media, Live %s', live) + def onMediaPlay(self): + log.debug(u'Play the new media, Live ') if not self.mediaLoaded and not self.displayBlank: self.blankDisplay() self.firstTime = True self.mediaLoaded = True - if live: - self.display.hide() - self.video.setFullScreen(True) + self.display.hide() + self.video.setFullScreen(True) self.mediaObject.play() if self.primary: self.setVisible(True) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 331597c61..d73637ade 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -230,7 +230,6 @@ class SlideController(QtGui.QWidget): self.grid = QtGui.QGridLayout(self.PreviewFrame) self.grid.setMargin(8) self.grid.setObjectName(u'grid') - self.SlideLayout = QtGui.QVBoxLayout() self.SlideLayout.setSpacing(0) self.SlideLayout.setMargin(0) @@ -242,7 +241,6 @@ class SlideController(QtGui.QWidget): Phonon.createPath(self.mediaObject, self.video) Phonon.createPath(self.mediaObject, self.audio) self.SlideLayout.insertWidget(0, self.video) - # Actual preview screen self.SlidePreview = QtGui.QLabel(self) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, @@ -260,9 +258,6 @@ class SlideController(QtGui.QWidget): self.SlidePreview.setScaledContents(True) self.SlidePreview.setObjectName(u'SlidePreview') self.SlideLayout.insertWidget(0, self.SlidePreview) - - - self.grid.addLayout(self.SlideLayout, 0, 0, 1, 1) # Signals QtCore.QObject.connect(self.PreviewListWidget, From 1eb41aab78a8e0de849803c4af1df416d20d64a0 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 11 Nov 2009 19:10:38 +0000 Subject: [PATCH 2/7] SlideController cleanups --- openlp.pyw | 3 +++ openlp/core/lib/serviceitem.py | 7 +++++++ openlp/core/ui/maindisplay.py | 6 ++++++ openlp/core/ui/servicemanager.py | 2 -- openlp/core/ui/slidecontroller.py | 16 +++++++--------- 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 4eaf8ee22..7d123a9de 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -81,6 +81,8 @@ class OpenLP(QtGui.QApplication): bits = unicode(line).split(u'-') applicationVersion = {u'Full':unicode(line).rstrip(), u'version':bits[0], u'build':bits[1]} + log.info(u'Openlp version %s build %s' % + (applicationVersion[u'version'],applicationVersion[u'build'] )) except: applicationVersion = {u'Full':u'1.9.0-000', u'version':u'1.9.0', u'build':u'000'} @@ -139,6 +141,7 @@ def main(): logfile.setFormatter(logging.Formatter( u'%(asctime)s %(name)-15s %(levelname)-8s %(message)s')) log.addHandler(logfile) + logging.addLevelName(15, u'Timer') # Parse command line options and deal with them. (options, args) = parser.parse_args() if options.debug: diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index fe50c220d..e217781c8 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -279,3 +279,10 @@ class ServiceItem(object): """ return self.uuid != other.uuid + def isSong(self): + return self.name == u'Songs' + + def isMedia(self): + return self.name == u'Media' + + diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 0a442e6bb..249cd3827 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -24,6 +24,7 @@ import logging import os +import time from PyQt4 import QtCore, QtGui from PyQt4.phonon import Phonon @@ -196,11 +197,16 @@ class MainDisplay(DisplayWidget): if self.timer_id != 0 : self.displayAlert() elif not self.displayBlank: + #self.setWindowOpacity(0.5) self.display.setPixmap(QtGui.QPixmap.fromImage(frame)) + #QtCore.QTimer.singleShot(500, self.aa ) if not self.isVisible(): self.setVisible(True) self.showFullScreen() +# def aa(self): +# self.setWindowOpacity(1) + def blankDisplay(self): if not self.displayBlank: self.displayBlank = True diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 245140e31..bb39b573e 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -56,7 +56,6 @@ class ServiceManagerList(QtGui.QTreeWidget): # else: # event.ignore() - def keyPressEvent(self, event): if type(event) == QtGui.QKeyEvent: #here accept the event and do something @@ -99,7 +98,6 @@ class ServiceManagerList(QtGui.QTreeWidget): mimeData.setText(u'ServiceManager') dropAction = drag.start(QtCore.Qt.CopyAction) - class ServiceManager(QtGui.QWidget): """ Manages the services. This involves taking text strings from plugins and diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index d73637ade..b90038a0d 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -347,7 +347,7 @@ class SlideController(QtGui.QWidget): self.Toolbar.makeWidgetsInvisible(self.image_list) if item.service_item_type == ServiceItemType.Text: self.Toolbar.makeWidgetsInvisible(self.image_list) - if item.name == u'Songs' and \ + if item.isSong() and \ str_to_bool(self.songsconfig.get_config(u'display songbar', True)): for action in self.Songbar.actions: self.Songbar.actions[action].setVisible(False) @@ -366,8 +366,7 @@ class SlideController(QtGui.QWidget): #Not sensible to allow loops with 1 frame if len(item.frames) > 1: self.Toolbar.makeWidgetsVisible(self.image_list) - elif item.service_item_type == ServiceItemType.Command and \ - item.name == u'Media': + elif item.isMedia(): self.Toolbar.setVisible(False) self.Mediabar.setVisible(True) self.volumeSlider.setAudioOutput(self.parent.mainDisplay.audio) @@ -379,10 +378,9 @@ class SlideController(QtGui.QWidget): self.Toolbar.setVisible(True) self.Mediabar.setVisible(False) self.Toolbar.makeWidgetsInvisible(self.song_edit_list) - if (item.name == u'Songs' or item.name == u'Custom') and item.fromPlugin: + if item.editEnabled and item.fromPlugin: self.Toolbar.makeWidgetsVisible(self.song_edit_list) - elif item.service_item_type == ServiceItemType.Command and \ - item.name == u'Media': + elif item.isMedia(): self.Toolbar.setVisible(False) self.Mediabar.setVisible(True) self.volumeSlider.setAudioOutput(self.audio) @@ -401,7 +399,7 @@ class SlideController(QtGui.QWidget): self.commandItem = item before = time.time() item.render() - log.info(u'Rendering took %4s' % (time.time() - before)) + log.log(15, u'Rendering took %4s' % (time.time() - before)) self.enableToolBar(item) if item.service_item_type == ServiceItemType.Command: if self.isLive: @@ -490,7 +488,7 @@ class SlideController(QtGui.QWidget): self.PreviewListWidget.selectRow(slideno) self.onSlideSelected() self.PreviewListWidget.setFocus() - log.info(u'Display Rendering took %4s' % (time.time() - before)) + log.log(15, u'Display Rendering took %4s' % (time.time() - before)) if self.serviceitem.audit and self.isLive: Receiver().send_message(u'songusage_live', self.serviceitem.audit) log.debug(u'displayServiceManagerItems End') @@ -539,7 +537,7 @@ class SlideController(QtGui.QWidget): if frame is None: frame = self.serviceitem.render_individual(row) self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame)) - log.info(u'Slide Rendering took %4s' % (time.time() - before)) + log.log(15, u'Slide Rendering took %4s' % (time.time() - before)) if self.isLive: self.parent.mainDisplay.frameView(frame) self.row = row From e62c482a2e56edfa4c9676c002511333c3601652 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 12 Nov 2009 17:21:15 +0000 Subject: [PATCH 3/7] Slide Controller and Transition changes --- openlp/core/lib/serviceitem.py | 7 ++++++ openlp/core/ui/maindisplay.py | 8 +++--- openlp/core/ui/slidecontroller.py | 41 ++++++++++++++----------------- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index e217781c8..19f5f4bda 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -285,4 +285,11 @@ class ServiceItem(object): def isMedia(self): return self.name == u'Media' + def isCommand(self): + return self.service_item_type == ServiceItemType.Command + def isImage(self): + return self.service_item_type == ServiceItemType.Image + + def isText(self): + return self.service_item_type == ServiceItemType.Text diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 249cd3827..50781ad8d 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -197,15 +197,15 @@ class MainDisplay(DisplayWidget): if self.timer_id != 0 : self.displayAlert() elif not self.displayBlank: - #self.setWindowOpacity(0.5) + self.setWindowOpacity(0.5) self.display.setPixmap(QtGui.QPixmap.fromImage(frame)) - #QtCore.QTimer.singleShot(500, self.aa ) + QtCore.QTimer.singleShot(250, self.aa ) if not self.isVisible(): self.setVisible(True) self.showFullScreen() -# def aa(self): -# self.setWindowOpacity(1) + def aa(self): + self.setWindowOpacity(1) def blankDisplay(self): if not self.displayBlank: diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index b90038a0d..88e81bfae 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -345,7 +345,7 @@ class SlideController(QtGui.QWidget): self.Songbar.setVisible(False) self.Mediabar.setVisible(False) self.Toolbar.makeWidgetsInvisible(self.image_list) - if item.service_item_type == ServiceItemType.Text: + if item.isText(): self.Toolbar.makeWidgetsInvisible(self.image_list) if item.isSong() and \ str_to_bool(self.songsconfig.get_config(u'display songbar', True)): @@ -362,7 +362,7 @@ class SlideController(QtGui.QWidget): #More than 20 verses hard luck pass self.Songbar.setVisible(True) - elif item.service_item_type == ServiceItemType.Image: + elif item.isImage(): #Not sensible to allow loops with 1 frame if len(item.frames) > 1: self.Toolbar.makeWidgetsVisible(self.image_list) @@ -393,21 +393,20 @@ class SlideController(QtGui.QWidget): """ log.debug(u'addServiceItem') #If old item was a command tell it to stop - if self.commandItem and \ - self.commandItem.service_item_type == ServiceItemType.Command: + if self.commandItem and self.commandItem.isCommand(): self.onMediaStop() self.commandItem = item before = time.time() item.render() log.log(15, u'Rendering took %4s' % (time.time() - before)) self.enableToolBar(item) - if item.service_item_type == ServiceItemType.Command: + if item.isCommand(): if self.isLive: Receiver().send_message(u'%s_start' % item.name.lower(), \ [item.shortname, item.service_item_path, item.service_frames[0][u'title'], self.isLive]) else: - if item.name == u'Media': + if item.isMedia(): self.onMediaStart(item) slideno = 0 if self.songEdit: @@ -430,18 +429,17 @@ class SlideController(QtGui.QWidget): """ log.debug(u'addServiceManagerItem') #If old item was a command tell it to stop - if self.commandItem and \ - self.commandItem.service_item_type == ServiceItemType.Command: + if self.commandItem and self.commandItem.isCommand(): self.onMediaStop() self.commandItem = item self.enableToolBar(item) - if item.service_item_type == ServiceItemType.Command: + if item.isCommand(): if self.isLive: Receiver().send_message(u'%s_start' % item.name.lower(), \ [item.shortname, item.service_item_path, item.service_frames[0][u'title'], slideno, self.isLive]) else: - if item.name == u'Media': + if item.isMedia(): self.onMediaStart(item) self.displayServiceManagerItems(item, slideno) @@ -498,8 +496,7 @@ class SlideController(QtGui.QWidget): """ Go to the first slide. """ - if self.commandItem and \ - self.commandItem.service_item_type == ServiceItemType.Command: + if self.commandItem and self.commandItem.isCommand(): Receiver().send_message(u'%s_first'% self.commandItem.name.lower()) self.updatePreview() else: @@ -510,8 +507,7 @@ class SlideController(QtGui.QWidget): """ Blank the screen. """ - if self.commandItem and \ - self.commandItem.service_item_type == ServiceItemType.Command: + if self.commandItem and self.commandItem.isCommand(): if blanked: Receiver().send_message(u'%s_blank'% self.commandItem.name.lower()) else: @@ -527,7 +523,7 @@ class SlideController(QtGui.QWidget): row = self.PreviewListWidget.currentRow() self.row = 0 if row > -1 and row < self.PreviewListWidget.rowCount(): - if self.commandItem.service_item_type == ServiceItemType.Command: + if self.commandItem.isCommand(): Receiver().send_message(u'%s_slide'% self.commandItem.name.lower(), [row]) if self.isLive: self.updatePreview() @@ -556,22 +552,23 @@ class SlideController(QtGui.QWidget): QtCore.QTimer.singleShot(0.5, self.grabMainDisplay) QtCore.QTimer.singleShot(2.5, self.grabMainDisplay) else: - label = self.PreviewListWidget.cellWidget(self.PreviewListWidget.currentRow(), 0) + label = self.PreviewListWidget.cellWidget( + self.PreviewListWidget.currentRow(), 0) self.SlidePreview.setPixmap(label.pixmap()) def grabMainDisplay(self): rm = self.parent.RenderManager winid = QtGui.QApplication.desktop().winId() rect = rm.screen_list[rm.current_display][u'size'] - winimg = QtGui.QPixmap.grabWindow(winid, rect.x(), rect.y(), rect.width(), rect.height()) + winimg = QtGui.QPixmap.grabWindow(winid, rect.x(), + rect.y(), rect.width(), rect.height()) self.SlidePreview.setPixmap(winimg) def onSlideSelectedNext(self): """ Go to the next slide. """ - if self.commandItem and \ - self.commandItem.service_item_type == ServiceItemType.Command: + if self.commandItem and self.commandItem.isCommand(): Receiver().send_message(u'%s_next'% self.commandItem.name.lower()) self.updatePreview() else: @@ -585,8 +582,7 @@ class SlideController(QtGui.QWidget): """ Go to the previous slide. """ - if self.commandItem and \ - self.commandItem.service_item_type == ServiceItemType.Command: + if self.commandItem and self.commandItem.isCommand(): Receiver().send_message( u'%s_previous'% self.commandItem.name.lower()) self.updatePreview() @@ -601,8 +597,7 @@ class SlideController(QtGui.QWidget): """ Go to the last slide. """ - if self.commandItem and \ - self.commandItem.service_item_type == ServiceItemType.Command: + if self.commandItem and self.commandItem.isCommand(): Receiver().send_message(u'%s_last'% self.commandItem.name.lower()) self.updatePreview() else: From 9970ae82813b7cfb7f2f8ae53a91d7085dd55b97 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 12 Nov 2009 17:48:49 +0000 Subject: [PATCH 4/7] Transitions between slides --- openlp/core/ui/maindisplay.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 0d8ceedb0..2c83cac00 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -198,8 +198,9 @@ class MainDisplay(DisplayWidget): self.displayAlert() elif not self.displayBlank: self.setWindowOpacity(0.5) + self.show() self.display.setPixmap(QtGui.QPixmap.fromImage(frame)) - QtCore.QTimer.singleShot(250, self.aa ) + QtCore.QTimer.singleShot(500, self.aa ) if not self.isVisible(): self.setVisible(True) self.showFullScreen() From 124c51138507c912df8a826f76b88f49f7742a61 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 12 Nov 2009 18:44:45 +0000 Subject: [PATCH 5/7] Fix saving and reloading of media items --- openlp/core/lib/serviceitem.py | 18 ++++-------------- openlp/plugins/media/lib/mediaitem.py | 2 +- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 19f5f4bda..577013159 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -38,7 +38,6 @@ class ServiceItemType(object): Text = 1 Image = 2 Command = 3 - Video = 4 class ServiceItem(object): """ @@ -156,12 +155,6 @@ class ServiceItem(object): self.service_frames.append( {u'title': frame_title, u'text': None, u'image': image}) - def add_from_media(self, path, frame_title, image): - self.service_item_type = ServiceItemType.Video - self.service_item_path = path - self.service_frames.append( - {u'title': frame_title, u'text': None, u'image': image}) - def add_from_text(self, frame_title, raw_slide): """ Add a text slide to the service item. @@ -216,10 +209,7 @@ class ServiceItem(object): service_data.append(slide[u'title']) elif self.service_item_type == ServiceItemType.Command: for slide in self.service_frames: - service_data.append(slide[u'title']) - elif self.service_item_type == ServiceItemType.Video: - for slide in self.service_frames: - service_data.append(slide[u'title']) + service_data.append({u'title':slide[u'title'], u'image':slide[u'image']}) return {u'header': service_header, u'data': service_data} def set_from_service(self, serviceitem, path=None): @@ -252,8 +242,8 @@ class ServiceItem(object): self.add_from_image(path, text_image, real_image) elif self.service_item_type == ServiceItemType.Command: for text_image in serviceitem[u'serviceitem'][u'data']: - filename = os.path.join(path, text_image) - self.add_from_command(path, text_image) + filename = os.path.join(path, text_image[u'title']) + self.add_from_command(path, text_image[u'title'], text_image[u'image'] ) elif self.service_item_type == ServiceItemType.Video: pass @@ -283,7 +273,7 @@ class ServiceItem(object): return self.name == u'Songs' def isMedia(self): - return self.name == u'Media' + return self.name.lower() == u'media' def isCommand(self): return self.service_item_type == ServiceItemType.Command diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 708307868..bd9739e4a 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -79,7 +79,7 @@ class MediaMediaItem(MediaManagerItem): items = self.ListView.selectedIndexes() if len(items) > 1: return False - service_item.title = self.trUtf8(u'Media') + service_item.title = unicode(self.trUtf8(u'Media')) for item in items: bitem = self.ListView.item(item.row()) filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) From 04873758e96a78e7cffec9083ed48c5436d06bf2 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 12 Nov 2009 19:05:24 +0000 Subject: [PATCH 6/7] Remove extra Video --- openlp/core/lib/serviceitem.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 577013159..e9de1f832 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -244,8 +244,6 @@ class ServiceItem(object): for text_image in serviceitem[u'serviceitem'][u'data']: filename = os.path.join(path, text_image[u'title']) self.add_from_command(path, text_image[u'title'], text_image[u'image'] ) - elif self.service_item_type == ServiceItemType.Video: - pass def merge(self, other): """ From 6df4e5a36935f2132796ca1dadc02246eea85168 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Thu, 12 Nov 2009 19:12:13 +0000 Subject: [PATCH 7/7] Remove transition code --- openlp/core/ui/maindisplay.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 2c83cac00..5fea3268e 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -197,16 +197,16 @@ class MainDisplay(DisplayWidget): if self.timer_id != 0 : self.displayAlert() elif not self.displayBlank: - self.setWindowOpacity(0.5) - self.show() +# self.setWindowOpacity(0.5) +# self.show() self.display.setPixmap(QtGui.QPixmap.fromImage(frame)) - QtCore.QTimer.singleShot(500, self.aa ) +# QtCore.QTimer.singleShot(500, self.aa ) if not self.isVisible(): self.setVisible(True) self.showFullScreen() - - def aa(self): - self.setWindowOpacity(1) +# +# def aa(self): +# self.setWindowOpacity(1) def blankDisplay(self): if not self.displayBlank: