Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TurtleArtActivity.py4
-rw-r--r--constants.py1
-rw-r--r--talogo.py31
-rw-r--r--taturtle.py26
-rw-r--r--tawindow.py47
-rwxr-xr-xturtleart.py2
6 files changed, 68 insertions, 43 deletions
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