Merge lp:~rperier/language-selector/kcm into lp:language-selector
- kcm
- Merge into ubuntu
Status: | Merged |
---|---|
Merged at revision: | 417 |
Proposed branch: | lp:~rperier/language-selector/kcm |
Merge into: | lp:language-selector |
Diff against target: |
1280 lines (+440/-514) 14 files modified
LanguageSelector/qt/QtLanguageSelector.py (+133/-116) LanguageSelector/qt/QtLanguageSelectorGUI.py (+92/-66) LanguageSelector/qt/QtLanguageSelectorGUI.ui (+154/-148) data/kde-language-selector.desktop.in (+12/-8) data/qt-language-selector.1 (+0/-160) dbus_backend/com.ubuntu.languageselector.policy.in (+1/-1) debian/changelog (+19/-0) debian/control (+2/-2) debian/language-selector-kde.install (+3/-3) debian/language-selector-qt.manpages (+0/-1) kde-language-selector (+5/-0) po/Makefile (+1/-1) po/POTFILES.in (+2/-2) setup.py (+16/-6) |
To merge this branch: | bzr merge lp:~rperier/language-selector/kcm |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Jonathan Riddell (community) | Needs Fixing | ||
Review via email: mp+49869@code.launchpad.net |
Commit message
Description of the change
Jonathan Riddell (jr) wrote : | # |
Oh and best to replace the debugging output with kdebug()
Romain Perier (rperier) wrote : | # |
All changes have been applied, except:
- I've seriously no ideas for dbus error (it's apparently caused by "ls-dbus-backend")
- I did not found any informations about kdebug in PyKDE4 (nor Kwarning), does it exist in python ? (I'm wrong probably...)
In my humble opinion, we should bump language-selector to 0.14 since packages have been renamed and a lot of changes will be merge in LanguageSelector.qt .
And by the way, a new name for this kcmodule is open to suggestions, "language-selector" sounds good, but Harald disagrees.
Jonathan Riddell (jr) wrote : | # |
Looking good
If I have a language half installed (e.g. have language-
This isn't using the main kcontrol buttons. For the install/uninstall that probably isn't appropriate with further changes to the UI but for the select I think Apply can be used instead of a button within the tab?
A changelog can be added, use dch -i to do so
in debian/control language-
- 417. By Jonathan Riddell
-
* LanguageSelecto
r/qt/QtLanguage Selector. py:
- KCModule and kcontrol migration
- Add same features than gtk frontend
- New GUI
- Migrate to polkit (no longer runs as root)
* dbus_backend/com.ubuntu. languageselecto r.policy. in:
- Change policy to auth_admin_keep (avoids multiple polkit authentifications)
* debian:
- Rename language-selector => language-selector- gnome
- Rename language-selector- qt => language- selector- kde
- Drop language-selector- qt.1 (not required anymore)
* data/qt-language- selector. desktop. in:
- Rename to kde-language-selector
- Make changes to be a kcmodule
Preview Diff
1 | === modified file 'LanguageSelector/qt/QtLanguageSelector.py' |
2 | --- LanguageSelector/qt/QtLanguageSelector.py 2010-08-07 02:56:46 +0000 |
3 | +++ LanguageSelector/qt/QtLanguageSelector.py 2011-02-22 18:57:39 +0000 |
4 | @@ -13,7 +13,7 @@ |
5 | from PyQt4.QtGui import * |
6 | from PyQt4.QtCore import * |
7 | from PyKDE4.kdecore import ki18n, KAboutData, KCmdLineArgs, KCmdLineOptions |
8 | -from PyKDE4.kdeui import KApplication, KIcon, KMessageBox, KGuiItem |
9 | +from PyKDE4.kdeui import KApplication, KIcon, KMessageBox, KGuiItem, KCModule, KWindowSystem |
10 | |
11 | from LanguageSelector.LanguageSelector import * |
12 | from LanguageSelector.ImSwitch import ImSwitch |
13 | @@ -28,51 +28,30 @@ |
14 | def _(string): |
15 | return utf8(i18n(string)) |
16 | |
17 | -class QtLanguageSelector(QWidget,LanguageSelectorBase): |
18 | +class QtLanguageSelector(KCModule, LanguageSelectorBase): |
19 | """ actual implementation of the qt GUI """ |
20 | |
21 | - def __init__(self, app, datadir, mode): |
22 | + def __init__(self, datadir, component_data=None, parent=None): |
23 | LanguageSelectorBase.__init__(self, datadir) |
24 | - QWidget.__init__(self) |
25 | - Ui_QtLanguageSelectorGUI.__init__(self) |
26 | + KCModule.__init__(self, component_data, parent) |
27 | + |
28 | + self.parentApp = KApplication.kApplication() |
29 | self.ui = Ui_QtLanguageSelectorGUI() |
30 | self.ui.setupUi(self) |
31 | - |
32 | - self.parentApp = app |
33 | - |
34 | + self.about = MakeAboutData() |
35 | + self.setAboutData(self.about) |
36 | + |
37 | self.setWindowIcon(KIcon("preferences-desktop-locale")) |
38 | - self.ui.pushButtonSetSystemLanguage.setIcon(KIcon("dialog-ok")) |
39 | - self.ui.pushButtonOk.setIcon(KIcon("dialog-ok")) |
40 | - self.ui.pushButtonCancel.setIcon(KIcon("dialog-cancel")) |
41 | - self.ui.pushButtonCancel_2.setIcon(KIcon("dialog-cancel")) |
42 | - |
43 | + |
44 | self.imSwitch = ImSwitch() |
45 | - |
46 | # remove dangling ImSwitch symlinks if present |
47 | self.imSwitch.removeDanglingSymlinks() |
48 | - |
49 | - self.mode = mode |
50 | self.init() |
51 | - if mode == "uninstall": |
52 | - self.ui.pushButtonOk.setText(_("Uninstall")) |
53 | - self.ui.selectLanguageLabel.setText(_("Select language to uninstall:")) |
54 | - self.ui.systemLanguageFrame.hide() |
55 | - elif mode == "install": |
56 | - self.ui.systemLanguageFrame.hide() |
57 | - elif mode == "select": |
58 | - self.ui.installLanguageFrame.hide() |
59 | - self.resize(self.sizeHint()) |
60 | - self.setWindowTitle(_("Language Selector")) |
61 | - self.checkInputMethods() |
62 | - else: |
63 | - print "ERROR: unknown mode" |
64 | |
65 | # connect the signals |
66 | - app.connect(self.ui.listBoxDefaultLanguage, SIGNAL("itemSelectionChanged()"), self.checkInputMethods) |
67 | - app.connect(self.ui.pushButtonOk, SIGNAL("clicked()"), self.onPushButtonOk) |
68 | - app.connect(self.ui.pushButtonSetSystemLanguage, SIGNAL("clicked()"), self.onSystemPushButtonOk) |
69 | - app.connect(self.ui.pushButtonCancel, SIGNAL("clicked()"), self.close) |
70 | - app.connect(self.ui.pushButtonCancel_2, SIGNAL("clicked()"), self.close) |
71 | + self.connect(self.ui.listViewLanguagesInst, SIGNAL("itemSelectionChanged()"), self.checkInstallableComponents) |
72 | + self.connect(self.ui.listViewLanguagesUninst, SIGNAL("itemSelectionChanged()"), self.onChanged) |
73 | + self.connect(self.ui.listBoxDefaultLanguage, SIGNAL("itemSelectionChanged()"), self.checkInputMethods) |
74 | |
75 | def init(self): |
76 | self.translateUI() |
77 | @@ -113,17 +92,28 @@ |
78 | if True: #options.verify_installed: |
79 | self.verifyInstalledLangPacks() |
80 | |
81 | + def save(self): |
82 | + idx = self.ui.ktabwidget.currentIndex() |
83 | + |
84 | + if idx == 0: |
85 | + self.pkgChanges("install") |
86 | + elif idx == 1: |
87 | + self.pkgChanges("uninstall") |
88 | + else: |
89 | + self.onSystemLanguageApply() |
90 | |
91 | def translateUI(self): |
92 | """ translate the strings in the UI, needed because Qt designer doesn't use gettext """ |
93 | self.ui.defaultSystemLabel.setText(_("Default system language:")) |
94 | - self.ui.pushButtonSetSystemLanguage.setText(_("Set System Language")) |
95 | self.ui.labelInputMethod.setText(_("Keyboard input method:")) |
96 | - self.ui.pushButtonCancel_2.setText(_("Cancel")) |
97 | self.ui.selectLanguageLabel.setText(_("Select language to install:")) |
98 | - self.ui.pushButtonOk.setText(_("Install")) |
99 | - self.ui.pushButtonCancel.setText(_("Cancel")) |
100 | - |
101 | + self.ui.selectLanguageLabel_2.setText(_("Select language to uninstall:")) |
102 | + self.ui.checkBoxTr.setText(_("Translations")) |
103 | + self.ui.checkBoxIm.setText(_("Input methods")) |
104 | + self.ui.checkBoxSpell.setText(_("Spellchecking and writing aids")) |
105 | + self.ui.checkBoxFonts.setText(_("Extra fonts")) |
106 | + self.ui.ComponentsLabel.setText(_("Components:")) |
107 | + |
108 | def updateSystemDefaultListbox(self): |
109 | self.ui.listBoxDefaultLanguage.clear() |
110 | self._localeinfo.localeToCodeMap = {} |
111 | @@ -139,7 +129,7 @@ |
112 | self._localeinfo.localeToCodeMap[name] = locale |
113 | locales.sort() |
114 | for localeName in locales: |
115 | - item = QListWidgetItem(localeName, self.ui.listBoxDefaultLanguage) |
116 | + item = QListWidgetItem(utf8(localeName), self.ui.listBoxDefaultLanguage) |
117 | if defaultLangName == localeName: |
118 | item.setSelected(True) |
119 | if (not os.path.exists("/etc/alternatives/xinput-all_ALL") or |
120 | @@ -174,61 +164,70 @@ |
121 | self.setEnabled(True) |
122 | |
123 | def update(self): |
124 | - lock = thread.allocate_lock() |
125 | - lock.acquire() |
126 | - t = thread.start_new_thread(self.run_pkg_manager_update,(lock,)) |
127 | - while lock.locked(): |
128 | - self.parentApp.processEvents() |
129 | - time.sleep(0.05) |
130 | + self.run_pkg_manager_update() |
131 | |
132 | def commit(self, inst, rm): |
133 | # unlock here to make sure that lock/unlock are always run |
134 | # pair-wise (and don't explode on errors) |
135 | if len(inst) == 0 and len(rm) == 0: |
136 | return |
137 | - lock = thread.allocate_lock() |
138 | - lock.acquire() |
139 | - t = thread.start_new_thread(self.run_pkg_manager,(lock,inst,rm)) |
140 | - while lock.locked(): |
141 | - self.parentApp.processEvents() |
142 | - time.sleep(0.05) |
143 | + self.run_pkg_manager(inst,rm) |
144 | |
145 | def updateLanguagesList(self): |
146 | - self.ui.listViewLanguages.clear() |
147 | + self.ui.listViewLanguagesInst.clear() |
148 | + self.ui.listViewLanguagesUninst.clear() |
149 | # get the language names and sort them alphabetically |
150 | languageList = self._cache.getLanguageInformation() |
151 | self._localeinfo.listviewStrToLangInfoMap = {} |
152 | for lang in languageList: |
153 | - self._localeinfo.listviewStrToLangInfoMap[utf8(lang.language)] = lang |
154 | + self._localeinfo.listviewStrToLangInfoMap[utf8(self._localeinfo.translate(lang.languageCode))] = lang |
155 | languages = self._localeinfo.listviewStrToLangInfoMap.keys() |
156 | languages.sort() |
157 | |
158 | for langName in languages: |
159 | lang = self._localeinfo.listviewStrToLangInfoMap[langName] |
160 | - elm = QListWidgetItem(utf8(lang.language), self.ui.listViewLanguages) |
161 | - |
162 | + elmIn = QListWidgetItem(utf8(self._localeinfo.translate(lang.languageCode)), self.ui.listViewLanguagesInst) |
163 | + elmUn = QListWidgetItem(utf8(self._localeinfo.translate(lang.languageCode)), self.ui.listViewLanguagesUninst) |
164 | + |
165 | if lang.fullInstalled: |
166 | - if self.mode == "install": |
167 | - elm.setFlags(Qt.ItemIsDropEnabled) #not sure how to unset all flags, but this disables the item |
168 | - elm.setToolTip(_("Already installed")) |
169 | - else: |
170 | - elm.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) |
171 | + elmIn.setFlags(Qt.ItemIsDropEnabled) #not sure how to unset all flags, but this disables the item |
172 | + elmIn.setToolTip(_("Already installed")) |
173 | + elmUn.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) |
174 | elif lang.inconsistent: |
175 | - elm.setToolTip(_("Partially Installed")) |
176 | + elmIn.setToolTip(_("Partially Installed")) |
177 | else: |
178 | - if self.mode == "uninstall": |
179 | - elm.setFlags(Qt.ItemIsDropEnabled) #not sure how to unset all flags, but this disables the item |
180 | - elm.setToolTip(_("Not installed")) |
181 | - elm.setHidden(True) |
182 | - else: |
183 | - elm.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) |
184 | - |
185 | + elmUn.setFlags(Qt.ItemIsDropEnabled) #not sure how to unset all flags, but this disables the item |
186 | + elmUn.setToolTip(_("Not installed")) |
187 | + elmUn.setHidden(True) |
188 | + elmIn.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) |
189 | + |
190 | + def onChanged(self): |
191 | + self.changed() |
192 | + |
193 | + def checkInstallableComponents(self): |
194 | + """ check available components for the selected language |
195 | + and set/unset the corresponding checkbutton accordingly |
196 | + """ |
197 | + items = self.ui.listViewLanguagesInst.selectedItems() |
198 | + |
199 | + if len(items) == 1: |
200 | + self.changed() |
201 | + li = self._localeinfo.listviewStrToLangInfoMap[unicode(items[0].text())] |
202 | + for (button, langPkg) in ( |
203 | + ("checkBoxTr", li.languagePkgList["languagePack"]), |
204 | + ("checkBoxIm", li.languagePkgList["languageSupportInputMethods"]), |
205 | + ("checkBoxSpell", li.languagePkgList["languageSupportWritingAids"]), |
206 | + ("checkBoxFonts", li.languagePkgList["languageSupportFonts"]) ): |
207 | + getattr(self.ui, button).setChecked(langPkg.installed) |
208 | + getattr(self.ui, button).setEnabled(langPkg.available) |
209 | + |
210 | def checkInputMethods(self): |
211 | - """ check if the selected langauge has input method support |
212 | + """ check if the selected language has input method support |
213 | and set checkbutton_enable_input_methods accordingly |
214 | """ |
215 | - if not self.imSwitch.available(): |
216 | + if (not self.imSwitch.available()) or (not self.getSystemLanguage()): |
217 | return |
218 | + self.changed() |
219 | (lang, code) = self.getSystemLanguage() |
220 | |
221 | combo = self.ui.comboBoxInputMethod |
222 | @@ -243,28 +242,26 @@ |
223 | if IM == currentIM: |
224 | combo.setCurrentIndex(i) |
225 | |
226 | - def run_pkg_manager_update(self, lock): |
227 | + def run_pkg_manager_update(self): |
228 | self.returncode = 0 |
229 | - self.returncode = subprocess.call(["qapt-batch","--update"]) |
230 | - lock.release() |
231 | + self.returncode = subprocess.call(["qapt-batch", "--attach", str(self.winId()), "--update"]) |
232 | |
233 | - def run_pkg_manager(self, lock, to_inst, to_rm): |
234 | + def run_pkg_manager(self, to_inst, to_rm): |
235 | self.returncode = 0 |
236 | if len(to_inst) > 0: |
237 | print str(["qapt-batch","--install"]+to_inst) |
238 | - self.returncode = subprocess.call(["qapt-batch","--install"]+to_inst) |
239 | + self.returncode = subprocess.call(["qapt-batch", "--attach", str(self.winId()), "--install"]+to_inst) |
240 | # then remove |
241 | if len(to_rm) > 0: |
242 | - self.returncode = subprocess.call(["qapt-batch","--uninstall"]+to_rm) |
243 | - lock.release() |
244 | + print str(["qapt-batch","--uninstall"]+to_rm) |
245 | + self.returncode = subprocess.call(["qapt-batch", "--attach", str(self.winId()), "--uninstall"]+to_rm) |
246 | |
247 | - def onSystemPushButtonOk(self): |
248 | + def onSystemLanguageApply(self): |
249 | (lang, code) = self.getSystemLanguage() |
250 | self.writeSysLanguageSetting(code) |
251 | self.writeSysLangSetting(code) |
252 | self.updateInputMethods(code) |
253 | KMessageBox.information(self, _("Default system Language now set to %s.") % lang, _("Language Set")) |
254 | - self.close() |
255 | |
256 | def updateInputMethods(self,code): |
257 | IM_choice = self.ui.comboBoxInputMethod.currentText() |
258 | @@ -273,7 +270,7 @@ |
259 | def getSystemLanguage(self): |
260 | """ returns tuple of (lang, code) strings """ |
261 | items = self.ui.listBoxDefaultLanguage.selectedItems() |
262 | - if len(items) == 1 and self.mode == "select": |
263 | + if len(items) == 1: |
264 | item = items[0] |
265 | lang = item.text() |
266 | new_locale = ("%s"%lang) |
267 | @@ -282,30 +279,32 @@ |
268 | return (lang, code) |
269 | except KeyError: |
270 | print "ERROR: can not find new_locale: '%s'"%new_locale |
271 | + |
272 | + def pkgChanges(self, mode): |
273 | |
274 | - def onPushButtonOk(self): |
275 | - items = self.ui.listViewLanguages.selectedItems() |
276 | + if mode == "install": |
277 | + items = self.ui.listViewLanguagesInst.selectedItems() |
278 | + else: |
279 | + items = self.ui.listViewLanguagesUninst.selectedItems() |
280 | + |
281 | if len(items) == 1: |
282 | elm = items[0] |
283 | li = self._localeinfo.listviewStrToLangInfoMap[unicode(elm.text())] |
284 | - if self.mode == "uninstall": |
285 | -# self._cache.tryRemoveLanguage(li.languageCode) |
286 | - for pkg in li.languagePkgList.values(): |
287 | - if pkg.available: |
288 | - if pkg.installed: |
289 | - pkg.doChange = True |
290 | - else: |
291 | - pkg.doChange = False |
292 | - else: |
293 | # self._cache.tryInstallLanguage(li.languageCode) |
294 | - for pkg in li.languagePkgList.values(): |
295 | - if pkg.available: |
296 | - if not pkg.installed: |
297 | - pkg.doChange = True |
298 | - else: |
299 | - pkg.doChange = False |
300 | + for (button, langPkg) in ( |
301 | + ("checkBoxTr", li.languagePkgList["languagePack"]), |
302 | + ("checkBoxIm", li.languagePkgList["languageSupportInputMethods"]), |
303 | + ("checkBoxSpell", li.languagePkgList["languageSupportWritingAids"]), |
304 | + ("checkBoxFonts", li.languagePkgList["languageSupportFonts"]) ): |
305 | + if langPkg.available: |
306 | + if (mode == "install") and (not langPkg.installed): |
307 | + langPkg.doChange = getattr(self.ui, button).isChecked() |
308 | + elif (mode == "uninstall") and langPkg.installed: |
309 | + langPkg.doChange = True |
310 | try: |
311 | self._cache.tryChangeDetails(li) |
312 | + for langPkg in li.languagePkgList.values(): |
313 | + langPkg.doChange = False |
314 | except ExceptionPkgCacheBroken: |
315 | s = _("Software database is broken") |
316 | t = _("It is impossible to install or remove any software. " |
317 | @@ -317,33 +316,51 @@ |
318 | |
319 | (to_inst, to_rm) = self._cache.getChangesList() |
320 | if len(to_inst) == len(to_rm) == 0: |
321 | - self.close() |
322 | return |
323 | - |
324 | # first install |
325 | self.setCursor(Qt.WaitCursor) |
326 | self.setEnabled(False) |
327 | - lock = thread.allocate_lock() |
328 | - lock.acquire() |
329 | - t = thread.start_new_thread(self.run_pkg_manager,(lock,to_inst,to_rm)) |
330 | - while lock.locked(): |
331 | - self.parentApp.processEvents() |
332 | - time.sleep(0.05) |
333 | + self.run_pkg_manager(to_inst,to_rm) |
334 | self.setCursor(Qt.ArrowCursor) |
335 | self.setEnabled(True) |
336 | - |
337 | - kdmscript = "/etc/init.d/kdm" |
338 | - if os.path.exists("/var/run/kdm.pid") and os.path.exists(kdmscript): |
339 | - subprocess.call(["invoke-rc.d","kdm","reload"]) |
340 | + |
341 | +# kdmscript = "/etc/init.d/kdm" |
342 | +# if os.path.exists("/var/run/kdm.pid") and os.path.exists(kdmscript): |
343 | +# subprocess.call(["invoke-rc.d","kdm","reload"]) |
344 | |
345 | #self.run_pkg_manager(to_inst, to_rm) |
346 | - if self.returncode == 0 and self.mode == "install": |
347 | - KMessageBox.information( self, _("Translations and support have now been installed for %s. Select them from the Add Language button.") % unicode(items[0].text()), _("Language Installed") ) |
348 | - elif self.returncode == 0 and self.mode == "uninstall": |
349 | - KMessageBox.information( self, _("Translations and support have now been uninstalled for %s.") % unicode(items[0].text()), _("Language Uninstalled") ) |
350 | + |
351 | + if self.returncode == 0: |
352 | + if (mode == "install"): |
353 | + KMessageBox.information( self, _("All selected components have now been installed for %s. Select them from Country/Region & Language.") % unicode(items[0].text()), _("Language Installed") ) |
354 | + elif (mode == "uninstall"): |
355 | + KMessageBox.information( self, _("Translations and support have now been uninstalled for %s.") % unicode(items[0].text()), _("Language Uninstalled") ) |
356 | + # Resync the cache to match packageManager changes, then update views |
357 | + self._cache.open(None) |
358 | + self.updateLanguagesList() |
359 | + self.updateSystemDefaultListbox() |
360 | else: |
361 | KMessageBox.sorry(self, _("Failed to set system language."), _("Language Not Set")) |
362 | - self.close() |
363 | + self._cache.clear() # undo all selections |
364 | + |
365 | +def MakeAboutData(): |
366 | + appName = "language-selector" |
367 | + catalog = "" |
368 | + programName = ki18n ("Language Selector") |
369 | + version = "0.3.4" |
370 | + description = ki18n ("Language Selector") |
371 | + license = KAboutData.License_GPL |
372 | + copyright = ki18n ("(c) 2008 Canonical Ltd") |
373 | + text = ki18n ("none") |
374 | + homePage = "https://launchpad.net/language-selector" |
375 | + bugEmail = "" |
376 | + |
377 | + aboutData = KAboutData (appName, catalog, programName, version, description, license, copyright, text, homePage, bugEmail) |
378 | + aboutData.addAuthor(ki18n("Michael Vogt"), ki18n("Developer")) |
379 | + aboutData.addAuthor(ki18n("Jonathan Riddell"), ki18n("Developer")) |
380 | + aboutData.addAuthor(ki18n("Harald Sitter"), ki18n("Developer")) |
381 | + |
382 | + return aboutData |
383 | |
384 | if __name__ == "__main__": |
385 | |
386 | @@ -394,7 +411,7 @@ |
387 | KMessageBox.sorry(None, _("Please run this software with administrative rights."), _("Not Root User")) |
388 | sys.exit(1) |
389 | |
390 | - lc = QtLanguageSelector(app, "/usr/share/language-selector/", whattodo) |
391 | + lc = QtLanguageSelector("/usr/share/language-selector/") |
392 | |
393 | lc.show() |
394 | |
395 | |
396 | === modified file 'LanguageSelector/qt/QtLanguageSelectorGUI.py' |
397 | --- LanguageSelector/qt/QtLanguageSelectorGUI.py 2009-09-10 09:31:29 +0000 |
398 | +++ LanguageSelector/qt/QtLanguageSelectorGUI.py 2011-02-22 18:57:39 +0000 |
399 | @@ -2,88 +2,114 @@ |
400 | |
401 | # Form implementation generated from reading ui file 'QtLanguageSelectorGUI.ui' |
402 | # |
403 | -# Created: Thu Sep 10 11:27:14 2009 |
404 | -# by: PyQt4 UI code generator 4.5.2 |
405 | +# Created: Tue Feb 22 18:52:25 2011 |
406 | +# by: PyQt4 UI code generator 4.8.3 |
407 | # |
408 | # WARNING! All changes made in this file will be lost! |
409 | |
410 | from PyQt4 import QtCore, QtGui |
411 | |
412 | +try: |
413 | + _fromUtf8 = QtCore.QString.fromUtf8 |
414 | +except AttributeError: |
415 | + _fromUtf8 = lambda s: s |
416 | + |
417 | class Ui_QtLanguageSelectorGUI(object): |
418 | def setupUi(self, QtLanguageSelectorGUI): |
419 | - QtLanguageSelectorGUI.setObjectName("QtLanguageSelectorGUI") |
420 | - QtLanguageSelectorGUI.resize(432, 468) |
421 | - self.gridlayout = QtGui.QGridLayout(QtLanguageSelectorGUI) |
422 | - self.gridlayout.setMargin(9) |
423 | - self.gridlayout.setSpacing(6) |
424 | - self.gridlayout.setObjectName("gridlayout") |
425 | - self.installLanguageFrame = QtGui.QFrame(QtLanguageSelectorGUI) |
426 | - self.installLanguageFrame.setFrameShape(QtGui.QFrame.NoFrame) |
427 | - self.installLanguageFrame.setFrameShadow(QtGui.QFrame.Raised) |
428 | - self.installLanguageFrame.setObjectName("installLanguageFrame") |
429 | - self.gridlayout1 = QtGui.QGridLayout(self.installLanguageFrame) |
430 | - self.gridlayout1.setMargin(9) |
431 | - self.gridlayout1.setSpacing(6) |
432 | - self.gridlayout1.setObjectName("gridlayout1") |
433 | - self.listViewLanguages = QtGui.QListWidget(self.installLanguageFrame) |
434 | - self.listViewLanguages.setObjectName("listViewLanguages") |
435 | - self.gridlayout1.addWidget(self.listViewLanguages, 1, 0, 1, 3) |
436 | - self.pushButtonOk = QtGui.QPushButton(self.installLanguageFrame) |
437 | - self.pushButtonOk.setObjectName("pushButtonOk") |
438 | - self.gridlayout1.addWidget(self.pushButtonOk, 2, 1, 1, 1) |
439 | - self.pushButtonCancel = QtGui.QPushButton(self.installLanguageFrame) |
440 | - self.pushButtonCancel.setObjectName("pushButtonCancel") |
441 | - self.gridlayout1.addWidget(self.pushButtonCancel, 2, 2, 1, 1) |
442 | - spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) |
443 | - self.gridlayout1.addItem(spacerItem, 2, 0, 1, 1) |
444 | - self.selectLanguageLabel = QtGui.QLabel(self.installLanguageFrame) |
445 | + QtLanguageSelectorGUI.setObjectName(_fromUtf8("QtLanguageSelectorGUI")) |
446 | + QtLanguageSelectorGUI.resize(557, 407) |
447 | + self.verticalLayout = QtGui.QVBoxLayout(QtLanguageSelectorGUI) |
448 | + self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) |
449 | + self.ktabwidget = KTabWidget(QtLanguageSelectorGUI) |
450 | + self.ktabwidget.setObjectName(_fromUtf8("ktabwidget")) |
451 | + self.InstallTab = QtGui.QWidget() |
452 | + self.InstallTab.setObjectName(_fromUtf8("InstallTab")) |
453 | + self.verticalLayout_2 = QtGui.QVBoxLayout(self.InstallTab) |
454 | + self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2")) |
455 | + self.selectLanguageLabel = QtGui.QLabel(self.InstallTab) |
456 | self.selectLanguageLabel.setWordWrap(False) |
457 | - self.selectLanguageLabel.setObjectName("selectLanguageLabel") |
458 | - self.gridlayout1.addWidget(self.selectLanguageLabel, 0, 0, 1, 2) |
459 | - self.gridlayout.addWidget(self.installLanguageFrame, 1, 0, 1, 1) |
460 | - self.systemLanguageFrame = QtGui.QFrame(QtLanguageSelectorGUI) |
461 | - self.systemLanguageFrame.setFrameShape(QtGui.QFrame.NoFrame) |
462 | - self.systemLanguageFrame.setFrameShadow(QtGui.QFrame.Raised) |
463 | - self.systemLanguageFrame.setObjectName("systemLanguageFrame") |
464 | - self.gridlayout2 = QtGui.QGridLayout(self.systemLanguageFrame) |
465 | - self.gridlayout2.setMargin(9) |
466 | - self.gridlayout2.setSpacing(6) |
467 | - self.gridlayout2.setObjectName("gridlayout2") |
468 | - self.pushButtonCancel_2 = QtGui.QPushButton(self.systemLanguageFrame) |
469 | - self.pushButtonCancel_2.setObjectName("pushButtonCancel_2") |
470 | - self.gridlayout2.addWidget(self.pushButtonCancel_2, 3, 2, 1, 1) |
471 | - self.listBoxDefaultLanguage = QtGui.QListWidget(self.systemLanguageFrame) |
472 | - self.listBoxDefaultLanguage.setObjectName("listBoxDefaultLanguage") |
473 | - self.gridlayout2.addWidget(self.listBoxDefaultLanguage, 1, 0, 1, 3) |
474 | - self.pushButtonSetSystemLanguage = QtGui.QPushButton(self.systemLanguageFrame) |
475 | - self.pushButtonSetSystemLanguage.setObjectName("pushButtonSetSystemLanguage") |
476 | - self.gridlayout2.addWidget(self.pushButtonSetSystemLanguage, 3, 1, 1, 1) |
477 | - self.defaultSystemLabel = QtGui.QLabel(self.systemLanguageFrame) |
478 | + self.selectLanguageLabel.setObjectName(_fromUtf8("selectLanguageLabel")) |
479 | + self.verticalLayout_2.addWidget(self.selectLanguageLabel) |
480 | + self.listViewLanguagesInst = QtGui.QListWidget(self.InstallTab) |
481 | + self.listViewLanguagesInst.setObjectName(_fromUtf8("listViewLanguagesInst")) |
482 | + self.verticalLayout_2.addWidget(self.listViewLanguagesInst) |
483 | + self.gridLayout = QtGui.QGridLayout() |
484 | + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) |
485 | + self.checkBoxTr = QtGui.QCheckBox(self.InstallTab) |
486 | + self.checkBoxTr.setEnabled(False) |
487 | + self.checkBoxTr.setObjectName(_fromUtf8("checkBoxTr")) |
488 | + self.gridLayout.addWidget(self.checkBoxTr, 1, 0, 1, 1) |
489 | + self.checkBoxIm = QtGui.QCheckBox(self.InstallTab) |
490 | + self.checkBoxIm.setEnabled(False) |
491 | + self.checkBoxIm.setObjectName(_fromUtf8("checkBoxIm")) |
492 | + self.gridLayout.addWidget(self.checkBoxIm, 2, 0, 1, 1) |
493 | + self.checkBoxSpell = QtGui.QCheckBox(self.InstallTab) |
494 | + self.checkBoxSpell.setEnabled(False) |
495 | + self.checkBoxSpell.setObjectName(_fromUtf8("checkBoxSpell")) |
496 | + self.gridLayout.addWidget(self.checkBoxSpell, 1, 1, 1, 1) |
497 | + self.checkBoxFonts = QtGui.QCheckBox(self.InstallTab) |
498 | + self.checkBoxFonts.setEnabled(False) |
499 | + self.checkBoxFonts.setObjectName(_fromUtf8("checkBoxFonts")) |
500 | + self.gridLayout.addWidget(self.checkBoxFonts, 2, 1, 1, 1) |
501 | + self.ComponentsLabel = QtGui.QLabel(self.InstallTab) |
502 | + self.ComponentsLabel.setObjectName(_fromUtf8("ComponentsLabel")) |
503 | + self.gridLayout.addWidget(self.ComponentsLabel, 0, 0, 1, 1) |
504 | + self.verticalLayout_2.addLayout(self.gridLayout) |
505 | + self.ktabwidget.addTab(self.InstallTab, _fromUtf8("")) |
506 | + self.UninstallTab = QtGui.QWidget() |
507 | + self.UninstallTab.setObjectName(_fromUtf8("UninstallTab")) |
508 | + self.verticalLayout_3 = QtGui.QVBoxLayout(self.UninstallTab) |
509 | + self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) |
510 | + self.selectLanguageLabel_2 = QtGui.QLabel(self.UninstallTab) |
511 | + self.selectLanguageLabel_2.setWordWrap(False) |
512 | + self.selectLanguageLabel_2.setObjectName(_fromUtf8("selectLanguageLabel_2")) |
513 | + self.verticalLayout_3.addWidget(self.selectLanguageLabel_2) |
514 | + self.listViewLanguagesUninst = QtGui.QListWidget(self.UninstallTab) |
515 | + self.listViewLanguagesUninst.setObjectName(_fromUtf8("listViewLanguagesUninst")) |
516 | + self.verticalLayout_3.addWidget(self.listViewLanguagesUninst) |
517 | + self.ktabwidget.addTab(self.UninstallTab, _fromUtf8("")) |
518 | + self.SystemDefaultTab = QtGui.QWidget() |
519 | + self.SystemDefaultTab.setObjectName(_fromUtf8("SystemDefaultTab")) |
520 | + self.verticalLayout_4 = QtGui.QVBoxLayout(self.SystemDefaultTab) |
521 | + self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4")) |
522 | + self.defaultSystemLabel = QtGui.QLabel(self.SystemDefaultTab) |
523 | self.defaultSystemLabel.setWordWrap(False) |
524 | - self.defaultSystemLabel.setObjectName("defaultSystemLabel") |
525 | - self.gridlayout2.addWidget(self.defaultSystemLabel, 0, 0, 1, 2) |
526 | - spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) |
527 | - self.gridlayout2.addItem(spacerItem1, 3, 0, 1, 1) |
528 | - spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) |
529 | - self.gridlayout2.addItem(spacerItem2, 2, 0, 1, 1) |
530 | - self.comboBoxInputMethod = QtGui.QComboBox(self.systemLanguageFrame) |
531 | - self.comboBoxInputMethod.setObjectName("comboBoxInputMethod") |
532 | - self.gridlayout2.addWidget(self.comboBoxInputMethod, 2, 2, 1, 1) |
533 | - self.labelInputMethod = QtGui.QLabel(self.systemLanguageFrame) |
534 | - self.labelInputMethod.setObjectName("labelInputMethod") |
535 | - self.gridlayout2.addWidget(self.labelInputMethod, 2, 1, 1, 1) |
536 | - self.gridlayout.addWidget(self.systemLanguageFrame, 0, 0, 1, 1) |
537 | + self.defaultSystemLabel.setObjectName(_fromUtf8("defaultSystemLabel")) |
538 | + self.verticalLayout_4.addWidget(self.defaultSystemLabel) |
539 | + self.listBoxDefaultLanguage = QtGui.QListWidget(self.SystemDefaultTab) |
540 | + self.listBoxDefaultLanguage.setObjectName(_fromUtf8("listBoxDefaultLanguage")) |
541 | + self.verticalLayout_4.addWidget(self.listBoxDefaultLanguage) |
542 | + self.horizontalLayout_4 = QtGui.QHBoxLayout() |
543 | + self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) |
544 | + spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) |
545 | + self.horizontalLayout_4.addItem(spacerItem) |
546 | + self.labelInputMethod = QtGui.QLabel(self.SystemDefaultTab) |
547 | + self.labelInputMethod.setObjectName(_fromUtf8("labelInputMethod")) |
548 | + self.horizontalLayout_4.addWidget(self.labelInputMethod) |
549 | + self.comboBoxInputMethod = QtGui.QComboBox(self.SystemDefaultTab) |
550 | + self.comboBoxInputMethod.setObjectName(_fromUtf8("comboBoxInputMethod")) |
551 | + self.horizontalLayout_4.addWidget(self.comboBoxInputMethod) |
552 | + self.verticalLayout_4.addLayout(self.horizontalLayout_4) |
553 | + self.ktabwidget.addTab(self.SystemDefaultTab, _fromUtf8("")) |
554 | + self.verticalLayout.addWidget(self.ktabwidget) |
555 | |
556 | self.retranslateUi(QtLanguageSelectorGUI) |
557 | + self.ktabwidget.setCurrentIndex(0) |
558 | QtCore.QMetaObject.connectSlotsByName(QtLanguageSelectorGUI) |
559 | |
560 | def retranslateUi(self, QtLanguageSelectorGUI): |
561 | QtLanguageSelectorGUI.setWindowTitle(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Language Installer", None, QtGui.QApplication.UnicodeUTF8)) |
562 | - self.pushButtonOk.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Install", None, QtGui.QApplication.UnicodeUTF8)) |
563 | - self.pushButtonCancel.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Cancel", None, QtGui.QApplication.UnicodeUTF8)) |
564 | self.selectLanguageLabel.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Select language to install:", None, QtGui.QApplication.UnicodeUTF8)) |
565 | - self.pushButtonCancel_2.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Cancel", None, QtGui.QApplication.UnicodeUTF8)) |
566 | - self.pushButtonSetSystemLanguage.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Set System Language", None, QtGui.QApplication.UnicodeUTF8)) |
567 | + self.checkBoxTr.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Translations", None, QtGui.QApplication.UnicodeUTF8)) |
568 | + self.checkBoxIm.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Input methods", None, QtGui.QApplication.UnicodeUTF8)) |
569 | + self.checkBoxSpell.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Spellchecking and writing aids", None, QtGui.QApplication.UnicodeUTF8)) |
570 | + self.checkBoxFonts.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Extra fonts", None, QtGui.QApplication.UnicodeUTF8)) |
571 | + self.ComponentsLabel.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Components:", None, QtGui.QApplication.UnicodeUTF8)) |
572 | + self.ktabwidget.setTabText(self.ktabwidget.indexOf(self.InstallTab), QtGui.QApplication.translate("QtLanguageSelectorGUI", "Install", None, QtGui.QApplication.UnicodeUTF8)) |
573 | + self.selectLanguageLabel_2.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Select language to uninstall:", None, QtGui.QApplication.UnicodeUTF8)) |
574 | + self.ktabwidget.setTabText(self.ktabwidget.indexOf(self.UninstallTab), QtGui.QApplication.translate("QtLanguageSelectorGUI", "Uninstall", None, QtGui.QApplication.UnicodeUTF8)) |
575 | self.defaultSystemLabel.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Default system language:", None, QtGui.QApplication.UnicodeUTF8)) |
576 | self.labelInputMethod.setText(QtGui.QApplication.translate("QtLanguageSelectorGUI", "Keyboard input method:", None, QtGui.QApplication.UnicodeUTF8)) |
577 | + self.ktabwidget.setTabText(self.ktabwidget.indexOf(self.SystemDefaultTab), QtGui.QApplication.translate("QtLanguageSelectorGUI", "System Default", None, QtGui.QApplication.UnicodeUTF8)) |
578 | |
579 | +from PyKDE4.kdeui import KTabWidget |
580 | |
581 | === modified file 'LanguageSelector/qt/QtLanguageSelectorGUI.ui' |
582 | --- LanguageSelector/qt/QtLanguageSelectorGUI.ui 2009-09-10 02:47:55 +0000 |
583 | +++ LanguageSelector/qt/QtLanguageSelectorGUI.ui 2011-02-22 18:57:39 +0000 |
584 | @@ -6,163 +6,169 @@ |
585 | <rect> |
586 | <x>0</x> |
587 | <y>0</y> |
588 | - <width>432</width> |
589 | - <height>468</height> |
590 | + <width>557</width> |
591 | + <height>407</height> |
592 | </rect> |
593 | </property> |
594 | <property name="windowTitle"> |
595 | <string>Language Installer</string> |
596 | </property> |
597 | - <layout class="QGridLayout"> |
598 | - <property name="margin"> |
599 | - <number>9</number> |
600 | - </property> |
601 | - <property name="spacing"> |
602 | - <number>6</number> |
603 | - </property> |
604 | - <item row="1" column="0"> |
605 | - <widget class="QFrame" name="installLanguageFrame"> |
606 | - <property name="frameShape"> |
607 | - <enum>QFrame::NoFrame</enum> |
608 | - </property> |
609 | - <property name="frameShadow"> |
610 | - <enum>QFrame::Raised</enum> |
611 | - </property> |
612 | - <layout class="QGridLayout"> |
613 | - <property name="margin"> |
614 | - <number>9</number> |
615 | - </property> |
616 | - <property name="spacing"> |
617 | - <number>6</number> |
618 | - </property> |
619 | - <item row="1" column="0" colspan="3"> |
620 | - <widget class="QListWidget" name="listViewLanguages"/> |
621 | - </item> |
622 | - <item row="2" column="1"> |
623 | - <widget class="QPushButton" name="pushButtonOk"> |
624 | - <property name="text"> |
625 | - <string>Install</string> |
626 | - </property> |
627 | - </widget> |
628 | - </item> |
629 | - <item row="2" column="2"> |
630 | - <widget class="QPushButton" name="pushButtonCancel"> |
631 | - <property name="text"> |
632 | - <string>Cancel</string> |
633 | - </property> |
634 | - </widget> |
635 | - </item> |
636 | - <item row="2" column="0"> |
637 | - <spacer> |
638 | - <property name="orientation"> |
639 | - <enum>Qt::Horizontal</enum> |
640 | - </property> |
641 | - <property name="sizeHint" stdset="0"> |
642 | - <size> |
643 | - <width>40</width> |
644 | - <height>20</height> |
645 | - </size> |
646 | - </property> |
647 | - </spacer> |
648 | - </item> |
649 | - <item row="0" column="0" colspan="2"> |
650 | - <widget class="QLabel" name="selectLanguageLabel"> |
651 | - <property name="text"> |
652 | - <string>Select language to install:</string> |
653 | - </property> |
654 | - <property name="wordWrap"> |
655 | - <bool>false</bool> |
656 | - </property> |
657 | - </widget> |
658 | - </item> |
659 | - </layout> |
660 | - </widget> |
661 | - </item> |
662 | - <item row="0" column="0"> |
663 | - <widget class="QFrame" name="systemLanguageFrame"> |
664 | - <property name="frameShape"> |
665 | - <enum>QFrame::NoFrame</enum> |
666 | - </property> |
667 | - <property name="frameShadow"> |
668 | - <enum>QFrame::Raised</enum> |
669 | - </property> |
670 | - <layout class="QGridLayout"> |
671 | - <property name="margin"> |
672 | - <number>9</number> |
673 | - </property> |
674 | - <property name="spacing"> |
675 | - <number>6</number> |
676 | - </property> |
677 | - <item row="3" column="2"> |
678 | - <widget class="QPushButton" name="pushButtonCancel_2"> |
679 | - <property name="text"> |
680 | - <string>Cancel</string> |
681 | - </property> |
682 | - </widget> |
683 | - </item> |
684 | - <item row="1" column="0" colspan="3"> |
685 | - <widget class="QListWidget" name="listBoxDefaultLanguage"/> |
686 | - </item> |
687 | - <item row="3" column="1"> |
688 | - <widget class="QPushButton" name="pushButtonSetSystemLanguage"> |
689 | - <property name="text"> |
690 | - <string>Set System Language</string> |
691 | - </property> |
692 | - </widget> |
693 | - </item> |
694 | - <item row="0" column="0" colspan="2"> |
695 | - <widget class="QLabel" name="defaultSystemLabel"> |
696 | - <property name="text"> |
697 | - <string>Default system language:</string> |
698 | - </property> |
699 | - <property name="wordWrap"> |
700 | - <bool>false</bool> |
701 | - </property> |
702 | - </widget> |
703 | - </item> |
704 | - <item row="3" column="0"> |
705 | - <spacer> |
706 | - <property name="orientation"> |
707 | - <enum>Qt::Horizontal</enum> |
708 | - </property> |
709 | - <property name="sizeHint" stdset="0"> |
710 | - <size> |
711 | - <width>40</width> |
712 | - <height>20</height> |
713 | - </size> |
714 | - </property> |
715 | - </spacer> |
716 | - </item> |
717 | - <item row="2" column="0"> |
718 | - <spacer name="horizontalSpacer"> |
719 | - <property name="orientation"> |
720 | - <enum>Qt::Horizontal</enum> |
721 | - </property> |
722 | - <property name="sizeHint" stdset="0"> |
723 | - <size> |
724 | - <width>40</width> |
725 | - <height>20</height> |
726 | - </size> |
727 | - </property> |
728 | - </spacer> |
729 | - </item> |
730 | - <item row="2" column="2"> |
731 | - <widget class="QComboBox" name="comboBoxInputMethod"/> |
732 | - </item> |
733 | - <item row="2" column="1"> |
734 | - <widget class="QLabel" name="labelInputMethod"> |
735 | - <property name="text"> |
736 | - <string>Keyboard input method:</string> |
737 | - </property> |
738 | - </widget> |
739 | - </item> |
740 | - </layout> |
741 | + <layout class="QVBoxLayout" name="verticalLayout"> |
742 | + <item> |
743 | + <widget class="KTabWidget" name="ktabwidget"> |
744 | + <property name="currentIndex"> |
745 | + <number>0</number> |
746 | + </property> |
747 | + <widget class="QWidget" name="InstallTab"> |
748 | + <attribute name="title"> |
749 | + <string>Install</string> |
750 | + </attribute> |
751 | + <layout class="QVBoxLayout" name="verticalLayout_2"> |
752 | + <item> |
753 | + <widget class="QLabel" name="selectLanguageLabel"> |
754 | + <property name="text"> |
755 | + <string>Select language to install:</string> |
756 | + </property> |
757 | + <property name="wordWrap"> |
758 | + <bool>false</bool> |
759 | + </property> |
760 | + </widget> |
761 | + </item> |
762 | + <item> |
763 | + <widget class="QListWidget" name="listViewLanguagesInst"/> |
764 | + </item> |
765 | + <item> |
766 | + <layout class="QGridLayout" name="gridLayout"> |
767 | + <item row="1" column="0"> |
768 | + <widget class="QCheckBox" name="checkBoxTr"> |
769 | + <property name="enabled"> |
770 | + <bool>false</bool> |
771 | + </property> |
772 | + <property name="text"> |
773 | + <string>Translations</string> |
774 | + </property> |
775 | + </widget> |
776 | + </item> |
777 | + <item row="2" column="0"> |
778 | + <widget class="QCheckBox" name="checkBoxIm"> |
779 | + <property name="enabled"> |
780 | + <bool>false</bool> |
781 | + </property> |
782 | + <property name="text"> |
783 | + <string>Input methods</string> |
784 | + </property> |
785 | + </widget> |
786 | + </item> |
787 | + <item row="1" column="1"> |
788 | + <widget class="QCheckBox" name="checkBoxSpell"> |
789 | + <property name="enabled"> |
790 | + <bool>false</bool> |
791 | + </property> |
792 | + <property name="text"> |
793 | + <string>Spellchecking and writing aids</string> |
794 | + </property> |
795 | + </widget> |
796 | + </item> |
797 | + <item row="2" column="1"> |
798 | + <widget class="QCheckBox" name="checkBoxFonts"> |
799 | + <property name="enabled"> |
800 | + <bool>false</bool> |
801 | + </property> |
802 | + <property name="text"> |
803 | + <string>Extra fonts</string> |
804 | + </property> |
805 | + </widget> |
806 | + </item> |
807 | + <item row="0" column="0"> |
808 | + <widget class="QLabel" name="ComponentsLabel"> |
809 | + <property name="text"> |
810 | + <string>Components:</string> |
811 | + </property> |
812 | + </widget> |
813 | + </item> |
814 | + </layout> |
815 | + </item> |
816 | + </layout> |
817 | + </widget> |
818 | + <widget class="QWidget" name="UninstallTab"> |
819 | + <attribute name="title"> |
820 | + <string>Uninstall</string> |
821 | + </attribute> |
822 | + <layout class="QVBoxLayout" name="verticalLayout_3"> |
823 | + <item> |
824 | + <widget class="QLabel" name="selectLanguageLabel_2"> |
825 | + <property name="text"> |
826 | + <string>Select language to uninstall:</string> |
827 | + </property> |
828 | + <property name="wordWrap"> |
829 | + <bool>false</bool> |
830 | + </property> |
831 | + </widget> |
832 | + </item> |
833 | + <item> |
834 | + <widget class="QListWidget" name="listViewLanguagesUninst"/> |
835 | + </item> |
836 | + </layout> |
837 | + </widget> |
838 | + <widget class="QWidget" name="SystemDefaultTab"> |
839 | + <attribute name="title"> |
840 | + <string>System Default</string> |
841 | + </attribute> |
842 | + <layout class="QVBoxLayout" name="verticalLayout_4"> |
843 | + <item> |
844 | + <widget class="QLabel" name="defaultSystemLabel"> |
845 | + <property name="text"> |
846 | + <string>Default system language:</string> |
847 | + </property> |
848 | + <property name="wordWrap"> |
849 | + <bool>false</bool> |
850 | + </property> |
851 | + </widget> |
852 | + </item> |
853 | + <item> |
854 | + <widget class="QListWidget" name="listBoxDefaultLanguage"/> |
855 | + </item> |
856 | + <item> |
857 | + <layout class="QHBoxLayout" name="horizontalLayout_4"> |
858 | + <item> |
859 | + <spacer name="horizontalSpacer"> |
860 | + <property name="orientation"> |
861 | + <enum>Qt::Horizontal</enum> |
862 | + </property> |
863 | + <property name="sizeHint" stdset="0"> |
864 | + <size> |
865 | + <width>40</width> |
866 | + <height>20</height> |
867 | + </size> |
868 | + </property> |
869 | + </spacer> |
870 | + </item> |
871 | + <item> |
872 | + <widget class="QLabel" name="labelInputMethod"> |
873 | + <property name="text"> |
874 | + <string>Keyboard input method:</string> |
875 | + </property> |
876 | + </widget> |
877 | + </item> |
878 | + <item> |
879 | + <widget class="QComboBox" name="comboBoxInputMethod"/> |
880 | + </item> |
881 | + </layout> |
882 | + </item> |
883 | + </layout> |
884 | + </widget> |
885 | </widget> |
886 | </item> |
887 | </layout> |
888 | </widget> |
889 | - <layoutdefault spacing="6" margin="11"/> |
890 | - <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> |
891 | + <customwidgets> |
892 | + <customwidget> |
893 | + <class>KTabWidget</class> |
894 | + <extends>QTabWidget</extends> |
895 | + <header>ktabwidget.h</header> |
896 | + <container>1</container> |
897 | + </customwidget> |
898 | + </customwidgets> |
899 | <resources/> |
900 | <connections/> |
901 | </ui> |
902 | |
903 | === renamed file 'data/incomplete-language-support-qt.note.in' => 'data/incomplete-language-support-kde.note.in' |
904 | === renamed file 'data/qt-language-selector.desktop.in' => 'data/kde-language-selector.desktop.in' |
905 | --- data/qt-language-selector.desktop.in 2009-09-08 15:33:56 +0000 |
906 | +++ data/kde-language-selector.desktop.in 2011-02-22 18:57:39 +0000 |
907 | @@ -1,13 +1,17 @@ |
908 | [Desktop Entry] |
909 | -_Name=Language Support |
910 | +_Name=System Languages |
911 | _Comment=Configure multiple and native language support on your system |
912 | -Exec=/usr/bin/qt-language-selector |
913 | + |
914 | +Exec=kcmshell4 language-selector |
915 | Icon=preferences-desktop-locale |
916 | -Terminal=false |
917 | -Type=Application |
918 | +Type=Service |
919 | Encoding=UTF-8 |
920 | -Categories=Application;System; |
921 | -X-KDE-SubstituteUID=true |
922 | + |
923 | +X-KDE-ServiceTypes=KCModule |
924 | +X-KDE-Library=kpythonpluginfactory |
925 | +X-KDE-ParentApp=kcontrol |
926 | +X-KDE-PluginKeyword=language-selector/language-selector.py |
927 | +X-KDE-System-Settings-Parent-Category=locale |
928 | +X-KDE-Weight=90 |
929 | +X-DocPath=kcontrol/language/index.html |
930 | X-Ubuntu-Gettext-Domain=language-selector |
931 | -NoDisplay=true |
932 | -OnlyShowIn=KDE |
933 | |
934 | === removed file 'data/qt-language-selector.1' |
935 | --- data/qt-language-selector.1 2009-09-10 21:21:13 +0000 |
936 | +++ data/qt-language-selector.1 1970-01-01 00:00:00 +0000 |
937 | @@ -1,160 +0,0 @@ |
938 | -.\" This file was generated by kdemangen.pl |
939 | -.TH QT\-LANGUAGE\-SELECTOR 1 "Sep 2009" "K Desktop Environment" "Language Selector" |
940 | -.SH NAME |
941 | -qt\-language\-selector |
942 | -\- Language Selector |
943 | -.SH SYNOPSIS |
944 | -qt\-language\-selector [Qt\-options] [KDE\-options] [options] [install] [uninstall] [select] |
945 | -.SH DESCRIPTION |
946 | -Language Selector |
947 | -.SH OPTIONS |
948 | -.SS |
949 | -.SS Arguments: |
950 | -.TP |
951 | -.B install |
952 | -install a language |
953 | -.TP |
954 | -.B uninstall |
955 | -uninstall a language |
956 | -.TP |
957 | -.B select |
958 | -select a language |
959 | -.SS Options: |
960 | -.TP |
961 | -.B \-\-mode |
962 | -REQUIRED: install, uninstall or select must follow [select] |
963 | -.SS |
964 | -.SS Generic options: |
965 | -.TP |
966 | -.B \-\-help |
967 | -Show help about options |
968 | -.TP |
969 | -.B \-\-help\-qt |
970 | -Show Qt specific options |
971 | -.TP |
972 | -.B \-\-help\-kde |
973 | -Show KDE specific options |
974 | -.TP |
975 | -.B \-\-help\-all |
976 | -Show all options |
977 | -.TP |
978 | -.B \-\-author |
979 | -Show author information |
980 | -.TP |
981 | -.B \-v, \-\-version |
982 | -Show version information |
983 | -.TP |
984 | -.B \-\-license |
985 | -Show license information |
986 | -.TP |
987 | -.B \-\- |
988 | -End of options |
989 | -.SS |
990 | -.SS KDE options: |
991 | -.TP |
992 | -.B \-\-caption <caption> |
993 | -Use 'caption' as name in the titlebar |
994 | -.TP |
995 | -.B \-\-icon <icon> |
996 | -Use 'icon' as the application icon |
997 | -.TP |
998 | -.B \-\-config <filename> |
999 | -Use alternative configuration file |
1000 | -.TP |
1001 | -.B \-\-nocrashhandler |
1002 | -Disable crash handler, to get core dumps |
1003 | -.TP |
1004 | -.B \-\-waitforwm |
1005 | -Waits for a WM_NET compatible windowmanager |
1006 | -.TP |
1007 | -.B \-\-style <style> |
1008 | -sets the application GUI style |
1009 | -.TP |
1010 | -.B \-\-geometry <geometry> |
1011 | -sets the client geometry of the main widget - see man X for the argument format |
1012 | -.SS |
1013 | -.SS Qt options: |
1014 | -.TP |
1015 | -.B \-\-display <displayname> |
1016 | -Use the X-server display 'displayname' |
1017 | -.TP |
1018 | -.B \-\-session <sessionId> |
1019 | -Restore the application for the given 'sessionId' |
1020 | -.TP |
1021 | -.B \-\-cmap |
1022 | -Causes the application to install a private color |
1023 | -map on an 8-bit display |
1024 | -.TP |
1025 | -.B \-\-ncols <count> |
1026 | -Limits the number of colors allocated in the color |
1027 | -cube on an 8-bit display, if the application is |
1028 | -using the QApplication::ManyColor color |
1029 | -specification |
1030 | -.TP |
1031 | -.B \-\-nograb |
1032 | -tells Qt to never grab the mouse or the keyboard |
1033 | -.TP |
1034 | -.B \-\-dograb |
1035 | -running under a debugger can cause an implicit |
1036 | --nograb, use -dograb to override |
1037 | -.TP |
1038 | -.B \-\-sync |
1039 | -switches to synchronous mode for debugging |
1040 | -.TP |
1041 | -.B \-\-fn, \-\-font <fontname> |
1042 | -defines the application font |
1043 | -.TP |
1044 | -.B \-\-bg, \-\-background <color> |
1045 | -sets the default background color and an |
1046 | -application palette (light and dark shades are |
1047 | -calculated) |
1048 | -.TP |
1049 | -.B \-\-fg, \-\-foreground <color> |
1050 | -sets the default foreground color |
1051 | -.TP |
1052 | -.B \-\-btn, \-\-button <color> |
1053 | -sets the default button color |
1054 | -.TP |
1055 | -.B \-\-name <name> |
1056 | -sets the application name |
1057 | -.TP |
1058 | -.B \-\-title <title> |
1059 | -sets the application title (caption) |
1060 | -.TP |
1061 | -.B \-\-visual TrueColor |
1062 | -forces the application to use a TrueColor visual on |
1063 | -an 8-bit display |
1064 | -.TP |
1065 | -.B \-\-inputstyle <inputstyle> |
1066 | -sets XIM (X Input Method) input style. Possible |
1067 | -values are onthespot, overthespot, offthespot and |
1068 | -root |
1069 | -.TP |
1070 | -.B \-\-im <XIM server> |
1071 | -set XIM server |
1072 | -.TP |
1073 | -.B \-\-noxim |
1074 | -disable XIM |
1075 | -.TP |
1076 | -.B \-\-reverse |
1077 | -mirrors the whole layout of widgets |
1078 | -.TP |
1079 | -.B \-\-stylesheet |
1080 | -<file.qss> applies the Qt stylesheet to the application widgets |
1081 | -.TP |
1082 | -.B \-\-graphicssystem <system> |
1083 | -use a different graphics system instead of the default one, options are raster and opengl (experimental) |
1084 | -.SS |
1085 | - |
1086 | -.SH SEE ALSO |
1087 | -Full user documentation is available through the KDE Help Center. You can also enter the URL |
1088 | -.BR help:/qt\-language\-selector/ |
1089 | -directly into konqueror or you can run |
1090 | -.BR "`khelpcenter help:/qt\-language\-selector/'" |
1091 | -from the command-line. |
1092 | -.br |
1093 | -.SH AUTHORS |
1094 | -.nf |
1095 | -Rob Bean |
1096 | -.br |
1097 | - |
1098 | |
1099 | === modified file 'dbus_backend/com.ubuntu.languageselector.policy.in' |
1100 | --- dbus_backend/com.ubuntu.languageselector.policy.in 2010-05-19 09:08:57 +0000 |
1101 | +++ dbus_backend/com.ubuntu.languageselector.policy.in 2011-02-22 18:57:39 +0000 |
1102 | @@ -20,7 +20,7 @@ |
1103 | <defaults> |
1104 | <allow_any>auth_admin</allow_any> |
1105 | <allow_inactive>no</allow_inactive> |
1106 | - <allow_active>auth_admin</allow_active> |
1107 | + <allow_active>auth_admin_keep</allow_active> |
1108 | </defaults> |
1109 | </action> |
1110 | |
1111 | |
1112 | === modified file 'debian/changelog' |
1113 | --- debian/changelog 2011-02-14 16:17:48 +0000 |
1114 | +++ debian/changelog 2011-02-22 18:57:39 +0000 |
1115 | @@ -1,3 +1,22 @@ |
1116 | +language-selector (0.14) natty; urgency=low |
1117 | + |
1118 | + * LanguageSelector/qt/QtLanguageSelector.py: |
1119 | + - KCModule and kcontrol migration |
1120 | + - Add same features than gtk frontend |
1121 | + - New GUI |
1122 | + - Migrate to polkit (no longer runs as root) |
1123 | + * dbus_backend/com.ubuntu.languageselector.policy.in: |
1124 | + - Change policy to auth_admin_keep (avoids multiple polkit authentifications) |
1125 | + * debian: |
1126 | + - Rename language-selector => language-selector-gnome |
1127 | + - Rename language-selector-qt => language-selector-kde |
1128 | + - Drop language-selector-qt.1 (not required anymore) |
1129 | + * data/qt-language-selector.desktop.in: |
1130 | + - Rename to kde-language-selector |
1131 | + - Make changes to be a kcmodule |
1132 | + |
1133 | + -- Romain Perier <romain.perier@gmail.com> Tue, 22 Feb 2011 18:58:21 +0100 |
1134 | + |
1135 | language-selector (0.13) natty; urgency=low |
1136 | |
1137 | [ Gunnar Hjalmarsson ] |
1138 | |
1139 | === modified file 'debian/control' |
1140 | --- debian/control 2011-01-11 04:57:31 +0000 |
1141 | +++ debian/control 2011-02-22 18:57:39 +0000 |
1142 | @@ -10,7 +10,7 @@ |
1143 | Standards-Version: 3.9.1 |
1144 | Vcs-Bzr: http://bazaar.launchpad.net/%7Eubuntu-core-dev/language-selector/ubuntu/ |
1145 | |
1146 | -Package: language-selector |
1147 | +Package: language-selector-gnome |
1148 | Architecture: all |
1149 | Depends: language-selector-common (= ${binary:Version}), |
1150 | ${misc:Depends}, |
1151 | @@ -28,7 +28,7 @@ |
1152 | . |
1153 | This package contains the GTK+ frontend. |
1154 | |
1155 | -Package: language-selector-qt |
1156 | +Package: language-selector-kde |
1157 | Architecture: all |
1158 | Depends: language-selector-common (= ${binary:Version}), |
1159 | ${misc:Depends}, |
1160 | |
1161 | === renamed file 'debian/language-selector.install' => 'debian/language-selector-gnome.install' |
1162 | === renamed file 'debian/language-selector.manpages' => 'debian/language-selector-gnome.manpages' |
1163 | === renamed file 'debian/language-selector-qt.install' => 'debian/language-selector-kde.install' |
1164 | --- debian/language-selector-qt.install 2009-03-02 16:34:21 +0000 |
1165 | +++ debian/language-selector-kde.install 2011-02-22 18:57:39 +0000 |
1166 | @@ -1,4 +1,4 @@ |
1167 | -usr/bin/qt-language-selector |
1168 | +usr/share/kde4/apps/language-selector/language-selector.py |
1169 | usr/lib/python*/*-packages/LanguageSelector/qt |
1170 | -usr/share/applications/qt-language-selector.desktop |
1171 | -../../data/incomplete-language-support-qt.note usr/share/language-support |
1172 | +usr/share/kde4/services/language-selector.desktop |
1173 | +../../data/incomplete-language-support-kde.note usr/share/language-support |
1174 | |
1175 | === removed file 'debian/language-selector-qt.manpages' |
1176 | --- debian/language-selector-qt.manpages 2009-09-10 21:21:13 +0000 |
1177 | +++ debian/language-selector-qt.manpages 1970-01-01 00:00:00 +0000 |
1178 | @@ -1,1 +0,0 @@ |
1179 | -data/qt-language-selector.1 |
1180 | |
1181 | === renamed file 'qt-language-selector' => 'kde-language-selector' |
1182 | --- qt-language-selector 2008-08-26 11:33:42 +0000 |
1183 | +++ kde-language-selector 2011-02-22 18:57:39 +0000 |
1184 | @@ -15,6 +15,11 @@ |
1185 | def _(string): |
1186 | return unicode(i18n(string), "utf-8") |
1187 | |
1188 | +def CreatePlugin(widget_parent, parent, component_data): |
1189 | + gettext.bindtextdomain("language-selector", "/usr/share/locale") |
1190 | + gettext.textdomain("language-selector") |
1191 | + return QtLanguageSelector("/usr/share/language-selector/", component_data, widget_parent) |
1192 | + |
1193 | if __name__ == "__main__": |
1194 | |
1195 | appName = "language-selector" |
1196 | |
1197 | === modified file 'po/Makefile' |
1198 | --- po/Makefile 2010-11-29 14:44:34 +0000 |
1199 | +++ po/Makefile 2011-02-22 18:57:39 +0000 |
1200 | @@ -14,7 +14,7 @@ |
1201 | |
1202 | language-selector.pot: |
1203 | intltool-extract --type=gettext/rfc822deb ../data/incomplete-language-support-gnome.note.in |
1204 | - intltool-extract --type=gettext/rfc822deb ../data/incomplete-language-support-qt.note.in |
1205 | + intltool-extract --type=gettext/rfc822deb ../data/incomplete-language-support-kde.note.in |
1206 | intltool-extract --type=gettext/rfc822deb ../data/restart_session_required.note.in |
1207 | intltool-update -p -g language-selector |
1208 | |
1209 | |
1210 | === modified file 'po/POTFILES.in' |
1211 | --- po/POTFILES.in 2010-11-29 14:27:43 +0000 |
1212 | +++ po/POTFILES.in 2011-02-22 18:57:39 +0000 |
1213 | @@ -8,9 +8,9 @@ |
1214 | LanguageSelector/qt/QtLanguageSelectorGUI.py |
1215 | [type: gettext/glade]data/LanguageSelector.ui |
1216 | data/language-selector.desktop.in |
1217 | -data/qt-language-selector.desktop.in |
1218 | +data/kde-language-selector.desktop.in |
1219 | [type: gettext/rfc822deb]/data/incomplete-language-support-gnome.note.in |
1220 | -[type: gettext/rfc822deb]/data/incomplete-language-support-qt.note.in |
1221 | +[type: gettext/rfc822deb]/data/incomplete-language-support-kde.note.in |
1222 | [type: gettext/rfc822deb]data/restart_session_required.note.in |
1223 | gnome-language-selector |
1224 | fontconfig-voodoo |
1225 | |
1226 | === modified file 'setup.py' |
1227 | --- setup.py 2011-01-13 15:48:50 +0000 |
1228 | +++ setup.py 2011-02-22 18:57:39 +0000 |
1229 | @@ -5,6 +5,7 @@ |
1230 | import os |
1231 | import sys |
1232 | |
1233 | +PREFIX=sys.prefix |
1234 | GETTEXT_NAME="language-selector" |
1235 | I18NFILES = [] |
1236 | for filepath in glob.glob("po/mo/*/LC_MESSAGES/*.mo"): |
1237 | @@ -18,14 +19,17 @@ |
1238 | assert(os.system("cd LanguageSelector/qt; make") == 0) |
1239 | assert(os.system("make -C po") == 0) |
1240 | assert(os.system("cd dbus_backend; make") == 0) |
1241 | - |
1242 | +elif sys.argv[1] == "install": |
1243 | + for arg in sys.argv[2:]: |
1244 | + if "--prefix" in arg: |
1245 | + PREFIX=arg.split("=")[1] |
1246 | + |
1247 | setup(name='language-selector', |
1248 | version='0.1', |
1249 | packages=['LanguageSelector', |
1250 | 'LanguageSelector.gtk', |
1251 | 'LanguageSelector.qt'], |
1252 | - scripts=['qt-language-selector', |
1253 | - 'gnome-language-selector', |
1254 | + scripts=['gnome-language-selector', |
1255 | 'check-language-support', |
1256 | 'fontconfig-voodoo'], |
1257 | data_files=[('share/language-selector/data', |
1258 | @@ -40,7 +44,12 @@ |
1259 | "data/im-switch.blacklist", |
1260 | "data/LanguageSelector.ui"]), |
1261 | ('share/applications', |
1262 | - glob.glob("data/*.desktop")), |
1263 | + ['data/language-selector.desktop']), |
1264 | + # kcm stuff |
1265 | + ('share/kde4/services', |
1266 | + ['data/kde-language-selector.desktop']), |
1267 | + ('share/kde4/apps/language-selector', |
1268 | + ['kde-language-selector']), |
1269 | # dbus stuff |
1270 | ('share/dbus-1/system-services', |
1271 | ['dbus_backend/com.ubuntu.LanguageSelector.service']), |
1272 | @@ -55,5 +64,6 @@ |
1273 | ["data/language-selector.png"]), |
1274 | ]+I18NFILES, |
1275 | ) |
1276 | - |
1277 | - |
1278 | +if sys.argv[1] == "install": |
1279 | + os.rename(PREFIX+"/share/kde4/services/kde-language-selector.desktop", PREFIX+"/share/kde4/services/language-selector.desktop") |
1280 | + os.rename(PREFIX+"/share/kde4/apps/language-selector/kde-language-selector", PREFIX+"/share/kde4/apps/language-selector/language-selector.py") |
Awesomeness
After install the dialogue says "Translations and support have now been installed for Gaelic; Scottish Gaelic. Select them from the Add Language button." "Translations and support" should be changed depending on what has been installed. "Add Language button" should be changed to "Region & Language" (also add a comment to this translation that it refers to the name of the kcontrol module).
How about making the naming of the package consistent? language- selector- kde and language- selector- gnome
I think the "Select" tab should be "System Default"
I think qapt-batch is not called with --attach <winid>
There shouldn't be tickboxes in the uninstall tab, they're just confusing, clicking "Uninstall" should just uninstall everything.
When I set system language I get an error on the command line "ERROR: dbus.proxies: Introspect error on :1.1052:/: dbus.exceptions .DBusException: org.freedesktop .DBus.Error. AccessDenied: Rejected send message, 1 matched rules; type="method_call", sender=":1.1051" (uid=1000 pid=22332 comm="systemset tings) interface= "org.freedeskto p.DBus. Introspectable" member="Introspect" error name="(unset)" requested_reply=0 destination= ":1.1052" (uid=0 pid=23133 comm="/ usr/bin/ python) )"
I also get the polkit dialogue twice, which is strange.
I'm not sure "Language Support" is the best name for this kcontrol module, maybe "System Languages" would be better.
The patch in kdebase-workspace for launching qt-language- selector needs to go (or be changed to a pointer to the new kcm).