From 66fcf1db40923ff91bc523fb20d42eb0234bee54 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Wed, 21 Jul 2010 14:41:10 +0100 Subject: [PATCH 1/2] Another importer fix --- openlp/plugins/songs/lib/olpimport.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/olpimport.py b/openlp/plugins/songs/lib/olpimport.py index a2044b497..e4a58277c 100644 --- a/openlp/plugins/songs/lib/olpimport.py +++ b/openlp/plugins/songs/lib/olpimport.py @@ -140,7 +140,11 @@ class OpenLPSongImport(object): if has_media_files: new_song.alternate_title = song.alternate_title else: - new_song.alternate_title = u'' + old_titles = song.search_title.split(u'@') + if len(old_titles) > 1: + new_song.alternate_title = old_titles[1] + else: + new_song.alternate_title = u'' new_song.search_title = song.search_title new_song.song_number = song.song_number new_song.lyrics = song.lyrics From 475bab8215791f8d749b606b63db3adf1f7f6812 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Wed, 21 Jul 2010 23:46:25 +0100 Subject: [PATCH 2/2] [Bug 608149] [NEW] Presentations are not intuitive --- openlp/plugins/presentations/lib/mediaitem.py | 30 ++++++++++--- .../lib/presentationcontroller.py | 19 +++++--- .../presentations/lib/presentationtab.py | 44 ++++++++++++++++--- .../presentations/presentationplugin.py | 4 +- 4 files changed, 77 insertions(+), 20 deletions(-) diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index b9ee2b79f..b63214ec2 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -29,7 +29,7 @@ import os from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ - SettingsManager, translate, check_item_selected + SettingsManager, translate, check_item_selected, Receiver from openlp.plugins.presentations.lib import MessageListener log = logging.getLogger(__name__) @@ -67,7 +67,9 @@ class PresentationMediaItem(MediaManagerItem): self.ListViewWithDnD_class = PresentationListView MediaManagerItem.__init__(self, parent, icon, title) self.message_listener = MessageListener(self) - + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'mediaitem_presentation_rebuild'), self.rebuild) + def retranslateUi(self): """ The name of the plugin media displayed in UI @@ -76,9 +78,12 @@ class PresentationMediaItem(MediaManagerItem): 'Select Presentation(s)') self.Automatic = translate('PresentationPlugin.MediaItem', 'Automatic') + self.buildFileMaskString() + + def buildFileMaskString(self): fileType = u'' for controller in self.controllers: - if self.controllers[controller].enabled: + if self.controllers[controller].enabled(): types = self.controllers[controller].supports + \ self.controllers[controller].alsosupports for type in types: @@ -131,13 +136,26 @@ class PresentationMediaItem(MediaManagerItem): list = SettingsManager.load_list( self.settingsSection, u'presentations') self.loadList(list, True) + self.populateDisplayTypes() + + def rebuild(self): + self.populateDisplayTypes() + self.buildFileMaskString() + + def populateDisplayTypes(self): + self.DisplayTypeComboBox.clear() for item in self.controllers: #load the drop down selection - if self.controllers[item].enabled: + if self.controllers[item].enabled(): self.DisplayTypeComboBox.addItem(item) if self.DisplayTypeComboBox.count() > 1: self.DisplayTypeComboBox.insertItem(0, self.Automatic) self.DisplayTypeComboBox.setCurrentIndex(0) + if QtCore.QSettings().value(self.settingsSection + u'/override app', + QtCore.QVariant(QtCore.Qt.Unchecked)) == QtCore.Qt.Checked: + self.PresentationWidget.show() + else: + self.PresentationWidget.hide() def loadList(self, list, initialLoad=False): """ @@ -262,11 +280,11 @@ class PresentationMediaItem(MediaManagerItem): if not filetype: return None for controller in self.controllers: - if self.controllers[controller].enabled: + if self.controllers[controller].enabled(): if filetype in self.controllers[controller].supports: return controller for controller in self.controllers: - if self.controllers[controller].enabled: + if self.controllers[controller].enabled(): if filetype in self.controllers[controller].alsosupports: return controller return None diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index ed4081ed6..15d58c206 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -109,13 +109,6 @@ class PresentationController(object): self.name = name self.settings_section = self.plugin.settingsSection self.available = self.check_available() - if self.available: - self.enabled = QtCore.QSettings().value( - self.settings_section + u'/' + name, - QtCore.QVariant(QtCore.Qt.Unchecked)).toInt()[0] == \ - QtCore.Qt.Checked - else: - self.enabled = False self.temp_folder = os.path.join( AppLocation.get_section_data_path(self.settings_section), name) self.thumbnail_folder = os.path.join( @@ -127,6 +120,18 @@ class PresentationController(object): if not os.path.isdir(self.temp_folder): os.makedirs(self.temp_folder) + def enabled(self): + """ + Return whether the controller is currently enabled + """ + if self.available: + return QtCore.QSettings().value( + self.settings_section + u'/' + self.name, + QtCore.QVariant(QtCore.Qt.Checked)).toInt()[0] == \ + QtCore.Qt.Checked + else: + return False + def check_available(self): """ Presentation app is able to run on this machine diff --git a/openlp/plugins/presentations/lib/presentationtab.py b/openlp/plugins/presentations/lib/presentationtab.py index 980c62f47..1b9b3bb55 100644 --- a/openlp/plugins/presentations/lib/presentationtab.py +++ b/openlp/plugins/presentations/lib/presentationtab.py @@ -25,7 +25,7 @@ from PyQt4 import QtCore, QtGui -from openlp.core.lib import SettingsTab, translate +from openlp.core.lib import Receiver, SettingsTab, translate class PresentationTab(SettingsTab): """ @@ -77,7 +77,17 @@ class PresentationTab(SettingsTab): self.PresentationThemeLayout.setSpacing(8) self.PresentationThemeLayout.setMargin(0) self.PresentationThemeLayout.setObjectName(u'PresentationThemeLayout') + self.AdvancedGroupBox = QtGui.QGroupBox(self) + self.AdvancedGroupBox.setObjectName(u'AdvancedGroupBox') + self.AdvancedLayout = QtGui.QVBoxLayout(self.AdvancedGroupBox) + self.AdvancedLayout.setSpacing(8) + self.AdvancedLayout.setMargin(8) + self.AdvancedLayout.setObjectName(u'AdvancedLayout') + self.OverrideAppCheckBox = QtGui.QCheckBox(self.AdvancedGroupBox) + self.OverrideAppCheckBox.setObjectName(u'OverrideAppCheckBox') + self.AdvancedLayout.addWidget(self.OverrideAppCheckBox) self.PresentationLeftLayout.addWidget(self.VerseDisplayGroupBox) + self.PresentationLeftLayout.addWidget(self.AdvancedGroupBox) self.PresentationLeftSpacer = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.PresentationLeftLayout.addItem(self.PresentationLeftSpacer) @@ -107,6 +117,12 @@ class PresentationTab(SettingsTab): checkbox.setText( u'%s %s' % (controller.name, translate('PresentationPlugin.PresentationTab', 'available'))) + self.AdvancedGroupBox.setTitle( + translate('PresentationPlugin.PresentationTab', + 'Advanced')) + self.OverrideAppCheckBox.setText( + translate('PresentationPlugin.PresentationTab', + 'Allow presentation application to be overriden')) def load(self): """ @@ -118,15 +134,33 @@ class PresentationTab(SettingsTab): checkbox = self.PresenterCheckboxes[controller.name] checkbox.setChecked(QtCore.QSettings().value( self.settingsSection + u'/' + controller.name, - QtCore.QVariant(0)).toInt()[0]) + QtCore.QVariant(QtCore.Qt.Checked)).toInt()[0]) + self.OverrideAppCheckBox.setChecked(QtCore.QSettings().value( + self.settingsSection + u'/override app', + QtCore.QVariant(QtCore.Qt.Unchecked)).toInt()[0]) def save(self): """ Save the settings. """ + changed = False for key in self.controllers: controller = self.controllers[key] checkbox = self.PresenterCheckboxes[controller.name] - QtCore.QSettings().setValue( - self.settingsSection + u'/' + controller.name, - QtCore.QVariant(checkbox.checkState())) + setting_key = self.settingsSection + u'/' + controller.name + if QtCore.QSettings().value(setting_key) != checkbox.checkState(): + changed = True + QtCore.QSettings().setValue(setting_key, + QtCore.QVariant(checkbox.checkState())) + if checkbox.checkState() == QtCore.Qt.Checked: + controller.start_process() + else: + controller.kill() + setting_key = self.settingsSection + u'/override app' + if QtCore.QSettings().value(setting_key) != \ + self.OverrideAppCheckBox.checkState(): + QtCore.QSettings().setValue(setting_key, + QtCore.QVariant(self.OverrideAppCheckBox.checkState())) + changed = True + if changed: + Receiver.send_message(u'mediaitem_presentation_rebuild') diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 50784ed51..dabe5becd 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -67,7 +67,7 @@ class PresentationPlugin(Plugin): Plugin.initialise(self) self.insertToolboxItem() for controller in self.controllers: - if self.controllers[controller].enabled: + if self.controllers[controller].enabled(): self.controllers[controller].start_process() def finalise(self): @@ -79,7 +79,7 @@ class PresentationPlugin(Plugin): #Ask each controller to tidy up for key in self.controllers: controller = self.controllers[key] - if controller.enabled: + if controller.enabled(): controller.kill() Plugin.finalise(self)