diff options
Diffstat (limited to 'plugins/turtle_blocks_extras/turtle_blocks_extras.py')
-rw-r--r-- | plugins/turtle_blocks_extras/turtle_blocks_extras.py | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/plugins/turtle_blocks_extras/turtle_blocks_extras.py b/plugins/turtle_blocks_extras/turtle_blocks_extras.py index 01b2a68..2e867eb 100644 --- a/plugins/turtle_blocks_extras/turtle_blocks_extras.py +++ b/plugins/turtle_blocks_extras/turtle_blocks_extras.py @@ -718,6 +718,26 @@ module found in the Journal')) lambda self, x: self.tw.turtles.set_turtle(x)) + primitive_dictionary['turtlex'] = self._prim_turtle_x + palette.add_block('turtlex', + style='number-style-1arg', + label=_('turtle x'), + prim_name='turtlex', + default=['Yertle'], + help_string=_('Returns x coordinate of turtle')) + self.tw.lc.def_prim('turtlex', 1, + lambda self, t: primitive_dictionary['turtlex'](t)) + + primitive_dictionary['turtley'] = self._prim_turtle_y + palette.add_block('turtley', + style='number-style-1arg', + label=_('turtle y'), + prim_name='turtley', + default=['Yertle'], + help_string=_('Returns y coordinate of turtle')) + self.tw.lc.def_prim('turtley', 1, + lambda self, t: primitive_dictionary['turtley'](t)) + primitive_dictionary['activeturtle'] = self._prim_active_turtle palette.add_block('activeturtle', style='box-style', @@ -730,6 +750,16 @@ module found in the Journal')) lambda self: primitive_dictionary['activeturtle']()) + primitive_dictionary['turtleh'] = self._prim_turtle_h + palette.add_block('turtleh', + style='number-style-1arg', + label=_('turtle heading'), + prim_name='turtleh', + default=['Yertle'], + help_string=_('Returns heading of turtle')) + self.tw.lc.def_prim('turtleh', 1, + lambda self, t: primitive_dictionary['turtleh'](t)) + primitive_dictionary['skin'] = self._prim_reskin palette.add_block('skin', hidden=True, @@ -1364,6 +1394,42 @@ Journal objects')) self.tw.activity.stop_turtle_button.set_icon("stopiton") self.tw.activity.stop_turtle_button.set_tooltip(_('Stop turtle')) + def _prim_chr(self, x): + """ Chr conversion """ + try: + return chr(int(x)) + except ValueError: + self.tw.lc.stop_logo() + raise logoerror("#notanumber") + + def _prim_int(self, x): + """ Int conversion """ + try: + return int(x) + except ValueError: + self.tw.lc.stop_logo() + raise logoerror("#notanumber") + + def _prim_turtle_x(self, t): + """ Return x coordinate of turtle t """ + return self.tw.turtles.get_turtle_x(t) + + def _prim_turtle_y(self, t): + """ Return y coordinate of turtle t """ + return self.tw.turtles.get_turtle_y(t) + + def _prim_turtle_h(self, t): + """ Return heading of turtle t """ + return self.tw.turtles.get_turtle_heading(t) + + def _prim_clamp(self, blklist): + """ Run clamp blklist """ + self.tw.lc.icall(self.tw.lc.evline, blklist[:]) + yield True + self.tw.lc.procstop = False + self.tw.lc.ireturn() + yield True + def _prim_load_block(self, blkname): ''' Load a block on to the canvas ''' # Place the block at the active turtle (x, y) and move the turtle @@ -1454,7 +1520,7 @@ Journal objects')) self.tw.show_toolbar_palette(int(arg)) else: if type(arg) == unicode: - arg = arg.encode('ascii', 'replace') + arg = arg.encode('utf-8') if arg in palette_names: self.tw.show_toolbar_palette(palette_name_to_index(arg)) else: |