diff --git a/openlp.pyw b/openlp.pyw index 5b0923dc4..7cffa7517 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -32,13 +32,13 @@ from optparse import OptionParser from PyQt4 import QtCore, QtGui -log = logging.getLogger() - from openlp.core.lib import Receiver from openlp.core.resources import qInitResources -from openlp.core.ui import SplashScreen, ScreenList -from openlp.core.utils import AppLocation, LanguageManager -from openlp.core.ui.mainwindow import MainWindow +from openlp.core.ui import MainWindow, SplashScreen, ScreenList +from openlp.core.utils import AppLocation, LanguageManager, VersionThread + +log = logging.getLogger() + application_stylesheet = u""" QMainWindow::separator @@ -142,7 +142,7 @@ class OpenLP(QtGui.QApplication): # now kill the splashscreen self.splash.finish(self.mainWindow) self.mainWindow.repaint() - self.mainWindow.versionThread() + VersionThread(self.mainWindow, app_version).start() return self.exec_() def main(): diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index 9060ce86b..45fbcb6b0 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -132,6 +132,7 @@ class Plugin(QtCore.QObject): self.settingsForm = plugin_helpers[u'settings form'] self.mediadock = plugin_helpers[u'toolbox'] self.pluginManager = plugin_helpers[u'pluginmanager'] + self.formparent = plugin_helpers[u'formparent'] QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'%s_add_service_item' % self.name), self.processAddServiceEvent) diff --git a/openlp/core/lib/pluginmanager.py b/openlp/core/lib/pluginmanager.py index bb99e3d03..d4570bec5 100644 --- a/openlp/core/lib/pluginmanager.py +++ b/openlp/core/lib/pluginmanager.py @@ -77,7 +77,6 @@ class PluginManager(object): startdepth = len(os.path.abspath(plugin_dir).split(os.sep)) log.debug(u'finding plugins in %s at depth %d', unicode(plugin_dir), startdepth) - for root, dirs, files in os.walk(plugin_dir): for name in files: if name.endswith(u'.py') and not name.startswith(u'__'): diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index af422c3a3..da75d77d8 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -25,8 +25,6 @@ ############################################################################### import logging -import time -import re from PyQt4 import QtCore, QtGui @@ -34,8 +32,7 @@ from openlp.core.ui import AboutForm, SettingsForm, ServiceManager, \ ThemeManager, SlideController, PluginForm, MediaDockManager from openlp.core.lib import RenderManager, build_icon, OpenLPDockWidget, \ SettingsManager, PluginManager, Receiver, translate -from openlp.core.utils import check_latest_version, AppLocation, add_actions, \ - LanguageManager +from openlp.core.utils import AppLocation, add_actions, LanguageManager log = logging.getLogger(__name__) @@ -58,49 +55,6 @@ MEDIA_MANAGER_STYLE = """ font-weight: bold; } """ -class VersionThread(QtCore.QThread): - """ - A special Qt thread class to fetch the version of OpenLP from the website. - This is threaded so that it doesn't affect the loading time of OpenLP. - """ - def __init__(self, parent, app_version): - QtCore.QThread.__init__(self, parent) - self.parent = parent - self.app_version = app_version - self.version_splitter = re.compile( - r'([0-9]+).([0-9]+).([0-9]+)(?:-bzr([0-9]+))?') - - def run(self): - """ - Run the thread. - """ - time.sleep(1) - Receiver.send_message(u'maindisplay_blank_check') - version = check_latest_version(self.app_version) - remote_version = {} - local_version = {} - match = self.version_splitter.match(version) - if match: - remote_version[u'major'] = int(match.group(1)) - remote_version[u'minor'] = int(match.group(2)) - remote_version[u'release'] = int(match.group(3)) - if len(match.groups()) > 3 and match.group(4): - remote_version[u'revision'] = int(match.group(4)) - match = self.version_splitter.match(self.app_version[u'full']) - if match: - local_version[u'major'] = int(match.group(1)) - local_version[u'minor'] = int(match.group(2)) - local_version[u'release'] = int(match.group(3)) - if len(match.groups()) > 3 and match.group(4): - local_version[u'revision'] = int(match.group(4)) - if remote_version[u'major'] > local_version[u'major'] or \ - remote_version[u'minor'] > local_version[u'minor'] or \ - remote_version[u'release'] > local_version[u'release']: - Receiver.send_message(u'openlp_version_check', u'%s' % version) - elif remote_version.get(u'revision') and \ - local_version.get(u'revision') and \ - remote_version[u'revision'] > local_version[u'revision']: - Receiver.send_message(u'openlp_version_check', u'%s' % version) class Ui_MainWindow(object): def setupUi(self, MainWindow): @@ -577,20 +531,15 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtCore.SIGNAL(u'triggered()'), self.ThemeManagerContents.onExportTheme) QtCore.QObject.connect(self.ViewMediaManagerItem, - QtCore.SIGNAL(u'triggered(bool)'), - self.toggleMediaManager) + QtCore.SIGNAL(u'triggered(bool)'), self.toggleMediaManager) QtCore.QObject.connect(self.ViewServiceManagerItem, - QtCore.SIGNAL(u'triggered(bool)'), - self.toggleServiceManager) + QtCore.SIGNAL(u'triggered(bool)'), self.toggleServiceManager) QtCore.QObject.connect(self.ViewThemeManagerItem, - QtCore.SIGNAL(u'triggered(bool)'), - self.toggleThemeManager) + QtCore.SIGNAL(u'triggered(bool)'), self.toggleThemeManager) QtCore.QObject.connect(self.ViewPreviewPanel, - QtCore.SIGNAL(u'toggled(bool)'), - self.setPreviewPanelVisibility) + QtCore.SIGNAL(u'toggled(bool)'), self.setPreviewPanelVisibility) QtCore.QObject.connect(self.ViewLivePanel, - QtCore.SIGNAL(u'toggled(bool)'), - self.setLivePanelVisibility) + QtCore.SIGNAL(u'toggled(bool)'), self.setLivePanelVisibility) QtCore.QObject.connect(self.MediaManagerDock, QtCore.SIGNAL(u'visibilityChanged(bool)'), self.ViewMediaManagerItem.setChecked) @@ -608,8 +557,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtCore.SIGNAL(u'triggered()'), self.onPluginItemClicked) QtCore.QObject.connect(self.SettingsConfigureItem, QtCore.SIGNAL(u'triggered()'), self.onOptionsSettingsItemClicked) - QtCore.QObject.connect(self.FileNewItem, - QtCore.SIGNAL(u'triggered()'), + QtCore.QObject.connect(self.FileNewItem, QtCore.SIGNAL(u'triggered()'), self.ServiceManagerContents.onNewService) QtCore.QObject.connect(self.FileOpenItem, QtCore.SIGNAL(u'triggered()'), @@ -622,22 +570,18 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.ServiceManagerContents.onSaveService) #i18n set signals for languages QtCore.QObject.connect(self.AutoLanguageItem, - QtCore.SIGNAL(u'toggled(bool)'), - self.setAutoLanguage) + QtCore.SIGNAL(u'toggled(bool)'), self.setAutoLanguage) self.LanguageGroup.triggered.connect(LanguageManager.set_language) QtCore.QObject.connect(self.ModeDefaultItem, - QtCore.SIGNAL(u'triggered()'), - self.onModeDefaultItemClicked) + QtCore.SIGNAL(u'triggered()'), self.setViewMode) QtCore.QObject.connect(self.ModeSetupItem, - QtCore.SIGNAL(u'triggered()'), - self.onModeSetupItemClicked) + QtCore.SIGNAL(u'triggered()'), self.onModeSetupItemClicked) QtCore.QObject.connect(self.ModeLiveItem, - QtCore.SIGNAL(u'triggered()'), - self.onModeLiveItemClicked) + QtCore.SIGNAL(u'triggered()'), self.onModeLiveItemClicked) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_global'), self.defaultThemeChanged) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'openlp_version_check'), self.versionCheck) + QtCore.SIGNAL(u'openlp_version_check'), self.versionNotice) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'maindisplay_blank_check'), self.blankCheck) QtCore.QObject.connect(Receiver.get_receiver(), @@ -660,6 +604,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.plugin_helpers[u'settings form'] = self.settingsForm self.plugin_helpers[u'toolbox'] = self.mediaDockManager self.plugin_helpers[u'pluginmanager'] = self.plugin_manager + self.plugin_helpers[u'formparent'] = self 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 @@ -696,12 +641,11 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): LanguageManager.AutoLanguage = value LanguageManager.set_language(self.LanguageGroup.checkedAction()) - def versionCheck(self, version): + def versionNotice(self, version): """ - Checks the version of the Application called from openlp.pyw + Notifies the user that a newer version of OpenLP is available. Triggered by delay thread. """ - app_version = self.applicationVersion[u'full'] version_text = unicode(translate('OpenLP.MainWindow', 'Version %s of OpenLP is now available for download (you are ' 'currently running version %s). \n\nYou can download the latest ' @@ -709,9 +653,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): 'http://openlp.org/.')) QtGui.QMessageBox.question(self, translate('OpenLP.MainWindow', 'OpenLP Version Updated'), - version_text % (version, app_version), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), - QtGui.QMessageBox.Ok) + version_text % (version, self.applicationVersion[u'full'])) def show(self): """ @@ -746,13 +688,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): 'The Main Display has been blanked out')) settings.endGroup() - def versionThread(self): - """ - Start an initial setup thread to delay notifications - """ - vT = VersionThread(self, self.applicationVersion) - vT.start() - def onHelpWebSiteClicked(self): """ Load the OpenLP website @@ -780,35 +715,28 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): """ self.settingsForm.exec_() - def onModeDefaultItemClicked(self): - """ - Put OpenLP into "Default" view mode. - """ - self.MediaManagerDock.setVisible(True) - self.ServiceManagerDock.setVisible(True) - self.ThemeManagerDock.setVisible(True) - self.setPreviewPanelVisibility(True) - self.setLivePanelVisibility(True) - def onModeSetupItemClicked(self): """ Put OpenLP into "Setup" view mode. """ - self.MediaManagerDock.setVisible(True) - self.ServiceManagerDock.setVisible(True) - self.ThemeManagerDock.setVisible(False) - self.setPreviewPanelVisibility(True) - self.setLivePanelVisibility(False) + self.setViewMode(True, True, False, True, False) def onModeLiveItemClicked(self): """ Put OpenLP into "Live" view mode. """ - self.MediaManagerDock.setVisible(False) - self.ServiceManagerDock.setVisible(True) - self.ThemeManagerDock.setVisible(False) - self.setPreviewPanelVisibility(False) - self.setLivePanelVisibility(True) + self.setViewMode(False, True, False, False, True) + + def setViewMode(self, media=True, service=True, theme=True, preview=True, + live=True): + """ + Set OpenLP to a different view mode. + """ + self.MediaManagerDock.setVisible(media) + self.ServiceManagerDock.setVisible(service) + self.ThemeManagerDock.setVisible(theme) + self.setPreviewPanelVisibility(preview) + self.setLivePanelVisibility(live) def screenChanged(self): """ diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 9c4e4f0f5..49f7607d5 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -498,8 +498,7 @@ class ServiceManager(QtGui.QWidget): 'Your service is unsaved, do you want to save ' 'those changes before creating a new one?'), QtGui.QMessageBox.StandardButtons( - QtGui.QMessageBox.Cancel | - QtGui.QMessageBox.Save), + QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Save), QtGui.QMessageBox.Save) if ret == QtGui.QMessageBox.Save: self.onSaveService() @@ -656,8 +655,7 @@ class ServiceManager(QtGui.QWidget): 'Your current service is unsaved, do you want to ' 'save the changes before opening a new one?'), QtGui.QMessageBox.StandardButtons( - QtGui.QMessageBox.Discard | - QtGui.QMessageBox.Save), + QtGui.QMessageBox.Discard | QtGui.QMessageBox.Save), QtGui.QMessageBox.Save) if ret == QtGui.QMessageBox.Save: self.onSaveService() @@ -802,7 +800,6 @@ class ServiceManager(QtGui.QWidget): ``item`` Service Item to be added - """ sitem = self.findServiceItem()[0] item.render() @@ -847,10 +844,7 @@ class ServiceManager(QtGui.QWidget): QtGui.QMessageBox.critical(self, translate('OpenLP.ServiceManager', 'Missing Display Handler'), translate('OpenLP.ServiceManager', 'Your item cannot be ' - 'displayed as there is no handler to display it'), - QtGui.QMessageBox.StandardButtons( - QtGui.QMessageBox.Ok), - QtGui.QMessageBox.Ok) + 'displayed as there is no handler to display it')) def getServiceItem(self): """ @@ -883,10 +877,7 @@ class ServiceManager(QtGui.QWidget): QtGui.QMessageBox.critical(self, translate('OpenLP.ServiceManager', 'Missing Display Handler'), translate('OpenLP.ServiceManager', 'Your item cannot be ' - 'displayed as there is no handler to display it'), - QtGui.QMessageBox.StandardButtons( - QtGui.QMessageBox.Ok), - QtGui.QMessageBox.Ok) + 'displayed as there is no handler to display it')) def remoteEdit(self): """ diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index b0afceb5f..e99144315 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -235,8 +235,7 @@ class ThemeManager(QtGui.QWidget): QtGui.QMessageBox.critical(self, translate('OpenLP.ThemeManager', 'Error'), translate('OpenLP.ThemeManager', - 'You are unable to delete the default theme.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'You are unable to delete the default theme.')) else: for plugin in self.parent.plugin_manager.plugins: if plugin.usesTheme(theme): diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 51ecc73df..d2db95e40 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -27,20 +27,66 @@ The :mod:`utils` module provides the utility libraries for OpenLP """ -import os -import sys import logging +import os +import re +import sys +import time import urllib2 from datetime import datetime from PyQt4 import QtGui, QtCore import openlp -from openlp.core.lib import translate +from openlp.core.lib import Receiver, translate log = logging.getLogger(__name__) images_filter = None +class VersionThread(QtCore.QThread): + """ + A special Qt thread class to fetch the version of OpenLP from the website. + This is threaded so that it doesn't affect the loading time of OpenLP. + """ + def __init__(self, parent, app_version): + QtCore.QThread.__init__(self, parent) + self.app_version = app_version + self.version_splitter = re.compile( + r'([0-9]+).([0-9]+).([0-9]+)(?:-bzr([0-9]+))?') + + def run(self): + """ + Run the thread. + """ + time.sleep(1) + Receiver.send_message(u'maindisplay_blank_check') + version = check_latest_version(self.app_version) + remote_version = {} + local_version = {} + match = self.version_splitter.match(version) + if match: + remote_version[u'major'] = int(match.group(1)) + remote_version[u'minor'] = int(match.group(2)) + remote_version[u'release'] = int(match.group(3)) + if len(match.groups()) > 3 and match.group(4): + remote_version[u'revision'] = int(match.group(4)) + match = self.version_splitter.match(self.app_version[u'full']) + if match: + local_version[u'major'] = int(match.group(1)) + local_version[u'minor'] = int(match.group(2)) + local_version[u'release'] = int(match.group(3)) + if len(match.groups()) > 3 and match.group(4): + local_version[u'revision'] = int(match.group(4)) + if remote_version[u'major'] > local_version[u'major'] or \ + remote_version[u'minor'] > local_version[u'minor'] or \ + remote_version[u'release'] > local_version[u'release']: + Receiver.send_message(u'openlp_version_check', u'%s' % version) + elif remote_version.get(u'revision') and \ + local_version.get(u'revision') and \ + remote_version[u'revision'] > local_version[u'revision']: + Receiver.send_message(u'openlp_version_check', u'%s' % version) + + class AppLocation(object): """ The :class:`AppLocation` class is a static class which retrieves a diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index b9bf3b1b2..3bbb6ec97 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -28,7 +28,7 @@ import logging from PyQt4 import QtCore, QtGui -from openlp.core.lib import Plugin, build_icon, PluginStatus, translate +from openlp.core.lib import Plugin, build_icon, translate from openlp.core.lib.db import Manager from openlp.plugins.alerts.lib import AlertsManager, AlertsTab from openlp.plugins.alerts.lib.db import init_schema @@ -45,8 +45,7 @@ class AlertsPlugin(Plugin): self.icon = build_icon(u':/plugins/plugin_alerts.png') self.alertsmanager = AlertsManager(self) self.manager = Manager(u'alerts', init_schema) - self.alertForm = AlertForm(self.manager, self) - self.status = PluginStatus.Active + self.alertForm = AlertForm(self) def getSettingsTab(self): """ diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index ddc7a3743..e2ff6e2e2 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -35,14 +35,14 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): """ Provide UI for the alert system """ - def __init__(self, manager, parent): + def __init__(self, plugin): """ Initialise the alert form """ - self.manager = manager - self.parent = parent + self.manager = plugin.manager + self.parent = plugin self.item_id = None - QtGui.QDialog.__init__(self, None) + QtGui.QDialog.__init__(self, plugin.formparent) self.setupUi(self) QtCore.QObject.connect(self.DisplayButton, QtCore.SIGNAL(u'clicked()'), self.onDisplayClicked) diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index 5550dd90e..da542b23b 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -28,7 +28,7 @@ import logging from PyQt4 import QtCore, QtGui -from openlp.core.lib import Plugin, build_icon, PluginStatus, translate +from openlp.core.lib import Plugin, build_icon, translate from openlp.plugins.bibles.lib import BibleManager, BiblesTab, BibleMediaItem log = logging.getLogger(__name__) @@ -41,8 +41,6 @@ class BiblePlugin(Plugin): self.weight = -9 self.icon_path = u':/plugins/plugin_bibles.png' self.icon = build_icon(self.icon_path) - # Register the bible Manager. - self.status = PluginStatus.Active self.manager = None def initialise(self): diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index c955847c6..67f3756dc 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -129,8 +129,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): 'Invalid Bible Location'), translate('BiblesPlugin.ImportWizardForm', 'You need to specify a file to import your ' - 'Bible from.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'Bible from.')) self.OSISLocationEdit.setFocus() return False elif self.field(u'source_format').toInt()[0] == BibleFormat.CSV: @@ -140,8 +139,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): 'Invalid Books File'), translate('BiblesPlugin.ImportWizardForm', 'You need to specify a file with books of ' - 'the Bible to use in the import.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'the Bible to use in the import.')) self.BooksLocationEdit.setFocus() return False elif self.field(u'csv_versefile').toString() == u'': @@ -150,8 +148,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): 'Invalid Verse File'), translate('BiblesPlugin.ImportWizardForm', 'You need to specify a file of Bible ' - 'verses to import.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'verses to import.')) self.CsvVerseLocationEdit.setFocus() return False elif self.field(u'source_format').toInt()[0] == \ @@ -162,8 +159,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): 'Invalid OpenSong Bible'), translate('BiblesPlugin.ImportWizardForm', 'You need to specify an OpenSong Bible ' - 'file to import.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'file to import.')) self.OpenSongFileEdit.setFocus() return False return True @@ -178,8 +174,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): 'Empty Version Name'), translate('BiblesPlugin.ImportWizardForm', 'You need to specify a version name for your ' - 'Bible.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'Bible.')) self.VersionNameEdit.setFocus() return False elif license_copyright == u'': @@ -189,8 +184,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): translate('BiblesPlugin.ImportWizardForm', 'You need to set a copyright for your Bible! ' 'Bibles in the Public Domain need to be marked as ' - 'such.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'such.')) self.CopyrightEdit.setFocus() return False elif self.manager.exists(license_version): @@ -199,8 +193,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): 'Bible Exists'), translate('BiblesPlugin.ImportWizardForm', 'This Bible already exists! Please import ' - 'a different Bible or first delete the existing one.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'a different Bible or first delete the existing one.')) self.VersionNameEdit.setFocus() return False return True diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 80419dba1..d86490dd9 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -387,10 +387,7 @@ class BibleMediaItem(MediaManagerItem): QtGui.QMessageBox.critical(self, translate('BiblesPlugin.MediaItem', 'No Book Found'), translate('BiblesPlugin.MediaItem', - 'No matching book could be found in this Bible.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), - QtGui.QMessageBox.Ok - ) + 'No matching book could be found in this Bible.')) def onAdvancedVersionComboBox(self): self.initialiseBible( diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index c83521ccc..4e3819961 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -28,7 +28,7 @@ import logging from forms import EditCustomForm -from openlp.core.lib import Plugin, build_icon, PluginStatus, translate +from openlp.core.lib import Plugin, build_icon, translate from openlp.core.lib.db import Manager from openlp.plugins.custom.lib import CustomMediaItem, CustomTab from openlp.plugins.custom.lib.db import CustomSlide, init_schema @@ -53,7 +53,6 @@ class CustomPlugin(Plugin): self.edit_custom_form = EditCustomForm(self.custommanager) self.icon_path = u':/plugins/plugin_custom.png' self.icon = build_icon(self.icon_path) - self.status = PluginStatus.Active def getSettingsTab(self): return CustomTab(self.name) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index a94e6fefa..910fe65e7 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -151,8 +151,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): valid, message = self._validate() if not valid: QtGui.QMessageBox.critical(self, - translate('CustomPlugin.EditCustomForm', 'Error'), message, - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + translate('CustomPlugin.EditCustomForm', 'Error'), message) return False sxml = CustomXMLBuilder() sxml.new_document() diff --git a/openlp/plugins/images/imageplugin.py b/openlp/plugins/images/imageplugin.py index 909defd6b..d34cd6a3c 100644 --- a/openlp/plugins/images/imageplugin.py +++ b/openlp/plugins/images/imageplugin.py @@ -26,7 +26,7 @@ import logging -from openlp.core.lib import Plugin, build_icon, PluginStatus, translate +from openlp.core.lib import Plugin, build_icon, translate from openlp.plugins.images.lib import ImageMediaItem log = logging.getLogger(__name__) @@ -39,7 +39,6 @@ class ImagePlugin(Plugin): self.weight = -7 self.icon_path = u':/plugins/plugin_images.png' self.icon = build_icon(self.icon_path) - self.status = PluginStatus.Active def getMediaManagerItem(self): # Create the MediaManagerItem object diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 6e27860d9..db326f843 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -28,7 +28,7 @@ import logging from PyQt4.phonon import Phonon -from openlp.core.lib import Plugin, build_icon, PluginStatus, translate +from openlp.core.lib import Plugin, build_icon, translate from openlp.plugins.media.lib import MediaMediaItem log = logging.getLogger(__name__) @@ -43,7 +43,6 @@ class MediaPlugin(Plugin): self.icon = build_icon(self.icon_path) # passed with drag and drop messages self.dnd_id = u'Media' - self.status = PluginStatus.Active self.audio_list = u'' self.video_list = u'' for mimetype in Phonon.BackendCapabilities.availableMimeTypes(): diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index b548071e0..9ada43a5a 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -69,8 +69,8 @@ class ImpressController(PresentationController): """ log.debug(u'Initialising') PresentationController.__init__(self, plugin, u'Impress') - self.supports = [u'.odp'] - self.alsosupports = [u'.ppt', u'.pps', u'.pptx', u'.ppsx'] + self.supports = [u'odp'] + self.alsosupports = [u'ppt', u'pps', u'pptx', u'ppsx'] self.process = None self.desktop = None self.manager = None diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 0b84313b8..001aeac4d 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -79,7 +79,6 @@ class PresentationMediaItem(MediaManagerItem): 'Select Presentation(s)') self.Automatic = translate('PresentationPlugin.MediaItem', 'Automatic') - self.buildFileMaskString() def buildFileMaskString(self): """ @@ -92,7 +91,7 @@ class PresentationMediaItem(MediaManagerItem): self.controllers[controller].alsosupports for type in types: if fileType.find(type) == -1: - fileType += u'*%s ' % type + fileType += u'*.%s ' % type self.parent.serviceManager.supportedSuffixes(type) self.OnNewFileMasks = translate('PresentationPlugin.MediaItem', 'Presentations (%s)' % fileType) @@ -189,8 +188,7 @@ class PresentationMediaItem(MediaManagerItem): translate('PresentationPlugin.MediaItem', 'File Exists'), translate('PresentationPlugin.MediaItem', - 'A presentation with that filename already exists.'), - QtGui.QMessageBox.Ok) + 'A presentation with that filename already exists.')) continue controller_name = self.findControllerByType(filename) if controller_name: @@ -214,8 +212,7 @@ class PresentationMediaItem(MediaManagerItem): self, translate('PresentationPlugin.MediaItem', 'Unsupported File'), translate('PresentationPlugin.MediaItem', - 'This type of presentation is not supported'), - QtGui.QMessageBox.Ok) + 'This type of presentation is not supported')) continue item_name = QtGui.QListWidgetItem(filename) item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file)) @@ -288,7 +285,7 @@ class PresentationMediaItem(MediaManagerItem): "supports" the extension. If none found, then look for a controller which "alsosupports" it instead. """ - filetype = os.path.splitext(filename)[1] + filetype = filename.split(u'.')[1] if not filetype: return None for controller in self.controllers: diff --git a/openlp/plugins/presentations/lib/powerpointcontroller.py b/openlp/plugins/presentations/lib/powerpointcontroller.py index acf307c65..5059f5f76 100644 --- a/openlp/plugins/presentations/lib/powerpointcontroller.py +++ b/openlp/plugins/presentations/lib/powerpointcontroller.py @@ -54,7 +54,7 @@ class PowerpointController(PresentationController): """ log.debug(u'Initialising') PresentationController.__init__(self, plugin, u'Powerpoint') - self.supports = [u'.ppt', u'.pps', u'.pptx', u'.ppsx'] + self.supports = [u'ppt', u'pps', u'pptx', u'ppsx'] self.process = None def check_available(self): diff --git a/openlp/plugins/presentations/lib/pptviewcontroller.py b/openlp/plugins/presentations/lib/pptviewcontroller.py index e1a1c9daa..54b09be32 100644 --- a/openlp/plugins/presentations/lib/pptviewcontroller.py +++ b/openlp/plugins/presentations/lib/pptviewcontroller.py @@ -50,7 +50,7 @@ class PptviewController(PresentationController): log.debug(u'Initialising') self.process = None PresentationController.__init__(self, plugin, u'Powerpoint Viewer') - self.supports = [u'.ppt', u'.pps', u'.pptx', u'.ppsx'] + self.supports = [u'ppt', u'pps', u'pptx', u'ppsx'] def check_available(self): """ diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index c4fd699b1..e63063ffd 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -30,7 +30,7 @@ presentations from a variety of document formats. import os import logging -from openlp.core.lib import Plugin, build_icon, PluginStatus, translate +from openlp.core.lib import Plugin, build_icon, translate from openlp.core.utils import AppLocation from openlp.plugins.presentations.lib import PresentationController, \ PresentationMediaItem, PresentationTab @@ -55,7 +55,6 @@ class PresentationPlugin(Plugin): self.weight = -8 self.icon_path = u':/plugins/plugin_presentations.png' self.icon = build_icon(self.icon_path) - self.status = PluginStatus.Active def getSettingsTab(self): """ @@ -74,6 +73,7 @@ class PresentationPlugin(Plugin): for controller in self.controllers: if self.controllers[controller].enabled(): self.controllers[controller].start_process() + self.mediaItem.buildFileMaskString() def finalise(self): """ diff --git a/openlp/plugins/remotes/remoteplugin.py b/openlp/plugins/remotes/remoteplugin.py index fbd1c680e..59ad9a99c 100644 --- a/openlp/plugins/remotes/remoteplugin.py +++ b/openlp/plugins/remotes/remoteplugin.py @@ -72,7 +72,7 @@ class RemotesPlugin(Plugin): Information about this plugin """ about_text = translate('RemotePlugin', 'Remote Plugin' - '
The remote plugin provides the ability to send messages to ' + '
The remote plugin provides the ability to send messages to ' 'a running version of OpenLP on a different computer via a web ' 'browser or through the remote API.') return about_text diff --git a/openlp/plugins/songs/forms/authorsform.py b/openlp/plugins/songs/forms/authorsform.py index 5787d8de1..c7d1b0396 100644 --- a/openlp/plugins/songs/forms/authorsform.py +++ b/openlp/plugins/songs/forms/authorsform.py @@ -82,16 +82,14 @@ class AuthorsForm(QtGui.QDialog, Ui_AuthorsDialog): QtGui.QMessageBox.critical( self, translate('SongsPlugin.AuthorsForm', 'Error'), translate('SongsPlugin.AuthorsForm', - 'You need to type in the first name of the author.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'You need to type in the first name of the author.')) self.FirstNameEdit.setFocus() return False elif not self.LastNameEdit.text(): QtGui.QMessageBox.critical( self, translate('SongsPlugin.AuthorsForm', 'Error'), translate('SongsPlugin.AuthorsForm', - 'You need to type in the last name of the author.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'You need to type in the last name of the author.')) self.LastNameEdit.setFocus() return False elif not self.DisplayEdit.text(): diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 3e12b552b..1567fa62e 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -331,8 +331,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): translate('SongsPlugin.EditSongForm', 'You have not selected ' 'a valid author. Either select an author from the list, ' 'or type in a new author and click the "Add Author to ' - 'Song" button to add the new author.'), - QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok) + 'Song" button to add the new author.')) def onAuthorsListViewPressed(self): if self.AuthorsListView.count() > 1: @@ -389,8 +388,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): translate('SongsPlugin.EditSongForm', 'You have not selected ' 'a valid topic. Either select a topic from the list, or ' 'type in a new topic and click the "Add Topic to Song" ' - 'button to add the new topic.'), - QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok) + 'button to add the new topic.')) def onTopicListViewPressed(self): self.TopicRemoveButton.setEnabled(True) diff --git a/openlp/plugins/songs/forms/songbookform.py b/openlp/plugins/songs/forms/songbookform.py index 30c9f0fd1..bdec26dfe 100644 --- a/openlp/plugins/songs/forms/songbookform.py +++ b/openlp/plugins/songs/forms/songbookform.py @@ -52,8 +52,7 @@ class SongBookForm(QtGui.QDialog, Ui_SongBookDialog): QtGui.QMessageBox.critical( self, translate('SongsPlugin.SongBookForm', 'Error'), translate('SongsPlugin.SongBookForm', - 'You need to type in a name for the book.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'You need to type in a name for the book.')) self.NameEdit.setFocus() return False else: diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index 879f6ce72..9524e8981 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -109,8 +109,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): 'No OpenLyrics Files Selected'), translate('SongsPlugin.ImportWizardForm', 'You need to add at least one OpenLyrics ' - 'song file to import from.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'song file to import from.')) self.OpenLyricsAddButton.setFocus() return False elif source_format == SongFormat.OpenSong: @@ -120,8 +119,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): 'No OpenSong Files Selected'), translate('SongsPlugin.ImportWizardForm', 'You need to add at least one OpenSong ' - 'song file to import from.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'song file to import from.')) self.OpenSongAddButton.setFocus() return False elif source_format == SongFormat.CCLI: @@ -131,8 +129,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): 'No CCLI Files Selected'), translate('SongsPlugin.ImportWizardForm', 'You need to add at least one CCLI file ' - 'to import from.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'to import from.')) self.CCLIAddButton.setFocus() return False elif source_format == SongFormat.CSV: @@ -141,8 +138,7 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): translate('SongsPlugin.ImportWizardForm', 'No CSV File Selected'), translate('SongsPlugin.ImportWizardForm', - 'You need to specify a CSV file to import from.'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'You need to specify a CSV file to import from.')) self.CSVFilenameEdit.setFocus() return False return True diff --git a/openlp/plugins/songs/forms/topicsform.py b/openlp/plugins/songs/forms/topicsform.py index 79c160083..a618dd9db 100644 --- a/openlp/plugins/songs/forms/topicsform.py +++ b/openlp/plugins/songs/forms/topicsform.py @@ -51,8 +51,7 @@ class TopicsForm(QtGui.QDialog, Ui_TopicsDialog): QtGui.QMessageBox.critical( self, translate('SongsPlugin.TopicsForm', 'Error'), translate('SongsPlugin.TopicsForm', - 'You need to type in a topic name!'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) + 'You need to type in a topic name!')) self.NameEdit.setFocus() return False else: diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 6645633ba..c09e7a1bb 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -28,8 +28,7 @@ import logging from PyQt4 import QtCore, QtGui -from openlp.core.lib import Plugin, build_icon, PluginStatus, Receiver, \ - translate +from openlp.core.lib import Plugin, build_icon, Receiver, translate from openlp.core.lib.db import Manager from openlp.plugins.songs.lib import OpenLPSongImport, SongMediaItem, SongsTab from openlp.plugins.songs.lib.db import init_schema, Song @@ -63,7 +62,6 @@ class SongsPlugin(Plugin): self.manager = Manager(u'songs', init_schema) self.icon_path = u':/plugins/plugin_songs.png' self.icon = build_icon(self.icon_path) - self.status = PluginStatus.Active def getSettingsTab(self): return SongsTab(self.name) @@ -200,15 +198,11 @@ class SongsPlugin(Plugin): except: log.exception('Could not import SoF file') QtGui.QMessageBox.critical(None, - translate('SongsPlugin', - 'Import Error'), - translate('SongsPlugin', - 'Error importing Songs of ' + translate('SongsPlugin', 'Import Error'), + translate('SongsPlugin', 'Error importing Songs of ' 'Fellowship file.\nOpenOffice.org must be installed' ' and you must be using an unedited copy of the RTF' - ' included with the Songs of Fellowship Music Editions'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), - QtGui.QMessageBox.Ok) + ' included with the Songs of Fellowship Music Editions')) Receiver.send_message(u'songs_load_list') def onImportOpenSongItemClick(self): @@ -223,12 +217,8 @@ class SongsPlugin(Plugin): except: log.exception('Could not import OpenSong file') QtGui.QMessageBox.critical(None, - translate('SongsPlugin', - 'Import Error'), - translate('SongsPlugin', - 'Error importing OpenSong file'), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), - QtGui.QMessageBox.Ok) + translate('SongsPlugin', 'Import Error'), + translate('SongsPlugin', 'Error importing OpenSong file')) Receiver.send_message(u'songs_load_list') def onImportOpenLPSongItemClick(self): @@ -252,8 +242,7 @@ class SongsPlugin(Plugin): def onImportOooItemClick(self): filenames = QtGui.QFileDialog.getOpenFileNames( - None, translate('SongsPlugin', - 'Open documents or presentations'), + None, translate('SongsPlugin', 'Open documents or presentations'), '', u'All Files(*.*)') oooimport = OooImport(self.manager) oooimport.import_docs(filenames) diff --git a/openlp/plugins/songusage/forms/songusagedeleteform.py b/openlp/plugins/songusage/forms/songusagedeleteform.py index 637916aff..36eda98b2 100644 --- a/openlp/plugins/songusage/forms/songusagedeleteform.py +++ b/openlp/plugins/songusage/forms/songusagedeleteform.py @@ -34,7 +34,7 @@ class SongUsageDeleteForm(QtGui.QDialog, Ui_SongUsageDeleteDialog): """ Class documentation goes here. """ - def __init__(self, songusagemanager, parent=None): + def __init__(self, songusagemanager, parent): """ Constructor """ diff --git a/openlp/plugins/songusage/forms/songusagedetailform.py b/openlp/plugins/songusage/forms/songusagedetailform.py index 8ff44bfe4..b1668990b 100644 --- a/openlp/plugins/songusage/forms/songusagedetailform.py +++ b/openlp/plugins/songusage/forms/songusagedetailform.py @@ -42,12 +42,12 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog): """ log.info(u'SongUsage Detail Form Loaded') - def __init__(self, parent=None): + def __init__(self, plugin, parent): """ Initialise the form """ - QtGui.QDialog.__init__(self, None) - self.parent = parent + QtGui.QDialog.__init__(self, parent) + self.plugin = plugin self.setupUi(self) def initialise(self): @@ -59,16 +59,16 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog): self.fromDate.setSelectedDate(fromDate) self.toDate.setSelectedDate(toDate) self.fileLineEdit.setText( - SettingsManager.get_last_dir(self.parent.settingsSection, 1)) + SettingsManager.get_last_dir(self.plugin.settingsSection, 1)) def defineOutputLocation(self): path = QtGui.QFileDialog.getExistingDirectory(self, translate('SongUsagePlugin.SongUsageDetailForm', 'Output File Location'), - SettingsManager.get_last_dir(self.parent.settingsSection, 1)) + SettingsManager.get_last_dir(self.plugin.settingsSection, 1)) path = unicode(path) if path != u'': - SettingsManager.set_last_dir(self.parent.settingsSection, path, 1) + SettingsManager.set_last_dir(self.plugin.settingsSection, path, 1) self.fileLineEdit.setText(path) def accept(self): @@ -76,7 +76,7 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog): filename = u'usage_detail_%s_%s.txt' % ( self.fromDate.selectedDate().toString(u'ddMMyyyy'), self.toDate.selectedDate().toString(u'ddMMyyyy')) - usage = self.parent.songusagemanager.get_all_objects( + usage = self.plugin.songusagemanager.get_all_objects( SongUsageItem, and_( SongUsageItem.usagedate >= self.fromDate.selectedDate().toPyDate(), SongUsageItem.usagedate < self.toDate.selectedDate().toPyDate()), @@ -95,3 +95,4 @@ class SongUsageDetailForm(QtGui.QDialog, Ui_SongUsageDetailDialog): finally: if file: file.close() + self.close() diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 57448b321..0ec82d15f 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -117,8 +117,9 @@ class SongUsagePlugin(Plugin): self.SongUsageStatus.setChecked(self.SongUsageActive) if self.songusagemanager is None: self.songusagemanager = Manager(u'songusage', init_schema) - self.SongUsagedeleteform = SongUsageDeleteForm(self.songusagemanager) - self.SongUsagedetailform = SongUsageDetailForm(self) + self.SongUsagedeleteform = SongUsageDeleteForm(self.songusagemanager, + self.formparent) + self.SongUsagedetailform = SongUsageDetailForm(self, self.formparent) self.SongUsageMenu.menuAction().setVisible(True) def finalise(self):