From 5b9229777d197ec2b4e2f1cb54e0cfd4c46b36ff Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 4 Apr 2010 14:16:01 +0100 Subject: [PATCH 01/12] fixes --- openlp/core/ui/servicemanager.py | 3 ++- openlp/plugins/songs/forms/editverseform.py | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index d7acbdf4f..2b6de7d3b 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -235,7 +235,8 @@ class ServiceManager(QtGui.QWidget): self.notesAction.setVisible(False) if serviceItem[u'service_item'].is_capable(ItemCapabilities.AllowsEdit): self.editAction.setVisible(True) - if serviceItem[u'service_item'].is_capable(ItemCapabilities.AllowsMaintain): + if serviceItem[u'service_item'].\ + is_capable(ItemCapabilities.AllowsMaintain): self.maintainAction.setVisible(True) if item.parent() is None: self.notesAction.setVisible(True) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 326946bc4..b2e3f35b9 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -59,27 +59,27 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def onAddIntro(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[Intro:1]---\n') + self.VerseTextEdit.insertPlainText(u'---[Intro]---\n') self.VerseTextEdit.setFocus() def onAddEnding(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[Ending:1]---\n') + self.VerseTextEdit.insertPlainText(u'---[Ending]---\n') self.VerseTextEdit.setFocus() def onAddOther(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[Other:1]---\n') + self.VerseTextEdit.insertPlainText(u'---[Other]---\n') self.VerseTextEdit.setFocus() def onAddPreChorus(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[Pre-Chorus:1]---\n') + self.VerseTextEdit.insertPlainText(u'---[Pre-Chorus]---\n') self.VerseTextEdit.setFocus() def onAddBridge(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[Bridge:1]---\n') + self.VerseTextEdit.insertPlainText(u'---[Bridge]---\n') self.VerseTextEdit.setFocus() def onAddChorus(self): @@ -148,7 +148,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def getVerseAll(self): text = self.VerseTextEdit.toPlainText() if not text.startsWith(u'---['): - text = u'---[%s:1]---\n%s' % (self.trUtf8('Verse'), text) + text = u'---[Verse:1]---\n%s' % text return text def onVerseComboChanged(self, id): From b17b83bb27c763a04ce06efcc7057ea9b551859f Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 4 Apr 2010 14:53:39 +0100 Subject: [PATCH 02/12] Add multiple songs to service manager --- openlp/core/lib/mediamanageritem.py | 23 ++++++++++++++++------- openlp/core/ui/servicemanager.py | 2 +- openlp/plugins/bibles/lib/mediaitem.py | 2 +- openlp/plugins/songs/lib/mediaitem.py | 25 +++++++++++++++---------- 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 81d9a5b03..2960b6e45 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -114,6 +114,7 @@ class MediaManagerItem(QtGui.QWidget): self.Toolbar = None self.remoteTriggered = None self.ServiceItemIconName = None + self.single_service_item = True self.addToServiceItem = False self.PageLayout = QtGui.QVBoxLayout(self) self.PageLayout.setSpacing(0) @@ -401,11 +402,19 @@ class MediaManagerItem(QtGui.QWidget): self.trUtf8('No Items Selected'), self.trUtf8('You must select one or more items.')) else: - log.debug(self.PluginNameShort + u' Add requested') - service_item = self.buildServiceItem() - if service_item: - service_item.from_plugin = False - self.parent.service_manager.addServiceItem(service_item) + if self.single_service_item: + log.debug(self.PluginNameShort + u' Add requested') + service_item = self.buildServiceItem() + if service_item: + service_item.from_plugin = False + self.parent.service_manager.addServiceItem(service_item) + else: + items = self.ListView.selectedIndexes() + for item in items: + service_item = self.buildServiceItem(item) + if service_item: + service_item.from_plugin = False + self.parent.service_manager.addServiceItem(service_item) def onAddEditClick(self): if not self.ListView.selectedIndexes() and not self.remoteTriggered: @@ -429,7 +438,7 @@ class MediaManagerItem(QtGui.QWidget): self.trUtf8('Invalid Service Item'), self.trUtf8(unicode('You must select a %s service item.' % self.title))) - def buildServiceItem(self): + def buildServiceItem(self, item=0): """ Common method for generating a service item """ @@ -439,7 +448,7 @@ class MediaManagerItem(QtGui.QWidget): else: service_item.addIcon( u':/media/media_' + self.PluginNameShort.lower() + u'.png') - if self.generateSlideData(service_item): + if self.generateSlideData(service_item, item): return service_item else: return None diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 2b6de7d3b..d0ec4d2df 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -714,7 +714,7 @@ class ServiceManager(QtGui.QWidget): get_config(u'auto preview', u'False')): item += 1 if self.serviceItems and item < len(self.serviceItems) and \ - serviceItem[u'service_item'].is_capable(ItemCapabilities.AllowsPreview): + self.serviceItems[item][u'service_item'].is_capable(ItemCapabilities.AllowsPreview): self.parent.PreviewController.addServiceManagerItem( self.serviceItems[item][u'service_item'], 0) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 1a70a764a..ed886120d 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -440,7 +440,7 @@ class BibleMediaItem(MediaManagerItem): if self.search_results: self.displayResults(bible) - def generateSlideData(self, service_item): + def generateSlideData(self, service_item, item_id=0): log.debug(u'generating slide data') items = self.ListView.selectedIndexes() if len(items) == 0: diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index e2b1dbf80..7addeb9ed 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -49,8 +49,9 @@ class SongMediaItem(MediaManagerItem): self.ConfigSection = title self.IconPath = u'songs/song' self.ListViewWithDnD_class = SongListView - self.servicePath = None + #self.servicePath = None MediaManagerItem.__init__(self, parent, icon, title) + self.single_service_item = False self.edit_song_form = EditSongForm(self.parent.songmanager, self) self.song_maintenance_form = SongMaintenanceForm( self.parent.songmanager, self) @@ -276,31 +277,35 @@ class SongMediaItem(MediaManagerItem): if len(items) == 1: del_message = self.trUtf8('Delete song?') else: - del_message = unicode(self.trUtf8('Delete %d song?')) % len(items) + del_message = unicode(self.trUtf8('Delete %d songs?')) % len(items) ans = QtGui.QMessageBox.question(self, self.trUtf8('Delete Confirmation'), del_message, QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok| QtGui.QMessageBox.Cancel), QtGui.QMessageBox.Ok) if ans == QtGui.QMessageBox.Cancel: - return + return for item in items: item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] self.parent.songmanager.delete_song(item_id) self.onSearchTextButtonClick() - def generateSlideData(self, service_item): + def generateSlideData(self, service_item, item=0): raw_footer = [] author_list = u'' author_audit = [] ccli = u'' - if self.remoteTriggered is None: - item = self.ListView.currentItem() - if item is None: - return False - item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] + #Part of a loop so do not work out + if item == 0: + if self.remoteTriggered is None: + item = self.ListView.currentItem() + if item is None: + return False + item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] + else: + item_id = self.remoteSong else: - item_id = self.remoteSong + item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] service_item.add_capability(ItemCapabilities.AllowsEdit) service_item.add_capability(ItemCapabilities.AllowsPreview) song = self.parent.songmanager.get_song(item_id) From 5a3150a063e3f1996eadf5b9cf129d66172a4c07 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 5 Apr 2010 07:45:01 +0100 Subject: [PATCH 03/12] Fix up plugins for multiple service item generation --- openlp/core/lib/mediamanageritem.py | 6 ++++-- openlp/plugins/bibles/lib/mediaitem.py | 3 +-- openlp/plugins/custom/lib/mediaitem.py | 19 +++++++++++-------- openlp/plugins/images/lib/mediaitem.py | 3 +-- openlp/plugins/media/lib/mediaitem.py | 12 +++--------- openlp/plugins/presentations/lib/mediaitem.py | 2 +- openlp/plugins/songs/lib/mediaitem.py | 6 ++---- 7 files changed, 23 insertions(+), 28 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 2960b6e45..f678bed7a 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -368,7 +368,7 @@ class MediaManagerItem(QtGui.QWidget): raise NotImplementedError(u'MediaManagerItem.onDeleteClick needs to ' u'be defined by the plugin') - def generateSlideData(self, item): + def generateSlideData(self, item, item1): raise NotImplementedError(u'MediaManagerItem.generateSlideData needs ' u'to be defined by the plugin') @@ -402,6 +402,8 @@ class MediaManagerItem(QtGui.QWidget): self.trUtf8('No Items Selected'), self.trUtf8('You must select one or more items.')) else: + #Is it posssible to process multiple list items to generate multiple + #service items? if self.single_service_item: log.debug(self.PluginNameShort + u' Add requested') service_item = self.buildServiceItem() @@ -438,7 +440,7 @@ class MediaManagerItem(QtGui.QWidget): self.trUtf8('Invalid Service Item'), self.trUtf8(unicode('You must select a %s service item.' % self.title))) - def buildServiceItem(self, item=0): + def buildServiceItem(self, item=None): """ Common method for generating a service item """ diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index ed886120d..80c81f3e7 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -57,7 +57,6 @@ class BibleMediaItem(MediaManagerItem): self.ConfigSection = title self.IconPath = u'songs/song' self.ListViewWithDnD_class = BibleListView - self.servicePath = None self.lastReference = [] self.addToServiceItem = True MediaManagerItem.__init__(self, parent, icon, title) @@ -440,7 +439,7 @@ class BibleMediaItem(MediaManagerItem): if self.search_results: self.displayResults(bible) - def generateSlideData(self, service_item, item_id=0): + def generateSlideData(self, service_item, item=None): log.debug(u'generating slide data') items = self.ListView.selectedIndexes() if len(items) == 0: diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 84d6cf289..1dd6b3c13 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -50,8 +50,8 @@ class CustomMediaItem(MediaManagerItem): # this next is a class, not an instance of a class - it will # be instanced by the base MediaManagerItem self.ListViewWithDnD_class = CustomListView - self.servicePath = None MediaManagerItem.__init__(self, parent, icon, title) + self.single_service_item = False # Holds information about whether the edit is remotly triggered and # which Custom is required. self.remoteCustom = -1 @@ -132,18 +132,21 @@ class CustomMediaItem(MediaManagerItem): row = self.ListView.row(item) self.ListView.takeItem(row) - def generateSlideData(self, service_item): + def generateSlideData(self, service_item, item=None): raw_slides =[] raw_footer = [] slide = None theme = None - if self.remoteTriggered is None: - item = self.ListView.currentItem() - if item is None: - return False - item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] + if item is None: + if self.remoteTriggered is None: + item = self.ListView.currentItem() + if item is None: + return False + item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] + else: + item_id = self.remoteCustom else: - item_id = self.remoteCustom + item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] service_item.add_capability(ItemCapabilities.AllowsEdit) service_item.add_capability(ItemCapabilities.AllowsPreview) customSlide = self.parent.custommanager.get_custom(item_id) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index a8b07cfb3..becf2be9f 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -52,7 +52,6 @@ class ImageMediaItem(MediaManagerItem): # this next is a class, not an instance of a class - it will # be instanced by the base MediaManagerItem self.ListViewWithDnD_class = ImageListView - self.servicePath = None MediaManagerItem.__init__(self, parent, icon, title) def initPluginNameVisible(self): @@ -136,7 +135,7 @@ class ImageMediaItem(MediaManagerItem): item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file)) self.ListView.addItem(item_name) - def generateSlideData(self, service_item): + def generateSlideData(self, service_item, item=None): items = self.ListView.selectedIndexes() if items: service_item.title = self.trUtf8('Image(s)') diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index cce422383..71726636d 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -52,7 +52,7 @@ class MediaMediaItem(MediaManagerItem): # this next is a class, not an instance of a class - it will # be instanced by the base MediaManagerItem self.ListViewWithDnD_class = MediaListView - self.PreviewFunction = self.video_get_preview + self.PreviewFunction = QtGui.QPixmap(u':/media/media_video.png').toImage() MediaManagerItem.__init__(self, parent, icon, title) self.ServiceItemIconName = u':/media/media_video.png' self.MainDisplay = self.parent.maindisplay @@ -72,13 +72,7 @@ class MediaMediaItem(MediaManagerItem): self.hasNewIcon = False self.hasEditIcon = False - def video_get_preview(self): - # For now cross platform is an icon. Phonon does not support - # individual frame access (yet?) and GStreamer is not available - # on Windows - return QtGui.QPixmap(u':/media/media_video.png').toImage() - - def generateSlideData(self, service_item): + def generateSlideData(self, service_item, item=None): items = self.ListView.selectedIndexes() if len(items) > 1: return False @@ -110,7 +104,7 @@ class MediaMediaItem(MediaManagerItem): for file in list: (path, filename) = os.path.split(unicode(file)) item_name = QtGui.QListWidgetItem(filename) - img = self.video_get_preview() + img = QtGui.QPixmap(u':/media/media_video.png').toImage() item_name.setIcon(build_icon(img)) item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file)) self.ListView.addItem(item_name) diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 1b4097b6c..ec7a2b705 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -145,7 +145,7 @@ class PresentationMediaItem(MediaManagerItem): doc.presentation_deleted() doc.close_presentation() - def generateSlideData(self, service_item): + def generateSlideData(self, service_item, item=None): items = self.ListView.selectedIndexes() if len(items) > 1: return False diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 7addeb9ed..9aa5536a9 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -49,7 +49,6 @@ class SongMediaItem(MediaManagerItem): self.ConfigSection = title self.IconPath = u'songs/song' self.ListViewWithDnD_class = SongListView - #self.servicePath = None MediaManagerItem.__init__(self, parent, icon, title) self.single_service_item = False self.edit_song_form = EditSongForm(self.parent.songmanager, self) @@ -290,13 +289,12 @@ class SongMediaItem(MediaManagerItem): self.parent.songmanager.delete_song(item_id) self.onSearchTextButtonClick() - def generateSlideData(self, service_item, item=0): + def generateSlideData(self, service_item, item=None): raw_footer = [] author_list = u'' author_audit = [] ccli = u'' - #Part of a loop so do not work out - if item == 0: + if item is None: if self.remoteTriggered is None: item = self.ListView.currentItem() if item is None: From fa8c54355625a0dd9be1a2de171cb2294bf71100 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 5 Apr 2010 08:22:21 +0100 Subject: [PATCH 04/12] Clean up Media mediaitem --- openlp/plugins/media/lib/mediaitem.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 71726636d..e0d0a9db1 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -54,8 +54,8 @@ class MediaMediaItem(MediaManagerItem): self.ListViewWithDnD_class = MediaListView self.PreviewFunction = QtGui.QPixmap(u':/media/media_video.png').toImage() MediaManagerItem.__init__(self, parent, icon, title) + self.single_service_item = False self.ServiceItemIconName = u':/media/media_video.png' - self.MainDisplay = self.parent.maindisplay def initPluginNameVisible(self): self.PluginNameVisible = self.trUtf8('Media') @@ -73,17 +73,16 @@ class MediaMediaItem(MediaManagerItem): self.hasEditIcon = False def generateSlideData(self, service_item, item=None): - items = self.ListView.selectedIndexes() - if len(items) > 1: - return False + if item is None: + item = self.ListView.currentItem() + if item is None: + return False + filename = unicode((item.data(QtCore.Qt.UserRole)).toString()) service_item.title = unicode(self.trUtf8('Media')) service_item.add_capability(ItemCapabilities.RequiresMedia) - for item in items: - bitem = self.ListView.item(item.row()) - filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) - frame = u':/media/image_clapperboard.png' - (path, name) = os.path.split(filename) - service_item.add_from_command(path, name, frame) + frame = u':/media/image_clapperboard.png' + (path, name) = os.path.split(filename) + service_item.add_from_command(path, name, frame) return True def initialise(self): From f5a9f9ed89bf205b7b2bccea9e6af25156721860 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 5 Apr 2010 09:13:45 +0100 Subject: [PATCH 05/12] Update Image thumbnail if original has changed --- openlp/core/lib/mediamanageritem.py | 19 +++++++++++++++++++ openlp/plugins/images/lib/mediaitem.py | 7 +++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index f678bed7a..6ed2775f1 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -352,6 +352,25 @@ class MediaManagerItem(QtGui.QWidget): count += 1 return filelist + def validate(self, file, thumb): + """ + Validates to see if the file still exists or + thumbnail is up to date + """ + filedate = os.stat(file).st_mtime + thumbdate = os.stat(thumb).st_mtime + #if file updated rebuild icon + if filedate > thumbdate: + print "rebuild" + self.icon_from_file(file, thumb) + + def icon_from_file(self, file, thumb): + icon = build_icon(unicode(file)) + pixmap = icon.pixmap(QtCore.QSize(88,50)) + ext = os.path.splitext(thumb)[1].lower() + pixmap.save(thumb, ext[1:]) + return icon + def loadList(self, list): raise NotImplementedError(u'MediaManagerItem.loadList needs to be ' u'defined by the plugin') diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index becf2be9f..072b4924e 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -121,15 +121,14 @@ class ImageMediaItem(MediaManagerItem): def loadList(self, list): for file in list: + print file (path, filename) = os.path.split(unicode(file)) thumb = os.path.join(self.servicePath, filename) if os.path.exists(thumb): + self.validate(file, thumb) icon = build_icon(thumb) else: - icon = build_icon(unicode(file)) - pixmap = icon.pixmap(QtCore.QSize(88,50)) - ext = os.path.splitext(thumb)[1].lower() - pixmap.save(thumb, ext[1:]) + icon = self.icon_from_file(file, thumb) item_name = QtGui.QListWidgetItem(filename) item_name.setIcon(icon) item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file)) From e934c7e623c92b58e73d0ef4c21ad2a1ebc39562 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 5 Apr 2010 12:06:37 +0100 Subject: [PATCH 06/12] Compress Impress previews --- openlp/core/lib/mediamanageritem.py | 2 +- openlp/plugins/images/lib/mediaitem.py | 1 - .../presentations/lib/impresscontroller.py | 16 ++++++++++++---- openlp/plugins/presentations/lib/mediaitem.py | 9 ++++++--- .../presentations/lib/presentationcontroller.py | 8 +++++--- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 6ed2775f1..f68db32fe 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -387,7 +387,7 @@ class MediaManagerItem(QtGui.QWidget): raise NotImplementedError(u'MediaManagerItem.onDeleteClick needs to ' u'be defined by the plugin') - def generateSlideData(self, item, item1): + def generateSlideData(self, service_item, item): raise NotImplementedError(u'MediaManagerItem.generateSlideData needs ' u'to be defined by the plugin') diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 072b4924e..c35c652c7 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -121,7 +121,6 @@ class ImageMediaItem(MediaManagerItem): def loadList(self, list): for file in list: - print file (path, filename) = os.path.split(unicode(file)) thumb = os.path.join(self.servicePath, filename) if os.path.exists(thumb): diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 14e98273e..3e7a17990 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -37,6 +37,8 @@ import logging import os import time +from openlp.core.lib import resize_image + if os.name == u'nt': from win32com.client import Dispatch else: @@ -239,17 +241,22 @@ class ImpressDocument(PresentationDocument): for idx in range(pages.getCount()): page = pages.getByIndex(idx) doc.getCurrentController().setCurrentPage(page) - path = u'%s/%s%s.png'% (thumbdir, self.controller.thumbnailprefix, + path = u'%s/%s%s.png' % (thumbdir, self.controller.thumbnailprefix, unicode(idx + 1)) try: doc.storeToURL(path , props) + preview = resize_image(path, 640, 480) + if os.path.exists(path): + os.remove(path) + preview.save(path, u'png') except: - log.exception(u'%s\nUnable to store preview' % path) + log.exception(u'%s - Unable to store openoffice preview' % path) def create_property(self, name, value): log.debug(u'create property OpenOffice') if os.name == u'nt': - prop = self.controller.manager.Bridge_GetStruct(u'com.sun.star.beans.PropertyValue') + prop = self.controller.manager.\ + Bridge_GetStruct(u'com.sun.star.beans.PropertyValue') else: prop = PropertyValue() prop.Name = name @@ -356,7 +363,8 @@ class ImpressDocument(PresentationDocument): def get_slide_preview_file(self, slide_no): """ - Returns an image path containing a preview for the requested slide + Returns an image path containing a preview for theimpresscontroller.py + requested slide ``slide_no`` The slide an image is required for, starting at 1 diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index ec7a2b705..b761ead12 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -140,10 +140,13 @@ class PresentationMediaItem(MediaManagerItem): self.parent.config.set_list( self.ConfigSection, self.getFileList()) filepath = unicode((item.data(QtCore.Qt.UserRole)).toString()) + #not sure of this has errors + #John please can you look at . for cidx in self.controllers: - doc = self.controllers[cidx].add_doc(filepath) - doc.presentation_deleted() - doc.close_presentation() + if self.controllers[cidx].enabled: + self.controllers[cidx].remove_doc(filepath) + self.controllers[cidx].presentation_deleted() + self.controllers[cidx].close_presentation() def generateSlideData(self, service_item, item=None): items = self.ListView.selectedIndexes() diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index 382d24b8e..145cd4566 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -138,13 +138,15 @@ class PresentationController(object): self.docs.append(doc) return doc - def remove_doc(self, doc): + def remove_doc(self, doc=None): """ Called to remove an open document from the collection """ log.debug(u'remove_doc Presentation') - self.docs.remove(doc) - + if doc is None: + return + if doc in self.docs: + self.docs.remove(doc) class PresentationDocument(object): """ From a866b3049131867d4247b46a25c1ddb40ba7025a Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 6 Apr 2010 18:52:09 +0100 Subject: [PATCH 07/12] Presentation bug fixes --- openlp/plugins/presentations/lib/impresscontroller.py | 2 +- openlp/plugins/presentations/lib/mediaitem.py | 7 +++---- openlp/plugins/presentations/lib/presentationcontroller.py | 6 ++++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 3e7a17990..7b4367a72 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -363,7 +363,7 @@ class ImpressDocument(PresentationDocument): def get_slide_preview_file(self, slide_no): """ - Returns an image path containing a preview for theimpresscontroller.py + Returns an image path containing a preview for the requested slide ``slide_no`` diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index b761ead12..79c8600f0 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -143,10 +143,9 @@ class PresentationMediaItem(MediaManagerItem): #not sure of this has errors #John please can you look at . for cidx in self.controllers: - if self.controllers[cidx].enabled: - self.controllers[cidx].remove_doc(filepath) - self.controllers[cidx].presentation_deleted() - self.controllers[cidx].close_presentation() + doc = self.controllers[cidx].add_doc(filepath) + doc.presentation_deleted() + doc.close_presentation() def generateSlideData(self, service_item, item=None): items = self.ListView.selectedIndexes() diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index 145cd4566..389744b0b 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -115,7 +115,6 @@ class PresentationController(object): """ return False - def start_process(self): """ Loads a running version of the presentation application in the background. @@ -148,6 +147,9 @@ class PresentationController(object): if doc in self.docs: self.docs.remove(doc) + def close_presentation(self): + pass + class PresentationDocument(object): """ Base class for presentation documents to inherit from. @@ -258,7 +260,7 @@ class PresentationDocument(object): Close presentation and clean up objects Triggered by new object being added to SlideController """ - self.controller.delete_doc(self) + self.controller.close_presentation() def is_active(self): """ From 04fa7bda1c1d6ddf6a98c95799d18b0f5712d43a Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 6 Apr 2010 19:14:59 +0100 Subject: [PATCH 08/12] fix missing method --- openlp/plugins/presentations/lib/impresscontroller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 7b4367a72..4ddd20471 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -248,7 +248,7 @@ class ImpressDocument(PresentationDocument): preview = resize_image(path, 640, 480) if os.path.exists(path): os.remove(path) - preview.save(path, u'png') + preview.save(patha, u'png') except: log.exception(u'%s - Unable to store openoffice preview' % path) From b51998c76074278b4adda947b4b58f98a42bc35f Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 6 Apr 2010 19:26:25 +0100 Subject: [PATCH 09/12] Replace missing tags --- openlp/plugins/songs/forms/editverseform.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index b2e3f35b9..d412e3627 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -59,27 +59,27 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def onAddIntro(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[Intro]---\n') + self.VerseTextEdit.insertPlainText(u'---[Intro:1]---\n') self.VerseTextEdit.setFocus() def onAddEnding(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[Ending]---\n') + self.VerseTextEdit.insertPlainText(u'---[Ending:1]---\n') self.VerseTextEdit.setFocus() def onAddOther(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[Other]---\n') + self.VerseTextEdit.insertPlainText(u'---[Other:1]---\n') self.VerseTextEdit.setFocus() def onAddPreChorus(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[Pre-Chorus]---\n') + self.VerseTextEdit.insertPlainText(u'---[Pre-Chorus:1]---\n') self.VerseTextEdit.setFocus() def onAddBridge(self): self.startNewLine() - self.VerseTextEdit.insertPlainText(u'---[Bridge]---\n') + self.VerseTextEdit.insertPlainText(u'---[Bridge:1]---\n') self.VerseTextEdit.setFocus() def onAddChorus(self): From 20cdcde1a198eaa8c2e3528e17b693240e715215 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 6 Apr 2010 19:34:51 +0100 Subject: [PATCH 10/12] Remove print --- openlp/core/lib/mediamanageritem.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index f68db32fe..c5d1f96c7 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -361,7 +361,6 @@ class MediaManagerItem(QtGui.QWidget): thumbdate = os.stat(thumb).st_mtime #if file updated rebuild icon if filedate > thumbdate: - print "rebuild" self.icon_from_file(file, thumb) def icon_from_file(self, file, thumb): From abb3827817f71bd510842d1757a7339aeb0ce600 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 6 Apr 2010 20:16:14 +0100 Subject: [PATCH 11/12] Style fixes --- openlp/core/lib/mediamanageritem.py | 6 +++--- openlp/core/ui/servicemanager.py | 8 ++++---- openlp/plugins/custom/lib/mediaitem.py | 4 ++-- openlp/plugins/media/lib/mediaitem.py | 4 ++-- openlp/plugins/songs/lib/mediaitem.py | 4 ++-- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index c5d1f96c7..9c6593902 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -114,7 +114,7 @@ class MediaManagerItem(QtGui.QWidget): self.Toolbar = None self.remoteTriggered = None self.ServiceItemIconName = None - self.single_service_item = True + self.singleServiceItem = True self.addToServiceItem = False self.PageLayout = QtGui.QVBoxLayout(self) self.PageLayout.setSpacing(0) @@ -422,7 +422,7 @@ class MediaManagerItem(QtGui.QWidget): else: #Is it posssible to process multiple list items to generate multiple #service items? - if self.single_service_item: + if self.singleServiceItem: log.debug(self.PluginNameShort + u' Add requested') service_item = self.buildServiceItem() if service_item: @@ -471,4 +471,4 @@ class MediaManagerItem(QtGui.QWidget): if self.generateSlideData(service_item, item): return service_item else: - return None + return None \ No newline at end of file diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index d0ec4d2df..27ca95d0e 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -235,8 +235,8 @@ class ServiceManager(QtGui.QWidget): self.notesAction.setVisible(False) if serviceItem[u'service_item'].is_capable(ItemCapabilities.AllowsEdit): self.editAction.setVisible(True) - if serviceItem[u'service_item'].\ - is_capable(ItemCapabilities.AllowsMaintain): + if serviceItem[u'service_item']\ + .is_capable(ItemCapabilities.AllowsMaintain): self.maintainAction.setVisible(True) if item.parent() is None: self.notesAction.setVisible(True) @@ -723,8 +723,8 @@ class ServiceManager(QtGui.QWidget): Posts a remote edit message to a plugin to allow item to be edited. """ item, count = self.findServiceItem() - if self.serviceItems[item][u'service_item'].\ - is_capable(ItemCapabilities.AllowsEdit): + if self.serviceItems[item][u'service_item']\ + .is_capable(ItemCapabilities.AllowsEdit): self.remoteEditTriggered = True Receiver.send_message(u'%s_edit' % self.serviceItems[item][u'service_item'].name, u'L:%s' % diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 1dd6b3c13..3c68b6d3d 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -51,7 +51,7 @@ class CustomMediaItem(MediaManagerItem): # be instanced by the base MediaManagerItem self.ListViewWithDnD_class = CustomListView MediaManagerItem.__init__(self, parent, icon, title) - self.single_service_item = False + self.singleServiceItem = False # Holds information about whether the edit is remotly triggered and # which Custom is required. self.remoteCustom = -1 @@ -169,4 +169,4 @@ class CustomMediaItem(MediaManagerItem): else: raw_footer.append(u'') service_item.raw_footer = raw_footer - return True + return True \ No newline at end of file diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index e0d0a9db1..aa1a8f38a 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -54,7 +54,7 @@ class MediaMediaItem(MediaManagerItem): self.ListViewWithDnD_class = MediaListView self.PreviewFunction = QtGui.QPixmap(u':/media/media_video.png').toImage() MediaManagerItem.__init__(self, parent, icon, title) - self.single_service_item = False + self.singleServiceItem = False self.ServiceItemIconName = u':/media/media_video.png' def initPluginNameVisible(self): @@ -106,4 +106,4 @@ class MediaMediaItem(MediaManagerItem): img = QtGui.QPixmap(u':/media/media_video.png').toImage() item_name.setIcon(build_icon(img)) item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file)) - self.ListView.addItem(item_name) + self.ListView.addItem(item_name) \ No newline at end of file diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 9aa5536a9..ad63cd783 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -50,7 +50,7 @@ class SongMediaItem(MediaManagerItem): self.IconPath = u'songs/song' self.ListViewWithDnD_class = SongListView MediaManagerItem.__init__(self, parent, icon, title) - self.single_service_item = False + self.singleServiceItem = False self.edit_song_form = EditSongForm(self.parent.songmanager, self) self.song_maintenance_form = SongMaintenanceForm( self.parent.songmanager, self) @@ -361,4 +361,4 @@ class SongMediaItem(MediaManagerItem): service_item.audit = [ song.title, author_audit, song.copyright, song.ccli_number ] - return True + return True \ No newline at end of file From be7ed23c1d9bc0220bff08f9d7ddcd57b9e29ff8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Wed, 7 Apr 2010 19:32:54 +0100 Subject: [PATCH 12/12] and again --- openlp/core/lib/mediamanageritem.py | 4 ++-- openlp/plugins/images/lib/mediaitem.py | 4 ++-- openlp/plugins/presentations/lib/impresscontroller.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 9c6593902..7ac2a6f0a 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -361,9 +361,9 @@ class MediaManagerItem(QtGui.QWidget): thumbdate = os.stat(thumb).st_mtime #if file updated rebuild icon if filedate > thumbdate: - self.icon_from_file(file, thumb) + self.IconFromFile(file, thumb) - def icon_from_file(self, file, thumb): + def IconFromFile(self, file, thumb): icon = build_icon(unicode(file)) pixmap = icon.pixmap(QtCore.QSize(88,50)) ext = os.path.splitext(thumb)[1].lower() diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index c35c652c7..4d56a7d32 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -127,7 +127,7 @@ class ImageMediaItem(MediaManagerItem): self.validate(file, thumb) icon = build_icon(thumb) else: - icon = self.icon_from_file(file, thumb) + icon = self.IconFromFile(file, thumb) item_name = QtGui.QListWidgetItem(filename) item_name.setIcon(icon) item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file)) @@ -162,4 +162,4 @@ class ImageMediaItem(MediaManagerItem): self.parent.maindisplay.addImageWithText(frame) def onPreviewClick(self): - MediaManagerItem.onPreviewClick(self) + MediaManagerItem.onPreviewClick(self) \ No newline at end of file diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index 4ddd20471..7b4367a72 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -248,7 +248,7 @@ class ImpressDocument(PresentationDocument): preview = resize_image(path, 640, 480) if os.path.exists(path): os.remove(path) - preview.save(patha, u'png') + preview.save(path, u'png') except: log.exception(u'%s - Unable to store openoffice preview' % path)