From c4f8fc86cd4a6f5e2fb0de3067a8681f27489d7d Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 3 Oct 2009 14:08:18 +0100 Subject: [PATCH] Sort out Initialistion order and Plugin Status code --- openlp/core/lib/mediamanageritem.py | 3 +-- openlp/core/lib/plugin.py | 9 +++++++ openlp/core/lib/pluginmanager.py | 26 +++++++++---------- openlp/plugins/audit/auditplugin.py | 3 ++- openlp/plugins/bibles/bibleplugin.py | 3 +-- openlp/plugins/custom/customplugin.py | 3 +-- openlp/plugins/images/imageplugin.py | 12 +++++++-- openlp/plugins/images/lib/mediaitem.py | 1 + openlp/plugins/media/mediaplugin.py | 3 +-- .../presentations/presentationplugin.py | 3 +-- openlp/plugins/songs/songsplugin.py | 3 +-- 11 files changed, 40 insertions(+), 29 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index a59591118..ffd1e8896 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -118,7 +118,7 @@ class MediaManagerItem(QtGui.QWidget): self.requiredIcons() self.setupUi() self.retranslateUi() - self.initialise() + #self.initialise() def requiredIcons(self): """ @@ -131,7 +131,6 @@ class MediaManagerItem(QtGui.QWidget): self.hasFileIcon = False self.hasDeleteIcon = True - def retranslateUi(self): """ This method is called automatically to provide OpenLP with the diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index f78dc8a30..6e6d78828 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -161,6 +161,14 @@ class Plugin(object): self.status = new_status self.config.set_config(u'%s_status' % self.name, self.status) + def is_active(self): + """ + Indicates if the plugin is active + + Returns True or False. + """ + return int(self.status ) == int(PluginStatus.Active) + def get_media_manager_item(self): """ Construct a MediaManagerItem object with all the buttons and things @@ -228,6 +236,7 @@ class Plugin(object): """ Called by the plugin Manager to initialise anything it needs. """ + log.info(u'base class called') pass def finalise(self): diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index e3625f972..3ecd8dd22 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -135,14 +135,14 @@ class PluginManager(object): """ for plugin in self.plugins: if plugin.status is not PluginStatus.Disabled: - media_manager_item = plugin.get_media_manager_item() - if media_manager_item is not None: + plugin.media_item = plugin.get_media_manager_item() + if plugin.media_item is not None: log.debug(u'Inserting media manager item from %s' % \ plugin.name) - mediatoolbox.addItem(media_manager_item, plugin.icon, - media_manager_item.title) + mediatoolbox.addItem(plugin.media_item, plugin.icon, + plugin.media_item.title) if plugin.status == PluginStatus.Inactive: - media_manager_item.hide() + plugin.media_item.hide() def hook_settings_tabs(self, settingsform=None): """ @@ -160,7 +160,7 @@ class PluginManager(object): log.debug(u'Inserting settings tab item from %s' % plugin.name) settingsform.addTab(settings_tab) else: - log.debug(u'No settings in %s' % plugin.name) + log.debug(u'No tab settings in %s' % plugin.name) def hook_import_menu(self, import_menu): """ @@ -173,8 +173,6 @@ class PluginManager(object): for plugin in self.plugins: if plugin.status is not PluginStatus.Disabled: plugin.add_import_menu_item(import_menu) - if plugin.status == PluginStatus.Inactive: - import_menu.hide() def hook_export_menu(self, export_menu): """ @@ -187,8 +185,6 @@ class PluginManager(object): for plugin in self.plugins: if plugin.status is not PluginStatus.Disabled: plugin.add_export_menu_item(export_menu) - if plugin.status == PluginStatus.Inactive: - export_menu.hide() def hook_tools_menu(self, tools_menu): """ @@ -201,23 +197,25 @@ class PluginManager(object): for plugin in self.plugins: if plugin.status is not PluginStatus.Disabled: plugin.add_tools_menu_item(tools_menu) - if plugin.status == PluginStatus.Inactive: - tools_menu.hide() def initialise_plugins(self): """ Loop through all the plugins and give them an opportunity to initialise themselves. """ + log.info(u'initialising plugins') for plugin in self.plugins: - if plugin.status == PluginStatus.Active: + if plugin.is_active(): plugin.initialise() + if plugin.media_item is not None: + plugin.media_item.initialise() def finalise_plugins(self): """ Loop through all the plugins and give them an opportunity to clean themselves up """ + log.info(u'finalising plugins') for plugin in self.plugins: - if plugin.status == PluginStatus.Active: + if plugin.is_active(): plugin.finalise() diff --git a/openlp/plugins/audit/auditplugin.py b/openlp/plugins/audit/auditplugin.py index 5d61daf93..a3bf21856 100644 --- a/openlp/plugins/audit/auditplugin.py +++ b/openlp/plugins/audit/auditplugin.py @@ -58,6 +58,7 @@ class AuditPlugin(Plugin): The actual **Tools** menu item, so that your actions can use it as their parent. """ + log.info(u'add tools menu') self.toolsMenu = tools_menu self.AuditMenu = QtGui.QMenu(tools_menu) self.AuditMenu.setObjectName(u'AuditMenu') @@ -119,7 +120,7 @@ class AuditPlugin(Plugin): self.AuditMenu.menuAction().setVisible(False) def initialise(self): - log.info(u'Plugin Initialising') + log.info(u'audit Initialising') QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'audit_live'), self.onReceiveAudit) QtCore.QObject.connect(Receiver.get_receiver(), diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 3e0a0c72b..d68bd7f9a 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -49,8 +49,7 @@ class BiblePlugin(Plugin): def get_media_manager_item(self): # Create the BibleManagerItem object - self.media_item = BibleMediaItem(self, self.icon, u'Bible Verses') - return self.media_item + return BibleMediaItem(self, self.icon, u'Bible Verses') def add_import_menu_item(self, import_menu): self.ImportBibleItem = QtGui.QAction(import_menu) diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index b9523a7b6..b68f4a5e5 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -54,8 +54,7 @@ class CustomPlugin(Plugin): def get_media_manager_item(self): # Create the CustomManagerItem object - self.media_item = CustomMediaItem(self, self.icon, u'Custom Slides') - return self.media_item + return CustomMediaItem(self, self.icon, u'Custom Slides') def about(self): return u'Custom Plugin
This plugin allows slides to be displayed on the screen in the same way songs are. The difference between this plugin and songs is this plugin provides greater freedom.

