WIP.
authorHuang Peng <shawn.p.huang@gmail.com>
Tue, 27 May 2008 14:21:30 +0000 (22:21 +0800)
committerHuang Peng <shawn.p.huang@gmail.com>
Tue, 27 May 2008 14:21:30 +0000 (22:21 +0800)
panel/main.py
panel/panel.py

index 3e09688..e20979e 100644 (file)
@@ -25,6 +25,8 @@ class PanelApplication:
 
 
 def main ():
+       # gtk.settings_get_default ().props.gtk_theme_name = "/home/phuang/.themes/aud-Default/gtk-2.0/gtkrc"
+       gtk.rc_parse ("./themes/default/gtkrc")
        PanelApplication ().run ()
 
 if __name__ == "__main__":
index 424e0fb..1c4a67c 100644 (file)
@@ -1,22 +1,80 @@
+# -*- coding: utf-8 -*-
 import gtk
-import ibus
+import gtk.gdk as gdk
+import gobject
 from ibus import interface
+from image import Image
+from handle import Handle
 
-class DefaultPanel:
+class PanelBar (gtk.Toolbar):
        def __init__ (self):
-               pass
+               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 _create_ui (self):
-               pass
+       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)
 
-       def destroy (self):
+               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 (PanelBar, "IBusToolbar")
+
+class PanelWindow (gtk.Window):
+       def __init__ (self):
+               gtk.Window.__init__ (self, gtk.WINDOW_POPUP)
+               self._panel_bar = PanelBar ()
+               self._panel_bar.connect ("size-request", self._size_request_cb)
+               self.add (self._panel_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 (PanelWindow, "IBusPanelWindow")
 
 class PanelProxy (interface.IPanel):
        def __init__ (self, dbusconn, object_path):
                interface.IPanel.__init__ (self, dbusconn, object_path)
                self._dbusconn = dbusconn
-               self._panel = DefaultPanel ()
+               self._panel = PanelWindow ()
 
        def Destroy (self):
                self._panel.destroy ()