mirror of https://gitlab.com/openlp/openlp.git
Couple fixes for bugs caused by controll chars
This commit is contained in:
parent
960ddedc6f
commit
a268c4476b
|
@ -441,12 +441,16 @@ def get_file_encoding(file_path):
|
|||
except OSError:
|
||||
log.exception('Error detecting file encoding')
|
||||
|
||||
|
||||
def normalize_str(irreg_str):
|
||||
"""
|
||||
Normalize the supplied string. Remove unicode control chars and tidy up white space.
|
||||
|
||||
:param str irreg_str:
|
||||
:return:
|
||||
:param str irreg_str: The string to normalize.
|
||||
:return: The normalized string
|
||||
:rtype: str
|
||||
"""
|
||||
irreg_str = irreg_str.translate(REPLACMENT_CHARS_MAP)
|
||||
irreg_str = CONTROL_CHARS.sub('', irreg_str)
|
||||
irreg_str = NEW_LINE_REGEX.sub('\n', irreg_str)
|
||||
return WHITESPACE_REGEX.sub(' ', irreg_str)
|
||||
|
|
|
@ -27,6 +27,7 @@ import re
|
|||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
from openlp.core.common import CONTROL_CHARS
|
||||
from openlp.core.common.i18n import UiStrings, translate
|
||||
from openlp.core.common.path import Path, path_to_str, str_to_path
|
||||
from openlp.core.common.settings import Settings
|
||||
|
@ -470,12 +471,21 @@ class SpellTextEdit(QtWidgets.QPlainTextEdit):
|
|||
cursor.insertText(html['start tag'])
|
||||
cursor.insertText(html['end tag'])
|
||||
|
||||
def insertFromMimeData(self, source):
|
||||
"""
|
||||
Reimplement `insertFromMimeData` so that we can remove any control characters
|
||||
|
||||
:param QtCore.QMimeData source: The mime data to insert
|
||||
:rtype: None
|
||||
"""
|
||||
self.insertPlainText(CONTROL_CHARS.sub('', source.text()))
|
||||
|
||||
|
||||
class Highlighter(QtGui.QSyntaxHighlighter):
|
||||
"""
|
||||
Provides a text highlighter for pointing out spelling errors in text.
|
||||
"""
|
||||
WORDS = r'(?iu)[\w\']+'
|
||||
WORDS = r'(?i)[\w\']+'
|
||||
|
||||
def __init__(self, *args):
|
||||
"""
|
||||
|
|
|
@ -30,9 +30,6 @@ from openlp.plugins.songs.lib.importers.songimport import SongImport
|
|||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
# Used to strip control chars (except 10=LF, 13=CR)
|
||||
CONTROL_CHARS_MAP = dict.fromkeys(list(range(10)) + [11, 12] + list(range(14, 32)) + [127])
|
||||
|
||||
|
||||
class ZionWorxImport(SongImport):
|
||||
"""
|
||||
|
@ -95,12 +92,12 @@ class ZionWorxImport(SongImport):
|
|||
return
|
||||
self.set_defaults()
|
||||
try:
|
||||
self.title = self._decode(record['Title1'])
|
||||
self.title = record['Title1']
|
||||
if record['Title2']:
|
||||
self.alternate_title = self._decode(record['Title2'])
|
||||
self.parse_author(self._decode(record['Writer']))
|
||||
self.add_copyright(self._decode(record['Copyright']))
|
||||
lyrics = self._decode(record['Lyrics'])
|
||||
self.alternate_title = record['Title2']
|
||||
self.parse_author(record['Writer'])
|
||||
self.add_copyright(record['Copyright'])
|
||||
lyrics = record['Lyrics']
|
||||
except UnicodeDecodeError as e:
|
||||
self.log_error(translate('SongsPlugin.ZionWorxImport', 'Record {index}').format(index=index),
|
||||
translate('SongsPlugin.ZionWorxImport', 'Decoding error: {error}').format(error=e))
|
||||
|
@ -122,10 +119,3 @@ class ZionWorxImport(SongImport):
|
|||
if not self.finish():
|
||||
self.log_error(translate('SongsPlugin.ZionWorxImport', 'Record %d') % index +
|
||||
(': "' + title + '"' if title else ''))
|
||||
|
||||
def _decode(self, str):
|
||||
"""
|
||||
Strips all control characters (except new lines).
|
||||
"""
|
||||
# ZionWorx has no option for setting the encoding for its songs, so we assume encoding is always the same.
|
||||
return str.translate(CONTROL_CHARS_MAP)
|
||||
|
|
Loading…
Reference in New Issue