From e6154010078a1bf7238bdf8030aac37e970e9ca6 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 19 Jun 2010 20:00:50 +0200 Subject: [PATCH 1/4] Make image formats filter in a central location. --- openlp/core/ui/amendthemeform.py | 8 +++++-- openlp/core/utils/__init__.py | 30 +++++++++++++++++++++++--- openlp/plugins/images/lib/mediaitem.py | 14 ++++++------ 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py index 9306a931c..ff5ea63c0 100644 --- a/openlp/core/ui/amendthemeform.py +++ b/openlp/core/ui/amendthemeform.py @@ -30,6 +30,7 @@ import os.path from PyQt4 import QtCore, QtGui from openlp.core.lib import ThemeXML, translate +from openlp.core.utils import get_images_filter from amendthemedialog import Ui_AmendThemeDialog log = logging.getLogger(u'AmendThemeForm') @@ -209,8 +210,11 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.previewTheme() def onImageToolButtonClicked(self): - filename = QtGui.QFileDialog.getOpenFileName( - self, translate(u'AmendThemeForm', u'Open file')) + images_filter = get_images_filter() + images_filter = '%s;;%s (*.*) (*)' % (images_filter, + translate(u'AmendThemeForm', u'All Files')) + filename = QtGui.QFileDialog.getOpenFileName(self, + translate(u'AmendThemeForm', u'Select Image'), u'', images_filter) if filename: self.ImageLineEdit.setText(filename) self.theme.background_filename = filename diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 857207896..d7fab0968 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -30,17 +30,20 @@ import os import sys import logging import urllib2 - from datetime import datetime -from PyQt4 import QtCore + +from PyQt4 import QtGui, QtCore import openlp +from openlp.core.lib import translate log = logging.getLogger(__name__) +images_filter = None class AppLocation(object): """ - Retrieve a directory based on the directory type. + The :class:`AppLocation` class is a static class which retrieves a + directory based on the directory type. """ AppDir = 1 ConfigDir = 2 @@ -176,6 +179,27 @@ def get_filesystem_encoding(): encoding = sys.getdefaultencoding() return encoding +def get_images_filter(): + """ + Returns a filter string for a file dialog containing all the supported + image formats. + """ + global images_filter + if not images_filter: + log.debug(u'Generating images filter.') + old_formats = [str(fmt).lower() + for fmt in QtGui.QImageReader.supportedImageFormats()] + new_formats = [] + for fmt in old_formats: + if fmt not in new_formats: + new_formats.append(fmt) + new_formats.sort() + visible_formats = u'(*.%s)' % u'; *.'.join(new_formats) + actual_formats = u'(*.%s)' % u' *.'.join(new_formats) + images_filter = u'%s %s %s' % (translate('OpenLP', 'Image Files'), + visible_formats, actual_formats) + return images_filter + from languagemanager import LanguageManager __all__ = [u'AppLocation', u'check_latest_version', u'add_actions', diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 3cd498740..182dfca18 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -30,7 +30,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \ context_menu_action, ItemCapabilities, SettingsManager, translate -from openlp.core.utils import AppLocation +from openlp.core.utils import AppLocation, get_images_filter log = logging.getLogger(__name__) @@ -61,12 +61,12 @@ class ImageMediaItem(MediaManagerItem): def retranslateUi(self): self.OnNewPrompt = translate('ImagePlugin.MediaItem', 'Select Image(s)') - file_formats = u'' - for file_format in QtGui.QImageReader.supportedImageFormats(): - file_formats += u'*.%s ' % file_format - self.OnNewFileMasks = unicode( - translate('ImagePlugin.MediaItem', - 'Images (%s);; All files (*)')) % file_formats + #file_formats = u'' + #for file_format in QtGui.QImageReader.supportedImageFormats(): + # file_formats += u'*.%s ' % file_format + file_formats = get_images_filter() + self.OnNewFileMasks = u'%s;;%s (*.*) (*)' % (file_formats, + unicode(translate('ImagePlugin.MediaItem', 'All Files'))) def requiredIcons(self): MediaManagerItem.requiredIcons(self) From 8c6e033c3d96040af3708ada9ebc07433c096cc3 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 19 Jun 2010 20:29:08 +0200 Subject: [PATCH 2/4] Fixed up translate parameters. --- openlp/core/ui/amendthemeform.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py index 91fecf229..1439e711e 100644 --- a/openlp/core/ui/amendthemeform.py +++ b/openlp/core/ui/amendthemeform.py @@ -212,9 +212,9 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): def onImageToolButtonClicked(self): images_filter = get_images_filter() images_filter = '%s;;%s (*.*) (*)' % (images_filter, - translate(u'AmendThemeForm', u'All Files')) + translate('AmendThemeForm', 'All Files')) filename = QtGui.QFileDialog.getOpenFileName(self, - translate(u'AmendThemeForm', u'Select Image'), u'', images_filter) + translate('AmendThemeForm', 'Select Image'), u'', images_filter) if filename: self.ImageLineEdit.setText(filename) self.theme.background_filename = filename From d321249366af1d67fbc2bc9f1d05138b41dc1243 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 19 Jun 2010 20:38:17 +0200 Subject: [PATCH 3/4] Removed unnecessary comments. --- openlp/plugins/images/lib/mediaitem.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 182dfca18..4c74c1b5b 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -61,9 +61,6 @@ class ImageMediaItem(MediaManagerItem): def retranslateUi(self): self.OnNewPrompt = translate('ImagePlugin.MediaItem', 'Select Image(s)') - #file_formats = u'' - #for file_format in QtGui.QImageReader.supportedImageFormats(): - # file_formats += u'*.%s ' % file_format file_formats = get_images_filter() self.OnNewFileMasks = u'%s;;%s (*.*) (*)' % (file_formats, unicode(translate('ImagePlugin.MediaItem', 'All Files'))) From ba4b7a9b7f71dc2099336b58254ed0e7a15f2b57 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 19 Jun 2010 20:42:49 +0200 Subject: [PATCH 4/4] Removed lowercasing of image formats. --- openlp/core/utils/__init__.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index d7fab0968..78c16e26a 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -187,15 +187,10 @@ def get_images_filter(): global images_filter if not images_filter: log.debug(u'Generating images filter.') - old_formats = [str(fmt).lower() + formats = [unicode(fmt) for fmt in QtGui.QImageReader.supportedImageFormats()] - new_formats = [] - for fmt in old_formats: - if fmt not in new_formats: - new_formats.append(fmt) - new_formats.sort() - visible_formats = u'(*.%s)' % u'; *.'.join(new_formats) - actual_formats = u'(*.%s)' % u' *.'.join(new_formats) + visible_formats = u'(*.%s)' % u'; *.'.join(formats) + actual_formats = u'(*.%s)' % u' *.'.join(formats) images_filter = u'%s %s %s' % (translate('OpenLP', 'Image Files'), visible_formats, actual_formats) return images_filter