forked from openlp/openlp
Previous fix broke on non-Windows, try again
This commit is contained in:
parent
26df14e43c
commit
e5d1fca74d
@ -44,7 +44,7 @@ from openlp.core.lib.ui import UiStrings, critical_error_message_box, \
|
|||||||
from openlp.core.theme import Theme
|
from openlp.core.theme import Theme
|
||||||
from openlp.core.ui import FileRenameForm, ThemeForm
|
from openlp.core.ui import FileRenameForm, ThemeForm
|
||||||
from openlp.core.utils import AppLocation, delete_file, file_is_unicode, \
|
from openlp.core.utils import AppLocation, delete_file, file_is_unicode, \
|
||||||
file_is_mbcs, get_filesystem_encoding
|
get_filesystem_encoding
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -526,15 +526,11 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
zip = zipfile.ZipFile(filename)
|
zip = zipfile.ZipFile(filename)
|
||||||
themename = None
|
themename = None
|
||||||
for file in zip.namelist():
|
for file in zip.namelist():
|
||||||
|
# Handle UTF-8 files
|
||||||
ucsfile = file_is_unicode(file)
|
ucsfile = file_is_unicode(file)
|
||||||
if not ucsfile:
|
if not ucsfile:
|
||||||
ucsfile = file_is_mbcs(file)
|
# Handle native Unicode files from Windows
|
||||||
if not ucsfile:
|
ucsfile = file
|
||||||
critical_error_message_box(
|
|
||||||
message=translate('OpenLP.ThemeManager',
|
|
||||||
'File is not a valid theme.\n'
|
|
||||||
'The content encoding is not UTF-8.'))
|
|
||||||
continue
|
|
||||||
osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
|
osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
|
||||||
theme_dir = None
|
theme_dir = None
|
||||||
if osfile.endswith(os.path.sep):
|
if osfile.endswith(os.path.sep):
|
||||||
|
@ -475,26 +475,6 @@ def file_is_unicode(filename):
|
|||||||
return None
|
return None
|
||||||
return ucsfile
|
return ucsfile
|
||||||
|
|
||||||
def file_is_mbcs(filename):
|
|
||||||
"""
|
|
||||||
Checks if a file is valid Windows file system encoded unicode and returns
|
|
||||||
the unicode decoded file or None.
|
|
||||||
|
|
||||||
``filename``
|
|
||||||
File to check is valid Windows file system encoded.
|
|
||||||
"""
|
|
||||||
if not filename:
|
|
||||||
return None
|
|
||||||
ucsfile = None
|
|
||||||
try:
|
|
||||||
ucsfile = filename.decode(u'mbcs')
|
|
||||||
except UnicodeDecodeError:
|
|
||||||
log.exception(u'Filename "%s" is not valid Windows encoded file' %
|
|
||||||
filename.decode(u'mbcs', u'replace'))
|
|
||||||
if not ucsfile:
|
|
||||||
return None
|
|
||||||
return ucsfile
|
|
||||||
|
|
||||||
def get_uno_command():
|
def get_uno_command():
|
||||||
"""
|
"""
|
||||||
Returns the UNO command to launch an openoffice.org instance.
|
Returns the UNO command to launch an openoffice.org instance.
|
||||||
|
Loading…
Reference in New Issue
Block a user