diff options
author | amartin <olpc@xo-05-28-21.localdomain> | 2007-08-16 07:16:18 (GMT) |
---|---|---|
committer | amartin <olpc@xo-05-28-21.localdomain> | 2007-08-16 07:16:18 (GMT) |
commit | a14f0e195641ed7400e7fc4a8db7e2e97db23264 (patch) | |
tree | e03600eba7a3d69d5221ed9475f4b5166d947b3f /Util | |
parent | 7c62293620b5431e30343ffac9cd4183dab74062 (diff) |
edit layout and dual instruments
Diffstat (limited to 'Util')
-rw-r--r-- | Util/ThemeWidgets.py | 120 |
1 files changed, 111 insertions, 9 deletions
diff --git a/Util/ThemeWidgets.py b/Util/ThemeWidgets.py index 1771edc..d7161ba 100644 --- a/Util/ThemeWidgets.py +++ b/Util/ThemeWidgets.py @@ -735,6 +735,8 @@ class ImageButton(gtk.Button): self.iheight = {} self.iheightDIV2 = {} + self.backgroundFill = backgroundFill + def prepareImage( name, path ): pix = gtk.gdk.pixbuf_new_from_file(path) if pix.get_has_alpha(): @@ -797,10 +799,42 @@ class ImageButton(gtk.Button): self.window.draw_drawable( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage] ) return True - def load_pixmap(self, name, pixmap): + def setImage(self, name, pix): if name == "main" and self.image["main"] == self.image["enter"]: - self.image["enter"] = pixmap - self.image[name] = pixmap + updateEnter = True + else: + updateEnter = False + + if pix.get_has_alpha(): + if self.backgroundFill == None: + self.image[name] = pix + self.itype[name] = ITYPE.PIXBUF + else: + self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() ) + colormap = self.get_colormap() + self.gc.foreground = colormap.alloc_color( self.backgroundFill, True, True ) + self.image[name].draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() ) + self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE ) + self.itype[name] = ITYPE.PIXMAP + else: + self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() ) + self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE ) + self.itype[name] = ITYPE.PIXMAP + self.iwidth[name] = pix.get_width() + self.iwidthDIV2[name] = self.iwidth[name]//2 + self.iheight[name] = pix.get_height() + self.iheightDIV2[name] = self.iheight[name]//2 + + if updateEnter: + self.image["enter"] = self.image["main"] + self.itype["enter"] = self.itype["main"] + self.iwidth["enter"] = self.iwidth["main"] + self.iwidthDIV2["enter"] = self.iwidthDIV2["main"] + self.iheight["enter"] = self.iheight["main"] + self.iheightDIV2["enter"] = self.iheightDIV2["main"] + self.connect('enter-notify-event',self.on_btn_enter) + self.connect('leave-notify-event',self.on_btn_leave) + self.queue_draw() def on_btn_press(self, widget, event): @@ -841,6 +875,8 @@ class ImageToggleButton(gtk.ToggleButton): self.iwidthDIV2 = {} self.iheight = {} self.iheightDIV2 = {} + + self.backgroundFill = backgroundFill def prepareImage( name, path ): pix = gtk.gdk.pixbuf_new_from_file(path) @@ -902,10 +938,42 @@ class ImageToggleButton(gtk.ToggleButton): self.window.draw_drawable( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage] ) return True - def load_pixmap(self, name, pixmap): + def setImage(self, name, pix): if name == "main" and self.image["main"] == self.image["enter"]: - self.image["enter"] = pixmap - self.image[name] = pixmap + updateEnter = True + else: + updateEnter = False + + if pix.get_has_alpha(): + if self.backgroundFill == None: + self.image[name] = pix + self.itype[name] = ITYPE.PIXBUF + else: + self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() ) + colormap = self.get_colormap() + self.gc.foreground = colormap.alloc_color( self.backgroundFill, True, True ) + self.image[name].draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() ) + self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE ) + self.itype[name] = ITYPE.PIXMAP + else: + self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() ) + self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE ) + self.itype[name] = ITYPE.PIXMAP + self.iwidth[name] = pix.get_width() + self.iwidthDIV2[name] = self.iwidth[name]//2 + self.iheight[name] = pix.get_height() + self.iheightDIV2[name] = self.iheight[name]//2 + + if updateEnter: + self.image["enter"] = self.image["main"] + self.itype["enter"] = self.itype["main"] + self.iwidth["enter"] = self.iwidth["main"] + self.iwidthDIV2["enter"] = self.iwidthDIV2["main"] + self.iheight["enter"] = self.iheight["main"] + self.iheightDIV2["enter"] = self.iheightDIV2["main"] + self.connect('enter-notify-event',self.on_btn_enter) + self.connect('leave-notify-event',self.on_btn_leave) + self.queue_draw() def toggleImage(self, widget): @@ -962,6 +1030,8 @@ class ImageRadioButton(gtk.RadioButton): self.iheight = {} self.iheightDIV2 = {} + self.backgroundFill = backgroundFill + def prepareImage( name, path ): pix = gtk.gdk.pixbuf_new_from_file(path) if pix.get_has_alpha(): @@ -1022,10 +1092,42 @@ class ImageRadioButton(gtk.RadioButton): self.window.draw_drawable( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage] ) return True - def load_pixmap(self, name, pixmap): + def setImage(self, name, pix): if name == "main" and self.image["main"] == self.image["enter"]: - self.image["enter"] = pixmap - self.image[name] = pixmap + updateEnter = True + else: + updateEnter = False + + if pix.get_has_alpha(): + if self.backgroundFill == None: + self.image[name] = pix + self.itype[name] = ITYPE.PIXBUF + else: + self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() ) + colormap = self.get_colormap() + self.gc.foreground = colormap.alloc_color( self.backgroundFill, True, True ) + self.image[name].draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() ) + self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE ) + self.itype[name] = ITYPE.PIXMAP + else: + self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() ) + self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE ) + self.itype[name] = ITYPE.PIXMAP + self.iwidth[name] = pix.get_width() + self.iwidthDIV2[name] = self.iwidth[name]//2 + self.iheight[name] = pix.get_height() + self.iheightDIV2[name] = self.iheight[name]//2 + + if updateEnter: + self.image["enter"] = self.image["main"] + self.itype["enter"] = self.itype["main"] + self.iwidth["enter"] = self.iwidth["main"] + self.iwidthDIV2["enter"] = self.iwidthDIV2["main"] + self.iheight["enter"] = self.iheight["main"] + self.iheightDIV2["enter"] = self.iheightDIV2["main"] + self.connect('enter-notify-event',self.on_btn_enter) + self.connect('leave-notify-event',self.on_btn_leave) + self.queue_draw() def toggleImage( self, widget ): |