From 5a01e94347c1cd78b0deb4fc64c649536ae6ac1f Mon Sep 17 00:00:00 2001 From: C. Scott Ananian Date: Thu, 10 Nov 2011 23:32:00 +0000 Subject: Update Gdk.CairoContext in source (not needed for GTK3). --- diff --git a/TurtleArt/sprites.py b/TurtleArt/sprites.py index 9577656..a33b593 100644 --- a/TurtleArt/sprites.py +++ b/TurtleArt/sprites.py @@ -334,7 +334,8 @@ class Sprite: self.rect.x + self._dx[i], self.rect.y + self._dy[i]) elif _is_pixbuf(img): - cr.set_source_pixbuf(img, + # on GTK2, cr must be a Gdk.CairoContext + Gdk.cairo_set_source_pixbuf(cr, img, self.rect.x + self._dx[i], self.rect.y + self._dy[i]) # self.surfaces[i] = cr.get_target() diff --git a/TurtleArt/tacanvas.py b/TurtleArt/tacanvas.py index 1c545a6..ac20092 100644 --- a/TurtleArt/tacanvas.py +++ b/TurtleArt/tacanvas.py @@ -106,7 +106,7 @@ class TurtleGraphics: # Build a cairo.Context from a cairo.XlibSurface self.canvas = cairo.Context(self.tw.turtle_canvas) - cr = Gdk.CairoContext(self.canvas) + cr = Gdk.CairoContext(self.canvas) # GTK2 compat cr.set_line_cap(1) # Set the line cap to be round self.cx = 0 @@ -527,14 +527,14 @@ class TurtleGraphics: def draw_pixbuf(self, pixbuf, a, b, x, y, w, h, path, share=True): ''' Draw a pixbuf ''' # Build a Gdk.CairoContext from a cairo.Context to access - # the set_source_pixbuf attribute. - cr = Gdk.CairoContext(self.canvas) + # the set_source_pixbuf attribute. (GTK2 only) + cr = Gdk.CairoContext(self.canvas) # GTK2 compat cr.save() # center the rotation on the center of the image cr.translate(x + w / 2., y + h / 2.) cr.rotate(self.heading * DEGTOR) cr.translate(-x - w / 2., -y - h / 2.) - cr.set_source_pixbuf(pixbuf, x, y) + Gdk.cairo_set_source_pixbuf(cr, pixbuf, x, y) cr.rectangle(x, y, w, h) cr.fill() cr.restore() diff --git a/util/gtkcompat.py b/util/gtkcompat.py index b55091a..c188a13 100644 --- a/util/gtkcompat.py +++ b/util/gtkcompat.py @@ -16,6 +16,10 @@ try: GObject.TYPE_NONE = None # compatibility hack class GConf: pass # XXX no more GConf, sigh + + # No CairoContext wrapper needed for gir/gtk3 + Gdk.CairoContext = lambda x: x # GTK2 compatibility + except ValueError, ImportError: # fall back to old pygtk, with various evil hacks import pygtk @@ -36,6 +40,9 @@ except ValueError, ImportError: RUN_FIRST = GObject.SIGNAL_RUN_FIRST GObject.SignalFlags = GObjectSignalFlags + Gdk.cairo_set_source_pixbuf = \ + lambda cr, img, x, y: cr.set_source_pixbuf(img, x, y) + class GdkEventMask: EXPOSURE_MASK = Gdk.EXPOSURE_MASK BUTTON_PRESS_MASK = Gdk.BUTTON_PRESS_MASK -- cgit v0.9.1