Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2011-10-31 22:29:21 (GMT)
committer Walter Bender <walter.bender@gmail.com>2011-10-31 22:29:21 (GMT)
commita11dac6b1af290ed224119fd9fe4565a69e26f68 (patch)
tree081715f516b5a16d8958cac088cb1246901e4d68
parent905295c256eeef02a40a084a700831370a501a8c (diff)
more cleaning up cairo code
-rw-r--r--TurtleArt/tacanvas.py6
-rw-r--r--TurtleArt/tawindow.py8
-rwxr-xr-xturtleart.py26
3 files changed, 18 insertions, 22 deletions
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()