diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2008-05-29 21:21:03 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-05-29 21:21:03 +0800 |
commit | aec48ebe3b0431fe39e3f59dc92b8e66eaddb318 (patch) | |
tree | 94839234769ab2b7c9b0e069b3cf3705e84a3ae5 | |
parent | 0c249dc5ccad40182e2bc6fa54cc9101a3ee4c30 (diff) | |
download | ibus-aec48ebe3b0431fe39e3f59dc92b8e66eaddb318.tar.gz ibus-aec48ebe3b0431fe39e3f59dc92b8e66eaddb318.tar.xz ibus-aec48ebe3b0431fe39e3f59dc92b8e66eaddb318.zip |
Add languagebar.py
-rw-r--r-- | panel/languagebar.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/panel/languagebar.py b/panel/languagebar.py new file mode 100644 index 0000000..a226f52 --- /dev/null +++ b/panel/languagebar.py @@ -0,0 +1,70 @@ +import gtk +import gtk.gdk as gdk +import gobject +from image import Image +from handle import Handle + +class LanguageBar (gtk.Toolbar): + def __init__ (self): + gtk.Toolbar.__init__ (self) + self.set_property ("icon-size", gtk.ICON_SIZE_MENU) + # self.set_orientation (gtk.ORIENTATION_VERTICAL) + self._create_items () + + def insert (self, toolitem, pos): + gtk.Toolbar.insert (self, toolitem, pos) + self.check_resize () + + def _add_items (self): + btn = gtk.ToolButton (gtk.STOCK_NEW) + btn.connect ("clicked", lambda x: self._add_items ()) + self.insert (btn, -1) + self.insert (gtk.ToolButton (gtk.STOCK_APPLY), -1) + self.insert (gtk.SeparatorToolItem (), -1) + self.show_all () + + def _create_items (self): + handle = Handle () + item = gtk.ToolItem () + item.add (handle) + self.insert (item, -1) + + self._add_items () + + def do_realize (self): + gtk.Toolbar.do_realize (self) + self.check_resize () + + def do_check_resize (self): + width = 0 + for item in self: + w, h = item.size_request () + width += w + self.set_size_request (width + 2, -1) + +gobject.type_register (LanguageBar, "IBusLanguageBar") + +class LanguageBarWindow (gtk.Window): + def __init__ (self): + gtk.Window.__init__ (self, gtk.WINDOW_POPUP) + self._language_bar = LanguageBar () + self._language_bar.connect ("size-request", self._size_request_cb) + self.add (self._language_bar) + self.show_all () + + def _size_request_cb (self, widget, size): + self.resize (size.width, size.height) + + def do_size_allocate (self, allocation): + gtk.Window.do_size_allocate (self, allocation) + root = gdk.get_default_root_window () + workarea = root.property_get ("_NET_WORKAREA")[2] + x, y = workarea[2] - allocation.width - 40, workarea[1] + workarea[3] - allocation.height + self.move (x, y) + + def do_destroy (self): + gtk.main_quit () + gtk.Window.do_destroy (self) + +gobject.type_register (LanguageBarWindow, "IBusLanguageBarWindow") + |