Set theme and service file content to UTF-8

Replaced replaced all non-ASCII chars in the sources (exept of comments)
Fixed theme background images bug
This commit is contained in:
M2j 2010-06-09 21:10:57 +02:00
parent 8733ceac70
commit 940c6fd44f
8 changed files with 71 additions and 38 deletions

View File

@ -44,8 +44,8 @@ class AboutForm(QtGui.QDialog, Ui_AboutDialog):
about_text = about_text.replace(u'<version>', about_text = about_text.replace(u'<version>',
self.applicationVersion[u'version']) self.applicationVersion[u'version'])
if self.applicationVersion[u'build']: if self.applicationVersion[u'build']:
build_text = u' %s %s' % (translate(u'AboutForm', u'build'), build_text = unicode(translate(u'AboutForm', u' build %s')) % \
self.applicationVersion[u'build']) self.applicationVersion[u'build']
else: else:
build_text = u'' build_text = u''
about_text = about_text.replace(u'<revision>', build_text) about_text = about_text.replace(u'<revision>', build_text)

View File

@ -155,7 +155,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.theme.background_direction) self.theme.background_direction)
else: else:
filename = \ filename = \
os.path.split(unicode(self.theme.background_filename))[0] os.path.split(unicode(self.theme.background_filename))[1]
new_theme.add_background_image(filename) new_theme.add_background_image(filename)
save_to = os.path.join(self.path, theme_name, filename) save_to = os.path.join(self.path, theme_name, filename)
save_from = self.theme.background_filename save_from = self.theme.background_filename

View File

