From b1c27d98a4976ebeb45be9bb75ea5b933e6d6866 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sun, 10 Jun 2012 21:57:36 +0100 Subject: [PATCH 01/20] Fixes 1011286 Song Editor -> Edit All Crashes with out valid verse splitter Fixes: https://launchpad.net/bugs/1011286 --- openlp/plugins/songs/forms/editverseform.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 21285f39d..ad1acc06d 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -189,8 +189,14 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): if self.hasSingleVerse: value = unicode(self.getVerse()[0]) else: - log.debug(unicode(self.getVerse()[0]).split(u'\n')) - value = unicode(self.getVerse()[0]).split(u'\n')[1] + lines = unicode(self.getVerse()[0]).split(u'\n') + log.debug(lines) + if len(lines) <= 1: + critical_error_message_box( + message=translate('SongsPlugin.EditSongForm', + 'Invalid entry, you need a verse splitter and some text.')) + return False + value = lines[1] if not value: lines = unicode(self.getVerse()[0]).split(u'\n') index = 2 From f51d270ba8599b42961eac957ef43ddafe301e72 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Mon, 11 Jun 2012 07:12:23 +0100 Subject: [PATCH 02/20] Removed debug.log statment --- openlp/plugins/songs/forms/editverseform.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index ad1acc06d..203f21b19 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -190,7 +190,6 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): value = unicode(self.getVerse()[0]) else: lines = unicode(self.getVerse()[0]).split(u'\n') - log.debug(lines) if len(lines) <= 1: critical_error_message_box( message=translate('SongsPlugin.EditSongForm', From 6124de5a51282378eb5f0ed23e76efa64ba6f600 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sat, 16 Jun 2012 09:20:23 +0100 Subject: [PATCH 03/20] Removed input validation on "Edit All" Dialog, as per Raouls comment on my previous merge request --- openlp/plugins/songs/forms/editverseform.py | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 203f21b19..1c00217b6 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -187,24 +187,9 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def accept(self): if self.hasSingleVerse: - value = unicode(self.getVerse()[0]) - else: - lines = unicode(self.getVerse()[0]).split(u'\n') - if len(lines) <= 1: + if not self.getVerse()[0]: critical_error_message_box( message=translate('SongsPlugin.EditSongForm', - 'Invalid entry, you need a verse splitter and some text.')) + 'You need to type some text in to the verse.')) return False - value = lines[1] - if not value: - lines = unicode(self.getVerse()[0]).split(u'\n') - index = 2 - while index < len(lines) and not value: - value = lines[index] - index += 1 - if not value: - critical_error_message_box( - message=translate('SongsPlugin.EditSongForm', - 'You need to type some text in to the verse.')) - return False QtGui.QDialog.accept(self) From d41f69ce8cd11b79da163c3b19743cab381467bf Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Wed, 11 Jul 2012 21:41:31 +0100 Subject: [PATCH 04/20] Fixes 1011286 Song Editor -> Edit All Crashes with out valid verse splitter. Plus a small bit of refactoring --- openlp/plugins/songs/forms/editverseform.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 1c00217b6..8493825b0 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -186,10 +186,23 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): return text def accept(self): - if self.hasSingleVerse: - if not self.getVerse()[0]: + value = unicode(self.getVerse()[0]) + if not self.hasSingleVerse: + value = value.split(u'\n') + if len(value) <= 1: critical_error_message_box( message=translate('SongsPlugin.EditSongForm', - 'You need to type some text in to the verse.')) + 'Invalid entry, you need a verse splitter and some text.')) return False + if not value: + lines = unicode(self.getVerse()[0]).split(u'\n') + index = 2 + while index < len(lines) and not value: + value = lines[index] + index += 1 + if not value: + critical_error_message_box( + message=translate('SongsPlugin.EditSongForm', + 'You need to type some text in to the verse.')) + return False QtGui.QDialog.accept(self) From 33510c3346ba264331749a6fd400c0449875669a Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sat, 14 Jul 2012 18:53:24 +0100 Subject: [PATCH 05/20] Refactored validation of edit all form so that it does not crash on empty textedit, and so that it does not allow empty verses. Ideally we would accept empty verses, but these are removed automatically else where. Changed the save button to OK as per the reasons in my email. --- openlp/plugins/songs/forms/editversedialog.py | 2 +- openlp/plugins/songs/forms/editverseform.py | 15 ++------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/openlp/plugins/songs/forms/editversedialog.py b/openlp/plugins/songs/forms/editversedialog.py index fb5698c88..7cc7670bf 100644 --- a/openlp/plugins/songs/forms/editversedialog.py +++ b/openlp/plugins/songs/forms/editversedialog.py @@ -66,7 +66,7 @@ class Ui_EditVerseDialog(object): self.verseTypeLayout.addStretch() self.dialogLayout.addLayout(self.verseTypeLayout) self.buttonBox = create_button_box(editVerseDialog, u'buttonBox', - [u'cancel', u'save']) + [u'cancel', u'ok']) self.dialogLayout.addWidget(self.buttonBox) self.retranslateUi(editVerseDialog) diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 8493825b0..417707844 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -188,21 +188,10 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): def accept(self): value = unicode(self.getVerse()[0]) if not self.hasSingleVerse: - value = value.split(u'\n') - if len(value) <= 1: - critical_error_message_box( - message=translate('SongsPlugin.EditSongForm', - 'Invalid entry, you need a verse splitter and some text.')) - return False - if not value: - lines = unicode(self.getVerse()[0]).split(u'\n') - index = 2 - while index < len(lines) and not value: - value = lines[index] - index += 1 + value = not u'' in re.split(r'---\[[^\]]*\]---\n*', value)[1:] if not value: critical_error_message_box( message=translate('SongsPlugin.EditSongForm', - 'You need to type some text in to the verse.')) + 'You must enter text for each verse.')) return False QtGui.QDialog.accept(self) From 1d4e5c9430c1bac33a017516f9ef51222c76fec3 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sun, 22 Jul 2012 09:50:37 +0100 Subject: [PATCH 06/20] I have actually fixed the entering of verses with no text! --- openlp/core/lib/renderer.py | 2 +- openlp/plugins/songs/forms/editsongform.py | 2 +- openlp/plugins/songs/forms/editverseform.py | 11 ----------- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 6ce51ab60..f95e29d52 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -450,7 +450,7 @@ class Renderer(object): previous_html, previous_raw, html_lines, lines, separator, u'') else: previous_raw = separator.join(lines) - if previous_raw: + if previous_raw or previous_raw == u'': formatted.append(previous_raw) log.debug(u'_paginate_slide - End') return formatted diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 226d8baa1..17f77ce20 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -528,7 +528,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): for row in self.findVerseSplit.split(verse_list): for match in row.split(u'---['): for count, parts in enumerate(match.split(u']---\n')): - if len(parts) <= 1: + if count == 0 and len(parts) <= 0: continue if count == 0: # handling carefully user inputted versetags diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 417707844..2ff077814 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -184,14 +184,3 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): text = u'---[%s:1]---\n%s' % \ (VerseType.TranslatedNames[VerseType.Verse], text) return text - - def accept(self): - value = unicode(self.getVerse()[0]) - if not self.hasSingleVerse: - value = not u'' in re.split(r'---\[[^\]]*\]---\n*', value)[1:] - if not value: - critical_error_message_box( - message=translate('SongsPlugin.EditSongForm', - 'You must enter text for each verse.')) - return False - QtGui.QDialog.accept(self) From c6d85d3ab84335f29a6a2ef53a6d91477ca5e7c3 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sun, 22 Jul 2012 21:20:53 +0100 Subject: [PATCH 07/20] Implemented gushies changes --- openlp/core/lib/renderer.py | 2 +- openlp/plugins/songs/forms/editsongform.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index f95e29d52..98b6b9861 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -450,7 +450,7 @@ class Renderer(object): previous_html, previous_raw, html_lines, lines, separator, u'') else: previous_raw = separator.join(lines) - if previous_raw or previous_raw == u'': + if previous_raw is not None: formatted.append(previous_raw) log.debug(u'_paginate_slide - End') return formatted diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 17f77ce20..261863944 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -528,9 +528,9 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): for row in self.findVerseSplit.split(verse_list): for match in row.split(u'---['): for count, parts in enumerate(match.split(u']---\n')): - if count == 0 and len(parts) <= 0: - continue if count == 0: + if len(parts) == 0: + continue # handling carefully user inputted versetags separator = parts.find(u':') if separator >= 0: From 96b787ff499230642281c53b945b95d69ae4ae8d Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Mon, 13 Aug 2012 20:25:28 +0100 Subject: [PATCH 08/20] removed unecessary if statment --- openlp/core/lib/renderer.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 98b6b9861..96ef47303 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -450,8 +450,7 @@ class Renderer(object): previous_html, previous_raw, html_lines, lines, separator, u'') else: previous_raw = separator.join(lines) - if previous_raw is not None: - formatted.append(previous_raw) + formatted.append(previous_raw) log.debug(u'_paginate_slide - End') return formatted From dcc4608f3c35e0b478706f86226dcc8f1817f201 Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sat, 18 Aug 2012 11:55:57 +0100 Subject: [PATCH 09/20] fixes issue 1045 and bug 1037076 "Short cut keys do not work for background audio" --- openlp/core/ui/slidecontroller.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index c59ea9afe..faa9e1a52 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -286,19 +286,20 @@ class SlideController(Controller): text=translate('OpenLP.SlideController', 'Pause Audio'), tooltip=translate('OpenLP.SlideController', 'Pause audio.'), checked=False, visible=False, category=self.category, - triggers=self.onAudioPauseClicked) + context=QtCore.Qt.WindowShortcut, + shortcuts=[], triggers=self.onAudioPauseClicked) self.audioMenu = QtGui.QMenu( - translate('OpenLP.SlideController', 'Background Audio'), self) + translate('OpenLP.SlideController', 'Background Audio'), self.toolbar) self.audioPauseItem.setMenu(self.audioMenu) - self.audioPauseItem.setParent(self) + self.audioPauseItem.setParent(self.toolbar) self.toolbar.widgetForAction(self.audioPauseItem).setPopupMode( QtGui.QToolButton.MenuButtonPopup) self.nextTrackItem = create_action(self, u'nextTrackItem', text=UiStrings().NextTrack, icon=u':/slides/media_playback_next.png', tooltip=translate( 'OpenLP.SlideController', 'Go to next audio track.'), - category=self.category, context=QtCore.Qt.WindowShortcut, - triggers=self.onNextTrackClicked) + category=self.category, + shortcuts=[], triggers=self.onNextTrackClicked) self.audioMenu.addAction(self.nextTrackItem) self.trackMenu = self.audioMenu.addMenu( translate('OpenLP.SlideController', 'Tracks')) From 72d842a2aabd3b85595c007ae913cba16eab803d Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Fri, 24 Aug 2012 22:52:42 +0200 Subject: [PATCH 10/20] Fix bug #1041366: Specified size display area not working. Fixes: https://launchpad.net/bugs/1041366 --- openlp/core/lib/renderer.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 81d5361cb..429640e65 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -96,6 +96,7 @@ class Renderer(object): self.display.close() self.display = MainDisplay(None, self.image_manager, False, self) self.display.setup() + #self.web_frame = self.web.page().mainFrame() self._theme_dimensions = {} def update_theme(self, theme_name, old_theme_name=None, only_delete=False): @@ -406,7 +407,14 @@ class Renderer(object): if theme_data.font_main_shadow: self.page_width -= int(theme_data.font_main_shadow_size) self.page_height -= int(theme_data.font_main_shadow_size) + # For the life of my I don't know why we have to completely kill the + # QWebView in order for the display to work properly, but we do. See + # bug #1041366 for an example of what happens if we take this out. + self.web = None + self.web = QtWebKit.QWebView() + self.web.setVisible(False) self.web.resize(self.page_width, self.page_height) + self.web_frame = self.web.page().mainFrame() # Adjust width and height to account for shadow. outline done in css. html = u"""