diff options
author | Peng Wu <alexepico@gmail.com> | 2012-04-01 14:52:28 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2012-04-01 14:52:28 +0800 |
commit | 0ff6dabf0a1c0e5678487d8d273b21e2a1c65ff0 (patch) | |
tree | 13c129598eb8e3d6ba1b29f7adea23bd8b2d4282 /setup/main2.py | |
parent | 26067f84fb3793e9559f60d3caf70404dad99458 (diff) | |
download | ibus-libpinyin-0ff6dabf0a1c0e5678487d8d273b21e2a1c65ff0.tar.gz ibus-libpinyin-0ff6dabf0a1c0e5678487d8d273b21e2a1c65ff0.tar.xz ibus-libpinyin-0ff6dabf0a1c0e5678487d8d273b21e2a1c65ff0.zip |
polish setup ui
Diffstat (limited to 'setup/main2.py')
-rw-r--r-- | setup/main2.py | 80 |
1 files changed, 44 insertions, 36 deletions
diff --git a/setup/main2.py b/setup/main2.py index 1d31ab4..404c791 100644 --- a/setup/main2.py +++ b/setup/main2.py @@ -19,27 +19,32 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -import sys -import gtk -import ibus + +import gettext + import locale import os -import version -import gettext +import sys + +from gi.repository import GLib +from gi.repository import Gtk +from gi.repository import IBus from xdg import BaseDirectory +import version + _ = lambda a : gettext.dgettext("ibus-pinyin", a) class PreferencesDialog: - def __init__(self,engine): + def __init__(self, engine): locale.setlocale(locale.LC_ALL, "") localedir = os.getenv("IBUS_LOCALEDIR") gettext.bindtextdomain("ibus-pinyin", localedir) gettext.bind_textdomain_codeset("ibus-pinyin", "UTF-8") - self.__bus = ibus.Bus() + self.__bus = IBus.Bus() self.__config = self.__bus.get_config() - self.__builder = gtk.Builder() + self.__builder = Gtk.Builder() self.__builder.set_translation_domain("ibus-pinyin") self.__builder.add_from_file("ibus-libpinyin-preferences.ui") self.__dialog = self.__builder.get_object("dialog") @@ -47,6 +52,7 @@ class PreferencesDialog: if engine == "pinyin": self.__config_namespace = "engine/Pinyin" + self.__values = dict(self.__config.get_values(self.__config_namespace)) self.__init_general() self.__init_pinyin() self.__init_fuzzy() @@ -54,17 +60,18 @@ class PreferencesDialog: self.__init_about() elif engine == "bopomofo": self.__config_namespace = "engine/Bopomofo" + self.__values = dict(self.__config.get_values(self.__config_namespace)) self.__init_general() self.__init_bopomofo() self.__init_fuzzy() #self.__init_dictionary() self.__init_about() self.__convert_fuzzy_pinyin_to_bopomofo() - + else: print("Error: Unknown Engine") exit() - + self.__pages.set_current_page(0) def __init_pages(self): @@ -75,7 +82,7 @@ class PreferencesDialog: self.__page_fuzzy = self.__builder.get_object("pageFuzzy") self.__page_dictionary = self.__builder.get_object("pageDictionary") self.__page_about = self.__builder.get_object("pageAbout") - + self.__page_general.hide() self.__page_pinyin_mode.hide() self.__page_bopomofo_mode.hide() @@ -86,7 +93,7 @@ class PreferencesDialog: def __init_general(self): # page General self.__page_general.show() - + # init state self.__init_chinese = self.__builder.get_object("InitChinese") self.__init_english = self.__builder.get_object("InitEnglish") @@ -96,13 +103,10 @@ class PreferencesDialog: self.__init_half_punct = self.__builder.get_object("InitHalfPunct") self.__init_simp = self.__builder.get_object("InitSimplifiedChinese") self.__init_trad = self.__builder.get_object("IniTraditionalChinese") - + # UI self.__lookup_table_page_size = self.__builder.get_object("LookupTablePageSize") self.__lookup_table_orientation = self.__builder.get_object("LookupTableOrientation") - renderer = gtk.CellRendererText() - self.__lookup_table_orientation.pack_start(renderer) - self.__lookup_table_orientation.set_attributes(renderer, text=0) # read values self.__init_chinese.set_active(self.__get_value("InitChinese", True)) @@ -140,10 +144,6 @@ class PreferencesDialog: self.__double_pinyin_show_raw = self.__builder.get_object("DoublePinyinShowRaw") self.__double_pinyin_show_raw.hide () - renderer = gtk.CellRendererText() - self.__double_pinyin_schema.pack_start(renderer) - self.__double_pinyin_schema.set_attributes(renderer, text=0) - # read value self.__incomplete_pinyin.set_active(self.__get_value("IncompletePinyin", True)) self.__full_pinyin.set_active(not self.__get_value("DoublePinyin", False)) @@ -174,25 +174,20 @@ class PreferencesDialog: self.__incomplete_pinyin.connect("toggled", self.__toggled_cb, "IncompletePinyin") self.__double_pinyin_schema.connect("changed", __double_pinyin_schema_changed_cb) self.__double_pinyin_show_raw.connect("toggled", self.__toggled_cb, "DoublePinyinShowRaw") - + self.__init_input_custom() self.__init_correct_pinyin() - + def __init_bopomofo(self): # page Bopomodo Mode self.__page_bopomofo_mode.show() - + # bopomofo mode self.__incomplete_bopomofo = self.__builder.get_object("IncompleteBopomofo") self.__bopomofo_keyboard_mapping = self.__builder.get_object("BopomofoKeyboardMapping") - renderer = gtk.CellRendererText() - self.__bopomofo_keyboard_mapping.pack_start(renderer) - self.__bopomofo_keyboard_mapping.set_attributes(renderer, text=0) # selection mode self.__select_keys = self.__builder.get_object("SelectKeys") - self.__select_keys.pack_start(renderer) - self.__select_keys.set_attributes(renderer, text=0) self.__guide_key = self.__builder.get_object("GuideKey") self.__auxiliary_select_key_f = self.__builder.get_object("AuxiliarySelectKey_F") self.__auxiliary_select_key_kp = self.__builder.get_object("AuxiliarySelectKey_KP") @@ -214,7 +209,7 @@ class PreferencesDialog: self.__set_value("BopomofoKeyboardMapping", widget.get_active()) def __select_keys_changed_cb(widget): self.__set_value("SelectKeys", widget.get_active()) - + self.__bopomofo_keyboard_mapping.connect("changed", __bopomofo_keyboard_mapping_changed_cb) self.__incomplete_bopomofo.connect("toggled", self.__toggled_cb, "IncompletePinyin") self.__select_keys.connect("changed", __select_keys_changed_cb) @@ -276,7 +271,7 @@ class PreferencesDialog: def __init_fuzzy(self): # page Fuzzy self.__page_fuzzy.show() - + # fuzzy pinyin self.__fuzzy_pinyin = self.__builder.get_object("FuzzyPinyin") self.__fuzzy_pinyin_widgets = [ @@ -330,7 +325,7 @@ class PreferencesDialog: def __init_dictionary(self): # page Dictionary self.__page_dictionary.show() - + # dictionary self.__special_phrases = self.__builder.get_object("SpecialPhrases") self.__edit_special_phrases = self.__builder.get_object("EditSpecialPhrases") @@ -357,7 +352,7 @@ class PreferencesDialog: def __init_about(self): # page About self.__page_about.show() - + self.__name_version = self.__builder.get_object("NameVersion") self.__name_version.set_markup(_("<big><b>Intelligent Pinyin %s</b></big>") % version.get_version()) @@ -368,14 +363,27 @@ class PreferencesDialog: self.__set_value(name, widget.get_active ()) def __get_value(self, name, defval): - value = self.__config.get_value(self.__config_namespace, name, "test_default_value_9898") - if value != "test_default_value_9898": - return value + if name in self.__values: + var = self.__values[name] + if isinstance(defval, type(var)): + return var self.__set_value(name, defval) return defval def __set_value(self, name, val): - self.__config.set_value(self.__config_namespace, name, val) + var = None + if isinstance(val, bool): + var = GLib.Variant.new_boolean(val) + elif isinstance(val, int): + var = GLib.Variant.new_int32(val) + elif isinstance(val, str): + var = GLib.Variant.new_string(val) + else: + print >> sys.stderr, "val(%s) is not in support type." % repr(val) + return + + self.__values[name] = val + self.__config.set_value(self.__config_namespace, name, var) def run(self): return self.__dialog.run() |