@ -452,8 +452,8 @@ class Ui_MainWindow(object):
translate(u'MainWindow', u'Choose System language, if available')) translate(u'MainWindow', u'Choose System language, if available'))
for item in self.LanguageGroup.actions(): for item in self.LanguageGroup.actions():
item.setText(item.objectName()) item.setText(item.objectName())
item.setStatusTip(translate(u'MainWindow', item.setStatusTip(unicode(translate(u'MainWindow',
u'Set the interface language to %1').arg(item.objectName())) u'Set the interface language to %s')) % item.objectName())
self.ToolsAddToolItem.setText(translate(u'MainWindow', u'Add &Tool...')) self.ToolsAddToolItem.setText(translate(u'MainWindow', u'Add &Tool...'))
self.ToolsAddToolItem.setStatusTip( self.ToolsAddToolItem.setStatusTip(
translate(u'MainWindow', translate(u'MainWindow',

View File

@ -597,11 +597,11 @@ class ServiceManager(QtGui.QWidget):
path_from = unicode(os.path.join( path_from = unicode(os.path.join(
frame[u'path'], frame[u'path'],
frame[u'title'])) frame[u'title']))
zip.write(path_from) zip.write(path_from.encode(u'utf-8'))
file = open(servicefile, u'wb') file = open(servicefile, u'wb')
cPickle.dump(service, file) cPickle.dump(service, file)
file.close() file.close()
zip.write(servicefile) zip.write(servicefile.encode(u'utf-8'))
except IOError: except IOError:
log.exception(u'Failed to save service to disk') log.exception(u'Failed to save service to disk')
finally: finally:
@ -667,7 +667,18 @@ class ServiceManager(QtGui.QWidget):
try: try:
zip = zipfile.ZipFile(unicode(filename)) zip = zipfile.ZipFile(unicode(filename))
for file in zip.namelist(): for file in zip.namelist():
osfile = unicode(QtCore.QDir.toNativeSeparators(file)) try:
ucsfile = file.decode(u'utf-8')
except UnicodeDecodeError:
QtGui.QMessageBox.critical(
self, translate(u'ServiceManager', u'Error'),
translate(u'ServiceManager',
u'File is not a valid service.\n'
u'The content encoding is not UTF-8.'))
log.exception(u'Filename "%s" is no valid UTF-8' % \
file.decode(u'utf-8', u'replace'))
continue
osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
names = osfile.split(os.path.sep) names = osfile.split(os.path.sep)
file_path = os.path.join(self.servicePath, file_path = os.path.join(self.servicePath,
names[len(names) - 1]) names[len(names) - 1])
@ -677,21 +688,28 @@ class ServiceManager(QtGui.QWidget):
file_to.close() file_to.close()
if file_path.endswith(u'osd'): if file_path.endswith(u'osd'):
p_file = file_path p_file = file_path
file_to = open(p_file, u'r') if 'p_file' in locals():
items = cPickle.load(file_to) file_to = open(p_file, u'r')
file_to.close() items = cPickle.load(file_to)
self.onNewService() file_to.close()
for item in items: self.onNewService()
serviceitem = ServiceItem() for item in items:
serviceitem.RenderManager = self.parent.RenderManager serviceitem = ServiceItem()
serviceitem.set_from_service(item, self.servicePath) serviceitem.RenderManager = self.parent.RenderManager
self.validateItem(serviceitem) serviceitem.set_from_service(item, self.servicePath)
self.addServiceItem(serviceitem) self.validateItem(serviceitem)
try: self.addServiceItem(serviceitem)
if os.path.isfile(p_file): try:
os.remove(p_file) if os.path.isfile(p_file):
except (IOError, OSError): os.remove(p_file)
log.exception(u'Failed to remove osd file') except (IOError, OSError):
log.exception(u'Failed to remove osd file')
else:
QtGui.QMessageBox.critical(
self, translate(u'ServiceManager', u'Error'),
translate(u'ServiceManager',
u'File is not a valid service.'))
log.exception(u'File contains no service data')
except IOError: except IOError:
log.exception(u'Problem loading a service file') log.exception(u'Problem loading a service file')
finally: finally:

View File

@ -562,8 +562,7 @@ class SlideController(QtGui.QWidget):
if self.isLive and frame[u'verseTag'] is not None: if self.isLive and frame[u'verseTag'] is not None:
if tag1 not in self.slideList: if tag1 not in self.slideList:
self.slideList[tag1] = framenumber self.slideList[tag1] = framenumber
self.SongMenu.menu().addAction( self.SongMenu.menu().addAction(tag1,
translate(u'SlideController', u'%s'%tag1),
self.onSongBarHandler) self.onSongBarHandler)
item.setText(frame[u'text']) item.setText(frame[u'text'])
else: else:

View File

@ -131,8 +131,8 @@ class ThemeManager(QtGui.QWidget):
self.ThemeListWidget.item(count).setText(newName) self.ThemeListWidget.item(count).setText(newName)
#Set the new name #Set the new name
if themeName == newName: if themeName == newName:
name = u'%s (%s)' % (newName, name = unicode(translate(u'ThemeManager', u'%s (default)')) % \
translate(u'ThemeManager', u'default')) newName
self.ThemeListWidget.item(count).setText(name) self.ThemeListWidget.item(count).setText(name)
def changeGlobalFromScreen(self, index = -1): def changeGlobalFromScreen(self, index = -1):
@ -149,8 +149,8 @@ class ThemeManager(QtGui.QWidget):
if count == selected_row: if count == selected_row:
self.global_theme = unicode( self.global_theme = unicode(
self.ThemeListWidget.item(count).text()) self.ThemeListWidget.item(count).text())
name = u'%s (%s)' % (self.global_theme, name = unicode(translate(u'ThemeManager', u'%s (default)')) % \
translate(u'ThemeManager', u'default')) self.global_theme
self.ThemeListWidget.item(count).setText(name) self.ThemeListWidget.item(count).setText(name)
QtCore.QSettings().setValue( QtCore.QSettings().setValue(
self.settingsSection + u'/global theme', self.settingsSection + u'/global theme',
@ -246,8 +246,8 @@ class ThemeManager(QtGui.QWidget):
for files in os.walk(source)[2]: for files in os.walk(source)[2]:
for name in files: for name in files:
zip.write( zip.write(
os.path.join(source, name), os.path.join(source, name).encode(u'utf-8'),
os.path.join(theme, name)) os.path.join(theme, name).encode(u'utf-8'))
except (IOError, OSError): except (IOError, OSError):
log.exception(u'Export Theme Failed') log.exception(u'Export Theme Failed')
finally: finally:
@ -284,8 +284,8 @@ class ThemeManager(QtGui.QWidget):
if os.path.exists(theme): if os.path.exists(theme):
textName = os.path.splitext(name)[0] textName = os.path.splitext(name)[0]
if textName == self.global_theme: if textName == self.global_theme:
name = u'%s (%s)' % (textName, name = unicode(translate(u'ThemeManager',
translate(u'ThemeManager', u'default')) u'%s (default)')) % textName
else: else:
name = textName name = textName
thumb = os.path.join(self.thumbPath, u'%s.png' % textName) thumb = os.path.join(self.thumbPath, u'%s.png' % textName)
@ -338,7 +338,17 @@ class ThemeManager(QtGui.QWidget):
filexml = None filexml = None
themename = None themename = None
for file in zip.namelist(): for file in zip.namelist():
osfile = unicode(QtCore.QDir.toNativeSeparators(file)) try:
ucsfile = file.decode(u'utf-8')
except UnicodeDecodeError:
QtGui.QMessageBox.critical(
self, translate(u'ThemeManager', u'Error'),
translate(u'ThemeManager', u'File is not a valid '
u'theme.\nThe content encoding is not UTF-8.'))
log.exception(u'Filename "%s" is no valid UTF-8' % \
file.decode(u'utf-8', u'replace'))
continue
osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile))
theme_dir = None theme_dir = None
if osfile.endswith(os.path.sep): if osfile.endswith(os.path.sep):
theme_dir = os.path.join(dir, osfile) theme_dir = os.path.join(dir, osfile)
@ -356,7 +366,7 @@ class ThemeManager(QtGui.QWidget):
if not os.path.exists(theme_dir): if not os.path.exists(theme_dir):
os.mkdir(os.path.join(dir, names[0])) os.mkdir(os.path.join(dir, names[0]))
xml_data = zip.read(file) xml_data = zip.read(file)
if os.path.splitext(file)[1].lower() in [u'.xml']: if os.path.splitext(ucsfile)[1].lower() in [u'.xml']:
if self.checkVersion1(xml_data): if self.checkVersion1(xml_data):
# upgrade theme xml # upgrade theme xml
filexml = self.migrateVersion122(filename, filexml = self.migrateVersion122(filename,
@ -368,7 +378,13 @@ class ThemeManager(QtGui.QWidget):
else: else:
outfile = open(fullpath, u'wb') outfile = open(fullpath, u'wb')
outfile.write(zip.read(file)) outfile.write(zip.read(file))
self.generateAndSaveImage(dir, themename, filexml) if filexml:
self.generateAndSaveImage(dir, themename, filexml)
else:
QtGui.QMessageBox.critical(
self, translate(u'ThemeManager', u'Error'),
translate(u'ThemeManager', u'File is not a valid theme.'))
log.exception(u'Theme file dosen\'t contain XML data %s' % filename)
except IOError: except IOError:
QtGui.QMessageBox.critical( QtGui.QMessageBox.critical(
self, translate(u'ThemeManager', u'Error'), self, translate(u'ThemeManager', u'Error'),

View File

@ -504,7 +504,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
def onCopyrightInsertButtonTriggered(self): def onCopyrightInsertButtonTriggered(self):
text = self.CopyrightEditItem.text() text = self.CopyrightEditItem.text()
pos = self.CopyrightEditItem.cursorPosition() pos = self.CopyrightEditItem.cursorPosition()
text = text[:pos] + u'©' + text[pos:] text = text[:pos] + u'\xa9' + text[pos:]
self.CopyrightEditItem.setText(text) self.CopyrightEditItem.setText(text)
self.CopyrightEditItem.setFocus() self.CopyrightEditItem.setFocus()
self.CopyrightEditItem.setCursorPosition(pos + 1) self.CopyrightEditItem.setCursorPosition(pos + 1)

View File

@ -66,7 +66,7 @@ class SongImport(object):
self.copyright_string = unicode(QtGui.QApplication.translate( \ self.copyright_string = unicode(QtGui.QApplication.translate( \
u'SongsPlugin.SongImport', u'copyright')) u'SongsPlugin.SongImport', u'copyright'))
self.copyright_symbol = unicode(QtGui.QApplication.translate( \ self.copyright_symbol = unicode(QtGui.QApplication.translate( \
u'SongsPlugin.SongImport', u'©')) u'SongsPlugin.SongImport', u'\xa9'))
@staticmethod @staticmethod
def process_songs_text(manager, text): def process_songs_text(manager, text):