forked from openlp/openlp
* Fix theme deletion
* Naming fixes * Docstrings bzr-revno: 897
This commit is contained in:
commit
e4c340b4b9
@ -168,7 +168,7 @@ class Theme(object):
|
||||
theme_strings.append(u'_%s_' % (getattr(self, key)))
|
||||
return u''.join(theme_strings)
|
||||
|
||||
def _set_from_XML(self, xml):
|
||||
def _set_from_xml(self, xml):
|
||||
"""
|
||||
Set theme class attributes with data from XML
|
||||
|
||||
|
@ -22,7 +22,10 @@
|
||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
"""
|
||||
The :mod:`languagemanager` module provides all the translation settings and
|
||||
language file loading for OpenLP.
|
||||
"""
|
||||
import logging
|
||||
import os
|
||||
|
||||
@ -42,50 +45,74 @@ class LanguageManager(object):
|
||||
|
||||
@staticmethod
|
||||
def get_translator(language):
|
||||
"""
|
||||
Set up a translator to use in this instance of OpenLP
|
||||
|
||||
``language``
|
||||
The language to load into the translator
|
||||
"""
|
||||
if LanguageManager.AutoLanguage:
|
||||
language = QtCore.QLocale.system().name()
|
||||
lang_Path = AppLocation.get_directory(AppLocation.AppDir)
|
||||
lang_Path = os.path.join(lang_Path, u'resources', u'i18n')
|
||||
appTranslator = QtCore.QTranslator()
|
||||
if appTranslator.load("openlp_" + language, lang_Path):
|
||||
return appTranslator
|
||||
app_translator = QtCore.QTranslator()
|
||||
if app_translator.load("openlp_" + language, lang_Path):
|
||||
return app_translator
|
||||
|
||||
@staticmethod
|
||||
def find_qm_files():
|
||||
"""
|
||||
Find all available language files in this OpenLP install
|
||||
"""
|
||||
trans_dir = AppLocation.get_directory(AppLocation.AppDir)
|
||||
trans_dir = QtCore.QDir(os.path.join(trans_dir, u'resources', u'i18n'))
|
||||
fileNames = trans_dir.entryList(QtCore.QStringList("*.qm"),
|
||||
file_names = trans_dir.entryList(QtCore.QStringList("*.qm"),
|
||||
QtCore.QDir.Files, QtCore.QDir.Name)
|
||||
for name in fileNames:
|
||||
fileNames.replaceInStrings(name, trans_dir.filePath(name))
|
||||
return fileNames
|
||||
for name in file_names:
|
||||
file_names.replaceInStrings(name, trans_dir.filePath(name))
|
||||
return file_names
|
||||
|
||||
@staticmethod
|
||||
def language_name(qmFile):
|
||||
def language_name(qm_file):
|
||||
"""
|
||||
Load the language name from a language file
|
||||
|
||||
``qm_file``
|
||||
The file to obtain the name from
|
||||
"""
|
||||
translator = QtCore.QTranslator()
|
||||
translator.load(qmFile)
|
||||
translator.load(qm_file)
|
||||
return translator.translate('MainWindow', 'English')
|
||||
|
||||
@staticmethod
|
||||
def get_language():
|
||||
"""
|
||||
Retrieve a saved language to use from settings
|
||||
"""
|
||||
settings = QtCore.QSettings(u'OpenLP', u'OpenLP')
|
||||
language = unicode(settings.value(
|
||||
u'general/language', QtCore.QVariant(u'[en]')).toString())
|
||||
log.info(u'Language file: \'%s\' Loaded from conf file' % language)
|
||||
regEx = QtCore.QRegExp("^\[(.*)\]")
|
||||
if regEx.exactMatch(language):
|
||||
reg_ex = QtCore.QRegExp("^\[(.*)\]")
|
||||
if reg_ex.exactMatch(language):
|
||||
LanguageManager.AutoLanguage = True
|
||||
language = regEx.cap(1)
|
||||
language = reg_ex.cap(1)
|
||||
return language
|
||||
|
||||
@staticmethod
|
||||
def set_language(action):
|
||||
actionName = u'%s' % action.objectName()
|
||||
qmList = LanguageManager.get_qm_list()
|
||||
"""
|
||||
Set the language to translate OpenLP into
|
||||
|
||||
``action``
|
||||
The language menu option
|
||||
"""
|
||||
action_name = u'%s' % action.objectName()
|
||||
qm_list = LanguageManager.get_qm_list()
|
||||
if LanguageManager.AutoLanguage:
|
||||
language = u'[%s]' % qmList[actionName]
|
||||
language = u'[%s]' % qm_list[action_name]
|
||||
else:
|
||||
language = u'%s' % qmList[actionName]
|
||||
language = u'%s' % qm_list[action_name]
|
||||
QtCore.QSettings().setValue(
|
||||
u'general/language', QtCore.QVariant(language))
|
||||
log.info(u'Language file: \'%s\' written to conf file' % language)
|
||||
@ -96,17 +123,23 @@ class LanguageManager(object):
|
||||
|
||||
@staticmethod
|
||||
def init_qm_list():
|
||||
"""
|
||||
Initialise the list of available translations
|
||||
"""
|
||||
LanguageManager.__qmList__ = {}
|
||||
qmFiles = LanguageManager.find_qm_files()
|
||||
for i, qmf in enumerate(qmFiles):
|
||||
regEx = QtCore.QRegExp("^.*openlp_(.*).qm")
|
||||
if regEx.exactMatch(qmf):
|
||||
langName = regEx.cap(1)
|
||||
qm_files = LanguageManager.find_qm_files()
|
||||
for i, qmf in enumerate(qm_files):
|
||||
reg_ex = QtCore.QRegExp("^.*openlp_(.*).qm")
|
||||
if reg_ex.exactMatch(qmf):
|
||||
lang_name = reg_ex.cap(1)
|
||||
LanguageManager.__qmList__[u'%#2i %s' % (i+1,
|
||||
LanguageManager.language_name(qmf))] = langName
|
||||
LanguageManager.language_name(qmf))] = lang_name
|
||||
|
||||
@staticmethod
|
||||
def get_qm_list():
|
||||
"""
|
||||
Return the list of available translations
|
||||
"""
|
||||
if LanguageManager.__qmList__ is None:
|
||||
LanguageManager.init_qm_list()
|
||||
return LanguageManager.__qmList__
|
||||
|
@ -78,7 +78,7 @@ class CustomPlugin(Plugin):
|
||||
return about_text
|
||||
|
||||
def can_delete_theme(self, theme):
|
||||
filter_string = u'theme_name=%s' % theme
|
||||
filter_string = u'theme_name=\'%s\'' % theme
|
||||
if not self.custommanager.get_all_objects_filtered(CustomSlide,
|
||||
filter_string):
|
||||
return True
|
||||
|
@ -199,7 +199,7 @@ class SongsPlugin(Plugin):
|
||||
return about_text
|
||||
|
||||
def can_delete_theme(self, theme):
|
||||
filter_string = u'theme_name=%s' % theme
|
||||
filter_string = u'theme_name=\'%s\'' % theme
|
||||
if not self.manager.get_all_objects_filtered(Song, filter_string):
|
||||
return True
|
||||
return False
|
||||
|
Loading…
Reference in New Issue
Block a user