def on_paint(self, ev): painter = Painter(self) painter.draw_bitmap(0, 0, self.im) for i, icon in enumerate(self.icons): x = ICON_MARGIN y = ICON_MARGIN + i * (ICON_SIZE + ICON_MARGIN) if i == self.cur_icon: rc = Rect(x, y, ICON_SIZE, ICON_SIZE) dx = ICON_SIZE / 10 rc.adjust(-dx, -dx, dx, dx) painter.fill_rect(rc, SteelBlue) painter.draw_bitmap(x, y, icon)
def on_system_paint(self, ev): bitmap = self.bitmap painter = Painter(self.bitmap) border = self.border_width() width = self.window_width() height = self.window_height() caption_color = SteelBlue if self.active() else LightSteelBlue border_color = 0xaaffffff & caption_color if self.attr() & WND_TRANSPARENT: painter.clear() else: painter.fill_rect(self.margin_left(), self.margin_top(), self.width(), self.height(), White) if self.attr() & WND_FRAME: rc = Rect(0, 0, self.window_width() - 1, self.window_height() - 1) max_alpha = 40 if self.active() else 20 dalpha = max_alpha / DEFAULT_BORDER_WIDTH for i in xrange(DEFAULT_BORDER_WIDTH - 1): painter.set_pen_color(i * dalpha << 24) painter.draw_rect(rc) rc.adjust(1, 1, -1, -1) painter.set_pen_color(caption_color) painter.draw_rect(rc) if self.attr() & WND_CAPTION: # fill caption caption_color &= 0xddffffff caption_rc = Rect(border, border, width - 2 * border, self.caption_height()) painter.fill_rect(rc, caption_color) # draw title painter.set_pen_color(White) rc = caption_rc.translated(10, 0) painter.draw_text(rc, Painter.AlignLeft | Painter.AlignVCenter, self.title_) # draw close/maximize/minimize painter.save() painter.set_pen_color(DarkWhite) painter.set_render_hint(Painter.Antialiasing) # close painter.set_pen_width(2) rc = Rect(self.close_rect()) painter.draw_line(rc.top_left(), rc.bottom_right()) painter.draw_line(rc.top_right(), rc.bottom_left()) # maximize painter.draw_rect(Rect(self.maximize_rect())) # minimize rc = Rect(self.minimize_rect()) painter.draw_line(rc.bottom_left(), rc.bottom_right()) painter.restore()