Remove debug comment
[mussorgsky] / src / fancy_button.py
1 import gtk
2 import gobject
3
4 BUTTON_HILIGHT_FILE_NAME = "/etc/hildon/theme/mediaplayer/Button.png"
5
6 fancy_button_highlight_pb = None
7
8 class FancyButton (gtk.EventBox):
9
10     __gsignals__ = {
11         'clicked': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ())
12     }
13
14     def __init__ (self, image, text):
15         gtk.EventBox.__init__ (self)
16
17         self.pressed = False
18
19         vbox = gtk.VBox ()
20         self.image = image
21         self.label = gtk.Label (text)
22
23         align = gtk.Alignment (xalign=0.5, yalign=0.5)
24         align.add (self.image)
25
26         vbox.pack_start (align, expand=False, fill=False)
27         vbox.pack_start (self.label, expand=False, fill=False)
28
29         self.add (vbox)
30         self.set_visible_window (False)
31         self.set_above_child (True)
32
33         self.connect ("button-press-event", self.custom_button_press_event)
34         self.connect ("button-release-event", self.custom_button_release_event)
35         self.connect ("enter-notify-event", self.custom_enter_notify_event)
36         self.connect ("leave-notify-event", self.custom_leave_notify_event)
37         self.image.connect ("expose-event", self.image_expose_event)
38         
39         
40     def custom_button_press_event (self, p, q):
41         self.image.set_state (gtk.STATE_ACTIVE)
42         self.pressed = True
43         print "OK"
44
45     def custom_button_release_event (self, p, q):
46
47         if (self.pressed and self.image.state  == gtk.STATE_ACTIVE):
48             self.emit ("clicked")
49
50         self.image.set_state (gtk.STATE_NORMAL)
51         self.pressed = False
52
53     def custom_enter_notify_event (self, p, q):
54         if (self.pressed):
55             self.image.set_state (gtk.STATE_ACTIVE)
56
57     def custom_leave_notify_event (self, p, q):
58         self.image.set_state (gtk.STATE_NORMAL)
59
60     def image_expose_event (self, widget, event):
61         global fancy_button_highlight_pb
62         
63         if (widget.state == gtk.STATE_ACTIVE):
64             if (fancy_button_highlight_pb):
65                 widget.window.draw_pixbuf (None,
66                                            fancy_button_highlight_pb,
67                                            0, 0,
68                                            widget.allocation.x,
69                                            widget.allocation.y)
70             else:
71                 gtk.Style.paint_flat_box (widget.style,
72                                           event.window,
73                                           gtk.STATE_ACTIVE,
74                                           gtk.SHADOW_NONE,
75                                           event.area,
76                                           widget,
77                                           "eventbox",
78                                           event.area.x,
79                                           event.area.y,
80                                           event.area.width,
81                                           event.area.height)
82
83
84 def settings_changed (obj, spec):
85     global fancy_button_highlight_pb
86     try:
87         fancy_button_highlight_pb = gtk.gdk.pixbuf_new_from_file (BUTTON_HILIGHT_FILE_NAME)
88     except Exception, e:
89         print str(e)
90         fancy_button_highlight_pb = None
91
92 if __name__ == "__main__":
93
94     w = gtk.Window ()
95
96     settings = gtk.settings_get_default ()
97     settings.connect ("notify", settings_changed)
98     settings_changed (None, None)
99
100
101     frame = gtk.Frame ()
102     frame.add (FancyButton ())
103
104     align = gtk.Alignment (xalign=0.5, yalign=0.5)
105     align.add (frame)
106     
107     
108     w.add (align)
109     w.show_all ()
110     w.connect ("delete-event", gtk.main_quit)
111     gtk.main ()
112
113