Show 'Select an input method' in Engine select ComboBox.
authorHuang Peng <shawn.p.huang@gmail.com>
Tue, 17 Feb 2009 04:55:12 +0000 (12:55 +0800)
committerHuang Peng <shawn.p.huang@gmail.com>
Tue, 17 Feb 2009 04:55:12 +0000 (12:55 +0800)
setup/enginecombobox.py

index 7c65c5e..6db543a 100644 (file)
 import gtk
 import gobject
 import ibus
-
+import gettext
 from icon import load_icon
 
+_  = lambda a : gettext.dgettext("ibus", a)
+
 class EngineComboBox(gtk.ComboBox):
     def __init__(self, engines):
         super(EngineComboBox, self).__init__()
 
         self.__model = gtk.TreeStore(gobject.TYPE_PYOBJECT)
 
+        iter1 = self.__model.append(None)
+        self.__model.set(iter1, 0, 0)
         lang = {}
         for e in engines:
             l = ibus.get_language_name(e.language)
@@ -57,11 +61,16 @@ class EngineComboBox(gtk.ComboBox):
         self.pack_start(renderer, True)
         self.set_cell_data_func(renderer, self.__name_cell_data_cb)
 
+        self.set_active(0)
+
     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):
+        if isinstance(engine, str) or isinstance (engine, unicode):
+            renderer.set_property("visible", False)
+            renderer.set_property("sensitive", False)
+        elif isinstance(engine, int):
             renderer.set_property("visible", False)
             renderer.set_property("sensitive", False)
         else:
@@ -80,13 +89,17 @@ class EngineComboBox(gtk.ComboBox):
         if isinstance (engine, str) or isinstance (engine, unicode):
             renderer.set_property("sensitive", False)
             renderer.set_property("text", engine)
+        elif isinstance(engine, int):
+            renderer.set_property("sensitive", True)
+            renderer.set_property("text", _("Select an input method"))
         else:
             renderer.set_property("sensitive", True)
             renderer.set_property("text", engine.longname)
 
     def get_active_engine(self):
+        i = self.get_active()
         iter = self.get_active_iter()
-        if iter == None:
+        if i == 0 or i == -1:
             return None
         return self.get_model()[iter][0]