From 0a45669adbbd9d4c6c0b8948ed62588cedfe9ec7 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Tue, 07 May 2013 01:57:51 +0000 Subject: more work on save-macro --- (limited to 'plugins') diff --git a/plugins/turtle_blocks_extras/turtle_blocks_extras.py b/plugins/turtle_blocks_extras/turtle_blocks_extras.py index d2e6cfb..1593f4b 100644 --- a/plugins/turtle_blocks_extras/turtle_blocks_extras.py +++ b/plugins/turtle_blocks_extras/turtle_blocks_extras.py @@ -19,21 +19,25 @@ import gtk import gobject from time import time import os +import glob from gettext import gettext as _ from plugins.plugin import Plugin -from TurtleArt.tapalette import make_palette, define_logo_function, \ - block_names, block_primitives, special_names, content_blocks, \ - palette_name_to_index, palette_names -from TurtleArt.talogo import primitive_dictionary, logoerror, \ - media_blocks_dictionary -from TurtleArt.taconstants import DEFAULT_SCALE, ICON_SIZE, CONSTANTS, \ - MEDIA_SHAPES, SKIN_PATHS, BLOCKS_WITH_SKIN, PYTHON_SKIN, \ - PREFIX_DICTIONARY, VOICES, MACROS, COLORDICT -from TurtleArt.tautils import convert, round_int, debug_output, get_path, \ - data_to_string, find_group, image_to_base64 -from TurtleArt.tajail import myfunc, myfunc_import +from TurtleArt.tapalette import (make_palette, define_logo_function, + block_names, block_primitives, special_names, + content_blocks, palette_name_to_index, + palette_names) +from TurtleArt.talogo import (primitive_dictionary, logoerror, + media_blocks_dictionary) +from TurtleArt.taconstants import (DEFAULT_SCALE, ICON_SIZE, CONSTANTS, + MEDIA_SHAPES, SKIN_PATHS, BLOCKS_WITH_SKIN, + PYTHON_SKIN, PREFIX_DICTIONARY, VOICES, + MACROS, COLORDICT) +from TurtleArt.tautils import (convert, round_int, debug_output, get_path, + data_to_string, find_group, image_to_base64, + hat_on_top, listify, data_from_file) +from TurtleArt.tajail import (myfunc, myfunc_import) def _num_type(x): @@ -90,6 +94,8 @@ class Turtle_blocks_extras(Plugin): self._portfolio_palette() + self._macros_palette() + # Palette definitions def _flow_palette(self): @@ -1042,6 +1048,29 @@ Journal objects")) bullets')) self.tw.lc.def_prim('bullet', 1, self._prim_list, True) + def _macros_palette(self): + ''' User-defined macros are saved as a json-encoded file; + these get loaded into a palette on startup ''' + + if os.path.exists(self.tw.macros_path): + files = glob.glob(os.path.join(self.tw.macros_path, '*.tb')) + print 'creating macros palette' + if len(files) > 0: + palette = make_palette('macros', + colors=["#FFC000", "#A08000"], + help_string=\ +_('Palette of user-defined operators')) + + for tafile in files: + data = data_from_file(tafile) + name = os.path.basename(tafile)[:-3] + print 'loading macro %s' % (name) + MACROS['user-defined-' + name] = hat_on_top(listify(data)) + palette.add_block('user-defined-' + name, + style='basic-style-extended-vertical', + label=name) + + # Block primitives def _prim_emptyheap(self): -- cgit v0.9.1