From: <ve...@us...> - 2008-03-17 22:24:43
|
Revision: 801 http://luma.svn.sourceforge.net/luma/?rev=801&view=rev Author: vegarwe Date: 2008-03-17 15:24:41 -0700 (Mon, 17 Mar 2008) Log Message: ----------- Qt4 migration: * Fixed imports in LanguageDialog. * Removed custom dialog widget for language selection (replaced by QDialog.getItem) * Moved parsing and writing of configfile to dialog logic. (Less clutter in MainWin.py) * Make LanguageDialog.getLanuageFile() behave as QDialog.getItems (displaying the dialog directly) NB: Sorry for the large commit, It was an iterative process and nothing worked untill the end Modified Paths: -------------- trunk/luma/lib/luma/base/gui/LanguageDialog.py trunk/luma/lib/luma/base/gui/MainWin.py Modified: trunk/luma/lib/luma/base/gui/LanguageDialog.py =================================================================== --- trunk/luma/lib/luma/base/gui/LanguageDialog.py 2008-03-17 22:18:40 UTC (rev 800) +++ trunk/luma/lib/luma/base/gui/LanguageDialog.py 2008-03-17 22:24:41 UTC (rev 801) @@ -9,60 +9,93 @@ ########################################################################### +from PyQt4 import QtCore from PyQt4.QtGui import * from os import listdir +from ConfigParser import * +from base.utils.backend.LogObject import LogObject + import os.path - -from base.gui.LanguageDialogDesign import LanguageDialogDesign import environment -class LanguageDialog(LanguageDialogDesign): +class LanguageDialog(): """A dialog for choosing the language to use. After the dialog is shown, use getLanguageFile() to get the language file which should be used. """ - def __init__(self,parent = None,name = None,modal = 0,fl = 0): - LanguageDialogDesign.__init__(self,parent,name,modal,fl) + def __init__(self, configFile): + + # Read configuration file to find default langCode + self.configFile = configFile + self.configParser = ConfigParser() + try: + self.configParser.readfp(open(self.configFile, 'r')) + except Exception, errorData: + tmpString = "Could not read language settings file. Reason:\n" + tmpString += str(errorData) + environment.logMessage(LogObject("Debug", tmpString)) + + if not(self.configParser.has_section("Defaults")): + self.configParser.add_section("Defaults") + + self.selectedLangCode = "NATIVE" + if self.configParser.has_option("Defaults", "language"): + languageFile = self.configParser.get("Defaults", "language") + languageFile = os.path.split(languageFile)[-1] + if (languageFile[:5] == 'luma_') and (languageFile[-3:] == '.qm'): + self.selectedLangCode = languageFile[5:-3] + + # List all language files self.trDir = os.path.join(environment.lumaInstallationPrefix, "share", "luma", "i18n") - self.languages = [] for x in listdir(self.trDir): if (x[:5] == 'luma_') and (x[-3:] == '.qm'): self.languages.append(x[5:-3]) + +############################################################################### + + def getLanguageFile(self): + """Returns the language file which should be used (string). + If english is chosen, the string 'NATIVE' is returned. Because there + is not translation file for english, all installed translators should + be removed. + + """ + languages = QtCore.QStringList() + # Since english is the default language, there is no language # file and we have to make the entry manually. - self.languageBox.insertItem("English") + languages.append("English") # Insert all languages which have a language file. # IMPORTANT: Has to be edited every time a new languaged is # added to luma. - stringList = [] for x in self.languages: langName = self.getLanguageName(x) if not (None == langName): - stringList.append(langName) - - stringList.sort() - map(self.languageBox.insertItem, stringList) - + languages.append(langName) + languages.sort() -############################################################################### + selectedIndex = languages.indexOf(self.getLanguageName(self.selectedLangCode)) + language, ok = QInputDialog.getItem(None, "test", "tast", languages, selectedIndex, False) - def getLanguageFile(self): - """Returns the language file which should be used (string). + if ok and not language.isEmpty(): + if language == self.getLanguageName(self.selectedLangCode): + return None, False + trFile = self._translageLangueToFile(language) + self.saveLangSetting(trFile) + return trFile, ok + + return "NATIVE", False + - If english is chosen, the string 'NATIVE' is returned. Because there - is not translation file for english, all installed translators should - be removed. - - """ - - tmpText = str(self.languageBox.currentText()) + def _translageLangueToFile(self, langName): + tmpText = langName translationFile = 'NATIVE' if tmpText == "English": @@ -93,10 +126,22 @@ if (languageFile[:5] == 'luma_') and (languageFile[-3:] == '.qm'): languageFile = languageFile[5:-3] - self.languageBox.setCurrentText(self.getLanguageName(languageFile)) + self.selectedLangCode = languageFile ############################################################################### + def saveLangSetting(self, trFile): + self.configParser.set("Defaults", "language", trFile) + + try: + self.configParser.write(open(self.configFile, 'w')) + except Exception, errorData: + tmpString = "Could not save language settings file. Reason:\n" + tmpString += str(errorData) + environment.logMessage(LogObject("Error", tmpString)) + +############################################################################### + def getLanguageName(self, languageCode): if languageCode == 'cs': return "Czech" Modified: trunk/luma/lib/luma/base/gui/MainWin.py =================================================================== --- trunk/luma/lib/luma/base/gui/MainWin.py 2008-03-17 22:18:40 UTC (rev 800) +++ trunk/luma/lib/luma/base/gui/MainWin.py 2008-03-17 22:24:41 UTC (rev 801) @@ -354,49 +354,20 @@ would have no effect. """ - configParser = ConfigParser() - - try: - configParser.readfp(open(self.configFile, 'r')) - except Exception, errorData: - tmpString = "Could not read language settings file. Reason:\n" - tmpString += str(errorData) - environment.logMessage(LogObject("Debug", tmpString)) - - if not(configParser.has_section("Defaults")): - configParser.add_section("Defaults") - - language = "NATIVE" + dialog = LanguageDialog(self.configFile) + trFile, ok = dialog.getLanguageFile() + + if not ok: + return - if configParser.has_option("Defaults", "language"): - language = configParser.get("Defaults", "language") - - language = os.path.split(language)[-1] - - dialog = LanguageDialog() - dialog.setCurrentLanguage(language) - dialog.exec_loop() - - if dialog.result() == QDialog.Accepted: - trFile = dialog.getLanguageFile() - if trFile == 'NATIVE': - qApp.removeTranslator(qApp.translator) - else: - qApp.translator.load(trFile) - qApp.installTranslator(qApp.translator) - - self.languageChanges() - - configParser.set("Defaults", "language", trFile) - - try: - configParser.write(open(self.configFile, 'w')) - except Exception, errorData: - tmpString = "Could not save language settings file. Reason:\n" - tmpString += str(errorData) - environment.logMessage(LogObject("Error", tmpString)) - - self.reloadPlugins() + if trFile == 'NATIVE': + qApp.removeTranslator(qApp.translator) + else: + qApp.translator.load(trFile) + qApp.installTranslator(qApp.translator) + + self.languageChanges() + self.reloadPlugins() ############################################################################### This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |