From 6acdbc3db543f2692ee336a99722f5ab0b46c77e Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Wed, 13 Nov 2013 22:42:18 +0000 Subject: convert to new primitive type --- (limited to 'pysamples/uturn.py') diff --git a/pysamples/uturn.py b/pysamples/uturn.py index cdeb96d..60683a0 100644 --- a/pysamples/uturn.py +++ b/pysamples/uturn.py @@ -1,4 +1,4 @@ -#Copyright (c) 2011, Walter Bender + #Copyright (c) 2011-2013, Walter Bender # This procedure is invoked when the user-definable block on the # "extras" palette is selected. @@ -8,11 +8,22 @@ # can use the u-turn block as you would any other block. -def myblock(tw, arg): +def myblock(tw, args): ''' Add a uturn block to the 'turtle' palette ''' + # def_prim takes 3 arguments: the primitive name, the number of + # arguments -- 0 in this case -- and the function to call -- in this + # case, we define the _prim_uturn function to set heading += 180. + def _prim_uturn(tw): + value = tw.turtles.get_active_turtle().get_heading() + 180 + tw.turtles.get_active_turtle().set_heading(value) + # We also update the label on the heading block to indicate + # the current heading value + if tw.lc.update_values: + tw.lc.update_label_value('heading', value) + from TurtleArt.tapalette import make_palette, palette_name_to_index - from TurtleArt.talogo import primitive_dictionary + from TurtleArt.taprimitive import Primitive, ConstantArg from gettext import gettext as _ # Choose a palette for the new block. @@ -23,12 +34,10 @@ def myblock(tw, arg): style='basic-style-extended-vertical', label=_('uturn'), prim_name='uturn', - help_string=_('make a uturn')) + help_string=_('turns the turtle 180 degrees')) # Add its primitive to the LogoCode dictionary. - tw.lc.def_prim('uturn', 0, - lambda self: primitive_dictionary['set'] - ('heading', tw.canvas.seth, tw.canvas.heading + 180)) + tw.lc.def_prim('uturn', 0, Primitive(_prim_uturn, arg_descs=[ConstantArg(tw)])) # Regenerate the palette, which will now include the new block. tw.show_toolbar_palette(palette_name_to_index('turtle'), -- cgit v0.9.1