Refactor on_expose method of SuperButton, extract draw_button.

portnov [2008-08-23 11:41:18]
Refactor on_expose method of SuperButton, extract draw_button.
Filename
qwerty.py
diff --git a/qwerty.py b/qwerty.py
index d864485..cb91c3d 100755
--- a/qwerty.py
+++ b/qwerty.py
@@ -65,6 +65,31 @@ class SuperButton(gtk.DrawingArea):

         self.fg = BUTTON_BORDER

+    def draw_icon(self,cr):
+        pb = gdk.pixbuf_new_from_file(self.icon)
+
+        w = pb.get_width()
+        h = pb.get_height()
+
+        IS = cairo.ImageSurface(cairo.FORMAT_ARGB32, w,h)
+        cr2 = cairo.Context(IS)
+        cr2 = gdk.CairoContext(cr2)
+        cr2.set_source_pixbuf(pb,0,0)
+        cr2.paint()
+
+        x = (self.width - w)/2
+        y = 45
+
+        cr.set_source_surface(IS,x,y)
+        cr.paint()
+
+    def draw_button(self,cr):
+        cr.rectangle(4,4,self.width-8,self.height-8)
+        cr.fill()
+        cr.set_source_rgb(*self.fg)
+        cr.rectangle(4,4,self.width-8,self.height-8)
+        cr.stroke()
+
     def on_expose(self,widget,event):
         x,y,self.width,self.height,b = widget.window.get_geometry()
         cr = widget.window.cairo_create()
@@ -73,11 +98,7 @@ class SuperButton(gtk.DrawingArea):
             cr.set_source_rgb(*BUTTON_FILL_RUNNING)
         else:
             cr.set_source_rgb(*BUTTON_FILL)
-        cr.rectangle(4,4,self.width-8,self.height-8)
-        cr.fill()
-        cr.set_source_rgb(*self.fg)
-        cr.rectangle(4,4,self.width-8,self.height-8)
-        cr.stroke()
+        self.draw_button(cr)

         if self.active:
             cr.set_source_rgb(*BUTTON_BORDER_ACTIVE)
@@ -94,22 +115,7 @@ class SuperButton(gtk.DrawingArea):
         cr.show_text(self.label)

         if self.icon:
-            pb = gdk.pixbuf_new_from_file(self.icon)
-
-            w = pb.get_width()
-            h = pb.get_height()
-
-            IS = cairo.ImageSurface(cairo.FORMAT_ARGB32, w,h)
-            cr2 = cairo.Context(IS)
-            cr2 = gdk.CairoContext(cr2)
-            cr2.set_source_pixbuf(pb,0,0)
-            cr2.paint()
-
-            x = (self.width - w)/2
-            y = 45
-
-            cr.set_source_surface(IS,x,y)
-            cr.paint()
+            self.draw_icon(cr)

     def on_mouse_over(self,widget,event):
         if self.active:
ViewGit