Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArt/sprites.py
diff options
context:
space:
mode:
Diffstat (limited to 'TurtleArt/sprites.py')
-rw-r--r--TurtleArt/sprites.py43
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()