From 512e7e826ddf031ba656bbe086903784cff65bb9 Mon Sep 17 00:00:00 2001 From: Sayamindu Dasgupta Date: Tue, 24 Mar 2009 18:59:04 +0000 Subject: CP: Disallow the user from selecting any fallbacks if English (USA) is selected (#slo:561) --- (limited to 'extensions/cpsection/language') diff --git a/extensions/cpsection/language/view.py b/extensions/cpsection/language/view.py index 5b7e292..30dc05d 100644 --- a/extensions/cpsection/language/view.py +++ b/extensions/cpsection/language/view.py @@ -118,6 +118,8 @@ class Language(SectionView): previous_add_removes = self._add_remove_boxes[-2] previous_add_removes.hide_all() + self._determine_add_remove_visibility() + combobox.show() def _attach_to_table(self, widget, row, column, padding=20, \ @@ -173,9 +175,6 @@ class Language(SectionView): remove_button.connect('clicked', self.__remove_button_clicked_cb) - if self._selected_lang_count == 1: - remove_button.set_sensitive(False) - add_remove_box = gtk.HButtonBox() add_remove_box.set_layout(gtk.BUTTONBOX_START) add_remove_box.set_spacing(10) @@ -197,6 +196,10 @@ class Language(SectionView): def _check_change(self): selected_langs = self._get_selected_langs() + last_lang = selected_langs[-1] + + self._determine_add_remove_visibility(last_lang = last_lang) + self._changed = (selected_langs != self._selected_locales) if self._changed == False: @@ -226,6 +229,30 @@ class Language(SectionView): return new_codes + def _determine_add_remove_visibility(self, last_lang = None): + # We should not let users add fallback languages for English (USA) + # This is because the software is not usually _translated_ into English + # which means that the fallback gets selected automatically + + if last_lang is None: + selected_langs = self._get_selected_langs() + last_lang = selected_langs[-1] + + add_remove_box = self._add_remove_boxes[-1] + buttons = add_remove_box.get_children() + add_button, remove_button = buttons + + if last_lang.startswith('en_US'): + add_button.props.visible = False + else: + add_button.props.visible = True + + if self._selected_lang_count == 1: + remove_button.props.visible = False + else: + remove_button.props.visible = True + + def __lang_timeout_cb(self, codes): self._lang_sid = 0 self._model.set_languages(codes) -- cgit v0.9.1