From a5b7dc3a3664a278e700449d352554654e57905e Mon Sep 17 00:00:00 2001 From: erich koslovsky Date: Sat, 18 Aug 2007 22:02:09 +0000 Subject: Added the displaying of the creator of a link with an xo icon overlaight over the screenshot. Added the displaying of information of the link. --- (limited to 'linkbutton.py') diff --git a/linkbutton.py b/linkbutton.py index c363eaf..4e9bd68 100644 --- a/linkbutton.py +++ b/linkbutton.py @@ -16,18 +16,23 @@ # Boston, MA 02111-1307, USA. import gtk +import os + +import rsvg +import re from sugar.graphics.palette import Palette, WidgetInvoker from sugar.graphics import style + class LinkButton(gtk.RadioToolButton): - def __init__(self, buffer, pos, group=None): + def __init__(self, buffer, color, pos, group=None): gtk.RadioToolButton.__init__(self, group=group) - self._palette = None - self.set_image(buffer) + self._palette = None + self.set_image(buffer, color.split(',')[1], color.split(',')[0]) self.pos = pos - def set_image(self, buffer): + def set_image(self, buffer, fill='#0000ff', stroke='#4d4c4f'): img = gtk.Image() loader = gtk.gdk.PixbufLoader() loader.write(buffer) @@ -35,10 +40,47 @@ class LinkButton(gtk.RadioToolButton): pixbuf = loader.get_pixbuf() del loader + xo_buddy = os.path.join(os.path.dirname(__file__), "stock-buddy-link.svg") + pixbuf_xo = self._read_xo_icon(xo_buddy, fill, stroke) + + width = pixbuf_xo.get_width() + height = pixbuf_xo.get_height() + + print pixbuf.get_width() + print pixbuf.get_height() + + print pixbuf_xo.get_width() + print pixbuf_xo.get_height() + + dest_x = 100 + dest_y = 66 + w = width/2 + h = height/2 + scale_x = 0.5 + scale_y = 0.5 + + pixbuf_xo.composite(pixbuf, dest_x, dest_y, w, h, dest_x, dest_y, scale_x, scale_y, gtk.gdk.INTERP_BILINEAR, 255) + img.set_from_pixbuf(pixbuf) self.set_icon_widget(img) img.show() + def _read_xo_icon(self, filename, fill_color, stroke_color): + icon_file = open(filename, 'r') + data = icon_file.read() + icon_file.close() + + if fill_color: + entity = '' % fill_color + data = re.sub('', entity, data) + + if stroke_color: + entity = '' % stroke_color + data = re.sub('', entity, data) + + data_size = len(data) + return rsvg.Handle(data=data).get_pixbuf() + def get_palette(self): return self._palette -- cgit v0.9.1