forked from openlp/openlp
Replace flags with capibilities
This commit is contained in:
parent
558ffc2d23
commit
8328a2dabe
@ -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
|
||||
|
@ -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' %
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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())
|
||||
|
@ -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())
|
||||
|
@ -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'<?xml version='):
|
||||
songXML = SongXMLParser(song.lyrics)
|
||||
|
Loading…
Reference in New Issue
Block a user