Previous fix broke on non-Windows, try again

This commit is contained in:
Jon Tibble 2011-12-11 15:31:44 +00:00
parent 26df14e43c
commit e5d1fca74d
2 changed files with 4 additions and 28 deletions

View File

@ -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):

View File

@ -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.