diff options
Diffstat (limited to 'TurtleArt/sprites.py')
-rw-r--r-- | TurtleArt/sprites.py | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/TurtleArt/sprites.py b/TurtleArt/sprites.py index 8bd3738..b851be8 100644 --- a/TurtleArt/sprites.py +++ b/TurtleArt/sprites.py @@ -42,7 +42,7 @@ Example usage: return True # Create a new sprite collection for a gtk Drawing Area. - my_drawing_area = gtk.DrawingArea() + my_drawing_area = Gtk.DrawingArea() self.sprite_list = Sprites(my_drawing_area) # Create a "pixbuf" (in this example, from SVG). @@ -70,18 +70,21 @@ Example usage: # method for converting SVG to a gtk pixbuf def svg_str_to_pixbuf(svg_string): - pl = gtk.gdk.PixbufLoader('svg') + pl = GdkPixbuf.PixbufLoader('svg') pl.write(svg_string) pl.close() pixbuf = pl.get_pixbuf() return pixbuf """ -import pygtk -pygtk.require('2.0') -import gtk -import pango +from util.gtkcompat import Gtk, Gdk, GdkPixbuf, Pango, Rectangle +def _is_pixbuf(pb): + if isinstance(pb, GdkPixbuf.Pixbuf): return True + # backwards gtk2 compatibility hack + if hasattr(Gdk, 'Pixbuf'): + if isinstance(pb, Gdk.Pixbuf): return True + return False class Sprites: """ A class for the list of sprites and everything they share in common """ @@ -158,7 +161,7 @@ class Sprite: def __init__(self, sprites, x, y, image): """ Initialize an individual sprite """ self._sprites = sprites - self.rect = gtk.gdk.Rectangle(int(x), int(y), 0, 0) + self.rect = Rectangle(int(x), int(y), 0, 0) self.save_xy = (x, y) # remember initial (x, y) position self._scale = [12] self._rescale = [True] @@ -187,7 +190,7 @@ class Sprite: self.images[i] = image self._dx[i] = dx self._dy[i] = dy - if isinstance(self.images[i], gtk.gdk.Pixbuf): + if _is_pixbuf(self.images[i]): w = self.images[i].get_width() h = self.images[i].get_height() else: @@ -279,7 +282,7 @@ class Sprite: def set_font(self, font): """ Set the font for a label """ - self._fd = pango.FontDescription(font) + self._fd = Pango.FontDescription(font) def set_label_color(self, rgb): """ Set the font color for a label """ @@ -312,7 +315,7 @@ class Sprite: if self._sprites is None: return for i, img in enumerate(self.images): - if isinstance(img, gtk.gdk.Pixbuf): + if _is_pixbuf(img): self._sprites.area.draw_pixbuf(self._sprites.gc, img, 0, 0, self.rect.x + self._dx[i], self.rect.y + self._dy[i]) @@ -347,23 +350,23 @@ class Sprite: my_height = self.rect.height - self._margins[1] - self._margins[3] for i in range(len(self.labels)): pl = self._sprites.canvas.create_pango_layout(str(self.labels[i])) - self._fd.set_size(int(self._scale[i] * pango.SCALE)) + self._fd.set_size(int(self._scale[i] * Pango.SCALE)) pl.set_font_description(self._fd) - w = pl.get_size()[0] / pango.SCALE + w = pl.get_size()[0] / Pango.SCALE if w > my_width: if self._rescale[i]: self._fd.set_size( - int(self._scale[i] * pango.SCALE * my_width / w)) + int(self._scale[i] * Pango.SCALE * my_width / w)) pl.set_font_description(self._fd) - w = pl.get_size()[0] / pango.SCALE + w = pl.get_size()[0] / Pango.SCALE else: j = len(self.labels[i]) - 1 while(w > my_width and j > 0): pl = self._sprites.canvas.create_pango_layout( "…" + self.labels[i][len(self.labels[i]) - j:]) - self._fd.set_size(int(self._scale[i] * pango.SCALE)) + self._fd.set_size(int(self._scale[i] * Pango.SCALE)) pl.set_font_description(self._fd) - w = pl.get_size()[0] / pango.SCALE + w = pl.get_size()[0] / Pango.SCALE j -= 1 if self._horiz_align[i] == "center": x = int(self.rect.x + self._margins[0] + (my_width - w) / 2) @@ -371,7 +374,7 @@ class Sprite: x = int(self.rect.x + self._margins[0]) else: # right x = int(self.rect.x + self.rect.width - w - self._margins[2]) - h = pl.get_size()[1] / pango.SCALE + h = pl.get_size()[1] / Pango.SCALE if self._vert_align[i] == "middle": y = int(self.rect.y + self._margins[1] + (my_height - h) / 2) elif self._vert_align[i] == "top": @@ -386,9 +389,9 @@ class Sprite: max = 0 for i in range(len(self.labels)): pl = self._sprites.canvas.create_pango_layout(self.labels[i]) - self._fd.set_size(int(self._scale[i] * pango.SCALE)) + self._fd.set_size(int(self._scale[i] * Pango.SCALE)) pl.set_font_description(self._fd) - w = pl.get_size()[0] / pango.SCALE + w = pl.get_size()[0] / Pango.SCALE if w > max: max = w return max @@ -410,7 +413,7 @@ class Sprite: x, y = pos x = x - self.rect.x y = y - self.rect.y - if isinstance(self.images[i], gtk.gdk.Pixbuf): + if _is_pixbuf(self.images[i]): if y > self.images[i].get_height() - 1: return(-1, -1, -1, -1) array = self.images[i].get_pixels() |