diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py
index 06e80b7ca..f74ba63a9 100644
--- a/openlp/core/lib/mediamanageritem.py
+++ b/openlp/core/lib/mediamanageritem.py
@@ -197,61 +197,43 @@ class MediaManagerItem(QtGui.QWidget):
"""
Create buttons for the media item toolbar
"""
+ toolbar_actions = []
## Import Button ##
if self.hasImportIcon:
- import_string = self.plugin.getString(StringContent.Import)
- self.addToolbarButton(
- import_string[u'title'],
- import_string[u'tooltip'],
- u':/general/general_import.png', self.onImportClick)
+ toolbar_actions.append([StringContent.Import,
+ u':/general/general_import.png', self.onImportClick])
## Load Button ##
if self.hasFileIcon:
- load_string = self.plugin.getString(StringContent.Load)
- self.addToolbarButton(
- load_string[u'title'],
- load_string[u'tooltip'],
- u':/general/general_open.png', self.onFileClick)
+ toolbar_actions.append([StringContent.Load,
+ u':/general/general_open.png', self.onFileClick])
## New Button ##
if self.hasNewIcon:
- new_string = self.plugin.getString(StringContent.New)
- self.addToolbarButton(
- new_string[u'title'],
- new_string[u'tooltip'],
- u':/general/general_new.png', self.onNewClick)
+ toolbar_actions.append([StringContent.New,
+ u':/general/general_new.png', self.onNewClick])
## Edit Button ##
if self.hasEditIcon:
- edit_string = self.plugin.getString(StringContent.Edit)
- self.addToolbarButton(
- edit_string[u'title'],
- edit_string[u'tooltip'],
- u':/general/general_edit.png', self.onEditClick)
+ toolbar_actions.append([StringContent.Edit,
+ u':/general/general_edit.png', self.onEditClick])
## Delete Button ##
if self.hasDeleteIcon:
- delete_string = self.plugin.getString(StringContent.Delete)
- self.addToolbarButton(
- delete_string[u'title'],
- delete_string[u'tooltip'],
- u':/general/general_delete.png', self.onDeleteClick)
+ toolbar_actions.append([StringContent.Delete,
+ u':/general/general_delete.png', self.onDeleteClick])
## Separator Line ##
self.addToolbarSeparator()
## Preview ##
- preview_string = self.plugin.getString(StringContent.Preview)
- self.addToolbarButton(
- preview_string[u'title'],
- preview_string[u'tooltip'],
- u':/general/general_preview.png', self.onPreviewClick)
+ toolbar_actions.append([StringContent.Preview,
+ u':/general/general_preview.png', self.onPreviewClick])
## Live Button ##
- live_string = self.plugin.getString(StringContent.Live)
- self.addToolbarButton(
- live_string[u'title'],
- live_string[u'tooltip'],
- u':/general/general_live.png', self.onLiveClick)
+ toolbar_actions.append([StringContent.Live,
+ u':/general/general_live.png', self.onLiveClick])
## Add to service Button ##
- service_string = self.plugin.getString(StringContent.Service)
- self.addToolbarButton(
- service_string[u'title'],
- service_string[u'tooltip'],
- u':/general/general_add.png', self.onAddClick)
+ toolbar_actions.append([StringContent.Service,
+ u':/general/general_add.png', self.onAddClick])
+ for action in toolbar_actions:
+ self.addToolbarButton(
+ self.plugin.getString(action[0])[u'title'],
+ self.plugin.getString(action[0])[u'tooltip'],
+ action[1], action[2])
def addListViewToToolBar(self):
"""
diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py
index cfd3fb4c2..a073d31ea 100644
--- a/openlp/core/lib/plugin.py
+++ b/openlp/core/lib/plugin.py
@@ -114,7 +114,8 @@ class Plugin(QtCore.QObject):
"""
log.info(u'loaded')
- def __init__(self, name, version=None, pluginHelpers=None):
+ def __init__(self, name, version=None, pluginHelpers=None,
+ mediaItemClass=None, settingsTabClass=None):
"""
This is the constructor for the plugin object. This provides an easy
way for descendent plugins to populate common data. This method *must*
@@ -132,6 +133,12 @@ class Plugin(QtCore.QObject):
``pluginHelpers``
Defaults to *None*. A list of helper objects.
+
+ ``mediaItemClass``
+ The class name of the plugin's media item.
+
+ ``settingsTabClass``
+ The class name of the plugin's settings tab.
"""
QtCore.QObject.__init__(self)
self.name = name
@@ -141,6 +148,8 @@ class Plugin(QtCore.QObject):
self.version = version
self.settingsSection = self.name.lower()
self.icon = None
+ self.mediaItemClass = mediaItemClass
+ self.settingsTabClass = settingsTabClass
self.weight = 0
self.status = PluginStatus.Inactive
# Set up logging
@@ -199,7 +208,9 @@ class Plugin(QtCore.QObject):
Construct a MediaManagerItem object with all the buttons and things
you need, and return it for integration into openlp.org.
"""
- pass
+ if self.mediaItemClass:
+ return self.mediaItemClass(self, self, self.icon)
+ return None
def addImportMenuItem(self, importMenu):
"""
@@ -230,9 +241,13 @@ class Plugin(QtCore.QObject):
def getSettingsTab(self):
"""
- Create a tab for the settings window.
+ Create a tab for the settings window to display the configurable
+ options for this plugin to the user.
"""
- pass
+ if self.settingsTabClass:
+ return self.settingsTabClass(self.name,
+ self.getString(StringContent.VisibleName)[u'title'])
+ return None
def addToMenu(self, menubar):
"""
diff --git a/openlp/core/lib/rendermanager.py b/openlp/core/lib/rendermanager.py
index 5896ca4e6..32a29915f 100644
--- a/openlp/core/lib/rendermanager.py
+++ b/openlp/core/lib/rendermanager.py
@@ -68,7 +68,6 @@ class RenderManager(object):
self.theme_level = u''
self.override_background = None
self.theme_data = None
- self.alertTab = None
self.force_page = False
def update_display(self):
@@ -261,4 +260,4 @@ class RenderManager(object):
log.debug(u'calculate default %d, %d, %f',
self.width, self.height, self.screen_ratio )
# 90% is start of footer
- self.footer_start = int(self.height * 0.90)
\ No newline at end of file
+ self.footer_start = int(self.height * 0.90)
diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py
index c4ab75aac..05a301bd7 100644
--- a/openlp/core/ui/maindisplay.py
+++ b/openlp/core/ui/maindisplay.py
@@ -65,7 +65,6 @@ class MainDisplay(DisplayWidget):
self.parent = parent
self.screens = screens
self.isLive = live
- self.alertTab = None
self.hideMode = None
self.override = {}
mainIcon = build_icon(u':/icon/openlp-logo-16x16.png')
diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py
index c6b58ac56..fc6cc04fa 100644
--- a/openlp/core/ui/slidecontroller.py
+++ b/openlp/core/ui/slidecontroller.py
@@ -415,7 +415,6 @@ class SlideController(QtGui.QWidget):
# rebuild display as screen size changed
self.display = MainDisplay(self, self.screens, self.isLive)
self.display.imageManager = self.parent.renderManager.image_manager
- self.display.alertTab = self.alertTab
self.display.setup()
if self.isLive:
self.__addActionsToWidget(self.display)
diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py
index 443ec1e84..136d775a5 100644
--- a/openlp/plugins/alerts/alertsplugin.py
+++ b/openlp/plugins/alerts/alertsplugin.py
@@ -40,21 +40,14 @@ class AlertsPlugin(Plugin):
log.info(u'Alerts Plugin loaded')
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'Alerts', u'1.9.4', plugin_helpers)
+ Plugin.__init__(self, u'Alerts', u'1.9.4', plugin_helpers,
+ settingsTabClass=AlertsTab)
self.weight = -3
self.icon = build_icon(u':/plugins/plugin_alerts.png')
self.alertsmanager = AlertsManager(self)
self.manager = Manager(u'alerts', init_schema)
- self.visible_name = self.getString(StringContent.VisibleName)
self.alertForm = AlertForm(self)
- def getSettingsTab(self):
- """
- Return the settings tab for the Alerts plugin
- """
- self.alertsTab = AlertsTab(self, self.visible_name[u'title'])
- return self.alertsTab
-
def addToolsMenuItem(self, tools_menu):
"""
Give the alerts plugin the opportunity to add items to the
@@ -81,7 +74,7 @@ class AlertsPlugin(Plugin):
log.info(u'Alerts Initialising')
Plugin.initialise(self)
self.toolsAlertItem.setVisible(True)
- self.liveController.alertTab = self.alertsTab
+ self.liveController.alertTab = self.settings_tab
def finalise(self):
"""
diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py
index 6fe0ae132..f69099bf1 100644
--- a/openlp/plugins/alerts/lib/alertsmanager.py
+++ b/openlp/plugins/alerts/lib/alertsmanager.py
@@ -84,7 +84,7 @@ class AlertsManager(QtCore.QObject):
if len(self.alertList) == 0:
return
text = self.alertList.pop(0)
- alertTab = self.parent.alertsTab
+ alertTab = self.parent.settings_tab
self.parent.liveController.display.alert(text)
# Check to see if we have a timer running.
if self.timer_id == 0:
@@ -103,4 +103,4 @@ class AlertsManager(QtCore.QObject):
self.parent.liveController.display.alert(u'')
self.killTimer(self.timer_id)
self.timer_id = 0
- self.generateAlert()
\ No newline at end of file
+ self.generateAlert()
diff --git a/openlp/plugins/alerts/lib/alertstab.py b/openlp/plugins/alerts/lib/alertstab.py
index 4090503db..48a4527ed 100644
--- a/openlp/plugins/alerts/lib/alertstab.py
+++ b/openlp/plugins/alerts/lib/alertstab.py
@@ -33,10 +33,8 @@ class AlertsTab(SettingsTab):
"""
AlertsTab is the alerts settings tab in the settings dialog.
"""
- def __init__(self, parent, visible_title):
- self.parent = parent
- self.manager = parent.manager
- SettingsTab.__init__(self, parent.name, visible_title)
+ def __init__(self, name, visible_title):
+ SettingsTab.__init__(self, name, visible_title)
def setupUi(self):
self.setObjectName(u'AlertsTab')
diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py
index 89102a8eb..e3447cfdd 100644
--- a/openlp/plugins/bibles/bibleplugin.py
+++ b/openlp/plugins/bibles/bibleplugin.py
@@ -38,7 +38,8 @@ class BiblePlugin(Plugin):
log.info(u'Bible Plugin loaded')
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'Bibles', u'1.9.4', plugin_helpers)
+ Plugin.__init__(self, u'Bibles', u'1.9.4', plugin_helpers,
+ BibleMediaItem, BiblesTab)
self.weight = -9
self.icon_path = u':/plugins/plugin_bibles.png'
self.icon = build_icon(self.icon_path)
@@ -62,14 +63,6 @@ class BiblePlugin(Plugin):
self.importBibleItem.setVisible(False)
self.exportBibleItem.setVisible(False)
- def getSettingsTab(self):
- visible_name = self.getString(StringContent.VisibleName)
- return BiblesTab(self.name, visible_name[u'title'])
-
- def getMediaManagerItem(self):
- # Create the BibleManagerItem object.
- return BibleMediaItem(self, self, self.icon)
-
def addImportMenuItem(self, import_menu):
self.importBibleItem = QtGui.QAction(import_menu)
self.importBibleItem.setObjectName(u'importBibleItem')
diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py
index f20fbc9cd..92546cd4f 100644
--- a/openlp/plugins/custom/customplugin.py
+++ b/openlp/plugins/custom/customplugin.py
@@ -48,21 +48,14 @@ class CustomPlugin(Plugin):
log.info(u'Custom Plugin loaded')
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'Custom', u'1.9.4', plugin_helpers)
+ Plugin.__init__(self, u'Custom', u'1.9.4', plugin_helpers,
+ CustomMediaItem, CustomTab)
self.weight = -5
self.manager = Manager(u'custom', init_schema)
self.edit_custom_form = EditCustomForm(self.manager)
self.icon_path = u':/plugins/plugin_custom.png'
self.icon = build_icon(self.icon_path)
- def getSettingsTab(self):
- visible_name = self.getString(StringContent.VisibleName)
- return CustomTab(self.name, visible_name[u'title'])
-
- def getMediaManagerItem(self):
- # Create the ManagerItem object
- return CustomMediaItem(self, self, self.icon)
-
def about(self):
about_text = translate('CustomPlugin', 'Custom Plugin'
'
The custom plugin provides the ability to set up custom '
diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py
index 2642e3055..6b64598fc 100644
--- a/openlp/plugins/images/imageplugin.py
+++ b/openlp/plugins/images/imageplugin.py
@@ -35,15 +35,12 @@ class ImagePlugin(Plugin):
log.info(u'Image Plugin loaded')
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'Images', u'1.9.4', plugin_helpers)
+ Plugin.__init__(self, u'Images', u'1.9.4', plugin_helpers,
+ ImageMediaItem)
self.weight = -7
self.icon_path = u':/plugins/plugin_images.png'
self.icon = build_icon(self.icon_path)
- def getMediaManagerItem(self):
- # Create the MediaManagerItem object.
- return ImageMediaItem(self, self, self.icon)
-
def about(self):
about_text = translate('ImagePlugin', 'Image Plugin'
'
The image plugin provides displaying of images.
One '
diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py
index 800d6d051..7fb0ed0c1 100644
--- a/openlp/plugins/media/lib/mediaitem.py
+++ b/openlp/plugins/media/lib/mediaitem.py
@@ -138,6 +138,7 @@ class MediaMediaItem(MediaManagerItem):
return False
def initialise(self):
+ self.listView.clear()
self.listView.setIconSize(QtCore.QSize(88, 50))
self.loadList(SettingsManager.load_list(self.settingsSection,
self.settingsSection))
diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py
index 461fbf4ae..c51b53a9a 100644
--- a/openlp/plugins/media/lib/mediatab.py
+++ b/openlp/plugins/media/lib/mediatab.py
@@ -32,8 +32,8 @@ class MediaTab(SettingsTab):
"""
MediaTab is the Media settings tab in the settings dialog.
"""
- def __init__(self, title):
- SettingsTab.__init__(self, title)
+ def __init__(self, title, visible_title):
+ SettingsTab.__init__(self, title, visible_title)
def setupUi(self):
self.setObjectName(u'MediaTab')
@@ -53,9 +53,8 @@ class MediaTab(SettingsTab):
self.onUsePhononCheckBoxChanged)
def retranslateUi(self):
- self.tabTitleVisible = translate('MediaPlugin.MediaTab', 'Media')
- self.mediaModeGroupBox.setTitle(translate('MediaPlugin.MediaTab',
- 'Media Display'))
+ self.mediaModeGroupBox.setTitle(
+ translate('MediaPlugin.MediaTab', 'Media Display'))
self.usePhononCheckBox.setText(
translate('MediaPlugin.MediaTab', 'Use Phonon for video playback'))
diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py
index 3ebb77171..b9db9b8c1 100644
--- a/openlp/plugins/media/mediaplugin.py
+++ b/openlp/plugins/media/mediaplugin.py
@@ -38,7 +38,8 @@ class MediaPlugin(Plugin):
log.info(u'%s MediaPlugin loaded', __name__)
def __init__(self, plugin_helpers):
- Plugin.__init__(self, u'Media', u'1.9.4', plugin_helpers)
+ Plugin.__init__(self, u'Media', u'1.9.4', plugin_helpers,
+ MediaMediaItem, MediaTab)
self.weight = -6
self.icon_path = u':/plugins/plugin_media.png'
self.icon = build_icon(self.icon_path)
@@ -75,13 +76,6 @@ class MediaPlugin(Plugin):
mimetype = u''
return list, mimetype
- def getSettingsTab(self):
- return MediaTab(self.name)
-
- def getMediaManagerItem(self):
- # Create the MediaManagerItem object.
- return MediaMediaItem(self, self, self.icon)
-
def about(self):
about_text = translate('MediaPlugin', 'Media Plugin'
'
The media plugin provides playback of audio and video.')
diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py
index dbc56a61c..b513d4ff7 100644
--- a/openlp/plugins/remotes/remoteplugin.py
+++ b/openlp/plugins/remotes/remoteplugin.py
@@ -38,7 +38,8 @@ class RemotesPlugin(Plugin):
"""
remotes constructor
"""
- Plugin.__init__(self, u'Remotes', u'1.9.4', plugin_helpers)
+ Plugin.__init__(self, u'Remotes', u'1.9.4', plugin_helpers,
+ settingsTabClass=RemoteTab)
self.icon = build_icon(u':/plugins/plugin_remote.png')
self.weight = -1
self.server = None
@@ -61,13 +62,6 @@ class RemotesPlugin(Plugin):
if self.server:
self.server.close()
- def getSettingsTab(self):
- """
- Create the settings Tab
- """
- visible_name = self.getString(StringContent.VisibleName)
- return RemoteTab(self.name, visible_name[u'title'])
-
def about(self):
"""
Information about this plugin
diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py
index ef20d15ae..646e8e86e 100644
--- a/openlp/plugins/songs/songsplugin.py
+++ b/openlp/plugins/songs/songsplugin.py
@@ -51,17 +51,14 @@ class SongsPlugin(Plugin):
"""
Create and set up the Songs plugin.
"""
- Plugin.__init__(self, u'Songs', u'1.9.4', plugin_helpers)
+ Plugin.__init__(self, u'Songs', u'1.9.4', plugin_helpers,
+ SongMediaItem, SongsTab)
self.weight = -10
self.manager = Manager(u'songs', init_schema)
self.icon_path = u':/plugins/plugin_songs.png'
self.icon = build_icon(self.icon_path)
self.whitespace = re.compile(r'\W+', re.UNICODE)
- def getSettingsTab(self):
- visible_name = self.getString(StringContent.VisibleName)
- return SongsTab(self.name, visible_name[u'title'])
-
def initialise(self):
log.info(u'Songs Initialising')
Plugin.initialise(self)
@@ -69,13 +66,6 @@ class SongsPlugin(Plugin):
self.mediaItem.displayResultsSong(
self.manager.get_all_objects(Song, order_by_ref=Song.search_title))
- def getMediaManagerItem(self):
- """
- Create the MediaManagerItem object, which is displaed in the
- Media Manager.
- """
- return SongMediaItem(self, self, self.icon)
-
def addImportMenuItem(self, import_menu):
"""
Give the Songs plugin the opportunity to add items to the