diff options
Diffstat (limited to 'setup')
-rw-r--r-- | setup/.gitignore | 1 | ||||
-rw-r--r-- | setup/Makefile.am | 3 | ||||
-rw-r--r-- | setup/enginecombobox.py | 92 | ||||
-rw-r--r-- | setup/enginetreeview.py | 157 | ||||
-rw-r--r-- | setup/icon.py | 60 | ||||
-rw-r--r-- | setup/keyboardshortcut.py | 4 | ||||
-rw-r--r-- | setup/main.py | 233 | ||||
-rw-r--r-- | setup/setup.glade | 114 |
8 files changed, 484 insertions, 180 deletions
diff --git a/setup/.gitignore b/setup/.gitignore index bcebcbe..1a6aff2 100644 --- a/setup/.gitignore +++ b/setup/.gitignore @@ -1 +1,2 @@ ibus-setup +ibus-setup.desktop diff --git a/setup/Makefile.am b/setup/Makefile.am index ad2e9d4..0e144e9 100644 --- a/setup/Makefile.am +++ b/setup/Makefile.am @@ -21,6 +21,9 @@ ibussetup_PYTHON = \ main.py \ + icon.py \ + enginecombobox.py \ + enginetreeview.py \ keyboardshortcut.py \ $(NULL) diff --git a/setup/enginecombobox.py b/setup/enginecombobox.py new file mode 100644 index 0000000..c8eaa15 --- /dev/null +++ b/setup/enginecombobox.py @@ -0,0 +1,92 @@ +# vim:set et sts=4 sw=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2007-2008 Huang Peng <shawn.p.huang@gmail.com> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the +# Free Software Foundation, Inc., 59 Temple Place, Suite 330, +# Boston, MA 02111-1307 USA + +import gtk +import gobject +import ibus + +from icon import load_icon + +class EngineComboBox(gtk.ComboBox): + def __init__(self, engines): + super(EngineComboBox, self).__init__() + + self.__model = gtk.TreeStore(gobject.TYPE_PYOBJECT) + + lang = {} + for e in engines: + l = ibus.get_language_name(e.language) + if l not in lang: + lang[l] = [] + lang[l].append(e) + + for l in lang.keys(): + iter1 = self.__model.append(None) + self.__model.set(iter1, 0, l) + for e in lang[l]: + iter2 = self.__model.append(iter1) + self.__model.set(iter2, 0, e) + + self.set_model(self.__model) + + renderer = gtk.CellRendererPixbuf() + renderer.set_property("xalign", 0) + self.pack_start(renderer, False) + self.set_cell_data_func(renderer, self.__icon_cell_data_cb) + + renderer = gtk.CellRendererText() + renderer.set_property("xalign", 0) + self.pack_start(renderer, True) + self.set_cell_data_func(renderer, self.__name_cell_data_cb) + + def __icon_cell_data_cb(self, celllayout, renderer, model, iter): + engine = self.__model.get_value(iter, 0) + + icon_size = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR)[0] + if isinstance (engine, str) or isinstance (engine, unicode): + renderer.set_property("visible", False) + renderer.set_property("sensitive", False) + else: + renderer.set_property("visible", True) + renderer.set_property("sensitive", True) + pixbuf = load_icon(engine.icon, gtk.ICON_SIZE_LARGE_TOOLBAR) + if pixbuf == None: + pixbuf = load_icon("default-engine", gtk.ICON_SIZE_LARGE_TOOLBAR) + if pixbuf == None: + pixbuf = load_icon("gtk-missing-image", gtk.ICON_SIZE_LARGE_TOOLBAR) + renderer.set_property("pixbuf", pixbuf) + + def __name_cell_data_cb(self, celllayout, renderer, model, iter): + engine = self.__model.get_value(iter, 0) + + if isinstance (engine, str) or isinstance (engine, unicode): + renderer.set_property("sensitive", False) + renderer.set_property("text", engine) + else: + renderer.set_property("sensitive", True) + renderer.set_property("text", engine.longname) + + def get_active_engine(self): + iter = self.get_active_iter() + if iter == None: + return None + return self.get_model()[iter][0] + diff --git a/setup/enginetreeview.py b/setup/enginetreeview.py new file mode 100644 index 0000000..4e4c131 --- /dev/null +++ b/setup/enginetreeview.py @@ -0,0 +1,157 @@ +# vim:set et sts=4 sw=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2007-2008 Huang Peng <shawn.p.huang@gmail.com> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the +# Free Software Foundation, Inc., 59 Temple Place, Suite 330, +# Boston, MA 02111-1307 USA + +import gtk +import gobject +import ibus + +from icon import load_icon + +class EngineTreeView(gtk.TreeView): + __gsignals__ = { + 'changed' : ( + gobject.SIGNAL_RUN_LAST, + gobject.TYPE_NONE, + ()) + } + + def __init__(self, engines): + super(EngineTreeView, self).__init__() + + self.__engines = set([]) + + self.__model = gtk.TreeStore(gobject.TYPE_PYOBJECT) + self.set_model(self.__model) + + self.set_headers_visible(False) + + column = gtk.TreeViewColumn() + + renderer = gtk.CellRendererPixbuf() + renderer.set_property("xalign", 0) + column.pack_start(renderer, False) + column.set_cell_data_func(renderer, self.__icon_cell_data_cb) + + renderer = gtk.CellRendererText() + renderer.set_property("xalign", 0) + column.pack_start(renderer, True) + column.set_cell_data_func(renderer, self.__name_cell_data_cb) + self.append_column (column) + + self.set_engines(engines) + + def __icon_cell_data_cb(self, celllayout, renderer, model, iter): + engine = self.__model.get_value(iter, 0) + + icon_size = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR)[0] + pixbuf = load_icon(engine.icon, gtk.ICON_SIZE_LARGE_TOOLBAR) + + if pixbuf == None: + pixbuf = load_icon("default-engine", gtk.ICON_SIZE_LARGE_TOOLBAR) + if pixbuf == None: + pixbuf = load_icon("gtk-missing-image", gtk.ICON_SIZE_LARGE_TOOLBAR) + + renderer.set_property("pixbuf", pixbuf) + + def __name_cell_data_cb(self, celllayout, renderer, model, iter): + engine = self.__model.get_value(iter, 0) + renderer.set_property("sensitive", True) + renderer.set_property("text", engine.longname) + + def set_engines(self, engines): + self.__model.clear() + self.__engines = set([]) + for e in engines: + if e in self.__engines: + continue + iter = self.__model.append(None) + self.__model.set(iter, 0, e) + self.__engines.add(e) + self.emit("changed") + + def get_selected_iter(self): + selection = self.get_selection() + if selection: + return selection.get_selected()[1] + + def get_engines(self): + return map(lambda r: r[0], self.__model) + + def get_select_engine(self): + iter = self.get_selected_iter() + if iter == None: + return None + row = self.__model.get(iter) + return row[0] + + def prepend_engine(self, engine): + if engine == None or engine in self.__engines: + return + iter = self.__model.prepend(None) + self.__model.set(iter, 0, engine) + self.__engines.add(engine) + self.emit("changed") + self.scroll_to_cell(self.__model[0].path, None) + + def remove_engine(self): + iter = self.get_selected_iter() + if iter == None: + return + row = self.__model[iter] + engine = row[0] + self.__engines.remove(engine) + index = row.path[0] + self.__model.remove(iter) + self.emit("changed") + try: + row = self.__model[index] + selection = self.get_selection() + selection.select_path(row.path) + except: + pass + + def move_up_engine(self): + iter = self.get_selected_iter() + if iter == None: + return + row = self.__model[iter] + index = row.path[0] + if index == 0: + return + self.__model.swap(iter, self.__model[index - 1].iter) + self.emit("changed") + self.scroll_to_cell(row.path, None) + + def move_down_engine(self): + iter = self.get_selected_iter() + if iter == None: + return + row = self.__model[iter] + index = row.path[0] + last_row = self.__model[-1] + last_index = last_row.path[0] + if index == last_index: + return + self.__model.swap(iter, self.__model[index + 1].iter) + self.emit("changed") + self.scroll_to_cell(row.path, None) + +gobject.type_register(EngineTreeView) diff --git a/setup/icon.py b/setup/icon.py new file mode 100644 index 0000000..fedd2cf --- /dev/null +++ b/setup/icon.py @@ -0,0 +1,60 @@ +# vim:set et sts=4 sw=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2007-2008 Huang Peng <shawn.p.huang@gmail.com> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the +# Free Software Foundation, Inc., 59 Temple Place, Suite 330, +# Boston, MA 02111-1307 USA + +__all__ = ( + "load_icon" +) + +import gtk +from gtk import gdk +from os import path + + +icon_theme = gtk.icon_theme_get_default() +dir = path.dirname(__file__) +icondir = path.join(dir, "..", "icons") +icon_theme.prepend_search_path(icondir) + +icon_cache = {} + +def load_icon(icon, size): + if (icon, size) in icon_cache: + return icon_cache[(icon, size)] + + icon_size = gtk.icon_size_lookup(size)[0] + pixbuf = None + try: + pixbuf = gdk.pixbuf_new_from_file(icon) + w, h = pixbuf.get_width(), pixbuf.get_height() + rate = max(w, h) / float(icon_size) + w = int(w / rate) + h = int(h / rate) + pixbuf = pixbuf.scale_simple(w, h, gdk.INTERP_BILINEAR) + except: + pass + if pixbuf == None: + try: + theme = gtk.icon_theme_get_default() + pixbuf = theme.load_icon(icon, icon_size, 0) + except: + pass + icon_cache[(icon, size)] = pixbuf + return pixbuf diff --git a/setup/keyboardshortcut.py b/setup/keyboardshortcut.py index c667903..c30dbcc 100644 --- a/setup/keyboardshortcut.py +++ b/setup/keyboardshortcut.py @@ -80,7 +80,7 @@ class KeyboardShortcutSelection(gtk.VBox): table = gtk.Table(4, 2) self.__modifier_buttons = [] - self.__modifier_buttons.append(("Ctrl", gtk.CheckButton("_Ctrl"), gdk.CONTROL_MASK)) + self.__modifier_buttons.append(("Control", gtk.CheckButton("_Control"), gdk.CONTROL_MASK)) self.__modifier_buttons.append(("Alt", gtk.CheckButton("A_lt"), gdk.MOD1_MASK)) self.__modifier_buttons.append(("Shift", gtk.CheckButton("_Shift"), gdk.SHIFT_MASK)) self.__modifier_buttons.append(("Meta", gtk.CheckButton("_Meta"), gdk.META_MASK)) @@ -258,7 +258,7 @@ if __name__ == "__main__": dlg = KeyboardShortcutSelectionDialog( title = "Select test", buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK)) - dlg.add_shortcut("Ctrl+Shift+space") + dlg.add_shortcut("Control+Shift+space") dlg.set_shortcuts(None) print dlg.run() print dlg.get_shortcuts() diff --git a/setup/main.py b/setup/main.py index 7fe9f2e..e3349d0 100644 --- a/setup/main.py +++ b/setup/main.py @@ -33,6 +33,9 @@ from os import path from xdg import BaseDirectory from gtk import gdk from gtk import glade +from enginecombobox import EngineComboBox +from enginetreeview import EngineTreeView +from icon import load_icon _ = lambda a : gettext.dgettext("ibus", a) N_ = lambda a : a @@ -75,12 +78,6 @@ class Setup(object): def __init_ui(self): # add icon search path - icon_theme = gtk.icon_theme_get_default() - dir = path.dirname(__file__) - icondir = path.join(dir, "..", "icons") - icon_theme.prepend_search_path(icondir) - - self.__dialog = self.__xml.get_widget("dialog_setup") # auto start ibus @@ -90,76 +87,111 @@ class Setup(object): # keyboard shortcut # trigger - shortcuts = self.__bus.config_get_value( - "general", "keyboard_shortcut_trigger", + self.__config = self.__bus.get_config() + shortcuts = self.__config.get_value( + "general/hotkey", "trigger", ibus.CONFIG_GENERAL_SHORTCUT_TRIGGER_DEFAULT) + button = self.__xml.get_widget("button_trigger") entry = self.__xml.get_widget("entry_trigger") entry.set_text("; ".join(shortcuts)) button.connect("clicked", self.__shortcut_button_clicked_cb, - N_("trigger"), "general", "keyboard_shortcut_trigger", entry) + N_("trigger"), "general/hotkey", "trigger", entry) # next engine - shortcuts = self.__bus.config_get_value( - "general", "keyboard_shortcut_next_engine", + shortcuts = self.__config.get_value( + "general/hotkey", "next_engine", ibus.CONFIG_GENERAL_SHORTCUT_NEXT_ENGINE_DEFAULT) button = self.__xml.get_widget("button_next_engine") entry = self.__xml.get_widget("entry_next_engine") entry.set_text("; ".join(shortcuts)) button.connect("clicked", self.__shortcut_button_clicked_cb, - N_("next engine"), "general", "keyboard_shortcut_next_engine", entry) + N_("next engine"), "general/hotkey", "next_engine", entry) # prev engine - shortcuts = self.__bus.config_get_value( - "general", "keyboard_shortcut_prev_engine", + shortcuts = self.__config.get_value( + "general/hotkey", "prev_engine", ibus.CONFIG_GENERAL_SHORTCUT_PREV_ENGINE_DEFAULT) button = self.__xml.get_widget("button_prev_engine") entry = self.__xml.get_widget("entry_prev_engine") entry.set_text("; ".join(shortcuts)) button.connect("clicked", self.__shortcut_button_clicked_cb, - N_("prev engine"), "general", "keyboard_shortcut_prev_engine", entry) - - + N_("prev engine"), "general/hotkey", "prev_engine", entry) # lookup table orientation self.__combobox_lookup_table_orientation = self.__xml.get_widget("combobox_lookup_table_orientation") self.__combobox_lookup_table_orientation.set_active( - self.__bus.config_get_value("panel", "lookup_table_orientation", 0)) + self.__config.get_value("panel", "lookup_table_orientation", 0)) self.__combobox_lookup_table_orientation.connect("changed", self.__combobox_lookup_table_orientation_changed_cb) # auto hide self.__checkbutton_auto_hide = self.__xml.get_widget("checkbutton_auto_hide") self.__checkbutton_auto_hide.set_active( - self.__bus.config_get_value("panel", "auto_hide", False)) + self.__config.get_value("panel", "auto_hide", False)) self.__checkbutton_auto_hide.connect("toggled", self.__checkbutton_auto_hide_toggled_cb) # custom font self.__checkbutton_custom_font = self.__xml.get_widget("checkbutton_custom_font") self.__checkbutton_custom_font.set_active( - self.__bus.config_get_value("panel", "use_custom_font", False)) + self.__config.get_value("panel", "use_custom_font", False)) self.__checkbutton_custom_font.connect("toggled", self.__checkbutton_custom_font_toggled_cb) self.__fontbutton_custom_font = self.__xml.get_widget("fontbutton_custom_font") - if self.__bus.config_get_value("panel", "use_custom_font", False): + if self.__config.get_value("panel", "use_custom_font", False): self.__fontbutton_custom_font.set_sensitive(True) else: self.__fontbutton_custom_font.set_sensitive(False) font_name = gtk.settings_get_default().get_property("gtk-font-name") font_name = unicode(font_name, "utf-8") - font_name = self.__bus.config_get_value("panel", "custom_font", font_name) + font_name = self.__config.get_value("panel", "custom_font", font_name) self.__fontbutton_custom_font.connect("notify::font-name", self.__fontbutton_custom_font_notify_cb) self.__fontbutton_custom_font.set_font_name(font_name) - self.__init_engine_view() + # init engine page + self.__engines = self.__bus.list_engines() + self.__combobox = EngineComboBox(self.__engines) + self.__combobox.show() + self.__xml.get_widget("alignment_engine_combobox").add(self.__combobox) + + tmp_dict = {} + for e in self.__engines: + tmp_dict[e.name] = e + engine_names = self.__config.get_value("general", "preload_engines", []) + engines = [] + for n in engine_names: + if n in tmp_dict: + engines.append(tmp_dict[n]) + self.__treeview = EngineTreeView(engines) + self.__treeview.show() + self.__xml.get_widget("scrolledwindow_engine_treeview").add(self.__treeview) + + self.__treeview.connect("changed", self.__treeview_changed_cb) + + button = self.__xml.get_widget("button_engine_add") + button.connect("clicked", + lambda *args:self.__treeview.prepend_engine(self.__combobox.get_active_engine())) + button = self.__xml.get_widget("button_engine_remove") + button.connect("clicked", lambda *args:self.__treeview.remove_engine()) + button = self.__xml.get_widget("button_engine_up") + button.connect("clicked", lambda *args:self.__treeview.move_up_engine()) + + button = self.__xml.get_widget("button_engine_down") + button.connect("clicked", lambda *args:self.__treeview.move_down_engine()) + + def __treeview_changed_cb(self, treeview): + engines = self.__treeview.get_engines() + engine_names = map(lambda e: e.name, engines) + self.__config.set_list("general", "preload_engines", engine_names, "s") def __init_bus(self): try: self.__bus = ibus.Bus() # self.__bus.connect("config-value-changed", self.__config_value_changed_cb) - self.__bus.connect("config-reloaded", self.__config_reloaded_cb) - self.__bus.config_add_watch("/general") - self.__bus.config_add_watch("/panel") + # self.__bus.connect("config-reloaded", self.__config_reloaded_cb) + # self.__bus.config_add_watch("/general") + # self.__bus.config_add_watch("/general/hotkey") + # self.__bus.config_add_watch("/panel") except: while self.__bus == None: message = _("IBus daemon is not started. Do you want to start it now?") @@ -190,60 +222,6 @@ class Setup(object): dlg.destroy() self.__flush_gtk_events() - def __init_engine_view(self): - # engines tree - self.__tree = self.__xml.get_widget("treeview_engines") - self.__preload_engines = set(self.__bus.config_get_value("general", "preload_engines", [])) - model = self.__create_model() - self.__tree.set_model(model) - - # column for engine - column = gtk.TreeViewColumn() - column.set_title(_("Engine")) - column.set_resizable(True) - column.set_min_width(120) - - renderer = gtk.CellRendererPixbuf() - renderer.set_property("xalign", 0.5) - - column.pack_start(renderer, False) - column.set_attributes(renderer, pixbuf = COLUMN_ICON, visible = COLUMN_VISIBLE) - - renderer = gtk.CellRendererText() - renderer.set_property("xalign", 0.0) - renderer.set_property("ellipsize", pango.ELLIPSIZE_END) - - # column.set_clickable(True) - column.pack_start(renderer) - column.set_attributes(renderer, text = COLUMN_NAME) - - self.__tree.append_column(column) - - # column for started - renderer = gtk.CellRendererToggle() - renderer.set_data('column', COLUMN_ENABLE) - renderer.set_property("xalign", 0.5) - renderer.connect("toggled", self.__item_started_column_toggled_cb, model) - - #col_offset = gtk.TreeViewColumn("Holiday", renderer, text=HOLIDAY_NAME) - column = gtk.TreeViewColumn(_("Started"), renderer, active = COLUMN_ENABLE, visible = COLUMN_VISIBLE) - column.set_resizable(True) - self.__tree.append_column(column) - - # column for preload - renderer = gtk.CellRendererToggle() - renderer.set_data('column', COLUMN_PRELOAD) - renderer.set_property("xalign", 0.5) - renderer.connect("toggled", self.__item_preload_column_toggled_cb, model) - - column = gtk.TreeViewColumn(_("Preload"), renderer, active = COLUMN_PRELOAD, visible = COLUMN_VISIBLE) - column.set_resizable(True) - self.__tree.append_column(column) - - renderer = gtk.CellRendererText() - column = gtk.TreeViewColumn("", renderer) - self.__tree.append_column(column) - def __shortcut_button_clicked_cb(self, button, name, section, _name, entry): buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK) title = _("Select keyboard shortcut for %s") % _(name) @@ -259,7 +237,7 @@ class Setup(object): dialog.destroy() if id != gtk.RESPONSE_OK: return - self.__bus.config_set_value(section, _name, shortcuts) + self.__config.set_value(section, _name, shortcuts) entry.set_text("; ".join(shortcuts)) @@ -309,94 +287,15 @@ class Setup(object): if data[DATA_PRELOAD]: if engine not in self.__preload_engines: self.__preload_engines.add(engine) - self.__bus.config_set_list("general", "preload_engines", list(self.__preload_engines), "s") + self.__config.set_list("general", "preload_engines", list(self.__preload_engines), "s") else: if engine in self.__preload_engines: self.__preload_engines.remove(engine) - self.__bus.config_set_list("general", "preload_engines", list(self.__preload_engines), "s") + self.__config.set_list("general", "preload_engines", list(self.__preload_engines), "s") # set new value model.set(iter, COLUMN_PRELOAD, data[DATA_PRELOAD]) - def __load_icon(self, icon, icon_size): - pixbuf = None - try: - pixbuf = gdk.pixbuf_new_from_file(icon) - w, h = pixbuf.get_width(), pixbuf.get_height() - rate = max(w, h) / float(icon_size) - w = int(w / rate) - h = int(h / rate) - pixbuf = pixbuf.scale_simple(w, h, gdk.INTERP_BILINEAR) - except: - pass - if pixbuf == None: - try: - theme = gtk.icon_theme_get_default() - pixbuf = theme.load_icon(icon, icon_size, 0) - except: - pass - return pixbuf - - def __create_model(self): - # create tree store - model = gtk.TreeStore( - gobject.TYPE_STRING, - gobject.TYPE_BOOLEAN, - gobject.TYPE_BOOLEAN, - gobject.TYPE_BOOLEAN, - gdk.Pixbuf, - gobject.TYPE_PYOBJECT) - - langs = dict() - - self.__bus.register_reload_engines() - for name, local_name, lang, icon, author, credits, _exec, started in self.__bus.register_list_engines(): - _lang = ibus.get_language_name(lang) - if _lang not in langs: - langs[_lang] = list() - langs[_lang].append([name, local_name, lang, icon, author, credits, _exec, started]) - - keys = langs.keys() - keys.sort() - if _("Other") in keys: - keys.remove(_("Other")) - keys.append(_("Other")) - - icon_size = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR)[0] - pixbuf_missing = self.__load_icon("engine-default", icon_size) - if pixbuf_missing == None: - pixbuf_missing = self.__load_icon("gtk-missing-image", icon_size) - - for key in keys: - iter = model.append(None) - model.set(iter, - COLUMN_NAME, key, - COLUMN_ENABLE, False, - COLUMN_PRELOAD, False, - COLUMN_VISIBLE, False, - COLUMN_ICON, None, - COLUMN_DATA, None) - langs[key].sort() - - for name, local_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 - - pixbuf = self.__load_icon(icon, icon_size) - if pixbuf == None: - pixbuf = pixbuf_missing - - model.set(child_iter, - COLUMN_NAME, local_name, - COLUMN_ENABLE, started, - COLUMN_PRELOAD, is_preload, - COLUMN_VISIBLE, True, - COLUMN_ICON, pixbuf, - COLUMN_DATA, - [name, local_name, lang, icon, author, credits, _exec, started, is_preload]) - - return model - def __is_auto_start(self): link_file = path.join(BaseDirectory.xdg_config_home, "autostart/ibus.desktop") ibus_desktop = path.join(os.getenv("IBUS_PREFIX"), "share/applications/ibus.desktop") @@ -425,27 +324,27 @@ class Setup(object): os.symlink(ibus_desktop, link_file) def __combobox_lookup_table_orientation_changed_cb(self, combobox): - self.__bus.config_set_value( + self.__config.set_value( "panel", "lookup_table_orientation", self.__combobox_lookup_table_orientation.get_active()) def __checkbutton_auto_hide_toggled_cb(self, button): - self.__bus.config_set_value( + self.__config.set_value( "panel", "auto_hide", self.__checkbutton_auto_hide.get_active()) def __checkbutton_custom_font_toggled_cb(self, button): if self.__checkbutton_custom_font.get_active(): self.__fontbutton_custom_font.set_sensitive(True) - self.__bus.config_set_value("panel", "use_custom_font", True) + self.__config.set_value("panel", "use_custom_font", True) else: self.__fontbutton_custom_font.set_sensitive(False) - self.__bus.config_set_value("panel", "use_custom_font", False) + self.__config.set_value("panel", "use_custom_font", False) def __fontbutton_custom_font_notify_cb(self, button, arg): font_name = self.__fontbutton_custom_font.get_font_name() font_name = unicode(font_name, "utf-8") - self.__bus.config_set_value("panel", "custom_font", font_name) + self.__config.set_value("panel", "custom_font", font_name) def __config_value_changed_cb(self, bus, section, name, value): pass diff --git a/setup/setup.glade b/setup/setup.glade index 72854d9..c8e63ed 100644 --- a/setup/setup.glade +++ b/setup/setup.glade @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> -<!--Generated with glade3 3.4.5 on Thu Oct 9 11:25:43 2008 --> +<!--Generated with glade3 3.4.5 on Wed Feb 4 15:58:20 2009 --> <glade-interface> <widget class="GtkDialog" id="dialog_setup"> <property name="border_width">5</property> @@ -340,20 +340,112 @@ Vertical</property> <property name="left_padding">2</property> <property name="right_padding">2</property> <child> - <widget class="GtkScrolledWindow" id="scrolledwindow1"> - <property name="width_request">300</property> - <property name="height_request">350</property> + <widget class="GtkHBox" id="hbox1"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> <child> - <widget class="GtkTreeView" id="treeview_engines"> + <widget class="GtkAlignment" id="alignment6"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="reorderable">True</property> + <property name="top_padding">4</property> + <child> + <widget class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkAlignment" id="alignment_engine_combobox"> + <property name="visible">True</property> + <child> + <placeholder/> + </child> + </widget> + </child> + <child> + <widget class="GtkScrolledWindow" id="scrolledwindow_engine_treeview"> + <property name="width_request">240</property> + <property name="height_request">350</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <child> + <placeholder/> + </child> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + <child> + <widget class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="top_padding">8</property> + <property name="bottom_padding">8</property> + <property name="left_padding">8</property> + <property name="right_padding">8</property> + <child> + <widget class="GtkVButtonBox" id="vbuttonbox1"> + <property name="visible">True</property> + <property name="spacing">5</property> + <property name="layout_style">GTK_BUTTONBOX_START</property> + <child> + <widget class="GtkButton" id="button_engine_add"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-add</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + </child> + <child> + <widget class="GtkButton" id="button_engine_remove"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-remove</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="button_engine_up"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-go-up</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="button_engine_down"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="label" translatable="yes">gtk-go-down</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="position">3</property> + </packing> + </child> + </widget> + </child> </widget> + <packing> + <property name="position">1</property> + </packing> </child> </widget> </child> |