From 5d58462013be8eae4217b4ab199a6f0ddcd16687 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Tue, 02 Feb 2010 00:09:23 +0000 Subject: added settextcolor prim --- diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py index 949408d..fece777 100644 --- a/TurtleArtActivity.py +++ b/TurtleArtActivity.py @@ -943,8 +943,8 @@ class TurtleArtActivity(activity.Activity): """ def _setup_canvas(self, canvas, lang): bundle_path = activity.get_bundle_path() - print "turtle colors = %s" % (profile.get_color().to_string()) - self.tw = tawindow.TurtleArtWindow(canvas, bundle_path, lang, self) + self.tw = tawindow.TurtleArtWindow(canvas, bundle_path, lang, self, + profile.get_color().to_string()) self.tw.activity = self self.tw.window.grab_focus() path = os.path.join(os.environ['SUGAR_ACTIVITY_ROOT'], 'data') diff --git a/constants.py b/constants.py index 388dd68..3354c48 100644 --- a/constants.py +++ b/constants.py @@ -291,6 +291,7 @@ PRIMITIVES = { 'setscale':'setscale', 'setshade':'setshade', 'settextsize':'settextsize', + 'settextcolor':'settextcolor', 'setxy':'setxy', 'shade':'shade', 'show':'show', diff --git a/talogo.py b/talogo.py index cd9be13..da6ee83 100644 --- a/talogo.py +++ b/talogo.py @@ -22,12 +22,12 @@ #THE SOFTWARE. import re -from time import * +from time import clock import gobject from operator import isNumberType -import random +from random import uniform import audioop -from math import * +from math import sqrt import subprocess from UserDict import UserDict try: @@ -283,7 +283,7 @@ class LogoCode: 'product':[2, lambda self,x,y: taproduct(x,y)], 'purple':[0, lambda self: 90], 'push':[1, lambda self,x: self.push_heap(x)], - 'random':[2, lambda self,x,y: int(random.uniform(x,y))], + 'random':[2, lambda self,x,y: int(uniform(x,y))], 'red':[0, lambda self: 0], 'repeat':[2, self.prim_repeat, True], 'right':[1, lambda self, x: self.tw.canvas.right(x)], @@ -375,7 +375,7 @@ class LogoCode: self.readline(self.blocks_to_code(b)) code = self.blocks_to_code(blk) if run_flag is True: - print "code: %s" % (code) + print "running code: %s" % (code) self.setup_cmd(code) else: return code @@ -388,7 +388,7 @@ class LogoCode: code.append(dock[4]) if blk.primitive is not None: code.append(blk.primitive) - else: + elif len(blk.values)>0: if blk.name=='number': try: code.append(float(blk.values[0])) @@ -418,6 +418,8 @@ class LogoCode: code.append('#saudio_None') else: return ['%nothing%'] + else: + return ['%nothing%'] for i in range(1,len(blk.connections)): b = blk.connections[i] dock = blk.docks[i] @@ -740,12 +742,15 @@ class LogoCode: pixbuf = get_pixbuf_from_journal(dsobject, int(w), int(h)) dsobject.destroy() else: - if movie_media_type(media[-4:]): - play_movie_from_file(self, media[6:], int(x), int(y), - int(w), int(h)) - else: - pixbuf = gtk.gdk.pixbuf_new_from_file_at_size( - media[6:], int(w), int(h)) + try: + if movie_media_type(media[-4:]): + play_movie_from_file(self, media[6:], int(x), int(y), + int(w), int(h)) + else: + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size( + media[6:], int(w), int(h)) + except: + print "Couldn't open media object %s" % (media[6:]) if pixbuf is not None: self.tw.canvas.draw_pixbuf(pixbuf, 0, 0, int(x), int(y), int(w), int(h)) @@ -1056,7 +1061,7 @@ class LogoCode: self.tw.active_turtle.show() return False except logoerror, e: - showlabel(self, str(e)[1:-1]) + self.showlabel(str(e)[1:-1]) self.tw.active_turtle.show() return False return True diff --git a/taturtle.py b/taturtle.py index b171709..42a54c9 100644 --- a/taturtle.py +++ b/taturtle.py @@ -83,18 +83,28 @@ class Turtle: self.shapes = [] self.type = 'turtle' self.heading = 0 - self.color = 0 - self.shade = 50 + self.pen_shade = 50 + self.pen_color = 0 self.pen_size = 5 self.pen_state = True + + if len(colors) == 2: + _colors = colors[:] + _colors.append(colors[0]) + _colors.append(colors[1]) + elif len(colors) == 4: + _colors=colors[:] + else: + _colors=["#008000", "#00A000", "#D0D000", "#808000"] + _svg = SVG() _svg.set_scale(scale) self.spr = sprites.Sprite(turtle_list.sprite_list, self.x, self.y, - svg_str_to_pixbuf(_svg.turtle(colors))) + svg_str_to_pixbuf(_svg.turtle(_colors))) turtle_list.append_to_list(self) for i in range(36): _svg.set_orientation(i*10) - self.shapes.append(svg_str_to_pixbuf(_svg.turtle(colors))) + self.shapes.append(svg_str_to_pixbuf(_svg.turtle(_colors))) def set_heading(self, heading): self.heading = heading @@ -106,10 +116,10 @@ class Turtle: print "Turtle shape IndexError %f -> %d" % (heading, i) def set_color(self, color): - self.color = color + self.pen_color = color def set_shade(self, shade): - self.shade = shade + self.pen_shade = shade def set_pen_size(self, pen_size): self.pen_size = pen_size @@ -134,10 +144,10 @@ class Turtle: return(self.heading) def get_color(self): - return(self.color) + return(self.pen_color) def get_shade(self): - return(self.shade) + return(self.pen_shade) def get_pen_size(self): return(self.pen_size) diff --git a/tawindow.py b/tawindow.py index 026b8ec..1b71eb5 100644 --- a/tawindow.py +++ b/tawindow.py @@ -42,6 +42,7 @@ DEGTOR = 2*pi/360 from constants import * try: from sugar.graphics.objectchooser import ObjectChooser + from sugar.datastore import datastore except: pass @@ -64,14 +65,14 @@ class TurtleArtWindow(): # Time out for triggering help timeout_tag = [0] - def __init__(self, win, path, lang, parent=None): - self._setup_initial_values(win, path, lang, parent) + def __init__(self, win, path, lang, parent=None, mycolors=None): + self._setup_initial_values(win, path, lang, parent, mycolors) # TODO: most of this goes away self._setup_misc() # the new palette self.show_toolbar_palette(0, False) - def _setup_initial_values(self, win, path, lang, parent): + def _setup_initial_values(self, win, path, lang, parent, mycolors): self.window = win self.path = os.path.join(path, 'images') self.load_save_folder = os.path.join(path, 'samples') @@ -143,7 +144,10 @@ class TurtleArtWindow(): self.block_list = Blocks(self.scale) self.sprite_list = Sprites(self.window, self.area, self.gc) self.turtle_list = Turtles(self.sprite_list) - self.active_turtle = Turtle(self.turtle_list) + if mycolors == None: + self.active_turtle = Turtle(self.turtle_list) + else: + self.active_turtle = Turtle(self.turtle_list, mycolors.split(',')) self.selected_turtle = None self.canvas = TurtleGraphics(self, self.width, self.height) @@ -1455,29 +1459,34 @@ class TurtleArtWindow(): for i in range(len(b[4])-4): dy = blk.add_arg() elif btype in BOX_STYLE_MEDIA and len(blk.values)>0: - if btype == 'audio' or btype == 'description': - print "restoring %s to %s block" % (blk.values[0],blk.name) + if blk.values[0] == 'None': + blk.spr.set_image(self.media_shapes[btype+'off'], 1, 37, 6) + elif btype == 'audio' or btype == 'description': blk.spr.set_image(self.media_shapes[btype+'on'], 1, 37, 6) elif self.running_sugar: try: - if blk.values[0] != 'None': - dsobject = datastore.get(blk.values[0]) - if not movie_media_type(dsobject.file_path[-4:]): - pixbuf = get_pixbuf_from_journal(dsobject, 80, 60) - if pixbuf is not None: - blk.spr.set_image(pixbuf, 1, 17, 2) - else: - blk.spr.set_image( - self.media_shapes['journalon'], 1, 37, 6) - dsobject.destroy() + dsobject = datastore.get(blk.values[0]) + if not movie_media_type(dsobject.file_path[-4:]): + pixbuf = get_pixbuf_from_journal(dsobject, 80, 60) + if pixbuf is not None: + blk.spr.set_image(pixbuf, 1, 17, 2) + else: + blk.spr.set_image( + self.media_shapes['journalon'], 1, 37, 6) + dsobject.destroy() except: print "couldn't open dsobject (%s)" % (blk.values[0]) + blk.spr.set_image(self.media_shapes['journaloff'], + 1, 37, 6) else: if not movie_media_type(blk.values[0][-4:]): - pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(blk.values[0], - 80, 60) - if pixbuf is not None: + try: + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size( + blk.values[0], 80, 60) blk.spr.set_image(pixbuf, 1, 17, 2) + except: + blk.spr.set_image(self.media_shapes['journaloff'], + 1, 37, 6) else: blk.spr.set_image(self.media_shapes['journalon'], 1, 37, 6) blk.spr.set_label(' ') diff --git a/turtleart.py b/turtleart.py index 0b30929..967967e 100755 --- a/turtleart.py +++ b/turtleart.py @@ -177,7 +177,7 @@ class TurtleMain(): def _do_stop_cb(self, widget): self.tw.lc.trace = 0 - self.stop_button() + self.tw.stop_button() return -- cgit v0.9.1