diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 5e6547906..1533a0fbc 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -83,9 +83,9 @@ def str_to_bool(stringvalue): ``stringvalue`` The string value to examine and convert to a boolean type. """ - if stringvalue is True or stringvalue is False: + if isinstance(stringvalue, bool): return stringvalue - return stringvalue.strip().lower() in (u'true', u'yes', u'y') + return unicode(stringvalue).strip().lower() in (u'true', u'yes', u'y') def build_icon(icon): """ diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 88b9afb11..92efd152c 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -343,7 +343,7 @@ class MediaManagerItem(QtGui.QWidget): filelist = [] while count < self.ListView.count(): bitem = self.ListView.item(count) - filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) + filename = unicode(bitem.data(QtCore.Qt.UserRole).toString()) filelist.append(filename) count += 1 return filelist diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 142b3741d..aa8c0a95a 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -468,7 +468,7 @@ class Renderer(object): self._get_extent_and_render(line, footer, tlcorner=(x + display_shadow_size, y + display_shadow_size), - draw=True, color = self._theme.display_shadow_color) + draw=True, color=self._theme.display_shadow_color) self._get_extent_and_render(line, footer, tlcorner=(x, y), draw=True, outline_size=display_outline_size) y += h diff --git a/openlp/core/ui/aboutform.py b/openlp/core/ui/aboutform.py index 933a12b56..4f9519eb8 100644 --- a/openlp/core/ui/aboutform.py +++ b/openlp/core/ui/aboutform.py @@ -44,8 +44,8 @@ class AboutForm(QtGui.QDialog, Ui_AboutDialog): about_text = about_text.replace(u'', self.applicationVersion[u'version']) if self.applicationVersion[u'build']: - build_text = u' %s %s' % (translate(u'AboutForm', u'build'), - self.applicationVersion[u'build']) + build_text = unicode(translate(u'AboutForm', u' build %s')) % \ + self.applicationVersion[u'build'] else: build_text = u'' about_text = about_text.replace(u'', build_text) diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py index 0891f128a..9306a931c 100644 --- a/openlp/core/ui/amendthemeform.py +++ b/openlp/core/ui/amendthemeform.py @@ -155,7 +155,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.theme.background_direction) else: 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) save_to = os.path.join(self.path, theme_name, filename) save_from = self.theme.background_filename diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 3caef90c5..b016afa58 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -452,8 +452,8 @@ class Ui_MainWindow(object): translate(u'MainWindow', u'Choose System language, if available')) for item in self.LanguageGroup.actions(): item.setText(item.objectName()) - item.setStatusTip(translate(u'MainWindow', - u'Set the interface language to %1').arg(item.objectName())) + item.setStatusTip(unicode(translate(u'MainWindow', + u'Set the interface language to %s')) % item.objectName()) self.ToolsAddToolItem.setText(translate(u'MainWindow', u'Add &Tool...')) self.ToolsAddToolItem.setStatusTip( translate(u'MainWindow', @@ -488,7 +488,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.displayManager = DisplayManager(screens) self.aboutForm = AboutForm(self, applicationVersion) self.settingsForm = SettingsForm(self.screens, self, self) - self.recentFiles = [] + self.recentFiles = QtCore.QStringList() # Set up the path with plugins pluginpath = AppLocation.get_directory(AppLocation.PluginsDir) self.plugin_manager = PluginManager(pluginpath) @@ -849,5 +849,4 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): if filename and filename not in self.recentFiles: self.recentFiles.insert(0, QtCore.QString(filename)) while self.recentFiles.count() > recentFileCount: - self.recentFiles.pop() - + self.recentFiles.removeLast() diff --git a/openlp/core/ui/pluginform.py b/openlp/core/ui/pluginform.py index 9969ed165..db8b0a603 100644 --- a/openlp/core/ui/pluginform.py +++ b/openlp/core/ui/pluginform.py @@ -27,7 +27,7 @@ import logging from PyQt4 import QtCore, QtGui -from openlp.core.lib.plugin import PluginStatus +from openlp.core.lib import PluginStatus, translate from plugindialog import Ui_PluginViewDialog log = logging.getLogger(__name__) @@ -63,14 +63,14 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog): # sometimes when it's loaded from the config, it isn't cast to int. plugin.status = int(plugin.status) # Set the little status text in brackets next to the plugin name. - status_text = 'Inactive' + status_text = unicode(translate(u'PluginForm', u'%s (Inactive)')) if plugin.status == PluginStatus.Active: - status_text = 'Active' + status_text = unicode(translate(u'PluginForm', u'%s (Active)')) elif plugin.status == PluginStatus.Inactive: - status_text = 'Inactive' + status_text = unicode(translate(u'PluginForm', u'%s (Inactive)')) elif plugin.status == PluginStatus.Disabled: - status_text = 'Disabled' - item.setText(u'%s (%s)' % (plugin.name, status_text)) + status_text = unicode(translate(u'PluginForm', u'%s (Disabled)')) + item.setText(status_text % plugin.name) # If the plugin has an icon, set it! if plugin.icon: item.setIcon(plugin.icon) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 59a52717b..081087a03 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -599,11 +599,11 @@ class ServiceManager(QtGui.QWidget): path_from = unicode(os.path.join( frame[u'path'], frame[u'title'])) - zip.write(path_from) + zip.write(path_from.encode(u'utf-8')) file = open(servicefile, u'wb') cPickle.dump(service, file) file.close() - zip.write(servicefile) + zip.write(servicefile.encode(u'utf-8')) except IOError: log.exception(u'Failed to save service to disk') finally: @@ -669,7 +669,18 @@ class ServiceManager(QtGui.QWidget): try: zip = zipfile.ZipFile(unicode(filename)) 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 not valid UTF-8' % \ + file.decode(u'utf-8', u'replace')) + continue + osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile)) names = osfile.split(os.path.sep) file_path = os.path.join(self.servicePath, names[len(names) - 1]) @@ -679,22 +690,29 @@ class ServiceManager(QtGui.QWidget): file_to.close() if file_path.endswith(u'osd'): p_file = file_path - file_to = open(p_file, u'r') - items = cPickle.load(file_to) - file_to.close() - self.onNewService() - for item in items: - serviceitem = ServiceItem() - serviceitem.RenderManager = self.parent.RenderManager - serviceitem.set_from_service(item, self.servicePath) - self.validateItem(serviceitem) - self.addServiceItem(serviceitem) - try: - if os.path.isfile(p_file): - os.remove(p_file) - except (IOError, OSError): - log.exception(u'Failed to remove osd file') - except IOError: + if 'p_file' in locals(): + file_to = open(p_file, u'r') + items = cPickle.load(file_to) + file_to.close() + self.onNewService() + for item in items: + serviceitem = ServiceItem() + serviceitem.RenderManager = self.parent.RenderManager + serviceitem.set_from_service(item, self.servicePath) + self.validateItem(serviceitem) + self.addServiceItem(serviceitem) + try: + if os.path.isfile(p_file): + os.remove(p_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, NameError): log.exception(u'Problem loading a service file') finally: if file_to: diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 6e8ba8b22..8384e4822 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -563,8 +563,7 @@ class SlideController(QtGui.QWidget): if self.isLive and frame[u'verseTag'] is not None: if tag1 not in self.slideList: self.slideList[tag1] = framenumber - self.SongMenu.menu().addAction( - translate(u'SlideController', u'%s'%tag1), + self.SongMenu.menu().addAction(tag1, self.onSongBarHandler) item.setText(frame[u'text']) else: diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 485f2cf30..c19f1d4a2 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -36,7 +36,7 @@ from openlp.core.theme import Theme from openlp.core.lib import OpenLPToolbar, context_menu_action, \ ThemeXML, str_to_bool, get_text_file_string, build_icon, Receiver, \ context_menu_separator, SettingsManager, translate -from openlp.core.utils import AppLocation +from openlp.core.utils import AppLocation, get_filesystem_encoding log = logging.getLogger(__name__) @@ -136,8 +136,8 @@ class ThemeManager(QtGui.QWidget): self.ThemeListWidget.item(count).setText(newName) #Set the new name if themeName == newName: - name = u'%s (%s)' % (newName, - translate(u'ThemeManager', u'default')) + name = unicode(translate(u'ThemeManager', u'%s (default)')) % \ + newName self.ThemeListWidget.item(count).setText(name) def changeGlobalFromScreen(self, index = -1): @@ -158,8 +158,8 @@ class ThemeManager(QtGui.QWidget): if count == selected_row: self.global_theme = unicode( self.ThemeListWidget.item(count).text()) - name = u'%s (%s)' % (self.global_theme, - translate(u'ThemeManager', u'default')) + name = unicode(translate(u'ThemeManager', u'%s (default)')) % \ + self.global_theme self.ThemeListWidget.item(count).setText(name) QtCore.QSettings().setValue( self.settingsSection + u'/global theme', @@ -231,7 +231,9 @@ class ThemeManager(QtGui.QWidget): try: os.remove(os.path.join(self.path, th)) os.remove(os.path.join(self.thumbPath, th)) - shutil.rmtree(os.path.join(self.path, theme)) + encoding = get_filesystem_encoding() + shutil.rmtree( + os.path.join(self.path, theme).encode(encoding)) except OSError: #if not present do not worry pass @@ -265,8 +267,8 @@ class ThemeManager(QtGui.QWidget): for files in os.walk(source): for name in files[2]: zip.write( - os.path.join(source, name), - os.path.join(theme, name)) + os.path.join(source, name).encode(u'utf-8'), + os.path.join(theme, name).encode(u'utf-8')) QtGui.QMessageBox.information(self, translate(u'ThemeManager', u'Theme Exported'), translate(u'ThemeManager', @@ -316,8 +318,8 @@ class ThemeManager(QtGui.QWidget): if os.path.exists(theme): textName = os.path.splitext(name)[0] if textName == self.global_theme: - name = u'%s (%s)' % (textName, - translate(u'ThemeManager', u'default')) + name = unicode(translate(u'ThemeManager', + u'%s (default)')) % textName else: name = textName thumb = os.path.join(self.thumbPath, u'%s.png' % textName) @@ -388,7 +390,17 @@ class ThemeManager(QtGui.QWidget): filexml = None themename = None 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 not valid UTF-8' % \ + file.decode(u'utf-8', u'replace')) + continue + osfile = unicode(QtCore.QDir.toNativeSeparators(ucsfile)) theme_dir = None if osfile.endswith(os.path.sep): theme_dir = os.path.join(dir, osfile) @@ -406,7 +418,7 @@ class ThemeManager(QtGui.QWidget): if not os.path.exists(theme_dir): os.mkdir(os.path.join(dir, names[0])) 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): # upgrade theme xml filexml = self.migrateVersion122(xml_data) @@ -417,8 +429,14 @@ class ThemeManager(QtGui.QWidget): else: outfile = open(fullpath, u'wb') outfile.write(zip.read(file)) - self.generateAndSaveImage(dir, themename, filexml) - except IOError: + 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, NameError): QtGui.QMessageBox.critical( self, translate(u'ThemeManager', u'Error'), translate(u'ThemeManager', u'File is not a valid theme.')) @@ -527,7 +545,10 @@ class ThemeManager(QtGui.QWidget): outfile.close() if image_from and image_from != image_to: try: - shutil.copyfile(image_from, image_to) + encoding = get_filesystem_encoding() + shutil.copyfile( + unicode(image_from).encode(encoding), + unicode(image_to).encode(encoding)) except IOError: log.exception(u'Failed to save theme image') self.generateAndSaveImage(self.path, name, theme_xml) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 512e15f06..857207896 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -149,27 +149,6 @@ def check_latest_version(current_version): log.exception(u'Reason for failure: %s', e.reason) return version_string -def string_to_unicode(string): - """ - Converts a QString to a Python unicode object. - """ - if isinstance(string, QtCore.QString): - string = unicode(string.toUtf8(), u'utf8') - return string - -def variant_to_unicode(variant): - """ - Converts a QVariant to a Python unicode object. - - ``variant`` - The QVariant instance to convert to unicode. - """ - if isinstance(variant, QtCore.QVariant): - string = variant.toString() - if not isinstance(string, unicode): - string = string_to_unicode(string) - return string - def add_actions(target, actions): """ Adds multiple actions to a menu or toolbar in one command. @@ -187,7 +166,17 @@ def add_actions(target, actions): else: target.addAction(action) +def get_filesystem_encoding(): + """ + Returns the name of the encoding used to convert Unicode filenames into + system file names. + """ + encoding = sys.getfilesystemencoding() + if encoding is None: + encoding = sys.getdefaultencoding() + return encoding + from languagemanager import LanguageManager __all__ = [u'AppLocation', u'check_latest_version', u'add_actions', - u'LanguageManager'] + u'get_filesystem_encoding', u'LanguageManager'] diff --git a/openlp/plugins/bibles/forms/importwizardform.py b/openlp/plugins/bibles/forms/importwizardform.py index 023391615..d8264cf0a 100644 --- a/openlp/plugins/bibles/forms/importwizardform.py +++ b/openlp/plugins/bibles/forms/importwizardform.py @@ -32,7 +32,7 @@ from PyQt4 import QtCore, QtGui from bibleimportwizard import Ui_BibleImportWizard from openlp.core.lib import Receiver, SettingsManager, translate -from openlp.core.utils import AppLocation, variant_to_unicode +from openlp.core.utils import AppLocation from openlp.plugins.bibles.lib.manager import BibleFormat log = logging.getLogger(__name__) @@ -167,9 +167,9 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): return True elif self.currentId() == 2: # License details - license_version = variant_to_unicode(self.field(u'license_version')) - license_copyright = variant_to_unicode( - self.field(u'license_copyright')) + license_version = unicode(self.field(u'license_version').toString()) + license_copyright = \ + unicode(self.field(u'license_copyright').toString()) if license_version == u'': QtGui.QMessageBox.critical(self, translate(u'BiblesPlugin.ImportWizardForm', @@ -389,37 +389,35 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): def performImport(self): bible_type = self.field(u'source_format').toInt()[0] - license_version = variant_to_unicode(self.field(u'license_version')) - license_copyright = variant_to_unicode(self.field(u'license_copyright')) - license_permission = variant_to_unicode( - self.field(u'license_permission')) + license_version = unicode(self.field(u'license_version').toString()) + license_copyright = unicode(self.field(u'license_copyright').toString()) + license_permission = \ + unicode(self.field(u'license_permission').toString()) importer = None if bible_type == BibleFormat.OSIS: # Import an OSIS bible importer = self.manager.import_bible(BibleFormat.OSIS, name=license_version, - filename=variant_to_unicode(self.field(u'osis_location')) + filename=unicode(self.field(u'osis_location').toString()) ) elif bible_type == BibleFormat.CSV: # Import a CSV bible importer = self.manager.import_bible(BibleFormat.CSV, name=license_version, - booksfile=variant_to_unicode(self.field(u'csv_booksfile')), - versefile=variant_to_unicode(self.field(u'csv_versefile')) + booksfile=unicode(self.field(u'csv_booksfile').toString()), + versefile=unicode(self.field(u'csv_versefile').toString()) ) elif bible_type == BibleFormat.OpenSong: # Import an OpenSong bible importer = self.manager.import_bible(BibleFormat.OpenSong, name=license_version, - filename=variant_to_unicode(self.field(u'opensong_file')) + filename=unicode(self.field(u'opensong_file').toString()) ) elif bible_type == BibleFormat.WebDownload: # Import a bible from the web self.ImportProgressBar.setMaximum(1) download_location = self.field(u'web_location').toInt()[0] - bible_version = self.BibleComboBox.currentText() - if not isinstance(bible_version, unicode): - bible_version = unicode(bible_version, u'utf8') + bible_version = unicode(self.BibleComboBox.currentText()) if download_location == WebDownload.Crosswalk: bible = \ self.web_bible_list[WebDownload.Crosswalk][bible_version] @@ -431,10 +429,10 @@ class ImportWizardForm(QtGui.QWizard, Ui_BibleImportWizard): name=license_version, download_source=WebDownload.get_name(download_location), download_name=bible, - proxy_server=variant_to_unicode(self.field(u'proxy_server')), - proxy_username=variant_to_unicode( - self.field(u'proxy_username')), - proxy_password=variant_to_unicode(self.field(u'proxy_password')) + proxy_server=unicode(self.field(u'proxy_server').toString()), + proxy_username=\ + unicode(self.field(u'proxy_username').toString()), + proxy_password=unicode(self.field(u'proxy_password').toString()) ) success = importer.do_import() if success: diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index d922cb446..6c5f21f23 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -454,7 +454,7 @@ class BibleMediaItem(MediaManagerItem): def onQuickSearchButton(self): log.debug(u'Quick Search Button pressed') bible = unicode(self.QuickVersionComboBox.currentText()) - text = unicode(self.QuickSearchEdit.displayText()) + text = unicode(self.QuickSearchEdit.text()) if self.ClearQuickSearchComboBox.currentIndex() == 0: self.ListView.clear() self.lastReference = [] diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 2ac701506..6e791badd 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -120,12 +120,13 @@ class ImageMediaItem(MediaManagerItem): if items: for item in items: text = self.ListView.item(item.row()) - try: - os.remove( - os.path.join(self.servicePath, unicode(text.text()))) - except OSError: - #if not present do not worry - pass + if text: + try: + os.remove( + os.path.join(self.servicePath, unicode(text.text()))) + except OSError: + #if not present do not worry + pass self.ListView.takeItem(item.row()) SettingsManager.set_list(self.settingsSection, self.settingsSection, self.getFileList()) @@ -157,7 +158,7 @@ class ImageMediaItem(MediaManagerItem): service_item.add_capability(ItemCapabilities.AllowsAdditions) for item in items: bitem = self.ListView.item(item.row()) - filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) + filename = unicode(bitem.data(QtCore.Qt.UserRole).toString()) frame = QtGui.QImage(unicode(filename)) (path, name) = os.path.split(filename) service_item.add_from_image(path, name, frame) @@ -174,7 +175,7 @@ class ImageMediaItem(MediaManagerItem): items = self.ListView.selectedIndexes() for item in items: bitem = self.ListView.item(item.row()) - filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) + filename = unicode(bitem.data(QtCore.Qt.UserRole).toString()) frame = QtGui.QImage(unicode(filename)) self.parent.maindisplay.addImageWithText(frame) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 7d48defd7..fd397a35f 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -112,7 +112,7 @@ class MediaMediaItem(MediaManagerItem): items = self.ListView.selectedIndexes() for item in items: bitem = self.ListView.item(item.row()) - filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) + filename = unicode(bitem.data(QtCore.Qt.UserRole).toString()) Receiver.send_message(u'videodisplay_background', filename) def generateSlideData(self, service_item, item=None): @@ -120,7 +120,7 @@ class MediaMediaItem(MediaManagerItem): item = self.ListView.currentItem() if item is None: return False - filename = unicode((item.data(QtCore.Qt.UserRole)).toString()) + filename = unicode(item.data(QtCore.Qt.UserRole).toString()) service_item.title = unicode( translate(u'MediaPlugin.MediaItem', u'Media')) service_item.add_capability(ItemCapabilities.RequiresMedia) diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 54c6a9488..be2cecff4 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -180,7 +180,7 @@ class PresentationMediaItem(MediaManagerItem): self.ListView.takeItem(row) SettingsManager.set_list(self.settingsSection, self.settingsSection, self.getFileList()) - filepath = unicode((item.data(QtCore.Qt.UserRole)).toString()) + filepath = unicode(item.data(QtCore.Qt.UserRole).toString()) #not sure of this has errors #John please can you look at . for cidx in self.controllers: @@ -198,7 +198,7 @@ class PresentationMediaItem(MediaManagerItem): if shortname: for item in items: bitem = self.ListView.item(item.row()) - filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString()) + filename = unicode(bitem.data(QtCore.Qt.UserRole).toString()) if shortname == self.Automatic: service_item.shortname = self.findControllerByType(filename) if not service_item.shortname: diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index ecee8975d..29bdc6b02 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -292,7 +292,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): rowLabel = [] for row in range(0, self.VerseListWidget.rowCount()): item = self.VerseListWidget.item(row, 0) - data = unicode((item.data(QtCore.Qt.UserRole)).toString()) + data = unicode(item.data(QtCore.Qt.UserRole).toString()) bit = data.split(u':') rowTag = u'%s\n%s' % (bit[0][0:1], bit[1]) rowLabel.append(rowTag) @@ -383,7 +383,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): item = self.VerseListWidget.currentItem() if item: tempText = item.text() - verseId = unicode((item.data(QtCore.Qt.UserRole)).toString()) + verseId = unicode(item.data(QtCore.Qt.UserRole).toString()) self.verse_form.setVerse(tempText, True, verseId) if self.verse_form.exec_(): afterText, verse, subVerse = self.verse_form.getVerse() @@ -414,7 +414,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): if self.VerseListWidget.rowCount() > 0: for row in range(0, self.VerseListWidget.rowCount()): item = self.VerseListWidget.item(row, 0) - field = unicode((item.data(QtCore.Qt.UserRole)).toString()) + field = unicode(item.data(QtCore.Qt.UserRole).toString()) verse_list += u'---[%s]---\n' % field verse_list += item.text() verse_list += u'\n' @@ -505,7 +505,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): def onCopyrightInsertButtonTriggered(self): text = self.CopyrightEditItem.text() pos = self.CopyrightEditItem.cursorPosition() - text = text[:pos] + u'©' + text[pos:] + text = text[:pos] + u'\xa9' + text[pos:] self.CopyrightEditItem.setText(text) self.CopyrightEditItem.setFocus() self.CopyrightEditItem.setCursorPosition(pos + 1) @@ -563,7 +563,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): text = u' ' for i in range (0, self.VerseListWidget.rowCount()): item = self.VerseListWidget.item(i, 0) - verseId = unicode((item.data(QtCore.Qt.UserRole)).toString()) + verseId = unicode(item.data(QtCore.Qt.UserRole).toString()) bits = verseId.split(u':') sxml.add_verse_to_lyrics(bits[0], bits[1], unicode(item.text())) text = text + unicode(self.VerseListWidget.item(i, 0).text()) \ diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 77e069e25..4d569f18d 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -104,7 +104,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): verse_type = match.group(1) verse_number = int(match.group(2)) verse_type_index = VerseType.from_string(verse_type) - if verse_type_index: + if verse_type_index is not None: self.VerseTypeComboBox.setCurrentIndex(verse_type_index) self.VerseNumberBox.setValue(verse_number) @@ -112,8 +112,9 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): tag=u'%s:1' % VerseType.to_string(VerseType.Verse)): if single: verse_type, verse_number = tag.split(u':') - self.VerseTypeComboBox.setCurrentIndex( - VerseType.from_string(verse_type)) + verse_type_index = VerseType.from_string(verse_type) + if verse_type_index is not None: + self.VerseTypeComboBox.setCurrentIndex(verse_type_index) self.VerseNumberBox.setValue(int(verse_number)) self.InsertButton.setVisible(False) else: diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index 75659da70..b4bb9f4b0 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -29,7 +29,7 @@ from PyQt4 import QtCore, QtGui from songimportwizard import Ui_SongImportWizard from openlp.core.lib import Receiver, SettingsManager, translate -#from openlp.core.utils import AppLocation, variant_to_unicode +#from openlp.core.utils import AppLocation from openlp.plugins.songs.lib.manager import SongFormat log = logging.getLogger(__name__) @@ -203,20 +203,20 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): # # Import an OSIS bible # importer = self.manager.import_bible(BibleFormat.OSIS, # name=license_version, -# filename=variant_to_unicode(self.field(u'osis_location')) +# filename=unicode(self.field(u'osis_location').toString()) # ) # elif bible_type == BibleFormat.CSV: # # Import a CSV bible # importer = self.manager.import_bible(BibleFormat.CSV, # name=license_version, -# booksfile=variant_to_unicode(self.field(u'csv_booksfile')), -# versefile=variant_to_unicode(self.field(u'csv_versefile')) +# booksfile=unicode(self.field(u'csv_booksfile').toString()), +# versefile=unicode(self.field(u'csv_versefile').toString()) # ) # elif bible_type == BibleFormat.OpenSong: # # Import an OpenSong bible # importer = self.manager.import_bible(BibleFormat.OpenSong, # name=license_version, -# filename=variant_to_unicode(self.field(u'opensong_file')) +# filename=unicode(self.field(u'opensong_file').toString()) # ) # elif bible_type == BibleFormat.WebDownload: # # Import a bible from the web @@ -234,9 +234,9 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard): # name=license_version, # download_source=WebDownload.get_name(download_location), # download_name=bible, -# proxy_server=variant_to_unicode(self.field(u'proxy_server')), -# proxy_username=variant_to_unicode(self.field(u'proxy_username')), -# proxy_password=variant_to_unicode(self.field(u'proxy_password')) +# proxy_server=unicode(self.field(u'proxy_server').toString()), +# proxy_username=unicode(self.field(u'proxy_username').toString()), +# proxy_password=unicode(self.field(u'proxy_password').toString()) # ) # success = importer.do_import() # if success: diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index 36a9b9953..9b47a7501 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -66,7 +66,7 @@ class SongImport(object): self.copyright_string = unicode(QtGui.QApplication.translate( \ u'SongsPlugin.SongImport', u'copyright')) self.copyright_symbol = unicode(QtGui.QApplication.translate( \ - u'SongsPlugin.SongImport', u'©')) + u'SongsPlugin.SongImport', u'\xa9')) @staticmethod def process_songs_text(manager, text):