Refactor on_expose method of SuperButton, extract draw_button.
Refactor on_expose method of SuperButton, extract draw_button.
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: