diff options
Diffstat (limited to 'TurtleArtActivity.py')
-rw-r--r-- | TurtleArtActivity.py | 191 |
1 files changed, 3 insertions, 188 deletions
diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py index 88dfa8b..afb1d7f 100644 --- a/TurtleArtActivity.py +++ b/TurtleArtActivity.py @@ -1,4 +1,4 @@ -#Copyright (c) 2007-8, Playful Invention Company. +#Copyright (c) 2007-9, Playful Invention Company. #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal @@ -25,26 +25,6 @@ import pygtk pygtk.require('2.0') import gtk -from socket import * -import sys -import gobject - -serverHost = '192.168.1.102' -serverPort = 5647 - -def debug_init(): - s = socket(AF_INET, SOCK_STREAM) # create a TCP socket - s.connect((serverHost, serverPort)) # connect to server on the port - sys.stdout = s.makefile() - sys.stderr = sys.stdout - gobject.timeout_add(100, debug_tick) - -def debug_tick(): - sys.stdout.flush() - return True - -#debug_init() - import sugar from sugar.activity import activity from sugar.graphics.toolbutton import ToolButton @@ -185,6 +165,8 @@ class TurtleArtActivity(activity.Activity): class ProjectToolbar(gtk.Toolbar): + from taexport import * + def __init__(self, pc): gtk.Toolbar.__init__(self) self.activity = pc @@ -239,170 +221,3 @@ class ProjectToolbar(gtk.Toolbar): datastore.write(file_dsobject) return - - def save_logo(self, tw): - color_processing = "\ -to tasetpalette :i :r :g :b :myshade \r\ -make \"s ((:myshade - 50) / 50) \r\ -ifelse lessp :s 0 [ \r\ -make \"s (1 + (:s *0.8)) \r\ -make \"r (:r * :s) \r\ -make \"g (:g * :s) \r\ -make \"b (:b * :s) \r\ -] [ \ -make \"s (:s * 0.9) \r\ -make \"r (:r + ((100-:r) * :s)) \r\ -make \"g (:g + ((100-:g) * :s)) \r\ -make \"b (:b + ((100-:b) * :s)) \r\ -] \ -setpalette :i (list :r :g :b) \r\ -end \r\ -\ -to rgb :myi :mycolors :myshade \r\ -make \"myr first :mycolors \r\ -make \"mycolors butfirst :mycolors \r\ -make \"myg first :mycolors \r\ -make \"mycolors butfirst :mycolors \r\ -make \"myb first :mycolors \r\ -make \"mycolors butfirst :mycolors \r\ -tasetpalette :myi :myr :myg :myb :myshade \r\ -output :mycolors \r\ -end \r\ -\ -to processcolor :mycolors :myshade \r\ -if emptyp :mycolors [stop] \r\ -make \"i :i + 1 \r\ -processcolor (rgb :i :mycolors :myshade) :myshade \r\ -end \r\ -\ -to tasetshade :shade \r\ -make \"myshade modulo :shade 200 \r\ -if greaterp :myshade 99 [make \"myshade (199-:myshade)] \r\ -make \"i 7 \r\ -make \"mycolors :colors \r\ -processcolor :mycolors :myshade \r\ -end \r\ -\ -to tasetpencolor :c \r\ -make \"color (modulo (round :c) 100) \r\ -setpencolor :color + 8 \r\ -end \r\ -\ -make \"colors [ \ -100 0 0 100 5 0 100 10 0 100 15 0 100 20 0 100 25 0 100 30 0 100 35 0 100 40 0 100 45 0 \ -100 50 0 100 55 0 100 60 0 100 65 0 100 70 0 100 75 0 100 80 0 100 85 0 100 90 0 100 95 0 \ -100 100 0 90 100 0 80 100 0 70 100 0 60 100 0 50 100 0 40 100 0 30 100 0 20 100 0 10 100 0 \ -0 100 0 0 100 5 0 100 10 0 100 15 0 100 20 0 100 25 0 100 30 0 100 35 0 100 40 0 100 45 \ -0 100 50 0 100 55 0 100 60 0 100 65 0 100 70 0 100 75 0 100 80 0 100 85 0 100 90 0 100 95 \ -0 100 100 0 95 100 0 90 100 0 85 100 0 80 100 0 75 100 0 70 100 0 65 100 0 60 100 0 55 100 \ -0 50 100 0 45 100 0 40 100 0 35 100 0 30 100 0 25 100 0 20 100 0 15 100 0 10 100 0 5 100 \ -0 0 100 5 0 100 10 0 100 15 0 100 20 0 100 25 0 100 30 0 100 35 0 100 40 0 100 45 0 100 \ -50 0 100 55 0 100 60 0 100 65 0 100 70 0 100 75 0 100 80 0 100 85 0 100 90 0 100 95 0 100 \ -100 0 100 100 0 90 100 0 80 100 0 70 100 0 60 100 0 50 100 0 40 100 0 30 100 0 20 100 0 10] \r\ -make \"shade 50 \r\ -tasetshade :shade \r" - - bs = tawindow.blocks(tw) - code = "" - random = 0 - fillscreen = 0 - setcolor = 0 - setxy = 0 - pensize = 0 - tastack = 0 - arc = 0 - for b in bs: - this_stack = "" - data = self.walk_stack(tw, b) - # need to catch several special cases: - # stacks, random, setshade, et al. - stack = 0 - for d in data: - if type(d) is float: - this_stack += str(d) - else: - # transalate some TA terms into UCB Logo - if d == "storeinbox1": - this_stack += "make \"box1" - elif d == "box1": - this_stack += ":box1" - elif d == "storeinbox2": - this_stack += "make \"box2" - elif d == "box2": - this_stack += ":box2" - elif d == "shade": - this_stack += ":shade" - elif d == "setshade": - setcolor = 1 - this_stack += "tasetshade" - elif d == "color": - this_stack += "pencolor" - elif d == "nop": - this_stack += " " - elif d == "nop1": - this_stack += "to stack1\r" - stack = 1 - elif d == "nop2": - this_stack += "to stack2\r" - stack = 1 - elif d == "clean": - this_stack += "clearscreen" - elif d == "setxy": - setxy = 1 - this_stack += "tasetxy" - elif d == "color": - this_stack += ":color" - elif d == "setcolor": - setcolor = 1 - this_stack += "tasetpencolor" - elif d == "fillscreen": - fillscreen = 1 - this_stack += "tasetbackground" - elif d == "random": - random = 1 - this_stack += "tarandom" - elif d == "pensize": - pensize = 1 - this_stack += "tapensize" - elif d == "arc": - arc = 1 - this_stack += "taarc" - else: - this_stack += d - this_stack += " " - if stack: - stack = 0 - # if it is not a stack, we need to add a "to ta#" label - elif len(data) > 0: - this_stack = "to ta" + str(tastack) + "\r" + this_stack - tastack += 1 - if len(data) > 0: - code += this_stack - code += "\rend\r" - # need to define some procedures - if random: # to avoid negative numbers - code = "to tarandom :min :max\routput (random (:max - :min)) + :min\rend\r" + code - if fillscreen: # set shade than background color - code = "to tasetbackground :color :shade\rtasetshade :shade\rsetbackground :color\rend\r" + code - if setcolor: # load palette - code = color_processing + code - if pensize: # return only first argument - code = "to tapensize\routput first round pensize\rend\r" + code - if setxy: # swap args and round args - code = "to tasetxy :y :x\rpenup\rsetxy :x :y\rpendown\rend\r" + code - if arc: - c = (2 * math.pi)/360 - code = "to taarc :a :r\rrepeat round :a [right 1 forward (" + str(c) + " * :r)]\rend\r" + code - code = "window\rsetscrunch 2 2\r" + code - print code - return code - - def walk_stack(self, tw, spr): - top = tawindow.find_top_block(spr) - if spr == top: - # only walk the stack if the block is the top block - return talogo.walk_blocks(tw.lc, top, tawindow.blocks(tw)) - else: - # not top of stack, then return empty list - return [] - |