diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index fb9a8928b..adb2f585d 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -581,7 +581,10 @@ def strip_rtf(text, default_encoding=None): try: encoding, default_encoding = get_encoding(font, font_table, default_encoding, failed=failed) - out.append(chr(charcode).decode(encoding)) + if encoding: + out.append(chr(charcode).decode(encoding)) + else: + raise Exception(u'user_canceled') except UnicodeDecodeError: failed = True else: diff --git a/openlp/plugins/songs/lib/ewimport.py b/openlp/plugins/songs/lib/ewimport.py index ebfdff2bb..e839a6354 100644 --- a/openlp/plugins/songs/lib/ewimport.py +++ b/openlp/plugins/songs/lib/ewimport.py @@ -180,7 +180,13 @@ class EasyWorshipSongImport(SongImport): self.addAuthor(author_name.strip()) if words: # Format the lyrics - words, self.encoding = strip_rtf(words, self.encoding) + try: + words, self.encoding = strip_rtf(words, self.encoding) + except Exception as info: + if unicode(info) == u'user_canceled': + return + else: + raise verse_type = VerseType.Tags[VerseType.Verse] for verse in SLIDE_BREAK_REGEX.split(words): verse = verse.strip() diff --git a/openlp/plugins/songs/lib/songproimport.py b/openlp/plugins/songs/lib/songproimport.py index 0da097ad8..ca34a4bd0 100644 --- a/openlp/plugins/songs/lib/songproimport.py +++ b/openlp/plugins/songs/lib/songproimport.py @@ -109,8 +109,14 @@ class SongProImport(SongImport): self.finish() return if u'rtf1' in text: - text, self.encoding = strip_rtf(text, self.encoding) - text = text.rstrip() + try: + text, self.encoding = strip_rtf(text, self.encoding) + text = text.rstrip() + except Exception as info: + if unicode(info) == u'user_canceled': + return + else: + raise if not text: return if tag == u'A': diff --git a/openlp/plugins/songs/lib/sundayplusimport.py b/openlp/plugins/songs/lib/sundayplusimport.py index 6b61af231..8d7330411 100644 --- a/openlp/plugins/songs/lib/sundayplusimport.py +++ b/openlp/plugins/songs/lib/sundayplusimport.py @@ -150,8 +150,14 @@ class SundayPlusImport(SongImport): verse_type = HOTKEY_TO_VERSE_TYPE[value] if name == 'rtf': value = self.unescape(value) - verse, self.encoding = strip_rtf(value, self.encoding) - lines = verse.strip().split('\n') + try: + verse, self.encoding = strip_rtf(value, self.encoding) + lines = verse.strip().split('\n') + except Exception as info: + if unicode(info) == u'user_canceled': + return + else: + raise # If any line inside any verse contains CCLI or # only Public Domain, we treat this as special data: # we remove that line and add data to specific field.