From 0408a0a3201c5eb94aee5c125e32344f699b1497 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 2 Oct 2009 20:06:07 +0100 Subject: [PATCH 1/6] Start of Active / Inactive work --- openlp/core/lib/plugin.py | 30 +++++++++++--------- openlp/core/lib/pluginmanager.py | 37 +++++++++++++++---------- openlp/core/ui/plugindialoglistform.py | 12 +++++++- openlp/plugins/audit/auditplugin.py | 12 ++------ openlp/plugins/remotes/lib/remotetab.py | 1 - openlp/plugins/remotes/remoteplugin.py | 19 ++----------- 6 files changed, 56 insertions(+), 55 deletions(-) diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index 79f58a788..f78dc8a30 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -31,8 +31,9 @@ class PluginStatus(object): """ Defines the status of the plugin """ - Active = 1 - Inactive = 2 + Active = 0 + Inactive = 1 + Disabled = 2 class Plugin(object): """ @@ -85,17 +86,6 @@ class Plugin(object): ``about()`` Used in the plugin manager, when a person clicks on the 'About' button. - ``save(data)`` - A method to convert the plugin's data to a string to be stored in the - Service file. - - ``load(string)`` - A method to convert the string from a Service file into the plugin's - own data format. - - ``render(theme, screen_number)`` - A method used to render something to the screen, given the current theme - and screen number. """ global log log = logging.getLogger(u'Plugin') @@ -157,6 +147,20 @@ class Plugin(object): """ return False + def set_status(self): + """ + Sets the status of the plugin + """ + self.status = self.config.get_config(\ + u'%s_status' % self.name, PluginStatus.Inactive) + + def toggle_status(self, new_status): + """ + Changes the status of the plugin and remembers it + """ + self.status = new_status + self.config.set_config(u'%s_status' % self.name, self.status) + def get_media_manager_item(self): """ Construct a MediaManagerItem object with all the buttons and things diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index 13c17b3a6..0d5dd6a82 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -105,7 +105,12 @@ class PluginManager(object): for plugin in plugins_list: if plugin.check_pre_conditions(): log.debug(u'Plugin %s active', unicode(plugin.name)) - plugin.status = PluginStatus.Active + if plugin.can_be_disabled(): + plugin.set_status() + else: + plugin.status = PluginStatus.Active + else: + plugin.status = PluginStatus.Disabled self.plugins.append(plugin) def order_by_weight(self, x, y): @@ -129,13 +134,14 @@ class PluginManager(object): The Media Manager itself. """ for plugin in self.plugins: - if plugin.status == PluginStatus.Active: - media_manager_item = plugin.get_media_manager_item() - if media_manager_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) + media_manager_item = plugin.get_media_manager_item() + if media_manager_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) + if plugin.status == PluginStatus.Inactive: + media_manager_item.hide() def hook_settings_tabs(self, settingsform=None): """ @@ -163,8 +169,9 @@ class PluginManager(object): The Import menu. """ for plugin in self.plugins: - if plugin.status == PluginStatus.Active: - plugin.add_import_menu_item(import_menu) + plugin.add_import_menu_item(import_menu) + if plugin.status == PluginStatus.Inactive: + import_menu.hide() def hook_export_menu(self, export_menu): """ @@ -175,8 +182,9 @@ class PluginManager(object): The Export menu. """ for plugin in self.plugins: - if plugin.status == PluginStatus.Active: - plugin.add_export_menu_item(export_menu) + plugin.add_export_menu_item(export_menu) + if plugin.status == PluginStatus.Inactive: + export_menu.hide() def hook_tools_menu(self, tools_menu): """ @@ -187,8 +195,9 @@ class PluginManager(object): The Tools menu. """ for plugin in self.plugins: - if plugin.status == PluginStatus.Active: - plugin.add_tools_menu_item(tools_menu) + plugin.add_tools_menu_item(tools_menu) + if plugin.status == PluginStatus.Inactive: + tools_menu.hide() def initialise_plugins(self): """ diff --git a/openlp/core/ui/plugindialoglistform.py b/openlp/core/ui/plugindialoglistform.py index 5826578f9..8062cb86f 100644 --- a/openlp/core/ui/plugindialoglistform.py +++ b/openlp/core/ui/plugindialoglistform.py @@ -96,7 +96,9 @@ class PluginForm(QtGui.QDialog): self.PluginViewList.setCellWidget(row, 2, combo) combo.addItem(translate(u'PluginForm', u'Active')) combo.addItem(translate(u'PluginForm', u'Inactive')) -# if plugin.status == PluginStatus.Active: + QtCore.QObject.connect(combo, + QtCore.SIGNAL(u'activated(int)'), self.statusComboChanged) + combo.setCurrentIndex(int(plugin.status)) self.PluginViewList.setRowHeight(row, 25) else: item3 = QtGui.QTableWidgetItem( @@ -114,3 +116,11 @@ class PluginForm(QtGui.QDialog): if text is not None: self.AboutTextLabel.setText(translate(u'PluginList', text)) + def statusComboChanged(self, status): + row = self.PluginViewList.currentRow() + log.debug(u'Combo status changed %s for row %s' %(status, row)) + self.parent.plugin_manager.plugins[row].toggle_status(status) + if status == PluginStatus.Active: + self.parent.plugin_manager.plugins[row].initialise() + else: + self.parent.plugin_manager.plugins[row].finalise() diff --git a/openlp/plugins/audit/auditplugin.py b/openlp/plugins/audit/auditplugin.py index 223426a63..162267d59 100644 --- a/openlp/plugins/audit/auditplugin.py +++ b/openlp/plugins/audit/auditplugin.py @@ -45,16 +45,8 @@ class AuditPlugin(Plugin): self.icon = buildIcon(u':/media/media_image.png') self.auditfile = None - def check_pre_conditions(self): - """ - Check to see if auditing is required - """ - log.debug(u'check_pre_conditions') - #Lets see if audit is required - if int(self.config.get_config(u'startup', 0)) == QtCore.Qt.Checked: - return True - else: - return False + def can_be_disabled(self): + return True def add_tools_menu_item(self, tools_menu): """ diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py index a51a6d9ec..2fc0439e8 100644 --- a/openlp/plugins/remotes/lib/remotetab.py +++ b/openlp/plugins/remotes/lib/remotetab.py @@ -71,4 +71,3 @@ class RemoteTab(SettingsTab): u'remote port', unicode(self.RemotePortSpinBox.value())) self.config.set_config( u'startup', unicode(self.RemoteActive.checkState())) - diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index 2365057a4..0a2c86909 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -38,25 +38,16 @@ class RemotesPlugin(Plugin): def can_be_disabled(self): return True - def check_pre_conditions(self): - """ - Check to see if remotes is required - """ - log.debug(u'check_pre_conditions') - #Lets see if Remote is required - if int(self.config.get_config(u'startup', 0)) == QtCore.Qt.Checked: - return True - else: - return False - def initialise(self): + log.debug(u'initialise') self.server = QtNetwork.QUdpSocket() self.server.bind(int(self.config.get_config(u'remote port', 4316))) QtCore.QObject.connect(self.server, QtCore.SIGNAL(u'readyRead()'), self.readData) def finalise(self): - pass + log.debug(u'finalise') + self.server.close() def about(self): return u'Remote Plugin
This plugin provides the ability to send messages to a running version of openlp on a different computer.
The Primary use for this would be to send alerts from a creche' @@ -78,11 +69,7 @@ class RemotesPlugin(Plugin): log.info(u'Sending event %s ', datagram) pos = datagram.find(u':') event = unicode(datagram[:pos].lower()) - if event == u'alert': Receiver().send_message(u'alert_text', unicode(datagram[pos + 1:])) if event == u'next_slide': Receiver().send_message(u'live_slide_next') - - - From 37a9b5fb4ed1587cd0bcc7b90416a03c65b06949 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 3 Oct 2009 08:25:41 +0100 Subject: [PATCH 2/6] Plugin List Combo boxhandling finished --- openlp/core/ui/plugindialoglistform.py | 31 ++++++++++++++++++------- openlp/plugins/audit/auditplugin.py | 16 +++++++++---- openlp/plugins/remotes/lib/remotetab.py | 13 ----------- openlp/plugins/remotes/remoteplugin.py | 4 +++- 4 files changed, 36 insertions(+), 28 deletions(-) diff --git a/openlp/core/ui/plugindialoglistform.py b/openlp/core/ui/plugindialoglistform.py index 8062cb86f..2a5773cb0 100644 --- a/openlp/core/ui/plugindialoglistform.py +++ b/openlp/core/ui/plugindialoglistform.py @@ -11,6 +11,20 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.lib import translate, PluginStatus, buildIcon +class PluginCombo(QtGui.QComboBox): + """ + Customised version of QTableWidget which can respond to keyboard + events. + """ + def __init__(self, parent=None, plugin=None): + QtGui.QComboBox.__init__(self, parent) + self.parent = parent + self.plugin = plugin + + def enterEvent(self, event): + self.parent.activePlugin = self.plugin + event.ignore() + class PluginForm(QtGui.QDialog): global log log = logging.getLogger(u'PluginForm') @@ -18,6 +32,7 @@ class PluginForm(QtGui.QDialog): def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.parent = parent + self.activePlugin = None self.setupUi(self) log.debug(u'Defined') @@ -57,7 +72,6 @@ class PluginForm(QtGui.QDialog): self.AboutTextLabel.setWordWrap(True) self.AboutTextLabel.setObjectName("AboutTextLabel") - self.retranslateUi(PluginForm) QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'accepted()'), PluginForm.close) @@ -92,13 +106,13 @@ class PluginForm(QtGui.QDialog): self.PluginViewList.setItem(row, 0, item1) self.PluginViewList.setItem(row, 1, item2) if plugin.can_be_disabled(): - combo = QtGui.QComboBox() + combo = PluginCombo(self, plugin) self.PluginViewList.setCellWidget(row, 2, combo) combo.addItem(translate(u'PluginForm', u'Active')) combo.addItem(translate(u'PluginForm', u'Inactive')) - QtCore.QObject.connect(combo, - QtCore.SIGNAL(u'activated(int)'), self.statusComboChanged) combo.setCurrentIndex(int(plugin.status)) + QtCore.QObject.connect(combo, + QtCore.SIGNAL(u'currentIndexChanged(int)'), self.statusComboChanged) self.PluginViewList.setRowHeight(row, 25) else: item3 = QtGui.QTableWidgetItem( @@ -117,10 +131,9 @@ class PluginForm(QtGui.QDialog): self.AboutTextLabel.setText(translate(u'PluginList', text)) def statusComboChanged(self, status): - row = self.PluginViewList.currentRow() - log.debug(u'Combo status changed %s for row %s' %(status, row)) - self.parent.plugin_manager.plugins[row].toggle_status(status) + log.debug(u'Combo status changed %s for plugin %s' %(status, self.activePlugin.name)) + self.activePlugin.toggle_status(status) if status == PluginStatus.Active: - self.parent.plugin_manager.plugins[row].initialise() + self.activePlugin.initialise() else: - self.parent.plugin_manager.plugins[row].finalise() + self.activePlugin.finalise() diff --git a/openlp/plugins/audit/auditplugin.py b/openlp/plugins/audit/auditplugin.py index 162267d59..97fdb279d 100644 --- a/openlp/plugins/audit/auditplugin.py +++ b/openlp/plugins/audit/auditplugin.py @@ -43,7 +43,7 @@ class AuditPlugin(Plugin): self.weight = -4 # Create the plugin icon self.icon = buildIcon(u':/media/media_image.png') - self.auditfile = None + self.auditmanager = None def can_be_disabled(self): return True @@ -115,9 +115,9 @@ class AuditPlugin(Plugin): QtCore.QObject.connect(self.AuditReport, QtCore.SIGNAL(u'triggered()'), self.onAuditReport) - def get_settings_tab(self): - self.AuditTab = AuditTab() - return self.AuditTab +# def get_settings_tab(self): +# self.AuditTab = AuditTab() +# return self.AuditTab def initialise(self): log.info(u'Plugin Initialising') @@ -128,9 +128,15 @@ class AuditPlugin(Plugin): self.auditActive = str_to_bool( self.config.get_config(u'audit active', False)) self.AuditStatus.setChecked(self.auditActive) - self.auditmanager = AuditManager(self.config) + if self.auditmanager is None: + self.auditmanager = AuditManager(self.config) self.auditdeleteform = AuditDeleteForm(self.auditmanager) self.auditdetailform = AuditDetailForm(self.auditmanager) + self.AuditMenu.setVisible(True) + + def finalise(self): + log.info(u'Plugin Finalise') + self.AuditMenu.setVisible(True) def toggleAuditState(self): self.auditActive = not self.auditActive diff --git a/openlp/plugins/remotes/lib/remotetab.py b/openlp/plugins/remotes/lib/remotetab.py index 2fc0439e8..5a6acf214 100644 --- a/openlp/plugins/remotes/lib/remotetab.py +++ b/openlp/plugins/remotes/lib/remotetab.py @@ -44,30 +44,17 @@ class RemoteTab(SettingsTab): self.RemotePortSpinBox.setObjectName(u'RemotePortSpinBox') self.RemotePortSpinBox.setMaximum(32767) self.RemoteModeLayout.addWidget(self.RemotePortSpinBox) - self.RemoteActive = QtGui.QCheckBox(self.RemoteModeGroupBox) - self.RemoteActive.setObjectName(u'RemotePortSpinBox') - self.RemoteModeLayout.addWidget(self.RemoteActive) - self.WarningLabel = QtGui.QLabel(self.RemoteModeGroupBox) - self.WarningLabel.setObjectName(u'WarningLabel') - self.RemoteModeLayout.addWidget(self.WarningLabel) self.RemoteLayout.setWidget( 0, QtGui.QFormLayout.LabelRole, self.RemoteModeGroupBox) def retranslateUi(self): self.RemoteModeGroupBox.setTitle( translate(u'RemoteTab', u'Remotes Receiver Port')) - self.RemoteActive.setText(translate(u'RemoteTab', 'Remote available:')) - self.WarningLabel.setText(translate(u'RemoteTab', - u'A restart is needed for this change to become effective')) def load(self): self.RemotePortSpinBox.setValue( int(self.config.get_config(u'remote port', 4316))) - self.RemoteActive.setChecked( - int(self.config.get_config(u'startup', 0))) def save(self): self.config.set_config( u'remote port', unicode(self.RemotePortSpinBox.value())) - self.config.set_config( - u'startup', unicode(self.RemoteActive.checkState())) diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index 0a2c86909..6c56036a0 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -34,6 +34,7 @@ class RemotesPlugin(Plugin): # Call the parent constructor Plugin.__init__(self, u'Remotes', u'1.9.0', plugin_helpers) self.weight = -1 + self.server = None def can_be_disabled(self): return True @@ -47,7 +48,8 @@ class RemotesPlugin(Plugin): def finalise(self): log.debug(u'finalise') - self.server.close() + if self.server is not None: + self.server.close() def about(self): return u'Remote Plugin
This plugin provides the ability to send messages to a running version of openlp on a different computer.
The Primary use for this would be to send alerts from a creche' From 9ec94494e83375c52918c72398649da54b656441 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 3 Oct 2009 12:07:58 +0100 Subject: [PATCH 3/6] Audit can now be disabled dynamically --- openlp/core/lib/pluginmanager.py | 51 ++++++++++++----------- openlp/plugins/audit/auditplugin.py | 17 ++++---- openlp/plugins/audit/lib/__init__.py | 1 - openlp/plugins/audit/lib/audittab.py | 61 ---------------------------- 4 files changed, 37 insertions(+), 93 deletions(-) delete mode 100644 openlp/plugins/audit/lib/audittab.py diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index 0d5dd6a82..e3625f972 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -134,14 +134,15 @@ class PluginManager(object): The Media Manager itself. """ for plugin in self.plugins: - media_manager_item = plugin.get_media_manager_item() - if media_manager_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) - if plugin.status == PluginStatus.Inactive: - media_manager_item.hide() + if plugin.status is not PluginStatus.Disabled: + media_manager_item = plugin.get_media_manager_item() + if media_manager_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) + if plugin.status == PluginStatus.Inactive: + media_manager_item.hide() def hook_settings_tabs(self, settingsform=None): """ @@ -153,12 +154,13 @@ class PluginManager(object): Defaults to *None*. The settings form to add tabs to. """ for plugin in self.plugins: - settings_tab = plugin.get_settings_tab() - if settings_tab is not None: - 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) + if plugin.status is not PluginStatus.Disabled: + settings_tab = plugin.get_settings_tab() + if settings_tab is not None: + 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) def hook_import_menu(self, import_menu): """ @@ -169,9 +171,10 @@ class PluginManager(object): The Import menu. """ for plugin in self.plugins: - plugin.add_import_menu_item(import_menu) - if plugin.status == PluginStatus.Inactive: - import_menu.hide() + 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): """ @@ -182,9 +185,10 @@ class PluginManager(object): The Export menu. """ for plugin in self.plugins: - plugin.add_export_menu_item(export_menu) - if plugin.status == PluginStatus.Inactive: - export_menu.hide() + 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): """ @@ -195,9 +199,10 @@ class PluginManager(object): The Tools menu. """ for plugin in self.plugins: - plugin.add_tools_menu_item(tools_menu) - if plugin.status == PluginStatus.Inactive: - tools_menu.hide() + 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): """ diff --git a/openlp/plugins/audit/auditplugin.py b/openlp/plugins/audit/auditplugin.py index 97fdb279d..5d61daf93 100644 --- a/openlp/plugins/audit/auditplugin.py +++ b/openlp/plugins/audit/auditplugin.py @@ -28,7 +28,7 @@ import logging from PyQt4 import QtCore, QtGui from openlp.core.lib import Plugin, Receiver, translate, str_to_bool, buildIcon -from openlp.plugins.audit.lib import AuditTab, AuditManager +from openlp.plugins.audit.lib import AuditManager from openlp.plugins.audit.forms import AuditDetailForm, AuditDeleteForm from openlp.plugins.audit.lib.models import AuditItem @@ -44,6 +44,7 @@ class AuditPlugin(Plugin): # Create the plugin icon self.icon = buildIcon(u':/media/media_image.png') self.auditmanager = None + self.auditActive = False def can_be_disabled(self): return True @@ -57,6 +58,7 @@ class AuditPlugin(Plugin): The actual **Tools** menu item, so that your actions can use it as their parent. """ + self.toolsMenu = tools_menu self.AuditMenu = QtGui.QMenu(tools_menu) self.AuditMenu.setObjectName(u'AuditMenu') self.AuditMenu.setTitle( @@ -94,7 +96,7 @@ class AuditPlugin(Plugin): self.AuditStatus.setShortcut(translate(u'AuditPlugin', u'F4')) self.AuditStatus.setObjectName(u'AuditStatus') #Add Menus together - tools_menu.addAction(self.AuditMenu.menuAction()) + self.toolsMenu.addAction(self.AuditMenu.menuAction()) self.AuditMenu.addAction(self.AuditStatus) self.AuditMenu.addSeparator() self.AuditMenu.addAction(self.AuditDeleteAll) @@ -114,10 +116,7 @@ class AuditPlugin(Plugin): QtCore.SIGNAL(u'triggered()'), self.onAuditDelete) QtCore.QObject.connect(self.AuditReport, QtCore.SIGNAL(u'triggered()'), self.onAuditReport) - -# def get_settings_tab(self): -# self.AuditTab = AuditTab() -# return self.AuditTab + self.AuditMenu.menuAction().setVisible(False) def initialise(self): log.info(u'Plugin Initialising') @@ -132,11 +131,13 @@ class AuditPlugin(Plugin): self.auditmanager = AuditManager(self.config) self.auditdeleteform = AuditDeleteForm(self.auditmanager) self.auditdetailform = AuditDetailForm(self.auditmanager) - self.AuditMenu.setVisible(True) + self.AuditMenu.menuAction().setVisible(True) def finalise(self): log.info(u'Plugin Finalise') - self.AuditMenu.setVisible(True) + self.AuditMenu.menuAction().setVisible(False) + #stop any events being processed + self.auditActive = False def toggleAuditState(self): self.auditActive = not self.auditActive diff --git a/openlp/plugins/audit/lib/__init__.py b/openlp/plugins/audit/lib/__init__.py index b7501b377..a5bd43550 100644 --- a/openlp/plugins/audit/lib/__init__.py +++ b/openlp/plugins/audit/lib/__init__.py @@ -22,5 +22,4 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### -from audittab import AuditTab from manager import AuditManager diff --git a/openlp/plugins/audit/lib/audittab.py b/openlp/plugins/audit/lib/audittab.py deleted file mode 100644 index 25219f5c7..000000000 --- a/openlp/plugins/audit/lib/audittab.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 - -############################################################################### -# OpenLP - Open Source Lyrics Projection # -# --------------------------------------------------------------------------- # -# Copyright (c) 2008-2009 Raoul Snyman # -# Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley, Carsten # -# Tinggaard, Jon Tibble, Jonathan Corwin, Maikel Stuivenberg, Scott Guerrieri # -# --------------------------------------------------------------------------- # -# This program is free software; you can redistribute it and/or modify it # -# under the terms of the GNU General Public License as published by the Free # -# Software Foundation; version 2 of the License. # -# # -# This program is distributed in the hope that it will be useful, but WITHOUT # -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # -# more details. # -# # -# You should have received a copy of the GNU General Public License along # -# with this program; if not, write to the Free Software Foundation, Inc., 59 # -# Temple Place, Suite 330, Boston, MA 02111-1307 USA # -############################################################################### - -from PyQt4 import QtGui - -from openlp.core.lib import SettingsTab, translate, Receiver - -class AuditTab(SettingsTab): - """ - AuditTab is the Audit settings tab in the settings dialog. - """ - def __init__(self): - SettingsTab.__init__(self, translate(u'AuditTab', u'Audit'), u'Audit') - - def setupUi(self): - self.setObjectName(u'AuditTab') - self.AuditModeGroupBox = QtGui.QGroupBox(self) - self.AuditModeGroupBox.setObjectName(u'AuditModeGroupBox') - self.verticalLayout = QtGui.QVBoxLayout(self.AuditModeGroupBox) - self.verticalLayout.setObjectName("verticalLayout") - self.AuditActive = QtGui.QCheckBox(self) - self.AuditActive.setObjectName("AuditActive") - self.verticalLayout.addWidget(self.AuditActive) - self.WarningLabel = QtGui.QLabel(self) - self.WarningLabel.setObjectName("WarningLabel") - self.verticalLayout.addWidget(self.WarningLabel) - - def retranslateUi(self): - self.AuditModeGroupBox.setTitle(translate(u'AuditTab', u'Audit File')) - self.AuditActive.setText(translate(u'AuditTab', 'Audit available:')) - self.WarningLabel.setText(translate(u'AuditTab', - u'A restart is needed for this change to become effective')) - - def load(self): - self.AuditActive.setChecked(int(self.config.get_config(u'startup', 0))) - - def save(self): - self.config.set_config( - u'startup', unicode(self.AuditActive.checkState())) - Receiver().send_message(u'audit_changed') From c4f8fc86cd4a6f5e2fb0de3067a8681f27489d7d Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 3 Oct 2009 14:08:18 +0100 Subject: [PATCH 4/6] 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): """ From 39a9f8efac91bc20da99d70ec8b577bf3e4c8477 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 3 Oct 2009 19:39:44 +0100 Subject: [PATCH 5/6] Media Itmes now hide them selves correctly --- openlp/core/lib/plugin.py | 24 ++++++++++++++++++++++-- openlp/core/lib/pluginmanager.py | 12 ++++++------ openlp/core/ui/mainwindow.py | 11 +++-------- openlp/core/ui/plugindialoglistform.py | 3 +-- openlp/plugins/audit/auditplugin.py | 1 + openlp/plugins/images/imageplugin.py | 3 +++ openlp/plugins/images/lib/mediaitem.py | 1 + openlp/plugins/songs/songsplugin.py | 1 + 8 files changed, 38 insertions(+), 18 deletions(-) diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index 6e6d78828..e9124ef83 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -119,6 +119,8 @@ class Plugin(object): self.icon = None self.config = PluginConfig(self.name) self.weight = 0 + self.media_id = -1 + self.media_active = False self.status = PluginStatus.Inactive # Set up logging self.log = logging.getLogger(self.name) @@ -127,6 +129,7 @@ class Plugin(object): self.render_manager = plugin_helpers[u'render'] self.service_manager = plugin_helpers[u'service'] self.settings = plugin_helpers[u'settings'] + self.mediatoolbox = plugin_helpers[u'toolbox'] QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'%s_add_service_item'% self.name), self.process_add_service_event) @@ -236,8 +239,8 @@ class Plugin(object): """ Called by the plugin Manager to initialise anything it needs. """ - log.info(u'base class called') - pass + if self.media_item is not None: + self.media_item.initialise() def finalise(self): """ @@ -245,3 +248,20 @@ class Plugin(object): """ pass + def remove_toolbox_item(self): + """ + Called by the plugin to remove toolbar + """ + if self.media_id is not -1: + self.mediatoolbox.removeItem(self.media_id) + self.media_active = False + + def insert_toolbox_item(self): + """ + Called by plugin to replace toolbar + """ + if self.media_id is not -1: + if not self.media_active: + self.mediatoolbox.insertItem( + self.media_id, self.media_item, self.icon, self.media_item.title) + self.media_active = True diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index 3ecd8dd22..9f001bf26 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -139,10 +139,9 @@ class PluginManager(object): if plugin.media_item is not None: log.debug(u'Inserting media manager item from %s' % \ plugin.name) - mediatoolbox.addItem(plugin.media_item, plugin.icon, - plugin.media_item.title) - if plugin.status == PluginStatus.Inactive: - plugin.media_item.hide() + plugin.media_id = mediatoolbox.addItem( + plugin.media_item, plugin.icon, plugin.media_item.title) + plugin.media_active = True def hook_settings_tabs(self, settingsform=None): """ @@ -205,10 +204,11 @@ class PluginManager(object): """ log.info(u'initialising plugins') for plugin in self.plugins: + print plugin.name , plugin.media_item if plugin.is_active(): plugin.initialise() - if plugin.media_item is not None: - plugin.media_item.initialise() + if plugin.media_item is not None and not plugin.is_active(): + plugin.remove_toolbox_item() def finalise_plugins(self): """ diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index c2ca2ffb6..d06a78a53 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -109,19 +109,12 @@ class Ui_MainWindow(object): self.MediaManagerDock.setObjectName(u'MediaManagerDock') self.MediaManagerDock.setMinimumWidth( self.settingsmanager.mainwindow_left) - -# self.MediaManagerDock.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, -# QtGui.QSizePolicy.Maximum)) -# geometry = self.MediaManagerDock.geometry() -# geometry.setWidth(self.settingsmanager.mainwindow_left) -# self.MediaManagerDock.setGeometry(geometry) -# self.MediaManagerDock.setMinimumWidth(10) - self.MediaManagerContents = QtGui.QWidget() self.MediaManagerContents.setObjectName(u'MediaManagerContents') self.MediaManagerLayout = QtGui.QHBoxLayout(self.MediaManagerContents) self.MediaManagerLayout.setContentsMargins(0, 2, 0, 0) self.MediaManagerLayout.setObjectName(u'MediaManagerLayout') + # Create the media toolbox self.MediaToolBox = QtGui.QToolBox(self.MediaManagerContents) self.MediaToolBox.setObjectName(u'MediaToolBox') self.MediaManagerLayout.addWidget(self.MediaToolBox) @@ -503,6 +496,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.plugin_helpers[u'render'] = self.RenderManager self.plugin_helpers[u'service'] = self.ServiceManagerContents self.plugin_helpers[u'settings'] = self.settingsForm + self.plugin_helpers[u'toolbox'] = self.MediaToolBox self.plugin_manager.find_plugins(pluginpath, self.plugin_helpers) # hook methods have to happen after find_plugins. Find plugins needs # the controllers hence the hooks have moved from setupUI() to here @@ -528,6 +522,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): log.info(u'Load data from Settings') self.settingsForm.postSetUp() + def getMonitorNumber(self): """ Set up the default behaviour of the monitor configuration in diff --git a/openlp/core/ui/plugindialoglistform.py b/openlp/core/ui/plugindialoglistform.py index 2a5773cb0..6d9ca526f 100644 --- a/openlp/core/ui/plugindialoglistform.py +++ b/openlp/core/ui/plugindialoglistform.py @@ -113,14 +113,13 @@ class PluginForm(QtGui.QDialog): combo.setCurrentIndex(int(plugin.status)) QtCore.QObject.connect(combo, QtCore.SIGNAL(u'currentIndexChanged(int)'), self.statusComboChanged) - self.PluginViewList.setRowHeight(row, 25) else: item3 = QtGui.QTableWidgetItem( translate(u'PluginForm', u'Active')) item3.setTextAlignment(QtCore.Qt.AlignVCenter) item3.setFlags(QtCore.Qt.ItemIsSelectable) self.PluginViewList.setItem(row, 2, item3) - self.PluginViewList.setRowHeight(row, 15) + self.PluginViewList.setRowHeight(row, 25) def displayAbout(self, item): if item is None: diff --git a/openlp/plugins/audit/auditplugin.py b/openlp/plugins/audit/auditplugin.py index a3bf21856..1cea0a402 100644 --- a/openlp/plugins/audit/auditplugin.py +++ b/openlp/plugins/audit/auditplugin.py @@ -121,6 +121,7 @@ class AuditPlugin(Plugin): def initialise(self): log.info(u'audit Initialising') + Plugin.initialise(self) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'audit_live'), self.onReceiveAudit) QtCore.QObject.connect(Receiver.get_receiver(), diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py index 65b24cf3c..e9afa89da 100644 --- a/openlp/plugins/images/imageplugin.py +++ b/openlp/plugins/images/imageplugin.py @@ -44,9 +44,12 @@ class ImagePlugin(Plugin): def initialise(self): log.info(u'Plugin Initialising') + Plugin.initialise(self) + self.insert_toolbox_item() def finalise(self): log.info(u'Plugin Finalise') + self.remove_toolbox_item() def get_settings_tab(self): self.ImageTab = ImageTab() diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index f2f2fe149..20ab16efd 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -66,6 +66,7 @@ class ImageMediaItem(MediaManagerItem): def initialise(self): log.debug(u'initialise') + self.ListView.clear() self.ListView.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) self.ListView.setIconSize(QtCore.QSize(88,50)) diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 1c9465257..89ed9da75 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -145,6 +145,7 @@ class SongsPlugin(Plugin): QtCore.SIGNAL(u'triggered()'), self.onExportOpenSongItemClicked) def initialise(self): + Plugin.initialise(self) self.media_item.displayResultsSong(self.songmanager.get_songs()) def onImportOpenlp1ItemClick(self): From b94d1d1b8fc682dbf9f31d77752bbb0d4608beab Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 3 Oct 2009 20:02:40 +0100 Subject: [PATCH 6/6] Sort out Settings tab items --- openlp/core/lib/plugin.py | 14 ++++++++++---- openlp/core/lib/pluginmanager.py | 7 +++---- openlp/core/ui/settingsform.py | 13 +++++++++++-- openlp/plugins/bibles/bibleplugin.py | 3 +-- openlp/plugins/images/imageplugin.py | 3 +-- openlp/plugins/media/mediaplugin.py | 3 +-- openlp/plugins/presentations/presentationplugin.py | 3 +-- 7 files changed, 28 insertions(+), 18 deletions(-) diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index e9124ef83..0e82aa8b5 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -120,6 +120,7 @@ class Plugin(object): self.config = PluginConfig(self.name) self.weight = 0 self.media_id = -1 + self.settings_id = -1 self.media_active = False self.status = PluginStatus.Inactive # Set up logging @@ -254,14 +255,19 @@ class Plugin(object): """ if self.media_id is not -1: self.mediatoolbox.removeItem(self.media_id) - self.media_active = False + if self.settings_id is not -1: + self.settings.removeTab(self.settings_id) + self.media_active = False def insert_toolbox_item(self): """ Called by plugin to replace toolbar """ - if self.media_id is not -1: - if not self.media_active: + if not self.media_active: + if self.media_id is not -1: self.mediatoolbox.insertItem( self.media_id, self.media_item, self.icon, self.media_item.title) - self.media_active = True + if self.settings_id is not -1: + self.settings.insertTab( + self.settings_id, self.settings_tab) + self.media_active = True diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index 9f001bf26..905d34a09 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -154,10 +154,10 @@ class PluginManager(object): """ for plugin in self.plugins: if plugin.status is not PluginStatus.Disabled: - settings_tab = plugin.get_settings_tab() - if settings_tab is not None: + plugin.settings_tab = plugin.get_settings_tab() + if plugin.settings_tab is not None: log.debug(u'Inserting settings tab item from %s' % plugin.name) - settingsform.addTab(settings_tab) + plugin.settings_id = settingsform.addTab(plugin.settings_tab) else: log.debug(u'No tab settings in %s' % plugin.name) @@ -204,7 +204,6 @@ class PluginManager(object): """ log.info(u'initialising plugins') for plugin in self.plugins: - print plugin.name , plugin.media_item if plugin.is_active(): plugin.initialise() if plugin.media_item is not None and not plugin.is_active(): diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index d622bd1b2..2daaaaab7 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -47,8 +47,17 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog): self.addTab(self.AlertsTab) def addTab(self, tab): - log.info(u'Inserting %s' % tab.title()) - self.SettingsTabWidget.addTab(tab, tab.title()) + log.info(u'Adding %s tab' % tab.title()) + return self.SettingsTabWidget.addTab(tab, tab.title()) + + def insertTab(self, id, tab): + log.debug(u'Inserting %s tab' % tab.title()) + self.SettingsTabWidget.insertTab(id, tab, tab.title()) + + def removeTab(self, id): + log.debug(u'remove %s no tab' % unicode(id)) + self.SettingsTabWidget.removeTab(id) + def accept(self): for tab_index in range(0, self.SettingsTabWidget.count()): diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index d68bd7f9a..ca02fd11f 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -44,8 +44,7 @@ class BiblePlugin(Plugin): self.biblemanager = BibleManager(self.config) def get_settings_tab(self): - self.bibles_tab = BiblesTab() - return self.bibles_tab + return BiblesTab() def get_media_manager_item(self): # Create the BibleManagerItem object diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py index e9afa89da..e7c665aa6 100644 --- a/openlp/plugins/images/imageplugin.py +++ b/openlp/plugins/images/imageplugin.py @@ -52,8 +52,7 @@ class ImagePlugin(Plugin): self.remove_toolbox_item() def get_settings_tab(self): - self.ImageTab = ImageTab() - return self.ImageTab + return ImageTab() def get_media_manager_item(self): # Create the MediaManagerItem object diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 2919f9d7d..79b005a9a 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -37,8 +37,7 @@ class MediaPlugin(Plugin): self.dnd_id = u'Media' def get_settings_tab(self): - self.MediaTab = MediaTab() - return self.MediaTab + return MediaTab() def get_media_manager_item(self): # Create the MediaManagerItem object diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 93fc1035f..b5bbbcf59 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -50,8 +50,7 @@ class PresentationPlugin(Plugin): """ Create the settings Tab """ - self.presentation_tab = PresentationTab(self.controllers) - return self.presentation_tab + return PresentationTab(self.controllers) def get_media_manager_item(self): """