diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index b8d9b7172..23051cb77 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -549,6 +549,7 @@ class Renderer(object): # setup defaults painter = QtGui.QPainter() painter.begin(self._frame) + painter.setRenderHint(QtGui.QPainter.Antialiasing); if footer : font = self.footerFont else: diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py index fa90d760d..fccf12a84 100644 --- a/openlp/core/ui/amendthemeform.py +++ b/openlp/core/ui/amendthemeform.py @@ -193,7 +193,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): def onImageToolButtonClicked(self): filename = QtGui.QFileDialog.getOpenFileName( - self, self.trUtf8('Open file')) + self, self.trUtf8(u'Open file')) if filename: self.ImageLineEdit.setText(filename) self.theme.background_filename = filename diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index c4749a240..5db3f1c39 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -556,7 +556,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): here. Currently it is set to default to monitor 0 if the saved monitor number does not exist. """ - screen_number = int(self.generalConfig.get_config(u'Monitor', 0)) + screen_number = int(self.generalConfig.get_config(u'monitor', 0)) monitor_exists = False for screen in self.screenList: if screen[u'number'] == screen_number: @@ -575,16 +575,16 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): if self.mainDisplay.isVisible(): self.mainDisplay.setFocus() self.activateWindow() - if str_to_bool(self.generalConfig.get_config(u'Auto Open', False)): + if str_to_bool(self.generalConfig.get_config(u'auto open', False)): self.ServiceManagerContents.onLoadService(True) - if str_to_bool(self.generalConfig.get_config(u'Screen Blank', False)) \ - and str_to_bool(self.generalConfig.get_config(u'Blank Warning', False)): + if str_to_bool(self.generalConfig.get_config(u'screen blank', False)) \ + and str_to_bool(self.generalConfig.get_config(u'blank warning', False)): QtGui.QMessageBox.question(None, self.trUtf8('OpenLP Main Display Blanked'), self.trUtf8('The Main Display has been blanked out'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok), QtGui.QMessageBox.Ok) - #self.LiveController.blackPushButton.setChecked(True) + self.LiveController.blankButton.setChecked(True) def onHelpAboutItemClicked(self): """ diff --git a/openlp-get-strings.py b/scripts/get-strings.py similarity index 74% rename from openlp-get-strings.py rename to scripts/get-strings.py index 767a855cf..cf2ca857f 100755 --- a/openlp-get-strings.py +++ b/scripts/get-strings.py @@ -24,7 +24,7 @@ ############################################################################### import os -import re +from ast import parse, NodeVisitor, Str ts_file = u""" @@ -42,27 +42,37 @@ ts_message = u""" """ -find_trUtf8 = re.compile(r"trUtf8\(u?(['\"])([^\1]+)\1\)", re.UNICODE) -strings = {} -def parse_file(filename): - global strings +class StringExtractor(NodeVisitor): + + def __init__(self, strings, filename): + self.filename = filename + self.strings = strings + self.classname = 'unknown' + + def visit_ClassDef(self, node): + self.classname = node.name + self.generic_visit(node) + + def visit_Call(self, node): + if hasattr(node.func, 'attr') and node.func.attr == 'trUtf8' and isinstance(node.args[0], Str): + string = node.args[0].s + key = '%s-%s' % (self.classname, string) + self.strings[key] = [self.classname, self.filename, node.lineno, string] + self.generic_visit(node) + +def parse_file(filename, strings): file = open(filename, u'r') - class_name = u'' - line_number = 0 - for line in file: - line_number += 1 - if line[:5] == u'class': - class_name = line[6:line.find(u'(')] - continue - for match in find_trUtf8.finditer(line): - key = u'%s-%s' % (class_name, match.group(2)) - if not key in strings: - strings[key] = [class_name, filename, line_number, match.group(2)] + try: + ast = parse(file.read()) + except SyntaxError, e: + print "Unable to parse %s: %s" % (filename, e) + return file.close() -def write_file(filename): - global strings + StringExtractor(strings, filename).visit(ast) + +def write_file(filename, strings): translation_file = u'' translation_contexts = [] translation_messages = [] @@ -79,18 +89,19 @@ def write_file(filename): translation_contexts.append(current_context) translation_file = ts_file % (u''.join(translation_contexts)) file = open(filename, u'w') - file.write(translation_file) + file.write(translation_file.encode('utf8')) file.close() def main(): + strings = {} start_dir = os.path.abspath(u'.') for root, dirs, files in os.walk(start_dir): for file in files: if file.endswith(u'.py'): print u'Parsing "%s"' % file - parse_file(os.path.join(root, file)) + parse_file(os.path.join(root, file), strings) print u'Generating TS file...', - write_file(os.path.join(start_dir, u'..', u'resources', u'i18n', u'openlp_en.ts')) + write_file(os.path.join(start_dir, u'i18n', u'openlp_en.ts'), strings) print u'done.' if __name__ == u'__main__':