import gtk import cairo import gobject class StarScale(gtk.Widget): def __init__(self, stars=0.0): gtk.Widget.__init__(self) self.stars = stars self.star_size = 16 self.star_space = 5 self.star_surface = cairo.ImageSurface.create_from_png("/home/patrick/Projects/Fusion/config/simple-ccsm/images/star.png") self.set_flags(self.flags() | gtk.NO_WINDOW) def set_value(self, stars): self.stars = stars self.queue_resize() def get_value(self): return self.stars def do_size_request(self, req): req.height = self.star_size req.width = (self.star_size+self.star_space)*self.stars def do_expose_event(self, event): cr = self.window.cairo_create() x = self.allocation.x y = self.allocation.y i = self.stars while i > 0: size = 1.0 if i < 1: size = i cr.set_source_surface(self.star_surface, x, 0) cr.rectangle(x, y, self.star_size*size, self.star_size) cr.fill() x += self.star_size + self.star_space i -= 1 gobject.type_register(StarScale) win = gtk.Window() notebook = gtk.Notebook() frame = gtk.VBox() star1 = StarScale() star1.set_value(5) star2 = StarScale() star2.set_value(5) notebook.append_page(star2, gtk.Label("Test")) frame.pack_start(star1) frame.pack_start(notebook) win.add(frame) win.show_all() gtk.main()