From 6f8e3f7ea2d571a7c9bfefbf946ed5520e31a8b9 Mon Sep 17 00:00:00 2001 From: Martin Thompson Date: Wed, 5 May 2010 20:57:20 +0100 Subject: [PATCH 01/13] Fixed a qt4.5ism --- openlp/core/lib/settingsmanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/lib/settingsmanager.py b/openlp/core/lib/settingsmanager.py index de1401d56..d6b987db4 100644 --- a/openlp/core/lib/settingsmanager.py +++ b/openlp/core/lib/settingsmanager.py @@ -53,7 +53,7 @@ class SettingsManager(object): self.slidecontroller_image = self.slidecontroller - 50 self.showPreviewPanel = QtCore.QSettings().value( - u'user interface/preview panel', True).toBool() + u'user interface/preview panel', QtCore.QVariant(True)).toBool() def togglePreviewPanel(self, isVisible): QtCore.QSettings().setValue(u'user interface/preview panel', From d04d75ad41d53edcf6b0a6146e45bb4f67abe69a Mon Sep 17 00:00:00 2001 From: Martin Thompson Date: Thu, 6 May 2010 21:41:42 +0100 Subject: [PATCH 02/13] More changes to suit pyqt4.4 --- openlp/plugins/songs/lib/manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/manager.py b/openlp/plugins/songs/lib/manager.py index ff9231fe2..dc275cc98 100644 --- a/openlp/plugins/songs/lib/manager.py +++ b/openlp/plugins/songs/lib/manager.py @@ -50,7 +50,7 @@ class SongManager(): settings.beginGroup(u'songs') self.db_url = u'' db_type = unicode( - settings.value(u'songs/db type', u'sqlite').toString()) + settings.value(u'songs/db type', QtCore.QVariant(u'sqlite')).toString()) if db_type == u'sqlite': self.db_url = u'sqlite:///%s/songs.sqlite' % \ AppLocation.get_section_data_path(u'songs') From fa99ba64b1353853163928066ded394c6cc4922d Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 7 May 2010 19:29:17 +0100 Subject: [PATCH 03/13] Fix names --- openlp/core/lib/serviceitem.py | 3 +-- openlp/core/ui/servicemanager.py | 10 +++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 764875f4f..a283885b2 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -81,7 +81,7 @@ class ServiceItem(object): self.notes = u'' self.from_plugin = False self.capabilities = [] - self.isValid = True + self.is_valid = True def add_capability(self, capability): self.capabilities.append(capability) @@ -336,4 +336,3 @@ class ServiceItem(object): Returns the title of the raw frame """ return self._raw_frames[row][u'path'] - diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 3a35a7a58..c5fa0b73c 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -499,7 +499,7 @@ class ServiceManager(QtGui.QWidget): for itemcount, item in enumerate(self.serviceItems): serviceitem = item[u'service_item'] treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList) - if serviceitem.isValid: + if serviceitem.is_valid: if serviceitem.notes: icon = QtGui.QImage(serviceitem.icon) icon = icon.scaled(80, 80, QtCore.Qt.KeepAspectRatio, @@ -685,7 +685,7 @@ class ServiceManager(QtGui.QWidget): if serviceItem.is_command(): type = serviceItem._raw_frames[0][u'title'].split(u'.')[1] if type not in self.suffixes: - serviceItem.isValid = False + serviceItem.is_valid = False def cleanUp(self): """ @@ -769,7 +769,7 @@ class ServiceManager(QtGui.QWidget): Send the current item to the Preview slide controller """ item, count = self.findServiceItem() - if self.serviceItems[item][u'service_item'].isValid: + if self.serviceItems[item][u'service_item'].is_valid: self.parent.PreviewController.addServiceManagerItem( self.serviceItems[item][u'service_item'], count) else: @@ -796,7 +796,7 @@ class ServiceManager(QtGui.QWidget): Send the current item to the Live slide controller """ item, count = self.findServiceItem() - if self.serviceItems[item][u'service_item'].isValid: + if self.serviceItems[item][u'service_item'].is_valid: self.parent.LiveController.addServiceManagerItem( self.serviceItems[item][u'service_item'], count) if QtCore.QSettings().value( @@ -963,4 +963,4 @@ class ServiceManager(QtGui.QWidget): data_item[u'notes'] = unicode(service_item.notes) data_item[u'selected'] = (item == curitem) data.append(data_item) - Receiver.send_message(u'servicemanager_list_response', data) + Receiver.send_message(u'servicemanager_list_response', data) \ No newline at end of file From efa1e8c2d9b33f5711ea4893e1a2ef5de6f9f1d6 Mon Sep 17 00:00:00 2001 From: Martin Thompson Date: Fri, 7 May 2010 21:29:21 +0100 Subject: [PATCH 04/13] Quick fix to handle Bible config gets confused and returns None --- openlp.pyw | 2 +- openlp/plugins/bibles/lib/mediaitem.py | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/openlp.pyw b/openlp.pyw index 0c1227b6a..5fe962f82 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -169,7 +169,7 @@ def main(): filename = os.path.join(log_path, u'openlp.log') logfile = FileHandler(filename, u'w') logfile.setFormatter(logging.Formatter( - u'%(asctime)s %(name)-20s %(levelname)-8s %(message)s')) + u'%(asctime)s %(name)-55s %(levelname)-8s %(message)s')) log.addHandler(logfile) logging.addLevelName(15, u'Timer') # Parse command line options and deal with them. diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index e44c424a4..e84e732e7 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -337,13 +337,14 @@ class BibleMediaItem(MediaManagerItem): # load bibles into the combo boxes first = True for bible in bibles: - self.QuickVersionComboBox.addItem(bible) - self.QuickSecondBibleComboBox.addItem(bible) - self.AdvancedVersionComboBox.addItem(bible) - self.AdvancedSecondBibleComboBox.addItem(bible) - if first: - first = False - self.initialiseBible(bible) + if bible is not None: + self.QuickVersionComboBox.addItem(bible) + self.QuickSecondBibleComboBox.addItem(bible) + self.AdvancedVersionComboBox.addItem(bible) + self.AdvancedSecondBibleComboBox.addItem(bible) + if first: + first = False + self.initialiseBible(bible) def onListViewResize(self, width, height): self.SearchProgress.setGeometry(self.ListView.geometry().x(), From a8a7e675a410647cdcdbe5258396e9a86144e5ef Mon Sep 17 00:00:00 2001 From: Martin Thompson Date: Sun, 9 May 2010 21:02:38 +0100 Subject: [PATCH 05/13] Updated from review comments --- openlp/core/ui/maindisplay.py | 6 ++++-- openlp/plugins/bibles/lib/mediaitem.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index d67823908..4b2c4d268 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -118,7 +118,8 @@ class MainDisplay(DisplayWidget): DisplayWidget.__init__(self, parent) self.parent = parent self.setWindowTitle(u'OpenLP Display') - try: # WA_TranslucentBackground not available in QT4.4 + # WA_TranslucentBackground is not available in QT4.4 + try: self.setAttribute(QtCore.Qt.WA_TranslucentBackground) except AttributeError: pass @@ -344,7 +345,8 @@ class VideoDisplay(Phonon.VideoWidget): Phonon.createPath(self.mediaObject, self) Phonon.createPath(self.mediaObject, self.audioObject) flags = QtCore.Qt.FramelessWindowHint | QtCore.Qt.Dialog - try: # WindowsStaysOnBottomHint is not available in QT4.4 + # WindowsStaysOnBottomHint is not available in QT4.4 + try: flags = flags | QtCore.Qt.WindowStaysOnBottomHint except AttributeError: pass diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index e84e732e7..136f45633 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -337,7 +337,7 @@ class BibleMediaItem(MediaManagerItem): # load bibles into the combo boxes first = True for bible in bibles: - if bible is not None: + if bible: self.QuickVersionComboBox.addItem(bible) self.QuickSecondBibleComboBox.addItem(bible) self.AdvancedVersionComboBox.addItem(bible) From 2ee1c5ed9b54ccc8d9ab2ad7a79bac79f787c5e1 Mon Sep 17 00:00:00 2001 From: rimach Date: Mon, 10 May 2010 19:56:29 +0200 Subject: [PATCH 06/13] load correct settings for translation --- openlp/core/utils/languagemanager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/utils/languagemanager.py b/openlp/core/utils/languagemanager.py index 3f684b08f..521eab382 100644 --- a/openlp/core/utils/languagemanager.py +++ b/openlp/core/utils/languagemanager.py @@ -68,7 +68,8 @@ class LanguageManager(object): @staticmethod def get_language(): - language = unicode(QtCore.QSettings().value( + settings = QtCore.QSettings(u'OpenLP', u'OpenLP') + language = unicode(settings.value( u'general/language', QtCore.QVariant(u'[en]')).toString()) log.info(u'Language file: \'%s\' Loaded from conf file' % language) regEx = QtCore.QRegExp("^\[(.*)\]") From 51728db0b6f88e73cdb518aad09aabadf69a3eb5 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 10 May 2010 19:19:45 +0100 Subject: [PATCH 07/13] Add cache to renderer --- openlp/core/lib/serviceitem.py | 15 +++-- openlp/core/ui/slidecontroller.py | 101 +++++++++++++++++++++--------- 2 files changed, 82 insertions(+), 34 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index a283885b2..a25205c82 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -82,6 +82,7 @@ class ServiceItem(object): self.from_plugin = False self.capabilities = [] self.is_valid = True + self.cache = [] def add_capability(self, capability): self.capabilities.append(capability) @@ -107,6 +108,7 @@ class ServiceItem(object): """ log.debug(u'Render called') self._display_frames = [] + self.cache = [] if self.service_item_type == ServiceItemType.Text: log.debug(u'Formatting slides') if self.theme is None: @@ -125,6 +127,7 @@ class ServiceItem(object): lines += line + u'\n' self._display_frames.append({u'title': title, \ u'text': lines.rstrip(), u'verseTag': slide[u'verseTag'] }) + self.cache.insert(len(self._display_frames), None) log.log(15, u'Formatting took %4s' % (time.time() - before)) elif self.service_item_type == ServiceItemType.Image: for slide in self._raw_frames: @@ -149,11 +152,15 @@ class ServiceItem(object): self.RenderManager.set_override_theme(self.theme) format = self._display_frames[row][u'text'].split(u'\n') #if screen blank then do not display footer - if format[0]: - frame = self.RenderManager.generate_slide(format, - self.raw_footer) + if self.cache[row] is not None: + frame = self.cache[row] else: - frame = self.RenderManager.generate_slide(format,u'') + if format[0]: + frame = self.RenderManager.generate_slide(format, + self.raw_footer) + else: + frame = self.RenderManager.generate_slide(format,u'') + self.cache[row] = frame return frame def add_from_image(self, path, title, image): diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 15502423b..4673df4e2 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -36,6 +36,30 @@ ItemCapabilities log = logging.getLogger(__name__) +class SlideThread(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, isLive, count): + QtCore.QThread.__init__(self, parent) + self.isLive = isLive + self.count = count + + def run(self): + """ + Run the thread. + """ + time.sleep(1) + for i in range(0, self.count): + if self.isLive: + Receiver.send_message(u'live_slide_cache', i) + else: + Receiver.send_message(u'preview_slide_cache', i) +# for framenumber, frame in enumerate(self.serviceItem.get_frames()): +# self.serviceItem.get_rendered_frame(framenumber) + + class SlideList(QtGui.QTableWidget): """ Customised version of QTableWidget which can respond to keyboard @@ -44,7 +68,7 @@ class SlideList(QtGui.QTableWidget): def __init__(self, parent=None, name=None): QtGui.QTableWidget.__init__(self, parent.Controller) self.parent = parent - self.hotkey_map = { + self.hotkeyMap = { QtCore.Qt.Key_Return: 'servicemanager_next_item', QtCore.Qt.Key_Space: 'slidecontroller_live_next_noloop', QtCore.Qt.Key_Enter: 'slidecontroller_live_next_noloop', @@ -66,8 +90,8 @@ class SlideList(QtGui.QTableWidget): elif event.key() == QtCore.Qt.Key_PageDown: self.parent.onSlideSelectedLast() event.accept() - elif event.key() in self.hotkey_map and self.parent.isLive: - Receiver.send_message(self.hotkey_map[event.key()]) + elif event.key() in self.hotkeyMap and self.parent.isLive: + Receiver.send_message(self.hotkeyMap[event.key()]) event.accept() event.ignore() else: @@ -87,13 +111,13 @@ class SlideController(QtGui.QWidget): self.isLive = isLive self.parent = parent self.mainDisplay = self.parent.displayManager.mainDisplay - self.loop_list = [ + self.loopList = [ u'Start Loop', u'Stop Loop', u'Loop Separator', u'Image SpinBox' ] - self.song_edit_list = [ + self.songEditList = [ u'Edit Song', ] if isLive: @@ -115,11 +139,11 @@ class SlideController(QtGui.QWidget): if self.isLive: self.TypeLabel.setText(self.trUtf8('Live')) self.split = 1 - self.type_prefix = u'live' + self.typePrefix = u'live' else: self.TypeLabel.setText(self.trUtf8('Preview')) self.split = 0 - self.type_prefix = u'preview' + self.typePrefix = u'preview' self.TypeLabel.setStyleSheet(u'font-weight: bold; font-size: 12pt;') self.TypeLabel.setAlignment(QtCore.Qt.AlignCenter) self.PanelLayout.addWidget(self.TypeLabel) @@ -309,51 +333,57 @@ class SlideController(QtGui.QWidget): QtCore.SIGNAL(u'slidecontroller_live_spin_delay'), self.receiveSpinDelay) if isLive: - self.Toolbar.makeWidgetsInvisible(self.loop_list) + self.Toolbar.makeWidgetsInvisible(self.loopList) else: - self.Toolbar.makeWidgetsInvisible(self.song_edit_list) + self.Toolbar.makeWidgetsInvisible(self.songEditList) self.Mediabar.setVisible(False) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_stop_loop' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_stop_loop' % self.typePrefix), self.onStopLoop) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_first' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_first' % self.typePrefix), self.onSlideSelectedFirst) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_next' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_next' % self.typePrefix), self.onSlideSelectedNext) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_previous' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_previous' % self.typePrefix), self.onSlideSelectedPrevious) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_next_noloop' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_next_noloop' % self.typePrefix), self.onSlideSelectedNextNoloop) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'slidecontroller_%s_previous_noloop' % - self.type_prefix), + self.typePrefix), self.onSlideSelectedPreviousNoloop) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_last' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_last' % self.typePrefix), self.onSlideSelectedLast) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_change' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_change' % self.typePrefix), self.onSlideChange) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_set' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_set' % self.typePrefix), self.onSlideSelectedIndex) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_blank' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_blank' % self.typePrefix), self.onSlideBlank) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_unblank' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_unblank' % self.typePrefix), self.onSlideUnblank) QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'slidecontroller_%s_text_request' % self.type_prefix), + QtCore.SIGNAL(u'slidecontroller_%s_text_request' % self.typePrefix), self.onTextRequest) QtCore.QObject.connect(self.Splitter, QtCore.SIGNAL(u'splitterMoved(int, int)'), self.trackSplitter) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_updated'), self.refreshServiceItem) + if self.isLive: + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'live_slide_cache'), self.slideCache) + else: + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'preview_slide_cache'), self.slideCache) def widthChanged(self): """ @@ -404,16 +434,16 @@ class SlideController(QtGui.QWidget): self.Toolbar.setVisible(True) self.Mediabar.setVisible(False) self.Toolbar.makeWidgetsInvisible([u'Song Menu']) - self.Toolbar.makeWidgetsInvisible(self.loop_list) + self.Toolbar.makeWidgetsInvisible(self.loopList) if item.is_text(): - self.Toolbar.makeWidgetsInvisible(self.loop_list) + self.Toolbar.makeWidgetsInvisible(self.loopList) if QtCore.QSettings().value( self.parent.songsSettingsSection + u'/show songbar', QtCore.QVariant(True)).toBool() and len(self.slideList) > 0: self.Toolbar.makeWidgetsVisible([u'Song Menu']) if item.is_capable(ItemCapabilities.AllowsLoop) and \ len(item.get_frames()) > 1: - self.Toolbar.makeWidgetsVisible(self.loop_list) + self.Toolbar.makeWidgetsVisible(self.loopList) if item.is_media(): self.Toolbar.setVisible(False) self.Mediabar.setVisible(True) @@ -425,9 +455,9 @@ class SlideController(QtGui.QWidget): """ self.Toolbar.setVisible(True) self.Mediabar.setVisible(False) - self.Toolbar.makeWidgetsInvisible(self.song_edit_list) + self.Toolbar.makeWidgetsInvisible(self.songEditList) if item.is_capable(ItemCapabilities.AllowsEdit) and item.from_plugin: - self.Toolbar.makeWidgetsVisible(self.song_edit_list) + self.Toolbar.makeWidgetsVisible(self.songEditList) elif item.is_media(): self.Toolbar.setVisible(False) self.Mediabar.setVisible(True) @@ -569,8 +599,12 @@ class SlideController(QtGui.QWidget): self.enableToolBar(serviceItem) self.onSlideSelected() self.PreviewListWidget.setFocus() - Receiver.send_message(u'slidecontroller_%s_started' % self.type_prefix, + Receiver.send_message(u'slidecontroller_%s_started' % self.typePrefix, [serviceItem]) + if self.serviceItem.is_text(): + st = SlideThread( + self, self.isLive, len(self.serviceItem.get_frames())) + st.start() log.log(15, u'Display Rendering took %4s' % (time.time() - before)) def onTextRequest(self): @@ -591,7 +625,7 @@ class SlideController(QtGui.QWidget): (self.PreviewListWidget.currentRow() == framenumber) data.append(data_item) Receiver.send_message(u'slidecontroller_%s_text_response' - % self.type_prefix, data) + % self.typePrefix, data) #Screen event methods def onSlideSelectedFirst(self): @@ -708,6 +742,13 @@ class SlideController(QtGui.QWidget): % self.serviceItem.name.lower(), [self.serviceItem, self.isLive]) + def slideCache(self, slide): + """ + Generate a slide cache item rendered and ready for use + in the background. + """ + self.serviceItem.get_rendered_frame(int(slide)) + def onSlideSelected(self): """ Generate the preview when you click on a slide. @@ -737,7 +778,7 @@ class SlideController(QtGui.QWidget): if self.isLive: self.mainDisplay.frameView(frame, True) self.selectedRow = row - Receiver.send_message(u'slidecontroller_%s_changed' % self.type_prefix, + Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, row) def onSlideChange(self, row): @@ -746,7 +787,7 @@ class SlideController(QtGui.QWidget): """ self.PreviewListWidget.selectRow(row) self.updatePreview() - Receiver.send_message(u'slidecontroller_%s_changed' % self.type_prefix, + Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, row) def updatePreview(self): From f7244c5e6e448c21e9fcd1b2c94074179e759c17 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 10 May 2010 19:29:51 +0100 Subject: [PATCH 08/13] Remove comments and simplify --- openlp/core/ui/slidecontroller.py | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 4673df4e2..37e0cf59a 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -38,12 +38,12 @@ log = logging.getLogger(__name__) class SlideThread(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. + A special Qt thread class to speed up the display of text based frames. + This is threaded so it loads the frames in background """ - def __init__(self, parent, isLive, count): + def __init__(self, parent, prefix, count): QtCore.QThread.__init__(self, parent) - self.isLive = isLive + self.prefix = prefix self.count = count def run(self): @@ -52,13 +52,7 @@ class SlideThread(QtCore.QThread): """ time.sleep(1) for i in range(0, self.count): - if self.isLive: - Receiver.send_message(u'live_slide_cache', i) - else: - Receiver.send_message(u'preview_slide_cache', i) -# for framenumber, frame in enumerate(self.serviceItem.get_frames()): -# self.serviceItem.get_rendered_frame(framenumber) - + Receiver.send_message(u'%s_slide_cache' % self.prefix, i) class SlideList(QtGui.QTableWidget): """ @@ -378,12 +372,8 @@ class SlideController(QtGui.QWidget): QtCore.SIGNAL(u'splitterMoved(int, int)'), self.trackSplitter) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'config_updated'), self.refreshServiceItem) - if self.isLive: - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'live_slide_cache'), self.slideCache) - else: - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'preview_slide_cache'), self.slideCache) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'%s_slide_cache' % self.typePrefix), self.slideCache) def widthChanged(self): """ @@ -603,7 +593,7 @@ class SlideController(QtGui.QWidget): [serviceItem]) if self.serviceItem.is_text(): st = SlideThread( - self, self.isLive, len(self.serviceItem.get_frames())) + self, self.typePrefix, len(self.serviceItem.get_frames())) st.start() log.log(15, u'Display Rendering took %4s' % (time.time() - before)) From e0664a1e8864e96e2c7805ddc2c168f7b30ff4e8 Mon Sep 17 00:00:00 2001 From: rimach Date: Tue, 11 May 2010 21:00:21 +0200 Subject: [PATCH 09/13] bugfixing for i18n --- openlp/core/ui/mainwindow.py | 29 ++-- resources/i18n/openlp_en.ts | 272 ++++++++++++++++++----------------- 2 files changed, 154 insertions(+), 147 deletions(-) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index de8da9b66..4432eb9c0 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -260,15 +260,14 @@ class Ui_MainWindow(object): qmList = LanguageManager.get_qm_list() savedLanguage = LanguageManager.get_language() self.AutoLanguageItem.setChecked(LanguageManager.AutoLanguage) - self.LanguageItem = {} - for key in qmList.keys(): - self.LanguageItem[key] = QtGui.QAction(MainWindow) - self.LanguageItem[key].setObjectName(key) - self.LanguageItem[key].setCheckable(True) - self.LanguageItem[key].setDisabled(LanguageManager.AutoLanguage) + for key in sorted(qmList.keys()): + languageItem = QtGui.QAction(MainWindow) + languageItem.setObjectName(key) + languageItem.setCheckable(True) if qmList[key] == savedLanguage: - self.LanguageItem[key].setChecked(True) - add_actions(self.LanguageGroup, [self.LanguageItem[key]]) + languageItem.setChecked(True) + add_actions(self.LanguageGroup, [languageItem]) + self.LanguageGroup.setDisabled(LanguageManager.AutoLanguage) self.ToolsAddToolItem = QtGui.QAction(MainWindow) AddToolIcon = build_icon(u':/tools/tools_add.png') self.ToolsAddToolItem.setIcon(AddToolIcon) @@ -296,8 +295,7 @@ class Ui_MainWindow(object): self.ViewThemeManagerItem, None, self.action_Preview_Panel)) #i18n add Language Actions add_actions(self.OptionsLanguageMenu, (self.AutoLanguageItem, None)) - for item in sorted(self.LanguageItem): - add_actions(self.OptionsLanguageMenu, [self.LanguageItem[item]]) + add_actions(self.OptionsLanguageMenu, self.LanguageGroup.actions()) add_actions(self.OptionsMenu, (self.OptionsLanguageMenu.menuAction(), self.OptionsViewMenu.menuAction(), None, self.OptionsSettingsItem)) add_actions(self.ToolsMenu, @@ -417,10 +415,10 @@ class Ui_MainWindow(object): self.AutoLanguageItem.setText(translate('MainWindow', '&Auto Detect')) self.AutoLanguageItem.setStatusTip( translate('MainWindow', 'Choose System language, if available')) - for item in self.LanguageItem: - self.LanguageItem[item].setText(self.LanguageItem[item].objectName()) - self.LanguageItem[item].setStatusTip( - translate('MainWindow', 'Set the interface language to %1').arg(self.LanguageItem[item].objectName())) + for item in self.LanguageGroup.actions(): + item.setText(item.objectName()) + item.setStatusTip( + translate('MainWindow', 'Set the interface language to %1').arg(item.objectName())) self.ToolsAddToolItem.setText(translate('MainWindow', 'Add &Tool...')) self.ToolsAddToolItem.setStatusTip( translate('MainWindow', 'Add an application to the list of tools')) @@ -575,8 +573,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): #i18n def setAutoLanguage(self, value): - for action in self.LanguageGroup.actions(): - action.setDisabled(value) + self.LanguageGroup.setDisabled(value) LanguageManager.AutoLanguage = value LanguageManager.set_language(self.LanguageGroup.checkedAction()) diff --git a/resources/i18n/openlp_en.ts b/resources/i18n/openlp_en.ts index 41a956423..c3cb8a595 100644 --- a/resources/i18n/openlp_en.ts +++ b/resources/i18n/openlp_en.ts @@ -705,12 +705,12 @@ This General Public License does not permit incorporating your program into prop - + Bible not fully loaded - + No matching book could be found in this Bible. @@ -755,7 +755,7 @@ This General Public License does not permit incorporating your program into prop - + No Book Found @@ -1683,12 +1683,12 @@ Changes don't affect verses already in the service LanguageManager - + Language - + After restart new Language settings will be used. @@ -1696,379 +1696,379 @@ Changes don't affect verses already in the service MainWindow - + The Main Display has been blanked out - + OpenLP Version Updated - + Save Changes to Service? - + OpenLP Main Display Blanked - + New Service - + Open Service - + Save Service - + OpenLP 2.0 - + English - + Default Theme: - + &File - + &Import - + &Export - + &Options - + &View - + M&ode - + &Tools - + &Help - + Media Manager - + Service Manager - + Theme Manager - + &New - + Create a new Service - + Ctrl+N - + &Open - + Open an existing service - + Ctrl+O - + &Save - + Save the current service to disk - + Ctrl+S - + Save &As... - + Save Service As - + Save the current service under a new name - + F12 - + E&xit - + Quit OpenLP - + Alt+F4 - + &Theme - + &Language - + Look && &Feel - + &Settings - + &Media Manager - + Toggle Media Manager - + Toggle the visibility of the Media Manager - + F8 - + &Theme Manager - + Toggle Theme Manager - + Toggle the visibility of the Theme Manager - + F10 - + &Service Manager - + Toggle Service Manager - + Toggle the visibility of the Service Manager - + F9 - + &Preview Panel - + Toggle Preview Panel - + Toggle the visibility of the Preview Panel - + F11 - + &Plugin List - + List the Plugins - + Alt+F7 - + &User Guide - + &About - + More information about OpenLP - + Ctrl+F1 - + &Online Help - + &Web Site - + &Auto Detect - + Choose System language, if available - + Set the interface language to %1 - + Add &Tool... - + Add an application to the list of tools - + &Preview Pane - + &Live - + Version %s of OpenLP is now available for download (you are currently running version %s). You can download the latest version from http://openlp.org - + Your service has changed. Do you want to save those changes? @@ -2217,7 +2217,7 @@ You can download the latest version from http://openlp.org MediaPlugin - + <b>Media Plugin</b><br>This plugin allows the playing of audio and video media @@ -2533,7 +2533,7 @@ You can download the latest version from http://openlp.org - + Present using: @@ -2543,7 +2543,7 @@ You can download the latest version from http://openlp.org - + A presentation with that filename already exists. @@ -2553,12 +2553,12 @@ You can download the latest version from http://openlp.org - + File exists - + Presentations (%s) @@ -2636,140 +2636,150 @@ You can download the latest version from http://openlp.org ServiceManager - + Save Changes to Service? - + Open Service - + Move to top - + Create a new service - + Save this service - + Theme: - + Delete From Service - + Save Service - + &Live Verse - + Move to &top - + New Service - + &Notes - + Move to end - + &Delete From Service - + Move up order - + Move down order - + Move &down - + Load an existing service - + &Preview Verse - + Move &up - + &Edit Item - + Move to &bottom - + &Maintain Item - + Your service is unsaved, do you want to save those changes before creating a new one? - + Your current service is unsaved, do you want to save the changes before opening a new one? - + &Add New Item - + &Add to Selected Item + + + Missing Display Handler + + + + + Your item cannot be displayed as there is no handler to display it + + ServiceNoteForm @@ -2790,97 +2800,97 @@ You can download the latest version from http://openlp.org SlideController - + Move to previous - + Go to Verse - + Start continuous loop - + Live - + Start playing media - + Move to live - + Preview - + Move to last - + Edit and re-preview Song - + Delay between slides in seconds - + Move to next - + Move to first - + Blank Screen - + Verse - + Stop continuous loop - + s - + Theme Screen - + Hide Screen - + Chorus From 294b0abfc0efaf2b5cccac910358c164e35662e5 Mon Sep 17 00:00:00 2001 From: rimach Date: Tue, 11 May 2010 23:05:08 +0200 Subject: [PATCH 10/13] remove unused imports, correct import order --- openlp/core/ui/aboutform.py | 1 - openlp/core/utils/languagemanager.py | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/openlp/core/ui/aboutform.py b/openlp/core/ui/aboutform.py index cf051722b..c79324515 100644 --- a/openlp/core/ui/aboutform.py +++ b/openlp/core/ui/aboutform.py @@ -26,7 +26,6 @@ from PyQt4 import QtCore, QtGui from aboutdialog import Ui_AboutDialog -from openlp.core.lib import translate class AboutForm(QtGui.QDialog, Ui_AboutDialog): """ diff --git a/openlp/core/utils/languagemanager.py b/openlp/core/utils/languagemanager.py index 521eab382..8be408d17 100644 --- a/openlp/core/utils/languagemanager.py +++ b/openlp/core/utils/languagemanager.py @@ -24,10 +24,9 @@ ############################################################################### import logging - -from logging import FileHandler -from PyQt4 import QtCore, QtGui import os + +from PyQt4 import QtCore, QtGui from openlp.core.utils import AppLocation from openlp.core.lib import translate From cd8377f03d3363ca92686d3d0851cb03f96fb392 Mon Sep 17 00:00:00 2001 From: Martin Thompson Date: Wed, 12 May 2010 21:43:48 +0100 Subject: [PATCH 11/13] Fixed crash when monitor= in OpenLP.conf --- openlp/core/ui/screen.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/screen.py b/openlp/core/ui/screen.py index 19c4e01b5..69dd915d2 100644 --- a/openlp/core/ui/screen.py +++ b/openlp/core/ui/screen.py @@ -61,9 +61,10 @@ class ScreenList(object): """ Set up the current screen dimensions """ - log.debug(u'set_override_display %s', number, ) + log.debug(u'set_current_display %s', number, ) if number + 1 > self.display_count: self.current = self.screen_list[0] + self.override = copy.deepcopy(self.current) self.current_display = 0 else: self.current = self.screen_list[number] From eaef48e70858988bac4ea62dbcee72b64e0458c9 Mon Sep 17 00:00:00 2001 From: rimach Date: Wed, 12 May 2010 23:44:00 +0200 Subject: [PATCH 12/13] resolve merge proposal request --- resources/i18n/openlp_af.qm | Bin 31001 -> 30886 bytes resources/i18n/openlp_de.qm | Bin 33285 -> 31803 bytes resources/i18n/openlp_en.qm | Bin 0 -> 337 bytes resources/i18n/openlp_en.ts | 749 +++++++++++++++++++-------------- resources/i18n/openlp_en_GB.qm | Bin 28558 -> 29107 bytes resources/i18n/openlp_en_ZA.qm | Bin 21540 -> 19540 bytes resources/i18n/openlp_es.qm | Bin 14461 -> 14711 bytes resources/i18n/openlp_hu.qm | Bin 31896 -> 32687 bytes resources/i18n/openlp_nb.qm | Bin 20348 -> 17999 bytes resources/i18n/openlp_pt_BR.qm | Bin 32600 -> 32861 bytes resources/i18n/openlp_sv.qm | Bin 33919 -> 33820 bytes scripts/translation_utils.py | 3 +- 12 files changed, 441 insertions(+), 311 deletions(-) create mode 100644 resources/i18n/openlp_en.qm diff --git a/resources/i18n/openlp_af.qm b/resources/i18n/openlp_af.qm index 785a972497aa5db313b27fd1495c06f689483bd9..6048181b7aab574133e9e1dd1ee1a273dd0ae517 100644 GIT binary patch delta 5039 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 e$1i3K@-mrRiS!xx+XLL delta 5129 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 delta 6763 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 T3EHM{RZ^E(>+C0HP3Qjyu?D5- diff --git a/resources/i18n/openlp_en.qm b/resources/i18n/openlp_en.qm new file mode 100644 index 0000000000000000000000000000000000000000..6bd22c41dfd987e516ede9d5e79a545715d2ad8c GIT binary patch literal 337 rcmcE7ks@*G{hX<16=n7(EZlq7i2(>QL4-a71EUecbP#hC5FY{nJdg@w literal 0 HcmV?d00001 diff --git a/resources/i18n/openlp_en.ts b/resources/i18n/openlp_en.ts index c3cb8a595..a00e05646 100644 --- a/resources/i18n/openlp_en.ts +++ b/resources/i18n/openlp_en.ts @@ -2,11 +2,6 @@ AboutForm - - - build - - About OpenLP @@ -216,19 +211,14 @@ This General Public License does not permit incorporating your program into prop Close + + + build + + AlertForm - - - Item selected to Add - - - - - Missing data - - Alert Message @@ -274,6 +264,89 @@ This General Public License does not permit incorporating your program into prop &Close + + + Item selected to Add + + + + + Missing data + + + + + AlertsTab + + + pt + + + + + Location: + + + + + Font Color: + + + + + Font + + + + + Font Name: + + + + + Preview + + + + + Alerts + + + + + Alert timeout: + + + + + openlp.org + + + + + Background Color: + + + + + s + + + + + Bottom + + + + + Top + + + + + Font Size: + + AmendThemeForm @@ -685,8 +758,18 @@ This General Public License does not permit incorporating your program into prop - - Book: + + Clear + + + + + Search + + + + + To: @@ -694,21 +777,11 @@ This General Public License does not permit incorporating your program into prop Text Search - - - Find: - - Search Type: - - - Bible not fully loaded - - No matching book could be found in this Bible. @@ -725,8 +798,13 @@ This General Public License does not permit incorporating your program into prop - - Search + + Bible not fully loaded + + + + + No Book Found @@ -755,8 +833,13 @@ This General Public License does not permit incorporating your program into prop - - No Book Found + + Find: + + + + + Book: @@ -764,16 +847,6 @@ This General Public License does not permit incorporating your program into prop Advanced - - - To: - - - - - Clear - - Verse: @@ -816,13 +889,13 @@ This General Public License does not permit incorporating your program into prop - - Verse Display + + Display Dual Bible Verses - - Display Dual Bible Verses + + Bibles @@ -831,8 +904,8 @@ This General Public License does not permit incorporating your program into prop - - Layout Style: + + Verse Display @@ -840,11 +913,6 @@ This General Public License does not permit incorporating your program into prop No brackets - - - Bibles - - { and } @@ -866,6 +934,11 @@ Changes don't affect verses already in the service Bible Theme: + + + Layout Style: + + CustomMediaItem @@ -901,6 +974,14 @@ Changes don't affect verses already in the service + + DisplayTab + + + Displays + + + EditCustomForm @@ -923,11 +1004,6 @@ Changes don't affect verses already in the service Save && Preview - - - You have unsaved data, please save or clear - - Edit Custom Slides @@ -1028,6 +1104,11 @@ Changes don't affect verses already in the service Credits: + + + You have unsaved data, please save or clear + + EditSongForm @@ -1051,31 +1132,6 @@ Changes don't affect verses already in the service Error - - - bitped - - - - - v - - - - - c - - - - - Invalid verse entry - Vx or Cx - - - - - Invalid verse entry, values must be I,B,T,P,E,O,Vx,Cx - - Song Editor @@ -1201,19 +1257,34 @@ Changes don't affect verses already in the service Theme, Copyright Info && Comments + + + bitped + + + + + v + + + + + c + + + + + Invalid verse entry - Vx or Cx + + + + + Invalid verse entry, values must be I,B,T,P,E,O,Vx,Cx + + EditVerseForm - - - Verse - - - - - Chrous - - Edit Verse @@ -1229,6 +1300,11 @@ Changes don't affect verses already in the service Intro + + + Verse + + Pre-Chorus @@ -1259,6 +1335,11 @@ Changes don't affect verses already in the service Number + + + Chrous + + GeneralTab @@ -1267,6 +1348,11 @@ Changes don't affect verses already in the service CCLI Details + + + SongSelect Password: + + primary @@ -1337,11 +1423,6 @@ Changes don't affect verses already in the service Monitors - - - SongSelect Password: - - Display if a single screen @@ -1420,8 +1501,8 @@ Changes don't affect verses already in the service ImportWizardForm - - You need to specify a file with books of the Bible to use in the import. + + Bible Exists @@ -1434,11 +1515,6 @@ Changes don't affect verses already in the service You need to set a copyright for your Bible! Bibles in the Public Domain need to be marked as such. - - - Bible Exists - - Empty Copyright @@ -1464,16 +1540,6 @@ Changes don't affect verses already in the service Finished import. - - - You need to specify a file of Bible verses to import. - - - - - You need to specify a version name for your Bible. - - This Bible already exists! Please import a different Bible or first delete the existing one. @@ -1489,16 +1555,6 @@ Changes don't affect verses already in the service Invalid Books File - - - You need to specify a file to import your Bible from. - - - - - You need to specify an OpenSong Bible file to import. - - Invalid Verse File @@ -1509,21 +1565,6 @@ Changes don't affect verses already in the service Open OpenSong Bible - - - Open OSIS File - - - - - Open Books CSV File - - - - - Open Verses CSV File - - Bible Import Wizard @@ -1679,16 +1720,56 @@ Changes don't affect verses already in the service Ready. + + + You need to specify a file to import your Bible from. + + + + + You need to specify a file with books of the Bible to use in the import. + + + + + You need to specify a file of Bible verses to import. + + + + + You need to specify an OpenSong Bible file to import. + + + + + You need to specify a version name for your Bible. + + + + + Open OSIS File + + + + + Open Books CSV File + + + + + Open Verses CSV File + + LanguageManager - + Language - + After restart new Language settings will be used. @@ -1715,21 +1796,6 @@ Changes don't affect verses already in the service OpenLP Main Display Blanked - - - New Service - - - - - Open Service - - - - - Save Service - - OpenLP 2.0 @@ -1805,6 +1871,11 @@ Changes don't affect verses already in the service &New + + + New Service + + Create a new Service @@ -1820,6 +1891,11 @@ Changes don't affect verses already in the service &Open + + + Open Service + + Open an existing service @@ -1835,6 +1911,11 @@ Changes don't affect verses already in the service &Save + + + Save Service + + Save the current service to disk @@ -2090,11 +2171,6 @@ You can download the latest version from http://openlp.org Load a new - - - Delete the selected item - - &Edit @@ -2120,6 +2196,11 @@ You can download the latest version from http://openlp.org Edit the selected + + + Delete the selected item + + Add a new @@ -2171,26 +2252,26 @@ You can download the latest version from http://openlp.org - - Invalid Service Item + + You must select an existing service item to add to. - - You must select an existing service item to add to. + + Invalid Service Item MediaMediaItem - - Media + + Select Media - - Select Media + + Media @@ -2378,6 +2459,11 @@ You can download the latest version from http://openlp.org OpenSongExportForm + + + OpenSong Song Exporter + + Select OpenSong song folder: @@ -2443,11 +2529,6 @@ You can download the latest version from http://openlp.org Close - - - OpenSong Song Exporter - - OpenSongImportForm @@ -2538,8 +2619,8 @@ You can download the latest version from http://openlp.org - - Automatic + + Select Presentation(s) @@ -2548,13 +2629,13 @@ You can download the latest version from http://openlp.org - - Select Presentation(s) + + File exists - - File exists + + Automatic @@ -2635,6 +2716,11 @@ You can download the latest version from http://openlp.org ServiceManager + + + Save Service + + Save Changes to Service? @@ -2671,8 +2757,8 @@ You can download the latest version from http://openlp.org - - Save Service + + &Preview Verse @@ -2680,11 +2766,6 @@ You can download the latest version from http://openlp.org &Live Verse - - - Move to &top - - New Service @@ -2695,16 +2776,6 @@ You can download the latest version from http://openlp.org &Notes - - - Move to end - - - - - &Delete From Service - - Move up order @@ -2715,24 +2786,14 @@ You can download the latest version from http://openlp.org Move down order - - - Move &down - - Load an existing service - - &Preview Verse - - - - - Move &up + + Move to end @@ -2740,11 +2801,41 @@ You can download the latest version from http://openlp.org &Edit Item + + + Move to &top + + + + + Move &up + + + + + Move &down + + Move to &bottom + + + &Delete From Service + + + + + &Add New Item + + + + + &Add to Selected Item + + &Maintain Item @@ -2760,16 +2851,6 @@ You can download the latest version from http://openlp.org Your current service is unsaved, do you want to save the changes before opening a new one? - - - &Add New Item - - - - - &Add to Selected Item - - Missing Display Handler @@ -2804,6 +2885,16 @@ You can download the latest version from http://openlp.org Move to previous + + + Edit and re-preview Song + + + + + Delay between slides in seconds + + Go to Verse @@ -2829,24 +2920,14 @@ You can download the latest version from http://openlp.org Move to live - - - Preview - - Move to last - - Edit and re-preview Song - - - - - Delay between slides in seconds + + Verse @@ -2865,8 +2946,8 @@ You can download the latest version from http://openlp.org - - Verse + + Preview @@ -2925,26 +3006,6 @@ You can download the latest version from http://openlp.org SongMaintenanceForm - - - Are you sure you want to delete the selected book? - - - - - Couldn't save your author. - - - - - This author can't be deleted, they are currently assigned to at least one song. - - - - - Couldn't add your book. - - Error @@ -2956,13 +3017,13 @@ You can download the latest version from http://openlp.org - - Couldn't add your topic. + + Are you sure you want to delete the selected book? - - This book can't be deleted, it is currently assigned to at least one song. + + Delete Topic @@ -2980,26 +3041,6 @@ You can download the latest version from http://openlp.org Are you sure you want to delete the selected author? - - - Couldn't add your author. - - - - - Couldn't save your topic. - - - - - Couldn't save your book. - - - - - Delete Topic - - Delete Author @@ -3010,11 +3051,6 @@ You can download the latest version from http://openlp.org No topic selected! - - - This topic can't be deleted, it is currently assigned to at least one song. - - Are you sure you want to delete the selected topic? @@ -3055,6 +3091,51 @@ You can download the latest version from http://openlp.org Delete + + + Couldn't add your author. + + + + + Couldn't add your topic. + + + + + Couldn't add your book. + + + + + Couldn't save your author. + + + + + Couldn't save your topic. + + + + + Couldn't save your book. + + + + + This author can't be deleted, they are currently assigned to at least one song. + + + + + This topic can't be deleted, it is currently assigned to at least one song. + + + + + This book can't be deleted, it is currently assigned to at least one song. + + SongMediaItem @@ -3073,6 +3154,11 @@ You can download the latest version from http://openlp.org Maintain the lists of authors, topics and books + + + Titles + + Lyrics @@ -3083,11 +3169,6 @@ You can download the latest version from http://openlp.org Type: - - - Titles - - Clear @@ -3236,11 +3317,6 @@ You can download the latest version from http://openlp.org Delete a theme - - - File is not a valid theme. - - Edit a theme @@ -3256,11 +3332,6 @@ You can download the latest version from http://openlp.org Export Theme - - - You are unable to delete the default theme. - - Theme Exists @@ -3301,11 +3372,6 @@ You can download the latest version from http://openlp.org Export theme - - - You have not selected a theme. - - A theme with this name already exists, would you like to overwrite it? @@ -3316,6 +3382,11 @@ You can download the latest version from http://openlp.org Export a theme + + + You are unable to delete the default theme. + + Theme %s is use in %s plugin @@ -3326,6 +3397,16 @@ You can download the latest version from http://openlp.org Theme %s is use by Service Manager + + + You have not selected a theme. + + + + + File is not a valid theme. + + ThemesTab @@ -3340,8 +3421,8 @@ You can download the latest version from http://openlp.org - - Use the global theme, overriding any themes associated with either the service or the songs. + + Global level @@ -3355,8 +3436,8 @@ You can download the latest version from http://openlp.org - - Global level + + Use the global theme, overriding any themes associated with either the service or the songs. @@ -3365,13 +3446,13 @@ You can download the latest version from http://openlp.org - - Use the theme from the service, overriding any of the individual songs' themes. If the service doesn't have a theme, then use the global theme. + + Themes - - Themes + + Use the theme from the service, overriding any of the individual songs' themes. If the service doesn't have a theme, then use the global theme. @@ -3502,6 +3583,54 @@ You can download the latest version from http://openlp.org + + self + + + Amend Display Settings + + + + + Default Settings + + + + + X + + + + + 0 + + + + + Y + + + + + Height + + + + + Width + + + + + Amend Settings + + + + + Override Output Display + + + self.ImportSongMenu diff --git a/resources/i18n/openlp_en_GB.qm b/resources/i18n/openlp_en_GB.qm index b2dc819313cb2da8c1cc22fd27930256eea7d5ab..5a31382cf6d76e4b0ad2cc29f4110b0c77c2de18 100644 GIT binary patch delta 5016 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 E0H_MW82|tP diff --git a/resources/i18n/openlp_en_ZA.qm b/resources/i18n/openlp_en_ZA.qm index 58ee3e02cfc5dbcbb211fa5aa464ff1af936163f..344aec034fd47537dbabafa9656a5f1229f64c09 100644 GIT binary patch delta 3314 zcmZwJ3tUuH9tZIMow={Mb7uw!k%tc+0tyHS@+J%td@Cp@ArWHuMi3E8T*pl$&4WZjyRVS(37~p(=eR4QEhM> zah29`261~v!A0b>ZVg;b{qGgSCi3nMhIh#4GfyIoE%{pOYrM#J*2gf4e695~iK>O< zdl?q29)@4`SD>-!drr?H`%V4CU*)%~hh zdSw|JSN9aN=0M|lSLmxclg4k&Lb+J=uw?F&FVVkI@djhPjX&}Xx&h;)8*C2ld1SvQHkHu>X10kxLi zf;;J(%y!sJ&nF;TXp5!1u6#v1>(xlES=DbP?7v?)}i9)WM9@ zRTJsmnHlG>r1}X=&UD0@K99-s#?0w=Gb>JPgI_T_Y+oib$tK3~4ACh2GiTzQ;56p) zrI+AJ=Bj2F+{@f}2U9PfSAEXhzki#^;I0uh=zt+s<8Z1J7HC}SF%aW3jhkO5HcgPm zb2sjr7HOttV&|CN(`>5R4LddOh4>KJIBGubUSdWjO7loL1XpOfPM?N*wel8>)aHcN z)UXQP)b^j4LS!pyT^C_$ZHH*bCA7iu+R1~b!KK;^Ys0p!+Qn`aM0SjJXC9W)E?oO@ zH|pEvYOkKf(%DsMpY(WA`{URtDBsq0m6>tl1%VZxM#3!C#wQ3Cu>-5WfGwP#*z~}HDTT`Yb>Z@T7 z)S#ihPO9g%csH_3Au?!V8aJi$ylUEroF z%ZZ$Qxb$!g#5tCmwe}cH$xpKv$p>tPqKu}2X1x8dy; z;JN-0ynQTUr2ksp`DZL`e{&5VQS5_E3!ixGI(*Eh=3^uS?D&kN5IBsVHKPtD@^ePw zL>rLHFPe|%2UPM!VjHaE->+(bE&Qon-ms(Bfv&3K`3r%4hz8E)+a6-q3|uL2ZLh#O z!9%=({Xg)w5OoMWbqx?kyOzLYVIB!^iRwNfFBw7SdRkc8l>(m%EB?HY$jwDqt2o2E zLdnIYMD8PmlFJA__cWnA{5!ZZ1wJ7jykrRi*BO=$=23{A3N*?f; z7?6q=dG-@SU0q<37#21b7K`yE1<)eq4F8nKOB5Ho9fh;S2Ge=$f3GUBc^(?}`ba$g z*lV*)O*j@6%=VHfl_4=D__w$#IcYF?Cl^V?@$;cE+=cXVU{mP^Z7OVBr<-%Inrq{Y+X8gMKthGGU zMbGZv0f*}sR^VJ1I$LjUgZ}0El7x1mfGPUwcQDd`1^Q!cm*FP;znIfRfujD-RCF|O zsQ$j88s_UCk68?F=*>?i;$Rsj>32i{YhJ%;Lljr2aN?DnNgD3ccym5px(Qr}TdORL_%G;RhFiqap-3XV+2V$@U z!^`ClOsGG+#;j&q2&3_xedpm4V{zpJSZ+MjjhKjNG9F!m4n}@s zY|!Gwi_#jKZlay2!N#*0!(goOnoAqZH(o!7n24$~wzkfLttJ{-51*UH*P;HXXfM;$ zG3a4*lBu>FK^Xmp>13%htTCP0hzFuCnc52qV5jMh1}}cm&h&5sg6G9B)58xh!3EgV zFK$up>b>o8Y>*VYAUnTcaq^5T;_!E*KoMk5B~y0zKR2gmD)Z#P-`z;a&CfwC{ApE6 z{PfEsjIzCx=i!~v@d(v`R4e{sxe-gr_C++F^ zK0p?=O!U!jx!w$Z5_=K?idyJ4z7gBMCgnz=QTZlOuziFp<vfoxzeaHp=IT_CAaw r9m56_hdz5J3?{Qq!Ij;)*;mu9^#B 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 diff --git a/resources/i18n/openlp_es.qm b/resources/i18n/openlp_es.qm index f128095b841b2e9f42ae36617e70d4149e64142b..da03a2e0f0c8e6032763a3a0643b226baa14663b 100644 GIT binary patch delta 3800 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 delta 3407 zcmb7`30PIf701uz-TU^1F|vns*J zxF!~>gkTaC<(bxKm88VR1()PAt&LIhNu=7QQR|Z6()K@(F`p)2+spUvZ|0mcGiTZddOM{+ z!DLeU9wCylN!i3%O3FLWffW?6ayeK_kq`QVtz_qR9u~5n{uGR&;hUPkA(Y$l_bivXGTuK)!FM|i^;uTCf9dq8XTc2V z{0cp|KyasrUsEOer#);3;E*BRqem?^Xn5V@?f58ilHrdYZAXqk(54E>7*Axhsz#-? zfP++%t82kR)sn@(0GaCWgJocY>h4jTfU!*utNDV+6e>IBJHSQqvZ8h1+u%mSWGwnO<-0H9Xgy;U)e_9>S*pnM;h1NoV54IE4i0#Jsn~WotI&9; z3|)p0cqJ*%uBid13swq#DA=k@V6Q-bU&%>CEWN#znKQP6y#&jZbqPb!Z&Kd+)g~gJ zSiwokmZVGQmnqdR&jfENyPM#ERj=%Jx*PqKJq=utE;tW_=hjN)fcI>$PHEoE_2-nU zzeciIzi+2+l;9-6Dz$e3?0xIi)?wI~pPzc*swi-vdh*zKaGZKpiVZAP&;2ErZ&y24 zdSWMjjq3NR4-)wYtDCk(f&&F-3vN)K=<5slUQIXcd9YcNZmS^b5~4}pwiq0)DSxdH zT%@Tuxqv8Ow&sn*Yv3A9)lMJqJv+sb*otn!xkDzft({h>f zjy54-BvDYTHnpM*oT{A@*9q19$4@ zT5+91Ki02Z2M0p$={N67B?=4Czq8K_4%P3~Vkco6^~bWtfk*WxT%2wC)ARQc*?JmO zHU_2|WOsjxL4J1&`b!Mz6wXiD>9n;O3agOq;eiHc3)nTmQ1g`$yxq=j@q+UWtrAYC z+cu+a-)-=e(K8X(th>e-z6AHWdxkNi?>X?kajX`0J-h|S7{|>jL4To zGl4`Ap2p4lQ*r+z?8bTv21FDH))>DlqSUkO8hVH_XF_E$Xnj@lq0a&3trn zKO(yaF8CFESnSE>FOT7f?d9f+7iWVXSO%U&%>J{kmU!7z3SDUwR(Lh4Q9Xb?k1J8`j`NA-n$R$<1>++^RcsFYXckR zyVlDSc~amGRz4Lz3YL@C8u#))Q+KfN(~YfJj*|KL(;YlTc%HRKy7Ms#R8lQF>08Sh z{Z6nZ|GD-~&YagLx08Ato&y0wPVp1(*O7wH(P8+xG3(ytvMVHjNvtr?KL}OHJ+1li zxKomX^2D|TX0m{wurzPV#BxP66K@BVqLtK{mndHD={gv~z0KiOtTThoy?)9d<;NLw z*co$xYg|y41-x(szl(UXN{>Gdi z=U8>Lo_WP>XJ5yCB{i@^@yS_(kYD^sM`BELx2C$^Gu&^&r*I)!_{Z-j&&ntIZ_>6O z`*rNK0Y2=F0kUBaWcvx#h0Z*ZarvX4>Cbe*J*oxoZ@Gn?=r%o&6fTv#@bkydhR$P; e1S2U{N@OhqN?2|}qOVU!7nN;DXk#^rXa56muv_f_ diff --git a/resources/i18n/openlp_hu.qm b/resources/i18n/openlp_hu.qm index dc4e5fba2cea68f9dcbf919d865b7f5a71dc8173..4f2c11f7b907fec66b4f95bc9b7fe2bb9acc5f10 100644 GIT binary patch delta 5113 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 diff --git a/resources/i18n/openlp_pt_BR.qm b/resources/i18n/openlp_pt_BR.qm index 4e075ec643a21dc4ec44d3d0ca92d00bf5a9961a..2ad079b4b540d02c765d0bf9f4713ace83badbda 100644 GIT binary patch delta 5071 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 diff --git a/resources/i18n/openlp_sv.qm b/resources/i18n/openlp_sv.qm index f7b80c6ed111c71d6f3567f8f9774baba1a80b03..ae9d9fec046ede9221e918dc3627f03c775b508a 100644 GIT binary patch delta 5297 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 diff --git a/scripts/translation_utils.py b/scripts/translation_utils.py index 7a76a5566..0135efeb6 100755 --- a/scripts/translation_utils.py +++ b/scripts/translation_utils.py @@ -38,7 +38,8 @@ from PyQt4 import QtCore ignore_pathes = [u"./scripts", u"./openlp/core/test"] ignore_files = [u"setup.py"] translation_path = u"http://pootle.projecthq.biz/export/openlp/" -translations = [ u"af" +translations = [ u"en" + , u"af" , u"en_ZA" , u"en_GB" , u"de" From bfb3143cfcc609d823c1d4a94126c601e62b6699 Mon Sep 17 00:00:00 2001 From: andreas Date: Sat, 15 May 2010 21:59:21 +0200 Subject: [PATCH 13/13] fix for empty slide in dual bible view --- openlp/plugins/bibles/lib/mediaitem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 136f45633..9f0a8e00d 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -519,7 +519,7 @@ class BibleMediaItem(MediaManagerItem): else: service_item.theme = self.parent.settings_tab.bible_theme #if we are verse per slide we have already been added - if self.parent.settings_tab.layout_style != 0: + if self.parent.settings_tab.layout_style != 0 and not bible2: raw_slides.append(bible_text) for slide in raw_slides: service_item.add_from_text(slide[:30], slide)