1 from Widget import Widget
2 from Pixmap import Pixmap, TEMPORARY_PIXMAP
3 from utils import logging
6 class ImageButton(Widget):
8 def __init__(self, img1, img2, manual = False):
18 #self.set_size(img1.get_width(), img1.get_height())
22 self.connect_button_pressed(self.__on_click, True)
23 self.connect_button_released(self.__on_click, False)
29 self.set_images(self.__img1, self.__img2)
32 def set_size(self, w, h):
34 Widget.set_size(self, w ,h)
35 self.__bg = Pixmap(None, w, h)
36 self.__buffer = TEMPORARY_PIXMAP #Pixmap(None, w, h)
39 def render_this(self):
41 if (not self.may_render()): return
43 x, y = self.get_screen_pos()
44 w, h = self.get_size()
45 screen = self.get_screen()
49 # self.__bg = Pixmap(None, w, h)
50 self.__bg.copy_buffer(screen, x, y, 0, 0, w, h)
52 self.__render_button()
55 def __on_click(self, px, py, clicked):
59 #self.__render_button(1)
62 #self.__render_button(0)
63 self.__render_button()
67 def _render_content(self, cnv):
73 def __render_button(self):
76 if (not self.may_render()): return
78 x, y = self.get_screen_pos()
79 w, h = self.get_size()
80 screen = self.get_screen()
82 if (self.__state == 0):
87 self.__buffer.copy_pixmap(self.__bg, 0, 0, 0, 0, w, h)
88 #self.__buffer.draw_pixbuf(img,
89 # (w - img.get_width()) / 2,
90 # (h - img.get_height()) / 2)
91 logging.debug("size of button image: %d x %d",
92 img.get_width(), img.get_height())
93 if ((w, h) != (img.get_width(), img.get_height())):
94 self.__buffer.draw_frame(img, 0, 0, w, h, True)
96 self.__buffer.draw_pixbuf(img, 0, 0)
98 self._render_content(self.__buffer)
100 screen.copy_pixmap(self.__buffer, 0, 0, x, y, w, h)
104 def set_images(self, img1, img2):
109 #self.set_size(img1.get_width(), img1.get_height())
110 #self.__render_button(self.__state)
111 self.__render_button()
114 def set_active(self, active):
118 #self.__render_button(1)
121 #self.__render_button(0)
122 self.__render_button()