diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2008-08-01 22:02:30 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-08-01 22:02:30 +0800 |
commit | 2e3000526080563a6988b1cb820f4d312eeb0f17 (patch) | |
tree | 6ad8fa6cbd7eb1a6039737ff73e827388ec9d628 /setup | |
parent | befb997c85c4dea40d05f90a90822fc3595d1269 (diff) | |
download | ibus-2e3000526080563a6988b1cb820f4d312eeb0f17.tar.gz ibus-2e3000526080563a6988b1cb820f4d312eeb0f17.tar.xz ibus-2e3000526080563a6988b1cb820f4d312eeb0f17.zip |
Save preload engines.
Diffstat (limited to 'setup')
-rw-r--r-- | setup/main.py | 66 |
1 files changed, 47 insertions, 19 deletions
diff --git a/setup/main.py b/setup/main.py index f6f2b18..0702b11 100644 --- a/setup/main.py +++ b/setup/main.py @@ -34,6 +34,19 @@ from gtk import gdk, glade DATA_COLUMN, ) = range(6) +( + DATA_NAME, + DATA_LANG, + DATA_ICON, + DATA_AUTHOR, + DATA_CREDITS, + DATA_EXEC, + DATA_STARTED, + DATA_PRELOAD +) = range(8) + +CONFIG_PRELOAD_ENGINES = "/general/preload_engines" + class Setup(object): def __init__(self): super(Setup, self).__init__() @@ -48,6 +61,7 @@ class Setup(object): self.__xml = glade.XML(glade_file) self.__dialog = self.__xml.get_widget("dialog_setup") self.__tree = self.__xml.get_widget("treeview_engines") + self.__preload_engines = set(self.__bus.config_get_value(CONFIG_PRELOAD_ENGINES, [])) model = self.__create_model() self.__tree.set_model(model) @@ -80,46 +94,38 @@ class Setup(object): renderer = gtk.CellRendererToggle() renderer.set_data('column', ENABLE_COLUMN) renderer.set_property("xalign", 0.5) - renderer.connect("toggled", self.__item_toggled_cb, model) + renderer.connect("toggled", self.__item_started_column_toggled_cb, model) #col_offset = gtk.TreeViewColumn("Holiday", renderer, text=HOLIDAY_NAME_COLUMN) column = gtk.TreeViewColumn("Started", renderer, active = ENABLE_COLUMN, visible = VISIBLE_COLUMN) - # column.set_clickable(True) - # column.set_resizable(False) - # column.set_fixed_width(30) - # column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) self.__tree.append_column(column) # column for preload names renderer = gtk.CellRendererToggle() renderer.set_data('column', PRELOAD_COLUMN) renderer.set_property("xalign", 0.5) - renderer.connect("toggled", self.__item_toggled_cb, model) + renderer.connect("toggled", self.__item_preload_column_toggled_cb, model) column = gtk.TreeViewColumn("Preload", renderer, active = PRELOAD_COLUMN, visible = VISIBLE_COLUMN) - # column.set_clickable(True) - # column.set_resizable(False) - # column.set_fixed_width(30) - # column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) self.__tree.append_column(column) renderer = gtk.CellRendererText() - column = gtk.TreeViewColumn("", renderer, active = PRELOAD_COLUMN, visible = VISIBLE_COLUMN) + column = gtk.TreeViewColumn("", renderer) self.__tree.append_column(column) - def __item_toggled_cb(self, cell, path_str, model): + def __item_started_column_toggled_cb(self, cell, path_str, model): # get toggled iter iter = model.get_iter_from_string(path_str) data = model.get_value(iter, DATA_COLUMN) # do something with the value - if data[6] == False: + if data[DATA_STARTED] == False: try: - self.__bus.register_start_engine(data[1], data[0]) + self.__bus.register_start_engine(data[DATA_NAME], data[DATA_LANG]) except Exception, e: dlg = gtk.MessageDialog(type = gtk.MESSAGE_ERROR, buttons = gtk.BUTTONS_CLOSE, @@ -128,18 +134,39 @@ class Setup(object): return else: try: - self.__bus.register_stop_engine(data[1], data[0]) + self.__bus.register_stop_engine(data[DATA_NAME], data[DATA_LANG]) except Exception, e: dlg = gtk.MessageDialog(type = gtk.MESSAGE_ERROR, buttons = gtk.BUTTONS_CLOSE, message_format = str(e)) dlg.run() return - data[6] = not data[6] + data[DATA_STARTED] = not data[DATA_STARTED] # set new value - model.set(iter, ENABLE_COLUMN, data[6]) + model.set(iter, ENABLE_COLUMN, data[DATA_STARTED]) + + def __item_preload_column_toggled_cb(self, cell, path_str, model): + + # get toggled iter + iter = model.get_iter_from_string(path_str) + data = model.get_value(iter, DATA_COLUMN) + data[DATA_PRELOAD] = not data[DATA_PRELOAD] + engine = "%s:%s" % (data[DATA_LANG], data[DATA_NAME]) + + if data[DATA_PRELOAD]: + if engine not in self.__preload_engines: + self.__preload_engines.add(engine) + self.__bus.config_set_value(CONFIG_PRELOAD_ENGINES, list(self.__preload_engines)) + else: + if engine in self.__preload_engines: + self.__preload_engines.remove(engine) + self.__bus.config_set_value(CONFIG_PRELOAD_ENGINES, list(self.__preload_engines)) + + + # set new value + model.set(iter, PRELOAD_COLUMN, data[DATA_PRELOAD]) def __create_model(self): # create tree store @@ -173,14 +200,15 @@ class Setup(object): langs[key].sort() for name, lang, icon, author, credits, _exec, started in langs[key]: child_iter = model.append(iter) + is_preload = "%s:%s" % (lang, name) in self.__preload_engines model.set(child_iter, NAME_COLUMN, name, ENABLE_COLUMN, started, - PRELOAD_COLUMN, False, + PRELOAD_COLUMN, is_preload, VISIBLE_COLUMN, True, ICON_COLUMN, icon, DATA_COLUMN, - [name, lang, icon, author, credits, _exec, started]) + [name, lang, icon, author, credits, _exec, started, is_preload]) return model |