This is a core plugin and cannot be made inactive' diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py index 24d07f6be..65b24cf3c 100644 --- a/openlp/plugins/images/imageplugin.py +++ b/openlp/plugins/images/imageplugin.py @@ -39,14 +39,22 @@ class ImagePlugin(Plugin): # Create the plugin icon self.icon = buildIcon(u':/media/media_image.png') + def can_be_disabled(self): + return True + + def initialise(self): + log.info(u'Plugin Initialising') + + def finalise(self): + log.info(u'Plugin Finalise') + def get_settings_tab(self): self.ImageTab = ImageTab() return self.ImageTab def get_media_manager_item(self): # Create the MediaManagerItem object - self.media_item = ImageMediaItem(self, self.icon, u'Images') - return self.media_item + return ImageMediaItem(self, self.icon, u'Images') def about(self): return u'Image Plugin
Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.
From the plugin if the Override background is chosen and an image is selected any somgs which are rendered will use the selected image from the background instead of the one provied by the theme.
' diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 4b5610b9a..f2f2fe149 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -65,6 +65,7 @@ class ImageMediaItem(MediaManagerItem): self.hasEditIcon = False def initialise(self): + log.debug(u'initialise') self.ListView.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) self.ListView.setIconSize(QtCore.QSize(88,50)) diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 400cbe269..2919f9d7d 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -42,8 +42,7 @@ class MediaPlugin(Plugin): def get_media_manager_item(self): # Create the MediaManagerItem object - self.media_item = MediaMediaItem(self, self.icon, u'Media') - return self.media_item + return MediaMediaItem(self, self.icon, u'Media') def about(self): return u'Media Plugin
One day this may provide access to video and audio clips' diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 2d068a8ca..93fc1035f 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -57,9 +57,8 @@ class PresentationPlugin(Plugin): """ Create the Media Manager List """ - self.media_item = PresentationMediaItem( + return PresentationMediaItem( self, self.icon, u'Presentations', self.controllers) - return self.media_item def registerControllers(self, controller): self.controllers[controller.name] = controller diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 83b1ff82b..1c9465257 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -64,8 +64,7 @@ class SongsPlugin(Plugin): Create the MediaManagerItem object, which is displaed in the Media Manager. """ - self.media_item = SongMediaItem(self, self.icon, 'Songs') - return self.media_item + return SongMediaItem(self, self.icon, 'Songs') def add_import_menu_item(self, import_menu): """