From 8328a2dabe0295b4552bb34c2f9365b13792a1fb Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 2 Apr 2010 20:02:38 +0100 Subject: [PATCH] Replace flags with capibilities --- openlp/core/lib/serviceitem.py | 31 +++++++++++++++++--------- openlp/core/ui/servicemanager.py | 8 +++---- openlp/core/ui/slidecontroller.py | 4 ++-- openlp/plugins/bibles/lib/mediaitem.py | 4 ++-- openlp/plugins/custom/lib/mediaitem.py | 6 ++--- openlp/plugins/images/lib/mediaitem.py | 4 ++-- openlp/plugins/media/lib/mediaitem.py | 1 + openlp/plugins/songs/lib/mediaitem.py | 6 ++--- 8 files changed, 37 insertions(+), 27 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index d86597b40..2790468b7 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -42,6 +42,13 @@ class ServiceItemType(object): Image = 2 Command = 3 +capabilities = [ + u'allows_preview', + u'allows_edit', + u'allows_maintain', + u'requires_media' +] + class ServiceItem(object): """ The service item is a base class for the plugins to use to interact with @@ -67,14 +74,20 @@ class ServiceItem(object): self.raw_footer = None self.theme = None self.service_item_type = None - self.edit_enabled = False - self.maintain_allowed = False self._raw_frames = [] self._display_frames = [] self._uuid = unicode(uuid.uuid1()) - self.auto_preview_allowed = False self.notes = u'' self.from_plugin = False + self.capability_state = {} + for capability in capabilities: + self.updateCapability(capability) + + def updateCapability(self, capability, State=False): + self.capability_state[capability] = State + + def getCapability(self, capability): + return self.capability_state[capability] def addIcon(self, icon): """ @@ -207,10 +220,8 @@ class ServiceItem(object): u'type':self.service_item_type, u'audit':self.audit, u'notes':self.notes, - u'preview':self.auto_preview_allowed, - u'edit':self.edit_enabled, - u'maintain':self.maintain_allowed, - u'from_plugin':self.from_plugin + u'from_plugin':self.from_plugin, + u'capabilities':self.capability_state } service_data = [] if self.service_item_type == ServiceItemType.Text: @@ -244,11 +255,9 @@ class ServiceItem(object): self.addIcon(header[u'icon']) self.raw_footer = header[u'footer'] self.audit = header[u'audit'] - self.auto_preview_allowed = header[u'preview'] self.notes = header[u'notes'] - self.edit_enabled = header[u'edit'] - self.maintain_allowed = header[u'maintain'] self.from_plugin = header[u'from_plugin'] + self.capability_state = header[u'capabilities'] if self.service_item_type == ServiceItemType.Text: for slide in serviceitem[u'serviceitem'][u'data']: self._raw_frames.append(slide) @@ -288,7 +297,7 @@ class ServiceItem(object): return self.name.lower() == u'songs' def is_media(self): - return self.name.lower() == u'media' + return self.getCapability(u'requires_media') def is_command(self): return self.service_item_type == ServiceItemType.Command diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 4565a9527..e68adb580 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -233,9 +233,9 @@ class ServiceManager(QtGui.QWidget): self.editAction.setVisible(False) self.maintainAction.setVisible(False) self.notesAction.setVisible(False) - if serviceItem[u'service_item'].edit_enabled: + if serviceItem[u'service_item'].getCapability(u'allows_edit'): self.editAction.setVisible(True) - if serviceItem[u'service_item'].maintain_allowed: + if serviceItem[u'service_item'].getCapability(u'allows_maintain'): self.maintainAction.setVisible(True) if item.parent() is None: self.notesAction.setVisible(True) @@ -713,7 +713,7 @@ class ServiceManager(QtGui.QWidget): get_config(u'auto preview', u'False')): item += 1 if self.serviceItems and item < len(self.serviceItems) and \ - self.serviceItems[item][u'service_item'].auto_preview_allowed: + self.serviceItems[item][u'service_item'].getCapability(u'allows_preview'): self.parent.PreviewController.addServiceManagerItem( self.serviceItems[item][u'service_item'], 0) @@ -722,7 +722,7 @@ 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'].edit_enabled: + if self.serviceItems[item][u'service_item'].getCapability(u'allows_edit'): self.remoteEditTriggered = True Receiver.send_message(u'%s_edit' % self.serviceItems[item][u'service_item'].name, u'L:%s' % diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index c802219b5..85a5dd6bd 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -395,7 +395,7 @@ class SlideController(QtGui.QWidget): self.Toolbar.setVisible(True) self.Mediabar.setVisible(False) self.Toolbar.makeWidgetsInvisible(self.song_edit_list) - if item.edit_enabled and item.from_plugin: + if item.getCapability(u'allows_edit') and item.from_plugin: self.Toolbar.makeWidgetsVisible(self.song_edit_list) elif item.is_media(): self.Toolbar.setVisible(False) @@ -759,7 +759,7 @@ class SlideController(QtGui.QWidget): else: self.mediaObject.stop() self.mediaObject.clearQueue() - file = os.path.join(item.service_item_path, item.get_frame_title()) + file = os.path.join(item.get_frame_path(), item.get_frame_title()) self.mediaObject.setCurrentSource(Phonon.MediaSource(file)) self.onMediaPlay() diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 1abce732f..b5ec922ad 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -449,7 +449,7 @@ class BibleMediaItem(MediaManagerItem): raw_slides = [] raw_footer = [] bible_text = u'' - service_item.auto_preview_allowed = True + service_item.updateCapability(u'allows_preview', True) #If we want to use a 2nd translation / version bible2 = u'' if self.SearchTabWidget.currentIndex() == 0: @@ -608,4 +608,4 @@ class BibleMediaItem(MediaManagerItem): def searchByReference(self, bible, search): log.debug(u'searchByReference %s, %s', bible, search) - self.search_results = self.parent.manager.get_verses(bible, search) \ No newline at end of file + self.search_results = self.parent.manager.get_verses(bible, search) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 744978967..c57a091f2 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -144,11 +144,11 @@ class CustomMediaItem(MediaManagerItem): item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] else: item_id = self.remoteCustom - service_item.auto_preview_allowed = True + service_item.updateCapability(u'allows_preview', True) + service_item.updateCapability(u'allows_edit', True) customSlide = self.parent.custommanager.get_custom(item_id) title = customSlide.title credit = customSlide.credits - service_item.edit_enabled = True service_item.editId = item_id theme = customSlide.theme_name if theme: @@ -166,4 +166,4 @@ class CustomMediaItem(MediaManagerItem): else: raw_footer.append(u'') service_item.raw_footer = raw_footer - return True \ No newline at end of file + return True diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 297a01a73..78beff1be 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -140,8 +140,8 @@ class ImageMediaItem(MediaManagerItem): items = self.ListView.selectedIndexes() if items: service_item.title = self.trUtf8('Image(s)') - service_item.auto_preview_allowed = True - service_item.maintain_allowed = True + service_item.updateCapability(u'allows_preview', True) + service_item.updateCapability(u'allows_maintain', True) for item in items: bitem = self.ListView.item(item.row()) filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index f16ffb5e7..f26b02418 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -82,6 +82,7 @@ class MediaMediaItem(MediaManagerItem): if len(items) > 1: return False service_item.title = unicode(self.trUtf8('Media')) + service_item.updateCapability(u'requires_media', True) for item in items: bitem = self.ListView.item(item.row()) filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 9ac8ec977..c71a2c120 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -290,10 +290,10 @@ class SongMediaItem(MediaManagerItem): item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] else: item_id = self.remoteSong - service_item.auto_preview_allowed = True + service_item.updateCapability(u'allows_preview', True) + service_item.updateCapability(u'allows_edit', True) song = self.parent.songmanager.get_song(item_id) service_item.theme = song.theme_name - service_item.edit_enabled = True service_item.editId = item_id if song.lyrics.startswith(u'