From a11dac6b1af290ed224119fd9fe4565a69e26f68 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Mon, 31 Oct 2011 22:29:21 +0000 Subject: more cleaning up cairo code --- diff --git a/TurtleArt/tacanvas.py b/TurtleArt/tacanvas.py index 52e337b..1a37fc9 100644 --- a/TurtleArt/tacanvas.py +++ b/TurtleArt/tacanvas.py @@ -544,9 +544,14 @@ class TurtleGraphics: # Build a gtk.gdk.CairoContext from a cairo.Context to access # the set_source_pixbuf attribute. cr = gtk.gdk.CairoContext(self.canvas) + cr.save() + cr.rotate(self.heading * DEGTOR) cr.set_source_pixbuf(pixbuf, x, y) + # To do: reposition rectangle based on angle of rotation cr.rectangle(x, y, w, h) + cr.rotate(-self.heading * DEGTOR) cr.fill() + cr.restore() self.inval() if self.tw.saving_svg: if self.tw.running_sugar: @@ -593,6 +598,7 @@ class TurtleGraphics: pl.set_width(int(w) * pango.SCALE) cr.save() cr.translate(x, y) + cr.rotate(self.heading * DEGTOR) self.canvas.set_source_rgb(self.fgrgb[0] / 255., self.fgrgb[1] / 255., self.fgrgb[2] / 255.) diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py index 987510b..c8955b2 100644 --- a/TurtleArt/tawindow.py +++ b/TurtleArt/tawindow.py @@ -80,10 +80,11 @@ class TurtleArtWindow(): _PLUGIN_SUBPATH = 'plugins' def __init__(self, canvas_window, path, parent=None, - mycolors=None, mynick=None, turtle_canvas=None): + mycolors=None, mynick=None, turtle_canvas=None, cr=None): self._loaded_project = '' self._sharing = False self.parent = parent + self.cr = cr self.turtle_canvas = turtle_canvas self.send_event = None # method to send events over the network self.gst_available = GST_AVAILABLE @@ -1755,9 +1756,8 @@ class TurtleArtWindow(): def _move_turtle(self, x, y): """ Move the selected turtle to (x, y). """ - (cx, cy) = self.canvas.canvas.get_xy() - self.canvas.xcor = x - cx - self.canvas.ycor = y + cy + self.canvas.xcor = x + self.canvas.ycor = y self.canvas.move_turtle() if self.running_sugar: self.display_coordinates() diff --git a/turtleart.py b/turtleart.py index e99f7ad..f1a4ec2 100755 --- a/turtleart.py +++ b/turtleart.py @@ -179,10 +179,15 @@ class TurtleMain(): def _build_window(self): ''' Initialize the TurtleWindow instance. ''' - print 'calling do_realize from _build_windoe' - self.do_realize() + win = self.canvas.get_window() + self.cr = win.cairo_create() + surface = self.cr.get_target() + self.turtle_canvas = surface.create_similar( + cairo.CONTENT_COLOR, gtk.gdk.screen_width() * 2, + gtk.gdk.screen_height() * 2) self.tw = TurtleArtWindow(self.canvas, self._dirname, - turtle_canvas=self.turtle_canvas) + turtle_canvas=self.turtle_canvas, + cr=self.cr) self.tw.save_folder = os.path.expanduser('~') def _init_vars(self): @@ -278,8 +283,6 @@ class TurtleMain(): win.set_icon_from_file(os.path.join(self._dirname, self._ICON_SUBPATH)) win.connect('delete_event', self._quit_ta) - print 'connecting realize event' - win.connect('realize', self.do_realize) vbox = gtk.VBox(False, 0) win.add(vbox) @@ -304,19 +307,6 @@ class TurtleMain(): self.win = win self.canvas = canvas - def do_realize(self, foo=None): - """ Makes a cairo surface on which the turtle draws """ - print 'do_realize' - if not hasattr(self, 'canvas'): - print 'no canvas yet...' - return - win = self.canvas.get_window() - cr = win.cairo_create() - surface = cr.get_target() - self.turtle_canvas = surface.create_similar( - cairo.CONTENT_COLOR, gtk.gdk.screen_width() * 2, - gtk.gdk.screen_height() * 2) - def _get_menu_bar(self): ''' Instead of Sugar toolbars, use GNOME menus. ''' menu = gtk.Menu() -- cgit v0.9.1