diff options
-rw-r--r-- | NEWS | 31 | ||||
-rw-r--r-- | TurtleArt/talogo.py | 1 | ||||
-rw-r--r-- | TurtleArt/taturtle.py | 24 | ||||
-rw-r--r-- | TurtleArt/tawindow.py | 90 | ||||
-rw-r--r-- | TurtleArtActivity.py | 41 | ||||
-rw-r--r-- | activity/activity.info | 2 | ||||
-rw-r--r-- | images/Cartesian.svg | 406 | ||||
-rw-r--r-- | po/ko.po | 67 | ||||
-rw-r--r-- | po/quz.po | 30 | ||||
-rw-r--r-- | samples/graphics-grid.tb | 161 | ||||
-rw-r--r-- | samples/graphics-op-art-2.ta | 83 | ||||
-rw-r--r-- | samples/media-music-dots.tb | 61 | ||||
-rw-r--r-- | samples/media-music-keyboard.tb | 130 | ||||
-rw-r--r-- | samples/media-music.ta | 179 | ||||
-rw-r--r-- | samples/media-music.tb | 176 | ||||
-rw-r--r-- | samples/thumbnails/graphics-grid.png | bin | 0 -> 15989 bytes | |||
-rw-r--r-- | samples/thumbnails/graphics-op-art-2.png | bin | 0 -> 10050 bytes | |||
-rw-r--r-- | samples/thumbnails/media-music-dots.png | bin | 0 -> 7073 bytes | |||
-rw-r--r-- | samples/thumbnails/media-music-keyboard.png | bin | 0 -> 936 bytes | |||
-rwxr-xr-x | turtleblocks.py | 65 |
20 files changed, 1066 insertions, 481 deletions
@@ -1,13 +1,42 @@ +190 + +ENHANCEMENT: +* Set maximum number of participants + +189 + +ENHANCEMENT: +* New sample project + +BUG FIXES: +* Fix alignment problem with GNOME version +* Fix problem with default coordinate system + + +188 + +ENHANCEMENT: +* Add labels to Cartesian coordinate grid + +BUG FIXES: +* Ensure that default coordinate scale is 1 (pixel mode) +* Adjust pen size to coordinate scale + 187 ENHANCEMENTS: * Use icon view for browsing sample projects * New translations * New sample progams +* Save coordinate scale with gconf +* Make scaled coordinates +-20 instead of +-100 -BUG FIX: +BUG FIXES: * Fixed more bugs in SVG save * Fixed several bugs in non-interactive mode +* Fixed problem with erratic Cntl-V (SL #2751) +* Fixed problem with missing Stop button when malformed block encountered + (SL #4522) 186 diff --git a/TurtleArt/talogo.py b/TurtleArt/talogo.py index 7aac4ce..0b178c6 100644 --- a/TurtleArt/talogo.py +++ b/TurtleArt/talogo.py @@ -394,6 +394,7 @@ class LogoCode: if self._disable_help: self.tw.no_help = False self._disable_help = False + self.tw.display_coordinates() def icall(self, fcn, *args): """ Add a function and its arguments to the program stack. """ diff --git a/TurtleArt/taturtle.py b/TurtleArt/taturtle.py index 10d0230..8d2afea 100644 --- a/TurtleArt/taturtle.py +++ b/TurtleArt/taturtle.py @@ -138,7 +138,10 @@ class Turtles: self._active_turtle.set_color(0) self._active_turtle.set_shade(50) self._active_turtle.set_gray(100) - self._active_turtle.set_pen_size(5) + if self.turtle_window.coord_scale == 1: + self._active_turtle.set_pen_size(5) + else: + self._active_turtle.set_pen_size(1) self._active_turtle.reset_shapes() self._active_turtle.set_heading(0.0) self._active_turtle.set_pen_state(False) @@ -202,7 +205,10 @@ class Turtle: self._pen_shade = 50 self._pen_color = 0 self._pen_gray = 100 - self._pen_size = 5 + if self._turtles.turtle_window.coord_scale == 1: + self._pen_size = 5 + else: + self._pen_size = 1 self._pen_state = True self._pen_fill = False self._poly_points = [] @@ -422,7 +428,8 @@ class Turtle: self._turtles.turtle_window.running_sugar) return - self._turtles.turtle_window.canvas.set_pen_size(self._pen_size) + self._turtles.turtle_window.canvas.set_pen_size( + self._pen_size * self._turtles.turtle_window.coord_scale) if self._turtles.turtle_window.sharing() and share: event = 'w|%s' % (data_to_string([self._turtles.turtle_window.nick, @@ -555,12 +562,15 @@ class Turtle: int(distance)])) self._turtles.turtle_window.send_event(event) - def set_xy(self, x, y, share=True, pendown=True): + def set_xy(self, x, y, share=True, pendown=True, dragging=False): old = self.get_xy() - try: - xcor = x * self._turtles.turtle_window.coord_scale - ycor = y * self._turtles.turtle_window.coord_scale + if dragging: + xcor = x + ycor = y + else: + xcor = x * self._turtles.turtle_window.coord_scale + ycor = y * self._turtles.turtle_window.coord_scale except (TypeError, ValueError): debug_output('bad value sent to %s' % (__name__), self._turtles.turtle_window.running_sugar) diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py index a791919..3a8f4bb 100644 --- a/TurtleArt/tawindow.py +++ b/TurtleArt/tawindow.py @@ -102,10 +102,12 @@ class TurtleArtWindow(): def __init__(self, canvas_window, path, parent=None, activity=None, mycolors=None, mynick=None, turtle_canvas=None, running_sugar=True, running_turtleart=True): - '''parent -- the GTK Window that TA runs in - activity -- the object that instantiated this TurtleArtWindow (in - GNOME, a TurtleMain instance) - running_turtleart -- are we running TA or exported python code? + ''' + parent: the GTK Window that TA runs in + activity: the object that instantiated this TurtleArtWindow (in + GNOME, a TurtleMain instance, in Sugar, the Activity + instance) + running_turtleart: are we running TA or exported python code? ''' self.parent = parent self.turtle_canvas = turtle_canvas @@ -529,6 +531,8 @@ class TurtleArtWindow(): self._autohide_shape = True for name in OVERLAY_SHAPES: + if name == 'Cartesian': + continue self.overlay_shapes[name] = Sprite( self.sprite_list, int(self.width / 2 - 600), @@ -538,6 +542,8 @@ class TurtleArtWindow(): self.overlay_shapes[name].hide() self.overlay_shapes[name].type = 'overlay' + self._create_scaled_cartesian_coordinates() + if self.running_turtleart and not self.running_sugar: # offset = 2 * self.width - 55 * len(TOOLBAR_SHAPES) offset = 55 * (1 + len(palette_blocks)) @@ -553,6 +559,27 @@ class TurtleArtWindow(): self.toolbar_shapes[name].type = 'toolbar' self.toolbar_shapes['stopiton'].hide() + def _create_scaled_cartesian_coordinates(self): + # Cartesian overlay has to be scaled to match the coordinate_scale + # 200 pixels in the graphic == height / 4. (10 units) + pixbuf = svg_str_to_pixbuf( + svg_from_file('%s/images/%s.svg' % (self.path, 'Cartesian'))) + + if self.running_sugar: + scale = self.height / 800. + else: + scale = self.height / 800. + # scale = (self.height + ICON_SIZE) / 800. + self.overlay_shapes['Cartesian'] = Sprite( + self.sprite_list, + int(self.width / 2 - 600), + int(self.height / 2 - 450), + pixbuf.scale_simple(int(1200 * scale), + int(900 * scale), + gtk.gdk.INTERP_BILINEAR)) + self.overlay_shapes['Cartesian'].set_layer(TAB_LAYER) + self.overlay_shapes['Cartesian'].hide() + def set_sharing(self, shared): self._sharing = shared @@ -714,7 +741,8 @@ class TurtleArtWindow(): if self.running_sugar: y_offset = 0 else: - y_offset = ICON_SIZE + y_offset = 0 + # y_offset = ICON_SIZE self.canvas.draw_surface( self.overlay_shapes[overlay].cached_surfaces[0], (self.canvas.width - width) / 2.0, @@ -722,10 +750,13 @@ class TurtleArtWindow(): width, height) - def update_overlay_position(self, widget, event): + def update_overlay_position(self, widget=None, event=None): ''' Reposition the overlays when window size changes ''' - self.width = event.width - self.height = event.height + # self.width = event.width + # self.height = event.height + self.width = gtk.gdk.screen_width() + self.height = gtk.gdk.screen_height() + for name in OVERLAY_SHAPES: if not name in self.overlay_shapes: continue @@ -734,17 +765,24 @@ class TurtleArtWindow(): if shape in shape._sprites.list: shape.hide() showing = True + self.overlay_shapes[name].move((int(self.width / 2 - 600), + int(self.height / 2 - 450))) + ''' self.overlay_shapes[name] = Sprite( self.sprite_list, int(self.width / 2 - 600), int(self.height / 2 - 450), svg_str_to_pixbuf( svg_from_file('%s/images/%s.svg' % (self.path, name)))) + ''' if showing: self.overlay_shapes[name].set_layer(OVERLAY_LAYER) else: self.overlay_shapes[name].hide() + ''' self.overlay_shapes[name].type = 'overlay' + ''' + self.cartesian = False self.polar = False self.metric = False @@ -802,6 +840,7 @@ class TurtleArtWindow(): if not self.running_sugar or not self.activity.has_toolbarbox: self.toolbar_spr.set_layer(CATEGORY_LAYER) self.palette = True + self._set_coordinates_label(palette_names[n]) def hide_palette(self): ''' Hide the palette. ''' @@ -1410,6 +1449,13 @@ class TurtleArtWindow(): if spr is not None: blk = self.block_list.spr_to_block(spr) if blk is not None: + # Make sure stop button is visible + if self.running_sugar: + self.activity.stop_turtle_button.set_icon("stopiton") + self.activity.stop_turtle_button.set_tooltip( + _('Stop turtle')) + elif self.interactive_mode: + self.toolbar_shapes['stopiton'].set_layer(TAB_LAYER) self.showlabel('status', label=_('Please hit the Stop Button \ before making changes to your Turtle Blocks program')) @@ -2511,10 +2557,12 @@ before making changes to your Turtle Blocks program')) pos = self.turtles.screen_to_turtle_coordinates((dx, dy)) if self.selected_turtle.get_pen_state(): self.selected_turtle.set_pen_state(False) - self.selected_turtle.set_xy(*pos, share=False) + self.selected_turtle.set_xy(*pos, share=False, + dragging=True) self.selected_turtle.set_pen_state(True) else: - self.selected_turtle.set_xy(*pos, share=False) + self.selected_turtle.set_xy(*pos, share=False, + dragging=True) if self.update_counter % 5: self.lc.update_label_value( 'xcor', self.selected_turtle.get_xy()[0] / @@ -3809,7 +3857,6 @@ before making changes to your Turtle Blocks program')) (self._loaded_project), self.running_sugar) saved_project_data = '' current_project_data = data_to_string(self.assemble_data_to_save()) - return saved_project_data != current_project_data def load_files(self, ta_file, create_new_project=True): @@ -4133,6 +4180,7 @@ before making changes to your Turtle Blocks program')) [None, None]]]) else: self.process_data(data_from_file(ta_file)) + self._loaded_project = ta_file def save_file(self, file_name=None): ''' Start a project to a file ''' @@ -4219,11 +4267,7 @@ before making changes to your Turtle Blocks program')) def display_coordinates(self, clear=False): ''' Display the coordinates of the current turtle on the toolbar ''' if clear: - if self.running_sugar: - self.activity.coordinates_label.set_text('') - self.activity.coordinates_label.show() - elif self.interactive_mode: - self.parent.set_title('') + self._set_coordinates_label('') else: x = round_int(float(self.turtles.get_active_turtle().get_xy()[0]) / self.coord_scale) @@ -4235,19 +4279,25 @@ before making changes to your Turtle Blocks program')) formatting = '(%d, %d) %d' else: formatting = '(%0.2f, %0.2f) %0.2f' - self.activity.coordinates_label.set_text( - formatting % (x, y, h)) - self.activity.coordinates_label.show() + self._set_coordinates_label(formatting % (x, y, h)) elif self.interactive_mode: if int(x) == x and int(y) == y and int(h) == h: formatting = '%s — %s: %d %s: %d %s: %d' else: formatting = '%s — %s: %0.2f %s: %0.2f %s: %0.2f' - self.parent.set_title( + self._set_coordinates_label( formatting % (self.activity.name, _('xcor'), x, _('ycor'), y, _('heading'), h)) self.update_counter = 0 + def _set_coordinates_label(self, text): + if self.running_sugar: + self.activity.coordinates_label.set_text(text) + self.activity.coordinates_label.show() + elif self.interactive_mode: + self.parent.set_title(text) + + def showlabel(self, shp, label=''): ''' Display a message on a status block ''' if not self.interactive_mode: diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py index f965003..078377b 100644 --- a/TurtleArtActivity.py +++ b/TurtleArtActivity.py @@ -62,7 +62,7 @@ except ImportError: from gettext import gettext as _ from TurtleArt.tapalette import (palette_names, help_strings, help_palettes, - help_windows) + help_windows, default_values) from TurtleArt.taconstants import (BLOCK_SCALE, XO1, XO15, XO175, XO4, MIMETYPE) from TurtleArt.taexportlogo import save_logo @@ -78,6 +78,7 @@ if HAS_TOOLBARBOX: class TurtleArtActivity(activity.Activity): ''' Activity subclass for Turtle Art ''' _HOVER_HELP = '/desktop/sugar/activities/turtleart/hoverhelp' + _COORDINATE_SCALE = '/desktop/sugar/activities/turtleart/coordinatescale' def __init__(self, handle): ''' Set up the toolbars, canvas, sharing, etc. ''' @@ -131,6 +132,12 @@ class TurtleArtActivity(activity.Activity): self.client = gconf.client_get_default() if self.client.get_int(self._HOVER_HELP) == 1: self._do_hover_help_toggle(None) + if not self.client.get_int(self._COORDINATE_SCALE) in [0, 1]: + self.tw.coord_scale = 1 + self.do_rescale_cb(None) + else: + self.tw.coord_scale = 0 + self.do_rescale_cb(None) self._selected_sample = None self._sample_window = None @@ -316,7 +323,8 @@ class TurtleArtActivity(activity.Activity): self.tw.no_help = False self._hover_help_toggle.set_icon('help-off') self._hover_help_toggle.set_tooltip(_('Turn off hover help')) - self.client.set_int(self._HOVER_HELP, 0) + if HAS_GCONF: + self.client.set_int(self._HOVER_HELP, 0) else: self.tw.no_help = True self.tw.last_label = None @@ -324,7 +332,8 @@ class TurtleArtActivity(activity.Activity): self.tw.status_spr.hide() self._hover_help_toggle.set_icon('help-on') self._hover_help_toggle.set_tooltip(_('Turn on hover help')) - self.client.set_int(self._HOVER_HELP, 1) + if HAS_GCONF: + self.client.set_int(self._HOVER_HELP, 1) # These methods are called both from toolbar buttons and blocks. @@ -502,16 +511,27 @@ class TurtleArtActivity(activity.Activity): self.tw.set_metric(True) def do_rescale_cb(self, button): - ''' Rescale coordinate system (100==height/2 or 100 pixels). ''' + ''' Rescale coordinate system (20==height/2 or 100 pixels). ''' if self.tw.coord_scale == 1: - self.tw.coord_scale = self.tw.height / 200 + self.tw.coord_scale = self.tw.height / 40 self.rescale_button.set_icon('contract-coordinates') self.rescale_button.set_tooltip(_('Rescale coordinates down')) + default_values['forward'] = [10] + default_values['back'] = [10] + default_values['arc'] = [90, 10] + default_values['setpensize'] = [1] + self.tw.turtles.get_active_turtle().set_pen_size(1) else: self.tw.coord_scale = 1 self.rescale_button.set_icon('expand-coordinates') self.rescale_button.set_tooltip(_('Rescale coordinates up')) - self.tw.eraser_button() + default_values['forward'] = [100] + default_values['back'] = [100] + default_values['arc'] = [90, 100] + default_values['setpensize'] = [5] + self.tw.turtles.get_active_turtle().set_pen_size(5) + if HAS_GCONF: + self.client.set_int(self._COORDINATE_SCALE, self.tw.coord_scale) # Given the change in how overlays are handled (v123), there is no way # to erase and then redraw the overlays. @@ -594,6 +614,8 @@ class TurtleArtActivity(activity.Activity): def _setup_toolbar(self): ''' Setup toolbar according to Sugar version. ''' if self.has_toolbarbox: + self.max_participants = 4 + self._setup_toolbar_help() self._toolbox = ToolbarBox() @@ -626,7 +648,6 @@ class TurtleArtActivity(activity.Activity): self._toolbox.toolbar.insert(self.palette_toolbar_button, -1) self.set_toolbar_box(self._toolbox) - self.palette_toolbar_button.set_expanded(True) else: self._toolbox = activity.ActivityToolbox(self) self.set_toolbox(self._toolbox) @@ -692,7 +713,11 @@ class TurtleArtActivity(activity.Activity): self._view_toolbar.show() self._toolbox.show() - if not self.has_toolbarbox: + if self.has_toolbarbox: + self.edit_toolbar_button.set_expanded(True) + self.edit_toolbar_button.set_expanded(False) + self.palette_toolbar_button.set_expanded(True) + else: self._toolbox.set_current_toolbar(1) def _setup_extra_controls(self): diff --git a/activity/activity.info b/activity/activity.info index e9f55f9..f0fcf70 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -1,6 +1,6 @@ [Activity] name = TurtleBlocks -activity_version = 187 +activity_version = 190 license = MIT bundle_id = org.laptop.TurtleArtActivity exec = sugar-activity TurtleArtActivity.TurtleArtActivity diff --git a/images/Cartesian.svg b/images/Cartesian.svg index 7a29e22..b34751f 100644 --- a/images/Cartesian.svg +++ b/images/Cartesian.svg @@ -1,211 +1,213 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> + <svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.0" + version="1.2" width="1200" height="900" id="svg2"> - <defs - id="defs4" /> - <g - id="layer1"> - <path - d="M 0,850 L 1200,850" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 0,750 L 1200,750" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 0,650 L 1200,650" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 0,550 L 1200,550" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 0,350 L 1200,350" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 0,250 L 1200,250" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 0,150 L 1200,150" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 0,50 L 1200,50" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 1100,0 L 1100,900" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 1000,0 L 1000,900" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 900,0 L 900,900" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 800,0 L 800,900" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 700,0 L 700,900" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 500,0 L 500,900" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 400,0 L 400,900" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 300,0 L 300,900" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 200,0 L 200,900" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 100,0 L 100,900" - style="fill:none;stroke:#AAAAAA;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 590,850 L 610,850" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 590,750 L 610,750" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 590,650 L 610,650" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 590,550 L 610,550" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 0,450 L 1200,450" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 590,350 L 610,350" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 590,250 L 610,250" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 590,150 L 610,150" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 590,50 L 610,50" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 1100,440 L 1100,460" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 1000,440 L 1000,460" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 900,440 L 900,460" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 800,440 L 800,460" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 700,440 L 700,460" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 600,0 L 600,900" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 500,440 L 500,460" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 400,440 L 400,460" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 300,440 L 300,460" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 200,440 L 200,460" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> - <path - d="M 100,440 L 100,460" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> -<!-- - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="95" - y="480">–500</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="195" - y="480">–400</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="295" - y="480">–300</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="395" - y="480">–200</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="495" - y="480">–100</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="650" - y="480">x</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="700" - y="480">100</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="800" - y="480">200</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="900" - y="480">300</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="1000" - y="480">400</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#0000FF;fill-opacity:1;stroke:none;text-anchor:middle;text-align:center;font-family:Bitstream Vera Sans"><tspan - x="1100" - y="480">500</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#00AA00;fill-opacity:1;stroke:none;text-anchor:end;text-align:end;font-family:Bitstream Vera Sans"><tspan - x="590" - y="58">400</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#00AA00;fill-opacity:1;stroke:none;text-anchor:end;text-align:end;font-family:Bitstream Vera Sans"><tspan - x="590" - y="158">300</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#00AA00;fill-opacity:1;stroke:none;text-anchor:end;text-align:end;font-family:Bitstream Vera Sans"><tspan - x="590" - y="258">200</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#00AA00;fill-opacity:1;stroke:none;text-anchor:end;text-align:end;font-family:Bitstream Vera Sans"><tspan - x="590" - y="358">100</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#00AA00;fill-opacity:1;stroke:none;text-anchor:end;text-align:end;font-family:Bitstream Vera Sans"><tspan - x="590" - y="408">y</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#00AA00;fill-opacity:1;stroke:none;text-anchor:end;text-align:end;font-family:Bitstream Vera Sans"><tspan - x="590" - y="558">–100</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#00AA00;fill-opacity:1;stroke:none;text-anchor:end;text-align:end;font-family:Bitstream Vera Sans"><tspan - x="590" - y="658">–200</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#00AA00;fill-opacity:1;stroke:none;text-anchor:end;text-align:end;font-family:Bitstream Vera Sans"><tspan - x="590" - y="758">–300</tspan></text> - <text - style="font-size:20px;font-style:normal;font-weight:normal;fill:#00AA00;fill-opacity:1;stroke:none;text-anchor:end;text-align:end;font-family:Bitstream Vera Sans"><tspan - x="590" - y="858">–400</tspan></text> ---> - </g> + <path + d="m 0,850 1200,0" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 0,750 1200,0" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 0,650 1200,0" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 0,550 1200,0" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 0,350 1200,0" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 0,250 1200,0" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 0,150 1200,0" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 0,50 1200,0" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 1100,0 0,900" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 1000,0 0,900" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 900,0 0,900" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 800,0 0,900" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 700,0 0,900" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 500,0 0,900" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 400,0 0,900" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 300,0 0,900" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 200,0 0,900" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 100,0 0,900" + style="fill:none;stroke:#aaaaaa;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 590,850 20,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 590,750 20,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 590,650 20,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 590,550 20,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 0,450 1200,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 590,350 20,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 590,250 20,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 590,150 20,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 590,50 20,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 1100,440 0,20" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 1000,440 0,20" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 900,440 0,20" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 800,440 0,20" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 700,440 0,20" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 600,0 0,900" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 500,440 0,20" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 400,440 0,20" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 300,440 0,20" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 200,440 0,20" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <path + d="m 100,440 0,20" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-opacity:1" /> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="90" + y="447" + style="font-size:24px">-25</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="190" + y="447" + style="font-size:24px">-20</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="290" + y="447" + style="font-size:24px">-15</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="390" + y="447" + style="font-size:24px">-10</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="490" + y="447" + style="font-size:24px">-5</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="700" + y="447" + style="font-size:24px">5</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="800" + y="447" + style="font-size:24px">10</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="600" + y="447" + style="font-size:24px">0</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="900" + y="447" + style="font-size:24px">15</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="1000" + y="447" + style="font-size:24px">20</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="1100" + y="447" + style="font-size:24px">25</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="590" + y="747" + style="font-size:24px">-15</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="590" + y="647" + style="font-size:24px">-10</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="590" + y="547" + style="font-size:24px">-5</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="600" + y="347" + style="font-size:24px">5</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="600" + y="247" + style="font-size:24px">10</tspan></text> + <text + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="600" + y="147" + style="font-size:24px">15</tspan></text> </svg> @@ -7,15 +7,14 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-05-17 00:31-0400\n" -"PO-Revision-Date: 2009-05-10 23:43-0400\n" +"PO-Revision-Date: 2013-08-06 11:21+0900\n" "Last-Translator: Donghee Park <i4u_4ever@yahoo.com>\n" "Language-Team: LANGUAGE <walter@sugarlabs.org>\n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 1.2.1\n" +"X-Generator: Poedit 1.5.7\n" #. TRANS: "name" option from activity.info file msgid "TurtleBlocks" @@ -86,7 +85,7 @@ msgstr "도" #: TurtleArt/tabasics.py:182 msgid "radius" -msgstr "라디우스" +msgstr "반지름" #: TurtleArt/tabasics.py:186 msgid "moves turtle along an arc" @@ -177,7 +176,7 @@ msgstr "" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:1194 #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:1199 msgid "gray" -msgstr "" +msgstr "회색" #: TurtleArt/tabasics.py:309 msgid "set color" @@ -197,7 +196,7 @@ msgstr "" #: TurtleArt/tabasics.py:333 msgid "set gray" -msgstr "" +msgstr "회색으로 설정" #: TurtleArt/tabasics.py:336 msgid "sets gray level of the line drawn by the turtle" @@ -241,7 +240,7 @@ msgstr "" #: TurtleArt/tabasics.py:404 msgid "start fill" -msgstr "" +msgstr "채우기 시작" #: TurtleArt/tabasics.py:406 msgid "starts filled polygon (used with end fill block)" @@ -249,7 +248,7 @@ msgstr "" #: TurtleArt/tabasics.py:413 msgid "end fill" -msgstr "" +msgstr "채우기 끝" #: TurtleArt/tabasics.py:415 msgid "completes filled polygon (used with start fill block)" @@ -269,35 +268,35 @@ msgstr "" #: TurtleArt/tabasics.py:439 msgid "red" -msgstr "" +msgstr "빨간색" #: TurtleArt/tabasics.py:440 msgid "orange" -msgstr "" +msgstr "오렌지색" #: TurtleArt/tabasics.py:442 msgid "yellow" -msgstr "" +msgstr "노란색" #: TurtleArt/tabasics.py:444 msgid "green" -msgstr "" +msgstr "초록색" #: TurtleArt/tabasics.py:445 msgid "cyan" -msgstr "" +msgstr "사이안색" #: TurtleArt/tabasics.py:446 msgid "blue" -msgstr "" +msgstr "파란색" #: TurtleArt/tabasics.py:447 msgid "purple" -msgstr "" +msgstr "보라색" #: TurtleArt/tabasics.py:449 msgid "white" -msgstr "" +msgstr "하얀색" #: TurtleArt/tabasics.py:450 #, fuzzy @@ -497,7 +496,7 @@ msgstr "이면" #: TurtleArt/tabasics.py:775 msgid "if then" -msgstr "" +msgstr "만약" #: TurtleArt/tabasics.py:777 msgid "if-then operator that uses boolean operators from Numbers palette" @@ -509,7 +508,7 @@ msgstr "아니면" #: TurtleArt/tabasics.py:789 TurtleArt/tabasics.py:797 msgid "if then else" -msgstr "" +msgstr "그 외" #: TurtleArt/tabasics.py:790 TurtleArt/tabasics.py:798 msgid "if-then-else operator that uses boolean operators from Numbers palette" @@ -533,7 +532,7 @@ msgstr "" #: TurtleArt/tabasics.py:822 msgid "stop action" -msgstr "" +msgstr "멈춤" #: TurtleArt/tabasics.py:825 msgid "stops current action" @@ -573,7 +572,7 @@ msgstr "" #: TurtleArt/tawindow.py:1461 TurtleArt/tawindow.py:2077 #: TurtleArt/tawindow.py:4363 msgid "action" -msgstr "" +msgstr "행동" #: TurtleArt/tabasics.py:861 msgid "top of nameable action stack" @@ -617,7 +616,7 @@ msgstr "" #: TurtleArt/tabasics.py:924 TurtleArt/tawindow.py:4427 msgid "store in" -msgstr "" +msgstr "담기" #: TurtleArt/tabasics.py:924 TurtleArt/tabasics.py:939 msgid "box" @@ -625,7 +624,7 @@ msgstr "상자" #: TurtleArt/tabasics.py:924 TurtleArt/tawindow.py:4427 msgid "value" -msgstr "" +msgstr "물체" #: TurtleArt/tabasics.py:928 TurtleArt/tabasics.py:942 #: TurtleArt/tawindow.py:1355 TurtleArt/tawindow.py:1486 @@ -1128,7 +1127,7 @@ msgstr "" #: plugins/accelerometer/accelerometer.py:56 #: plugins/accelerometer/accelerometer.py:63 msgid "acceleration" -msgstr "" +msgstr "가속도" #: plugins/accelerometer/accelerometer.py:58 #: plugins/accelerometer/accelerometer.py:65 @@ -1148,7 +1147,7 @@ msgstr "" #: plugins/audio_sensors/audio_sensors.py:90 #: plugins/audio_sensors/audio_sensors.py:105 msgid "loudness" -msgstr "" +msgstr "소리크기" #: plugins/audio_sensors/audio_sensors.py:91 #: plugins/audio_sensors/audio_sensors.py:106 @@ -1206,7 +1205,7 @@ msgstr "" #: plugins/light_sensor/light_sensor.py:56 #: plugins/light_sensor/light_sensor.py:63 msgid "brightness" -msgstr "" +msgstr "밝기" #: plugins/camera_sensor/camera_sensor.py:82 #: plugins/camera_sensor/camera_sensor.py:130 @@ -1242,7 +1241,7 @@ msgstr "" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:109 #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:112 msgid "while" -msgstr "" +msgstr "하는 동안" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:113 msgid "do-while-True operator that uses boolean operators from Numbers palette" @@ -1251,7 +1250,7 @@ msgstr "" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:119 #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:122 msgid "until" -msgstr "" +msgstr "할 때 까지" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:123 msgid "do-until-True operator that uses boolean operators from Numbers palette" @@ -1303,7 +1302,7 @@ msgstr "" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:200 #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:228 msgid "show" -msgstr "" +msgstr "보이기" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:204 #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:217 @@ -1417,7 +1416,7 @@ msgstr "" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:343 #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:354 msgid "button down" -msgstr "" +msgstr "마우스 누름" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:346 msgid "returns 1 if mouse button is pressed" @@ -1429,7 +1428,7 @@ msgstr "" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:364 msgid "mouse x" -msgstr "" +msgstr "마우스 가로 위치" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:367 msgid "returns mouse x coordinate" @@ -1437,7 +1436,7 @@ msgstr "" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:374 msgid "mouse y" -msgstr "" +msgstr "마우스 세로 위치" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:377 msgid "returns mouse y coordinate" @@ -1462,7 +1461,7 @@ msgstr "" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:430 msgid "read pixel" -msgstr "" +msgstr "색 확인" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:433 msgid "RGB color under the turtle is pushed to the stack" @@ -1470,7 +1469,7 @@ msgstr "" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:441 msgid "turtle sees" -msgstr "" +msgstr "거북이가 보는 색깔" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:443 msgid "returns the color that the turtle \"sees\"" @@ -1478,7 +1477,7 @@ msgstr "" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:451 msgid "time" -msgstr "" +msgstr "시간" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:454 msgid "elapsed time (in seconds) since program started" @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-07-26 00:31-0400\n" -"PO-Revision-Date: 2013-08-07 00:34+0200\n" +"PO-Revision-Date: 2013-08-07 03:02+0200\n" "Last-Translator: Irma <sankaypillo@gmail.com>\n" "Language-Team: Voluntarios Quechua Sugar\n" "Language: quz\n" @@ -319,9 +319,8 @@ msgstr "Charapa puriptinqa chapipuni siq'ichanqa." # "bajar pluma" #: TurtleArt/tabasics.py:443 -#, fuzzy msgid "pen down?" -msgstr "qillqanata urayachiy" +msgstr "qillqanata urayachinki?" #: TurtleArt/tabasics.py:445 msgid "returns True if pen is down" @@ -1230,9 +1229,8 @@ msgstr "Pythonta wicharichiy" # [ES] "paleta" #: TurtleArtActivity.py:933 -#, fuzzy msgid "Palettes" -msgstr "llimp'ikunap marun" +msgstr "Llimp'ikunap marun" # "Compartir bloques deshabilitado" #: TurtleArtActivity.py:951 @@ -2062,7 +2060,7 @@ msgstr "Llamk'aq Charapa" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:686 msgid "the name of the active turtle" -msgstr "" +msgstr "Charapa llamk'aqpa sutin" # "caparazón de la tortuga" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:696 @@ -2253,30 +2251,32 @@ msgstr "uraypi Y" #: plugins/turtle_blocks_extras/turtle_blocks_extras.py:968 msgid "Palette of user-defined operators" -msgstr "" +msgstr "Haykuqmasi churasqan llamk'anapaq maru" #: pysamples/brain.py:43 msgid "Please install the Speak Activity and try again." -msgstr "" +msgstr "Mira, churariy Rimay ruwanata, chaymantaqa wakmanta ruwariy." #: pysamples/brain.py:52 msgid "Spanish" -msgstr "" +msgstr "Español simi" #: pysamples/brain.py:56 pysamples/brain.py:69 pysamples/brain.py:71 #: pysamples/brain.py:77 msgid "English" -msgstr "" +msgstr "Inglés simi" #: pysamples/brain.py:88 msgid "Sorry, I can't understand what you are asking about." -msgstr "" +msgstr "Pampachaway mana yachachkanichu tapuwasqaykitaqa." #: pysamples/brain.py:97 msgid "" "Sorry, there is no free memory to load my brain. Close other activities and " "try once more." msgstr "" +"Pampachaway, umachayqa hunt'añam kachkan. Huk ruwanakunata wisq'ay, ichaqa " +"wakmanta qhallariwaq." # [ES] "empujar el valor rgb de destino a la pila" #: pysamples/forward_push.py:48 @@ -2310,7 +2310,7 @@ msgstr "U hinata muyuchiy" #: pysamples/uturn.py:37 msgid "turns the turtle 180 degrees" -msgstr "" +msgstr "charapachata 180 grados nisqata muyurichiy" # "el uso es" #: turtleblocks.py:91 @@ -2340,11 +2340,11 @@ msgstr "Musuq" #: turtleblocks.py:376 msgid "Show sample projects" -msgstr "" +msgstr "Huk wakichinakunata qhawarichiy" #: turtleblocks.py:378 msgid "Hide sample projects" -msgstr "" +msgstr "Wakichinakunata pakariy" # "Guardar" #: turtleblocks.py:382 @@ -2398,7 +2398,7 @@ msgstr "Charapa" #: turtleblocks.py:436 msgid "About..." -msgstr "" +msgstr "Kaymanta..." # "Hay trabajo sin guardar. ¿Le gustaría guardar antes de salir?" #: turtleblocks.py:475 diff --git a/samples/graphics-grid.tb b/samples/graphics-grid.tb new file mode 100644 index 0000000..03235d8 --- /dev/null +++ b/samples/graphics-grid.tb @@ -0,0 +1,161 @@ +[[0, ["start", 2.0], 0, 180, [null, 32]], +[1, ["repeat", 21], 1240, 276, [11, 2, 8, 12]], +[2, ["number", 4], 1299, 276, [1, null]], +[3, ["storein", 0], 640, 514, [118, 4, 5, 57]], +[4, ["string", "side"], 708, 514, [3, null]], +[5, ["number", 24], 708, 556, [3, null]], +[6, "box", 1329, 318, [8, 7, null]], +[7, ["string", "side"], 1384, 318, [6, null]], +[8, "forward", 1258, 318, [1, 6, 9]], +[9, "right", 1258, 360, [8, 10, null]], +[10, ["number", 90], 1316, 360, [9, null]], +[11, "startfill", 1240, 234, [13, 1]], +[12, "stopfill", 1240, 420, [1, null]], +[13, "hat", 1240, 180, [null, 14, 11]], +[14, ["string", "square"], 1298, 192, [13, null]], +[15, "stack", 36, 1016, [80, 16, 49]], +[16, ["string", "square"], 94, 1016, [15, null]], +[17, ["repeat", 105], 18, 806, [47, 27, 48, 51]], +[18, "seth", 36, 890, [48, 19, 22]], +[19, ["random", 0], 94, 890, [18, 20, 21, null]], +[20, ["number", -15], 180, 890, [19, null]], +[21, ["number", 15], 180, 932, [19, null]], +[22, ["vspace", 0], 36, 932, [18, 80]], +[23, ["repeat", 177], 0, 722, [132, 26, 47, null]], +[24, "width", 147, 806, [27, null]], +[25, "height", 129, 722, [26, null]], +[26, ["division2", 0], 59, 722, [23, 25, 28]], +[27, ["division2", 0], 77, 806, [17, 24, 30]], +[28, "box", 153, 764, [26, 29, null]], +[29, ["string", "grid spacing"], 208, 764, [28, null]], +[30, "box", 171, 848, [27, 31, null]], +[31, ["string", "grid spacing"], 226, 848, [30, null]], +[32, ["storein", 0], 0, 226, [0, 33, 34, 122]], +[33, ["string", "grid spacing"], 68, 226, [32, null]], +[34, ["number", 32], 68, 268, [32, null]], +[35, ["setxy2", 20], 1240, 856, [65, 38, 42, 66]], +[36, "xcor", 1352, 856, [38, null]], +[37, "ycor", 1352, 658, [39, null]], +[38, ["plus2", 0], 1298, 856, [35, 36, 55]], +[39, ["plus2", 0], 1298, 658, [40, 37, 53]], +[40, ["setxy2", 20], 1240, 576, [63, 62, 39, 64]], +[41, "leftpos", 1352, 576, [62, null]], +[42, "ycor", 1298, 938, [35, null]], +[43, "hat", 1240, 760, [null, 44, 65]], +[44, ["string", "inc x"], 1298, 772, [43, null]], +[45, "hat", 1240, 480, [null, 46, 63]], +[46, ["string", "inc y"], 1298, 492, [45, null]], +[47, ["vspace", 0], 18, 764, [23, 17]], +[48, ["vspace", 0], 36, 848, [17, 18]], +[49, "stack", 36, 1058, [15, 50, null]], +[50, ["string", "inc x"], 94, 1058, [49, null]], +[51, "stack", 18, 1118, [17, 52, null]], +[52, ["string", "inc y"], 76, 1118, [51, null]], +[53, "box", 1352, 700, [39, 54, null]], +[54, ["string", "grid spacing"], 1407, 700, [53, null]], +[55, "box", 1352, 898, [38, 56, null]], +[56, ["string", "grid spacing"], 1407, 898, [55, null]], +[57, ["storein", 0], 640, 598, [3, 58, 59, 138]], +[58, ["string", "offset"], 708, 598, [57, null]], +[59, ["number", 4], 708, 640, [57, null]], +[60, "box", 1352, 618, [62, 61, null]], +[61, ["string", "offset"], 1407, 618, [60, null]], +[62, ["plus2", 0], 1298, 576, [40, 41, 60]], +[63, "penup", 1240, 534, [45, 40]], +[64, "pendown", 1240, 700, [40, null]], +[65, "penup", 1240, 814, [43, 35]], +[66, "pendown", 1240, 980, [35, null]], +[67, "setcolor", 300, 276, [69, 71, 74]], +[68, "setgray", 300, 360, [74, 77, null]], +[69, "setshade", 300, 234, [75, 70, 67]], +[70, ["number", 50], 385, 234, [69, null]], +[71, ["random", 0], 377, 276, [67, 72, 73, null]], +[72, ["number", 5], 463, 276, [71, null]], +[73, ["number", 15], 463, 318, [71, null]], +[74, ["vspace", 0], 300, 318, [67, 68]], +[75, "hat", 300, 180, [null, 76, 69]], +[76, ["string", "color 1"], 358, 192, [75, null]], +[77, ["random", 0], 373, 360, [68, 78, 79, null]], +[78, ["number", 80], 459, 360, [77, null]], +[79, ["number", 100], 459, 402, [77, null]], +[80, "stack", 36, 974, [22, 92, 15]], +[81, ["string", "color 1"], 368, 724, [90, null]], +[82, "hat", 0, 460, [null, 83, 128]], +[83, ["string", "grid"], 58, 472, [82, null]], +[84, "hat", 940, 180, [null, 85, 94]], +[85, ["string", "color 3"], 998, 192, [84, null]], +[86, "hat", 620, 180, [null, 87, 105]], +[87, ["string", "color 2"], 678, 192, [86, null]], +[88, "stack", 300, 766, [90, 89, null]], +[89, ["string", "grid"], 358, 766, [88, null]], +[90, ["storein", 0], 300, 682, [152, 91, 81, 88]], +[91, ["string", "color scheme"], 368, 682, [90, null]], +[92, "box", 94, 974, [80, 93, null]], +[93, ["string", "color scheme"], 149, 974, [92, null]], +[94, "setshade", 940, 234, [84, 95, 96]], +[95, ["number", 50], 1025, 234, [94, null]], +[96, "setcolor", 940, 276, [94, 97, 100]], +[97, ["random", 0], 1017, 276, [96, 98, 99, null]], +[98, ["number", 10], 1103, 276, [97, null]], +[99, ["number", 20], 1103, 318, [97, null]], +[100, ["vspace", 0], 940, 318, [96, 101]], +[101, "setgray", 940, 360, [100, 102, null]], +[102, ["random", 0], 1013, 360, [101, 103, 104, null]], +[103, ["number", 80], 1099, 360, [102, null]], +[104, ["number", 100], 1099, 402, [102, null]], +[105, "setshade", 620, 234, [86, 106, 107]], +[106, ["number", 40], 705, 234, [105, null]], +[107, "setcolor", 620, 276, [105, 108, 111]], +[108, ["random", 0], 697, 276, [107, 109, 110, null]], +[109, ["number", 35], 783, 276, [108, null]], +[110, ["number", 65], 783, 318, [108, null]], +[111, ["vspace", 0], 620, 318, [107, 112]], +[112, "setgray", 620, 360, [111, 113, null]], +[113, ["random", 0], 693, 360, [112, 114, 115, null]], +[114, ["number", 80], 779, 360, [113, null]], +[115, ["number", 100], 779, 402, [113, null]], +[116, "hat", 300, 460, [null, 117, 149]], +[117, ["string", "grid 1"], 358, 472, [116, null]], +[118, "hat", 640, 460, [null, 119, 3]], +[119, ["string", "grid 2"], 698, 472, [118, null]], +[120, "hat", 940, 460, [null, 121, 143]], +[121, ["string", "grid 3"], 998, 472, [120, null]], +[122, "stack", 0, 310, [32, 123, 124]], +[123, ["string", "grid 1"], 58, 310, [122, null]], +[124, "stack", 0, 352, [122, 125, 126]], +[125, ["string", "grid 2"], 58, 352, [124, null]], +[126, "stack", 0, 394, [124, 127, null]], +[127, ["string", "grid 3"], 58, 394, [126, null]], +[128, "penup", 0, 514, [82, 129]], +[129, ["setxy2", 20], 0, 556, [128, 155, 156, 132]], +[130, "leftpos", 112, 556, [155, null]], +[131, "bottompos", 112, 638, [156, null]], +[132, "pendown", 0, 680, [129, 23]], +[133, ["storein", 0], 940, 682, [146, 134, 135, 136]], +[134, ["string", "color scheme"], 1008, 682, [133, null]], +[135, ["string", "color 3"], 1008, 724, [133, null]], +[136, "stack", 940, 766, [133, 137, null]], +[137, ["string", "grid"], 998, 766, [136, null]], +[138, ["storein", 0], 640, 682, [57, 139, 140, 141]], +[139, ["string", "color scheme"], 708, 682, [138, null]], +[140, ["string", "color 2"], 708, 724, [138, null]], +[141, "stack", 640, 766, [138, 142, null]], +[142, ["string", "grid"], 698, 766, [141, null]], +[143, ["storein", 0], 940, 514, [120, 144, 145, 146]], +[144, ["string", "side"], 1008, 514, [143, null]], +[145, ["number", 16], 1008, 556, [143, null]], +[146, ["storein", 0], 940, 598, [143, 147, 148, 133]], +[147, ["string", "offset"], 1008, 598, [146, null]], +[148, ["number", 8], 1008, 640, [146, null]], +[149, ["storein", 0], 300, 514, [116, 150, 151, 152]], +[150, ["string", "side"], 368, 514, [149, null]], +[151, ["number", 32], 368, 556, [149, null]], +[152, ["storein", 0], 300, 598, [149, 153, 154, 90]], +[153, ["string", "offset"], 368, 598, [152, null]], +[154, ["number", 0], 368, 640, [152, null]], +[155, ["plus2", 0], 58, 556, [129, 130, 157]], +[156, ["plus2", 0], 58, 638, [129, 131, 159]], +[157, "box", 112, 598, [155, 158, null]], +[158, ["string", "offset"], 167, 598, [157, null]], +[159, "box", 112, 680, [156, 160, null]], +[160, ["string", "offset"], 167, 680, [159, null]]] diff --git a/samples/graphics-op-art-2.ta b/samples/graphics-op-art-2.ta new file mode 100644 index 0000000..6f44202 --- /dev/null +++ b/samples/graphics-op-art-2.ta @@ -0,0 +1,83 @@ +[[0, ["start", 2.0], 180, 180, [null, 79]], +[1, "hat", 560, 180, [null, 2, 3]], +[2, ["string", "square"], 618, 192, [1, null]], +[3, "startfill", 560, 234, [1, 8]], +[4, "stopfill", 560, 420, [8, 81]], +[5, "forward", 578, 318, [8, 13, 6]], +[6, "right", 578, 360, [5, 7, null]], +[7, ["number", 90], 636, 360, [6, null]], +[8, ["repeat", 21], 560, 276, [3, 9, 5, 4]], +[9, ["number", 4], 619, 276, [8, null]], +[10, ["storein", 0], 180, 268, [79, 11, 12, 73]], +[11, ["string", "size"], 248, 268, [10, null]], +[12, ["number", 50.0], 248, 310, [10, null]], +[13, "box", 649, 318, [5, 14, null]], +[14, ["string", "size"], 704, 318, [13, null]], +[15, ["repeat", 21], 560, 504, [81, 16, 17, 47]], +[16, ["number", 4], 619, 504, [15, null]], +[17, "forward", 578, 546, [15, 18, 20]], +[18, "box", 649, 546, [17, 19, null]], +[19, ["string", "size"], 704, 546, [18, null]], +[20, "right", 578, 588, [17, 21, null]], +[21, ["number", 90], 636, 588, [20, null]], +[22, "yellow", 293, 1018, [42, null]], +[23, "blue", 293, 934, [41, null]], +[24, ["random", 0], 353, 646, [37, 25, 26, null]], +[25, ["number", 0], 439, 646, [24, null]], +[26, "box", 439, 688, [24, 27, null]], +[27, ["string", "size"], 494, 688, [26, null]], +[28, ["repeat", 342], 180, 520, [74, 67, 39, null]], +[29, ["repeat", 124], 198, 770, [40, 56, 34, 64]], +[30, "width", 451, 812, [31, null]], +[31, ["division2", 0], 381, 812, [55, 30, 32]], +[32, "box", 475, 854, [31, 33, null]], +[33, ["string", "size"], 530, 854, [32, null]], +[34, ["vspace", 40], 216, 812, [29, 41]], +[35, ["setxy2", 20], 198, 604, [39, 37, 36, 40]], +[36, "ycor", 256, 686, [35, null]], +[37, ["minus2", 0], 256, 604, [35, 38, 24]], +[38, "leftpos", 329, 604, [37, null]], +[39, "penup", 198, 562, [28, 35]], +[40, "pendown", 198, 728, [35, 29]], +[41, "setcolor", 216, 934, [34, 23, 43]], +[42, "setcolor", 216, 1018, [43, 22, 45]], +[43, "stack", 216, 976, [41, 44, 42]], +[44, ["string", "square"], 274, 976, [43, null]], +[45, "stack", 216, 1060, [42, 46, null]], +[46, ["string", "square"], 274, 1060, [45, null]], +[47, "penup", 560, 648, [15, 49]], +[48, "pendown", 560, 814, [49, null]], +[49, ["setxy2", 20], 560, 690, [47, 52, 50, 48]], +[50, "ycor", 618, 772, [49, null]], +[51, "xcor", 672, 690, [52, null]], +[52, ["plus2", 0], 618, 690, [49, 51, 53]], +[53, "box", 672, 732, [52, 54, null]], +[54, ["string", "size"], 727, 732, [53, null]], +[55, ["division2", 20], 311, 812, [56, 31, 58]], +[56, ["plus2", 0], 257, 770, [29, 57, 55]], +[57, ["number", 2.0], 311, 770, [56, null]], +[58, ["number", 2.0], 405, 894, [55, null]], +[59, ["setxy2", 0], 198, 1162, [64, 61, 75, 65]], +[60, "ycor", 329, 1204, [75, null]], +[61, "leftpos", 256, 1162, [59, null]], +[62, "box", 353, 1246, [75, 63, null]], +[63, ["string", "size"], 408, 1246, [62, null]], +[64, "penup", 198, 1120, [29, 59]], +[65, "pendown", 198, 1246, [59, null]], +[66, "height", 309, 520, [67, null]], +[67, ["division2", 0], 239, 520, [28, 66, 68]], +[68, "box", 333, 562, [67, 69, null]], +[69, ["string", "size"], 388, 562, [68, null]], +[70, ["setxy2", 0], 180, 394, [73, 71, 76, 74]], +[71, "leftpos", 238, 394, [70, null]], +[72, "toppos", 311, 436, [76, null]], +[73, "penup", 180, 352, [10, 70]], +[74, "pendown", 180, 478, [70, 28]], +[75, ["minus2", 0], 256, 1204, [59, 60, 62]], +[76, ["minus2", 0], 238, 436, [70, 72, 77]], +[77, "box", 335, 478, [76, 78, null]], +[78, ["string", "size"], 390, 478, [77, null]], +[79, "setpensize", 180, 226, [0, 80, 10]], +[80, ["number", 3.0], 282, 226, [79, null]], +[81, "setgray", 560, 462, [4, 82, 15]], +[82, ["number", 0.0], 633, 462, [81, null]]] diff --git a/samples/media-music-dots.tb b/samples/media-music-dots.tb new file mode 100644 index 0000000..19397e8 --- /dev/null +++ b/samples/media-music-dots.tb @@ -0,0 +1,61 @@ +[[0, ["start", 2.0], 160, 200, [null, 42]], +[1, ["until", 63], 600, 254, [38, 22, 25, 46]], +[2, ["forever", 230], 160, 288, [42, 40, null]], +[3, "sinewave", 178, 656, [20, 36, 10, 4, 11]], +[4, ["number", 0.33], 258, 740, [3, null]], +[5, ["product2", 0], 392, 698, [10, 6, 7]], +[6, ["number", 10000], 446, 698, [5, null]], +[7, ["division2", 0], 446, 740, [5, 8, 34]], +[8, ["number", 2093], 516, 740, [7, null]], +[9, ["vspace", 20], 178, 532, [32, 20]], +[10, ["identity2", 40], 258, 698, [3, 5]], +[11, "wait", 178, 782, [3, 12, null]], +[12, ["number", 0.33], 236, 782, [11, null]], +[13, ["number", 1.06], 326, 532, [16, null]], +[14, "comment", 178, 406, [18, 15, 32]], +[15, ["string", "2^^(1/12) is factor between half-steps"], 261, 406, [14, null]], +[16, ["myfunc2arg", 0], 246, 490, [32, 17, 13, 30, null]], +[17, ["string", "130.81 * pow(x, y)"], 326, 490, [16, null]], +[18, "comment", 178, 364, [40, 19, 14]], +[19, ["string", "130.81 Hz is Low C"], 261, 364, [18, null]], +[20, "comment", 178, 614, [9, 21, 3]], +[21, ["string", "normalize volume by frequency"], 261, 614, [20, null]], +[22, "mousebutton2", 656, 270, [1, null]], +[23, "mousex", 676, 362, [27, null]], +[24, "mousey", 676, 404, [27, null]], +[25, "penup", 618, 320, [1, 27]], +[26, "pendown", 618, 446, [27, null]], +[27, ["setxy2", 0], 618, 362, [25, 23, 24, 26]], +[28, ["storein", 0], 600, 632, [44, 29, 52, null]], +[29, ["string", "note"], 668, 632, [28, null]], +[30, "box", 326, 574, [16, 31, null]], +[31, ["string", "note"], 381, 574, [30, null]], +[32, ["storein", 0], 178, 448, [14, 33, 16, 9]], +[33, ["string", "frequency"], 246, 448, [32, null]], +[34, "box", 540, 782, [7, 35, null]], +[35, ["string", "frequency"], 595, 782, [34, null]], +[36, "box", 258, 656, [3, 37, null]], +[37, ["string", "frequency"], 313, 656, [36, null]], +[38, "hat", 600, 200, [null, 39, 1]], +[39, ["string", "play"], 658, 212, [38, null]], +[40, "stack", 178, 322, [2, 41, 18]], +[41, ["string", "play"], 236, 322, [40, null]], +[42, "setpensize", 160, 246, [0, 43, 2]], +[43, ["number", 50.0], 262, 246, [42, null]], +[44, "forward", 600, 590, [50, 45, 28]], +[45, ["number", 1.0], 671, 590, [44, null]], +[46, "setcolor", 600, 506, [1, 47, 50]], +[47, ["random", 0], 677, 506, [46, 48, 49, null]], +[48, ["number", 0], 763, 506, [47, null]], +[49, ["number", 100], 763, 548, [47, null]], +[50, ["vspace", 0], 600, 548, [46, 44]], +[51, "xcor", 846, 674, [55, null]], +[52, "int", 668, 674, [28, 54]], +[53, ["number", 12.0], 910, 838, [56, null]], +[54, ["division2", 40], 722, 674, [52, 55, 56]], +[55, ["plus2", 0], 792, 674, [54, 51, 59]], +[56, ["division2", 0], 816, 796, [54, 57, 53]], +[57, "width", 886, 796, [56, null]], +[58, "width", 916, 716, [59, null]], +[59, ["division2", 0], 846, 716, [55, 58, 60]], +[60, ["number", 2.0], 940, 758, [59, null]]] diff --git a/samples/media-music-keyboard.tb b/samples/media-music-keyboard.tb new file mode 100644 index 0000000..a525d33 --- /dev/null +++ b/samples/media-music-keyboard.tb @@ -0,0 +1,130 @@ +[[0, ["start", 2.0], 160, 200, [null, 110]], +[1, ["until", 63], 600, 254, [38, 22, 25, 28]], +[2, ["forever", 230], 160, 330, [112, 40, null]], +[3, "sinewave", 178, 698, [20, 36, 10, 4, 11]], +[4, ["number", 0.33], 258, 782, [3, null]], +[5, ["product2", 0], 392, 740, [10, 6, 7]], +[6, ["number", 10000], 446, 740, [5, null]], +[7, ["division2", 0], 446, 782, [5, 8, 34]], +[8, ["number", 2093], 516, 782, [7, null]], +[9, ["vspace", 20], 178, 574, [32, 20]], +[10, ["identity2", 40], 258, 740, [3, 5]], +[11, "wait", 178, 824, [3, 12, null]], +[12, ["number", 0.33], 236, 824, [11, null]], +[13, ["number", 1.06], 326, 574, [16, null]], +[14, "comment", 178, 448, [18, 15, 32]], +[15, ["string", "2^^(1/12) is factor between half-steps"], 261, 448, [14, null]], +[16, ["myfunc2arg", 0], 246, 532, [32, 17, 13, 30, null]], +[17, ["string", "130.81 * pow(x, y)"], 326, 532, [16, null]], +[18, "comment", 178, 406, [40, 19, 14]], +[19, ["string", "130.81 Hz is Low C"], 261, 406, [18, null]], +[20, "comment", 178, 656, [9, 21, 3]], +[21, ["string", "normalize volume by frequency"], 261, 656, [20, null]], +[22, "mousebutton2", 656, 270, [1, null]], +[23, "mousex", 676, 362, [27, null]], +[24, "mousey", 676, 404, [27, null]], +[25, "penup", 618, 320, [1, 27]], +[26, "pendown", 618, 446, [27, null]], +[27, ["setxy2", 0], 618, 362, [25, 23, 24, 26]], +[28, ["storein", 0], 600, 506, [1, 29, 82, null]], +[29, ["string", "note"], 668, 506, [28, null]], +[30, "box", 326, 616, [16, 31, null]], +[31, ["string", "note"], 381, 616, [30, null]], +[32, ["storein", 0], 178, 490, [14, 33, 16, 9]], +[33, ["string", "frequency"], 246, 490, [32, null]], +[34, "box", 540, 824, [7, 35, null]], +[35, ["string", "frequency"], 595, 824, [34, null]], +[36, "box", 258, 698, [3, 37, null]], +[37, ["string", "frequency"], 313, 698, [36, null]], +[38, "hat", 600, 200, [null, 39, 1]], +[39, ["string", "paint"], 658, 212, [38, null]], +[40, "stack", 178, 364, [2, 41, 18]], +[41, ["string", "paint"], 236, 364, [40, null]], +[42, ["repeat", 229], 853, 421, [58, 43, 44, 48]], +[43, ["number", 8], 912, 421, [42, null]], +[44, "penup", 871, 463, [42, 50]], +[45, "pendown", 871, 589, [50, 86]], +[46, "hat", 1431, 128, [null, 47, 67]], +[47, ["string", "white key"], 1489, 140, [46, null]], +[48, "setcolor", 853, 981, [42, 49, 87]], +[49, "black", 930, 981, [48, null]], +[50, ["setxy2", 0], 871, 505, [44, 59, 53, 45]], +[51, "stack", 871, 715, [80, 52, 81]], +[52, ["string", "white key"], 929, 715, [51, null]], +[53, "bottompos", 929, 547, [50, null]], +[54, "leftpos", 911, 295, [56, null]], +[55, "bottompos", 911, 337, [56, null]], +[56, ["setxy2", 0], 853, 295, [57, 54, 55, 58]], +[57, "penup", 853, 253, [83, 56]], +[58, "pendown", 853, 379, [56, 42]], +[59, "xcor", 929, 505, [50, null]], +[60, ["setxy2", 40], 871, 799, [81, 63, 62, null]], +[61, "xcor", 983, 799, [63, null]], +[62, "ycor", 929, 921, [60, null]], +[63, ["plus2", 0], 929, 799, [60, 61, 65]], +[64, ["number", 8], 1077, 883, [65, null]], +[65, ["division2", 0], 983, 841, [63, 66, 64]], +[66, "width", 1053, 841, [65, null]], +[67, ["repeat", 84], 1431, 182, [46, 68, 69, null]], +[68, ["number", 2], 1490, 182, [67, null]], +[69, "forward", 1449, 224, [67, 70, 71]], +[70, "height", 1520, 224, [69, null]], +[71, "right", 1449, 266, [69, 72, 73]], +[72, ["number", 90], 1507, 266, [71, null]], +[73, "forward", 1449, 308, [71, 74, 77]], +[74, ["division2", 0], 1520, 308, [73, 75, 76]], +[75, "width", 1590, 308, [74, null]], +[76, ["number", 8], 1614, 350, [74, null]], +[77, ["vspace", 0], 1449, 350, [73, 78]], +[78, "right", 1449, 392, [77, 79, null]], +[79, ["number", 90], 1507, 392, [78, null]], +[80, "startfill", 871, 673, [86, 51]], +[81, "stopfill", 871, 757, [51, 60]], +[82, "see", 668, 548, [28, null]], +[83, "hat", 853, 199, [null, 84, 57]], +[84, ["string", "draw keyboard"], 911, 211, [83, null]], +[85, "pop", 948, 631, [86, null]], +[86, "setcolor", 871, 631, [45, 85, 80]], +[87, "penup", 853, 1023, [48, 88]], +[88, ["setxy2", 0], 853, 1065, [87, 89, 90, 91]], +[89, "leftpos", 911, 1065, [88, null]], +[90, "bottompos", 911, 1107, [88, null]], +[91, "pendown", 853, 1149, [88, 92]], +[92, ["repeat", 166], 853, 1191, [91, 93, 94, null]], +[93, ["number", 8], 912, 1191, [92, null]], +[94, "penup", 871, 1233, [92, 95]], +[95, ["setxy2", 0], 871, 1275, [94, 96, 97, 98]], +[96, "xcor", 929, 1275, [95, null]], +[97, "bottompos", 929, 1317, [95, null]], +[98, "pendown", 871, 1359, [95, 99]], +[99, "stack", 871, 1401, [98, 100, 101]], +[100, ["string", "white key"], 929, 1401, [99, null]], +[101, ["setxy2", 40], 871, 1443, [99, 102, 107, null]], +[102, ["plus2", 0], 929, 1443, [101, 103, 104]], +[103, "xcor", 983, 1443, [102, null]], +[104, ["division2", 0], 983, 1485, [102, 105, 106]], +[105, "width", 1053, 1485, [104, null]], +[106, ["number", 8], 1077, 1527, [104, null]], +[107, "ycor", 929, 1565, [101, null]], +[108, "hat", 1096, 195, [null, 109, 114]], +[109, ["string", "select notes"], 1154, 207, [108, null]], +[110, "stack", 160, 246, [0, 111, 112]], +[111, ["string", "select notes"], 218, 246, [110, null]], +[112, "stack", 160, 288, [110, 113, 2]], +[113, ["string", "draw keyboard"], 218, 288, [112, null]], +[114, "push", 1096, 249, [108, 115, 116]], +[115, ["number", 36.0], 1154, 249, [114, null]], +[116, "push", 1096, 291, [114, 117, 118]], +[117, ["number", 35.0], 1154, 291, [116, null]], +[118, "push", 1096, 333, [116, 119, 120]], +[119, ["number", 33.0], 1154, 333, [118, null]], +[120, "push", 1096, 375, [118, 121, 122]], +[121, ["number", 31.0], 1154, 375, [120, null]], +[122, "push", 1096, 417, [120, 123, 124]], +[123, ["number", 29.0], 1154, 417, [122, null]], +[124, "push", 1096, 459, [122, 125, 126]], +[125, ["number", 28.0], 1154, 459, [124, null]], +[126, "push", 1096, 501, [124, 127, 128]], +[127, ["number", 26.0], 1154, 501, [126, null]], +[128, "push", 1096, 543, [126, 129, null]], +[129, ["number", 24], 1154, 543, [128, null]]] diff --git a/samples/media-music.ta b/samples/media-music.ta deleted file mode 100644 index 13d952c..0000000 --- a/samples/media-music.ta +++ /dev/null @@ -1,179 +0,0 @@ -[[0, ["start", 2.0], 0, 0, [null, 11]], -[1, "until", 740, 544, [9, 2, 5, null]], -[2, ["greater2", 0], 778, 510, [1, 3, 4, null]], -[3, "keyboard", 824, 510, [2, null]], -[4, ["number", 0], 848, 552, [2, null]], -[5, "wait", 792, 612, [1, 6, 7]], -[6, ["number", 0.1], 850, 612, [5, null]], -[7, "kbinput", 792, 654, [5, null]], -[8, "forever", 0, 84, [11, 15, null]], -[9, ["vspace", 0], 740, 502, [14, 1]], -[10, "hat1", 740, 0, [null, 19]], -[11, "stack1", 0, 42, [0, 8]], -[12, "sinewave", 113, 502, [176, 69, 51, 13, 56]], -[13, ["number", 0.33], 193, 586, [12, null]], -[14, "hat2", 740, 460, [null, 9]], -[15, "stack2", 61, 102, [8, 74]], -[16, "repeat", 740, 84, [19, 17, 24, 18]], -[17, ["number", 256], 791, 84, [16, null]], -[18, ["vspace", 40], 740, 162, [16, 28]], -[19, "storeinbox1", 740, 42, [10, 20, 16]], -[20, ["number", 0], 858, 42, [19, null]], -[21, "box1", 977, 228, [27, null]], -[22, "storeinbox1", 805, 228, [24, 27, null]], -[23, ["number", 1], 977, 270, [27, null]], -[24, ["storein", 0], 805, 144, [16, 60, 25, 22]], -[25, ["number", 0], 873, 186, [24, null]], -[26, "box1", 927, 144, [60, null]], -[27, ["plus2", 0], 923, 228, [22, 21, 23]], -[28, "stack", 740, 284, [18, 29, 30]], -[29, ["string", "12345678"], 798, 284, [28, null]], -[30, "stack", 740, 326, [28, 31, 32]], -[31, ["string", "qwertyui"], 798, 326, [30, null]], -[32, "stack", 740, 368, [30, 33, 34]], -[33, ["string", "asdfghjk"], 798, 368, [32, null]], -[34, "stack", 740, 410, [32, 35, null]], -[35, ["string", "zxcvbnm,"], 798, 410, [34, null]], -[36, "hat", 480, 160, [null, 37, 124]], -[37, ["string", "qwertyui"], 538, 168, [36, null]], -[38, "hat", 480, 240, [null, 39, 150]], -[39, ["string", "12345678"], 538, 248, [38, null]], -[40, "hat", 480, 80, [null, 41, 98]], -[41, ["string", "asdfghjk"], 538, 88, [40, null]], -[42, "hat", 480, 0, [null, 43, 44]], -[43, ["string", "zxcvbnm,"], 538, 8, [42, null]], -[44, "sandwichtop_no_arm_no_label", 462, 50, [42, 71]], -[45, ["product2", 0], 327, 544, [51, 46, 47]], -[46, ["number", 10000], 381, 544, [45, null]], -[47, ["division2", 0], 381, 586, [45, 48, 68]], -[48, ["number", 2093], 435, 586, [47, null]], -[49, "if", 61, 392, [50, 52, 176, null]], -[50, ["vspace", 40], 61, 270, [66, 49]], -[51, ["identity2", 40], 193, 544, [12, 45]], -[52, ["greater2", 0], 99, 358, [49, 70, 53, null]], -[53, ["number", 0], 169, 400, [52, null]], -[54, "keyboard", 368, 312, [59, null]], -[55, "box", 259, 312, [64, 59, null]], -[56, "print", 113, 628, [12, 67, 57]], -[57, "wait", 113, 670, [56, 58, null]], -[58, ["number", 0.33], 171, 670, [57, null]], -[59, "chr", 314, 312, [55, 54]], -[60, "chr", 873, 144, [24, 26]], -[61, ["number", 1.059463094], 259, 270, [64, null]], -[62, "comment", 61, 186, [74, 63, 66]], -[63, ["string", "2^^(1/12) is factor between half-steps"], 144, 186, [62, null]], -[64, ["myfunc2arg", 0], 179, 228, [66, 65, 61, 55, null]], -[65, ["string", "130.81 * pow(x, y)"], 259, 228, [64, null]], -[66, "storeinbox2", 61, 228, [62, 64, 50]], -[67, "box2", 171, 628, [56, null]], -[68, "box2", 459, 628, [47, null]], -[69, "box2", 193, 502, [12, null]], -[70, "box2", 145, 358, [52, null]], -[71, ["storein", 0], 480, 84, [44, 72, 73, 76]], -[72, ["string", "z"], 548, 84, [71, null]], -[73, ["number", 0], 548, 126, [71, null]], -[74, "comment", 61, 144, [15, 75, 62]], -[75, ["string", "130.81 Hz is Low C"], 144, 144, [74, null]], -[76, ["storein", 0], 480, 168, [71, 77, 78, 79]], -[77, ["string", "x"], 548, 168, [76, null]], -[78, ["number", 2], 548, 210, [76, null]], -[79, ["storein", 0], 480, 252, [76, 80, 81, 82]], -[80, ["string", "c"], 548, 252, [79, null]], -[81, ["number", 4], 548, 294, [79, null]], -[82, ["storein", 0], 480, 336, [79, 83, 84, 85]], -[83, ["string", "v"], 548, 336, [82, null]], -[84, ["number", 5], 548, 378, [82, null]], -[85, ["storein", 0], 480, 420, [82, 86, 87, 88]], -[86, ["string", "b"], 548, 420, [85, null]], -[87, ["number", 7], 548, 462, [85, null]], -[88, ["storein", 0], 480, 504, [85, 89, 90, 91]], -[89, ["string", "n"], 548, 504, [88, null]], -[90, ["number", 9], 548, 546, [88, null]], -[91, ["storein", 0], 480, 588, [88, 92, 93, 94]], -[92, ["string", "m"], 548, 588, [91, null]], -[93, ["number", 11], 548, 630, [91, null]], -[94, ["storein", 0], 480, 672, [91, 95, 96, 97]], -[95, ["string", ","], 548, 672, [94, null]], -[96, ["number", 12], 548, 714, [94, null]], -[97, ["sandwichcollapsed", 1], 480, 84, [94, null]], -[98, "sandwichtop_no_arm_no_label", 462, 130, [40, 99]], -[99, ["storein", 0], 480, 164, [98, 100, 101, 102]], -[100, ["string", "a"], 548, 164, [99, null]], -[101, ["number", 12], 548, 206, [99, null]], -[102, ["storein", 0], 480, 248, [99, 103, 104, 105]], -[103, ["string", "s"], 548, 248, [102, null]], -[104, ["number", 14], 548, 290, [102, null]], -[105, ["storein", 0], 480, 332, [102, 106, 107, 108]], -[106, ["string", "d"], 548, 332, [105, null]], -[107, ["number", 16], 548, 374, [105, null]], -[108, ["storein", 0], 480, 416, [105, 109, 110, 111]], -[109, ["string", "f"], 548, 416, [108, null]], -[110, ["number", 17], 548, 458, [108, null]], -[111, ["storein", 0], 480, 500, [108, 112, 113, 114]], -[112, ["string", "g"], 548, 500, [111, null]], -[113, ["number", 19], 548, 542, [111, null]], -[114, ["storein", 0], 480, 584, [111, 115, 116, 117]], -[115, ["string", "h"], 548, 584, [114, null]], -[116, ["number", 21], 548, 626, [114, null]], -[117, ["storein", 0], 480, 668, [114, 118, 119, 120]], -[118, ["string", "j"], 548, 668, [117, null]], -[119, ["number", 23], 548, 710, [117, null]], -[120, ["storein", 0], 480, 752, [117, 121, 122, 123]], -[121, ["string", "k"], 548, 752, [120, null]], -[122, ["number", 24], 548, 794, [120, null]], -[123, ["sandwichcollapsed", 1], 480, 164, [120, null]], -[124, "sandwichtop_no_arm_no_label", 462, 210, [36, 125]], -[125, ["storein", 0], 480, 244, [124, 126, 127, 128]], -[126, ["string", "q"], 548, 244, [125, null]], -[127, ["number", 24], 548, 286, [125, null]], -[128, ["storein", 0], 480, 328, [125, 129, 130, 131]], -[129, ["string", "w"], 548, 328, [128, null]], -[130, ["number", 26], 548, 370, [128, null]], -[131, ["storein", 0], 480, 412, [128, 132, 133, 134]], -[132, ["string", "e"], 548, 412, [131, null]], -[133, ["number", 28], 548, 454, [131, null]], -[134, ["storein", 0], 480, 496, [131, 135, 136, 137]], -[135, ["string", "r"], 548, 496, [134, null]], -[136, ["number", 29], 548, 538, [134, null]], -[137, ["storein", 0], 480, 580, [134, 138, 139, 140]], -[138, ["string", "t"], 548, 580, [137, null]], -[139, ["number", 31], 548, 622, [137, null]], -[140, ["storein", 0], 480, 664, [137, 141, 142, 143]], -[141, ["string", "y"], 548, 664, [140, null]], -[142, ["number", 33], 548, 706, [140, null]], -[143, ["storein", 0], 480, 748, [140, 144, 145, 146]], -[144, ["string", "u"], 548, 748, [143, null]], -[145, ["number", 35], 548, 790, [143, null]], -[146, ["storein", 0], 480, 832, [143, 147, 148, 149]], -[147, ["string", "i"], 548, 832, [146, null]], -[148, ["number", 36], 548, 874, [146, null]], -[149, ["sandwichcollapsed", 1], 480, 244, [146, null]], -[150, "sandwichtop_no_arm_no_label", 462, 290, [38, 151]], -[151, ["storein", 0], 480, 324, [150, 152, 153, 154]], -[152, ["string", "1"], 548, 324, [151, null]], -[153, ["number", 36], 548, 366, [151, null]], -[154, ["storein", 0], 480, 408, [151, 155, 156, 157]], -[155, ["string", "2"], 548, 408, [154, null]], -[156, ["number", 38], 548, 450, [154, null]], -[157, ["storein", 0], 480, 492, [154, 158, 159, 160]], -[158, ["string", "3"], 548, 492, [157, null]], -[159, ["number", 40], 548, 534, [157, null]], -[160, ["storein", 0], 480, 576, [157, 161, 162, 163]], -[161, ["string", "4"], 548, 576, [160, null]], -[162, ["number", 41], 548, 618, [160, null]], -[163, ["storein", 0], 480, 660, [160, 164, 165, 166]], -[164, ["string", "5"], 548, 660, [163, null]], -[165, ["number", 43], 548, 702, [163, null]], -[166, ["storein", 0], 480, 744, [163, 167, 168, 169]], -[167, ["string", "6"], 548, 744, [166, null]], -[168, ["number", 45], 548, 786, [166, null]], -[169, ["storein", 0], 480, 828, [166, 170, 171, 172]], -[170, ["string", "7"], 548, 828, [169, null]], -[171, ["number", 47], 548, 870, [169, null]], -[172, ["storein", 0], 480, 912, [169, 173, 174, 175]], -[173, ["string", "8"], 548, 912, [172, null]], -[174, ["number", 48], 548, 954, [172, null]], -[175, ["sandwichcollapsed", 1], 480, 324, [172, null]], -[176, "comment", 113, 460, [49, 177, 12]], -[177, ["string", "normalize volume by frequency"], 196, 460, [176, null]]] - diff --git a/samples/media-music.tb b/samples/media-music.tb new file mode 100644 index 0000000..7aa39bf --- /dev/null +++ b/samples/media-music.tb @@ -0,0 +1,176 @@ +[[0, ["start", 2.0], 195, 195, [null, null]], +[1, "hat", 0, 0, [null, 175, 12]], +[2, ["until", 21], 740, 548, [10, 3, 6, null]], +[3, ["greater2", 0], 796, 514, [2, 4, 5, null]], +[4, "keyboard", 852, 514, [3, null]], +[5, ["number", 0], 876, 556, [3, null]], +[6, "wait", 758, 614, [2, 7, 8]], +[7, ["number", 0.1], 816, 614, [6, null]], +[8, "kbinput", 758, 656, [6, null]], +[9, ["forever", 292], 0, 96, [12, 16, null]], +[10, ["vspace", 0], 740, 506, [15, 2]], +[11, "hat1", 740, 0, [null, 20]], +[12, "stack1", 0, 54, [1, 9]], +[13, "sinewave", 36, 528, [173, 70, 52, 14, 57]], +[14, ["number", 0.33], 116, 612, [13, null]], +[15, "hat2", 740, 460, [null, 10]], +[16, "stack2", 18, 130, [9, 75]], +[17, ["repeat", 42], 740, 88, [20, 18, 25, 19]], +[18, ["number", 256], 799, 88, [17, null]], +[19, ["vspace", 40], 740, 274, [17, 29]], +[20, "storeinbox1", 740, 46, [11, 21, 17]], +[21, ["number", 0], 858, 46, [20, null]], +[22, "box1", 930, 214, [28, null]], +[23, "storeinbox1", 758, 214, [25, 28, null]], +[24, ["number", 1], 930, 256, [28, null]], +[25, ["storein", 0], 758, 130, [17, 61, 26, 23]], +[26, ["number", 0], 826, 172, [25, null]], +[27, "box1", 880, 130, [61, null]], +[28, ["plus2", 0], 876, 214, [23, 22, 24]], +[29, "stack", 740, 396, [19, 30, 31]], +[30, ["string", "12345678"], 798, 396, [29, null]], +[31, "stack", 740, 438, [29, 32, 33]], +[32, ["string", "qwertyui"], 798, 438, [31, null]], +[33, "stack", 740, 480, [31, 34, 35]], +[34, ["string", "asdfghjk"], 798, 480, [33, null]], +[35, "stack", 740, 522, [33, 36, null]], +[36, ["string", "zxcvbnm,"], 798, 522, [35, null]], +[37, "hat", 1028, 329, [null, 38, 123]], +[38, ["string", "qwertyui"], 1086, 341, [37, null]], +[39, "hat", 1083, 80, [null, 40, 148]], +[40, ["string", "12345678"], 1141, 92, [39, null]], +[41, "hat", 1096, 433, [null, 42, 98]], +[42, ["string", "asdfghjk"], 1154, 445, [41, null]], +[43, "hat", 1101, 202, [null, 44, 45]], +[44, ["string", "zxcvbnm,"], 1159, 214, [43, null]], +[45, "sandwichclampcollapsed", 1101, 256, [43, 72, null]], +[46, ["product2", 0], 250, 570, [52, 47, 48]], +[47, ["number", 10000], 304, 570, [46, null]], +[48, ["division2", 0], 304, 612, [46, 49, 69]], +[49, ["number", 2093], 374, 612, [48, null]], +[50, ["if", 105], 18, 420, [51, 53, 173, null]], +[51, ["vspace", 40], 18, 298, [67, 50]], +[52, ["identity2", 40], 116, 570, [13, 46]], +[53, ["greater2", 0], 74, 386, [50, 71, 54, null]], +[54, ["number", 0], 154, 428, [53, null]], +[55, "keyboard", 325, 340, [60, null]], +[56, "box", 216, 340, [65, 60, null]], +[57, "print", 36, 654, [13, 68, 58]], +[58, "wait", 36, 696, [57, 59, null]], +[59, ["number", 0.33], 94, 696, [58, null]], +[60, "chr", 271, 340, [56, 55]], +[61, "chr", 826, 130, [25, 27]], +[62, ["number", 1.06], 216, 298, [65, null]], +[63, "comment", 18, 214, [75, 64, 67]], +[64, ["string", "2^^(1/12) is factor between half-steps"], 101, 214, [63, null]], +[65, ["myfunc2arg", 0], 136, 256, [67, 66, 62, 56, null]], +[66, ["string", "130.81 * pow(x, y)"], 216, 256, [65, null]], +[67, "storeinbox2", 18, 256, [63, 65, 51]], +[68, "box2", 94, 654, [57, null]], +[69, "box2", 398, 654, [48, null]], +[70, "box2", 116, 528, [13, null]], +[71, "box2", 130, 386, [53, null]], +[72, ["storein", 0], 1119, 290, [45, 73, 74, 77]], +[73, ["string", "z"], 1187, 290, [72, null]], +[74, ["number", 0], 1187, 332, [72, null]], +[75, "comment", 18, 172, [16, 76, 63]], +[76, ["string", "130.81 Hz is Low C"], 101, 172, [75, null]], +[77, ["storein", 0], 1119, 374, [72, 78, 79, 80]], +[78, ["string", "x"], 1187, 374, [77, null]], +[79, ["number", 2], 1187, 416, [77, null]], +[80, ["storein", 0], 1119, 458, [77, 81, 82, 83]], +[81, ["string", "c"], 1187, 458, [80, null]], +[82, ["number", 4], 1187, 500, [80, null]], +[83, ["storein", 0], 1119, 542, [80, 84, 85, 86]], +[84, ["string", "v"], 1187, 542, [83, null]], +[85, ["number", 5], 1187, 584, [83, null]], +[86, ["storein", 0], 1119, 626, [83, 87, 88, 89]], +[87, ["string", "b"], 1187, 626, [86, null]], +[88, ["number", 7], 1187, 668, [86, null]], +[89, ["storein", 0], 1119, 710, [86, 90, 91, 92]], +[90, ["string", "n"], 1187, 710, [89, null]], +[91, ["number", 9], 1187, 752, [89, null]], +[92, ["storein", 0], 1119, 794, [89, 93, 94, 95]], +[93, ["string", "m"], 1187, 794, [92, null]], +[94, ["number", 11], 1187, 836, [92, null]], +[95, ["storein", 0], 1119, 878, [92, 96, 97, null]], +[96, ["string", ","], 1187, 878, [95, null]], +[97, ["number", 12], 1187, 920, [95, null]], +[98, "sandwichclampcollapsed", 1096, 487, [41, 99, null]], +[99, ["storein", 0], 1114, 521, [98, 100, 101, 102]], +[100, ["string", "a"], 1182, 521, [99, null]], +[101, ["number", 12], 1182, 563, [99, null]], +[102, ["storein", 0], 1114, 605, [99, 103, 104, 105]], +[103, ["string", "s"], 1182, 605, [102, null]], +[104, ["number", 14], 1182, 647, [102, null]], +[105, ["storein", 0], 1114, 689, [102, 106, 107, 108]], +[106, ["string", "d"], 1182, 689, [105, null]], +[107, ["number", 16], 1182, 731, [105, null]], +[108, ["storein", 0], 1114, 773, [105, 109, 110, 111]], +[109, ["string", "f"], 1182, 773, [108, null]], +[110, ["number", 17], 1182, 815, [108, null]], +[111, ["storein", 0], 1114, 857, [108, 112, 113, 114]], +[112, ["string", "g"], 1182, 857, [111, null]], +[113, ["number", 19], 1182, 899, [111, null]], +[114, ["storein", 0], 1114, 941, [111, 115, 116, 117]], +[115, ["string", "h"], 1182, 941, [114, null]], +[116, ["number", 21], 1182, 983, [114, null]], +[117, ["storein", 0], 1114, 1025, [114, 118, 119, 120]], +[118, ["string", "j"], 1182, 1025, [117, null]], +[119, ["number", 23], 1182, 1067, [117, null]], +[120, ["storein", 0], 1114, 1109, [117, 121, 122, null]], +[121, ["string", "k"], 1182, 1109, [120, null]], +[122, ["number", 24], 1182, 1151, [120, null]], +[123, "sandwichclampcollapsed", 1028, 383, [37, 124, null]], +[124, ["storein", 0], 1046, 417, [123, 125, 126, 127]], +[125, ["string", "q"], 1114, 417, [124, null]], +[126, ["number", 24], 1114, 459, [124, null]], +[127, ["storein", 0], 1046, 501, [124, 128, 129, 130]], +[128, ["string", "w"], 1114, 501, [127, null]], +[129, ["number", 26], 1114, 543, [127, null]], +[130, ["storein", 0], 1046, 585, [127, 131, 132, 133]], +[131, ["string", "e"], 1114, 585, [130, null]], +[132, ["number", 28], 1114, 627, [130, null]], +[133, ["storein", 0], 1046, 669, [130, 134, 135, 136]], +[134, ["string", "r"], 1114, 669, [133, null]], +[135, ["number", 29], 1114, 711, [133, null]], +[136, ["storein", 0], 1046, 753, [133, 137, 138, 139]], +[137, ["string", "t"], 1114, 753, [136, null]], +[138, ["number", 31], 1114, 795, [136, null]], +[139, ["storein", 0], 1046, 837, [136, 140, 141, 142]], +[140, ["string", "y"], 1114, 837, [139, null]], +[141, ["number", 33], 1114, 879, [139, null]], +[142, ["storein", 0], 1046, 921, [139, 143, 144, 145]], +[143, ["string", "u"], 1114, 921, [142, null]], +[144, ["number", 35], 1114, 963, [142, null]], +[145, ["storein", 0], 1046, 1005, [142, 146, 147, null]], +[146, ["string", "i"], 1114, 1005, [145, null]], +[147, ["number", 36], 1114, 1047, [145, null]], +[148, "sandwichclampcollapsed", 1083, 134, [39, 149, null]], +[149, ["storein", 0], 1101, 168, [148, 150, 151, 152]], +[150, ["string", "1"], 1169, 168, [149, null]], +[151, ["number", 36], 1169, 210, [149, null]], +[152, ["storein", 0], 1101, 252, [149, 153, 154, 155]], +[153, ["string", "2"], 1169, 252, [152, null]], +[154, ["number", 38], 1169, 294, [152, null]], +[155, ["storein", 0], 1101, 336, [152, 156, 157, 158]], +[156, ["string", "3"], 1169, 336, [155, null]], +[157, ["number", 40], 1169, 378, [155, null]], +[158, ["storein", 0], 1101, 420, [155, 159, 160, 161]], +[159, ["string", "4"], 1169, 420, [158, null]], +[160, ["number", 41], 1169, 462, [158, null]], +[161, ["storein", 0], 1101, 504, [158, 162, 163, 164]], +[162, ["string", "5"], 1169, 504, [161, null]], +[163, ["number", 43], 1169, 546, [161, null]], +[164, ["storein", 0], 1101, 588, [161, 165, 166, 167]], +[165, ["string", "6"], 1169, 588, [164, null]], +[166, ["number", 45], 1169, 630, [164, null]], +[167, ["storein", 0], 1101, 672, [164, 168, 169, 170]], +[168, ["string", "7"], 1169, 672, [167, null]], +[169, ["number", 47], 1169, 714, [167, null]], +[170, ["storein", 0], 1101, 756, [167, 171, 172, null]], +[171, ["string", "8"], 1169, 756, [170, null]], +[172, ["number", 48], 1169, 798, [170, null]], +[173, "comment", 36, 486, [50, 174, 13]], +[174, ["string", "normalize volume by frequency"], 119, 486, [173, null]], +[175, ["string", "start"], 58, 12, [1, null]]] diff --git a/samples/thumbnails/graphics-grid.png b/samples/thumbnails/graphics-grid.png Binary files differnew file mode 100644 index 0000000..bb6adf8 --- /dev/null +++ b/samples/thumbnails/graphics-grid.png diff --git a/samples/thumbnails/graphics-op-art-2.png b/samples/thumbnails/graphics-op-art-2.png Binary files differnew file mode 100644 index 0000000..e83349d --- /dev/null +++ b/samples/thumbnails/graphics-op-art-2.png diff --git a/samples/thumbnails/media-music-dots.png b/samples/thumbnails/media-music-dots.png Binary files differnew file mode 100644 index 0000000..75a5631 --- /dev/null +++ b/samples/thumbnails/media-music-dots.png diff --git a/samples/thumbnails/media-music-keyboard.png b/samples/thumbnails/media-music-keyboard.png Binary files differnew file mode 100644 index 0000000..e515a24 --- /dev/null +++ b/samples/thumbnails/media-music-keyboard.png diff --git a/turtleblocks.py b/turtleblocks.py index 18bc1ac..b6e9fd6 100755 --- a/turtleblocks.py +++ b/turtleblocks.py @@ -54,6 +54,7 @@ from gettext import gettext as _ from TurtleArt.taconstants import (OVERLAY_LAYER, DEFAULT_TURTLE_COLORS, TAB_LAYER, SUFFIX) from TurtleArt.tautils import (data_from_string, get_save_name) +from TurtleArt.tapalette import default_values from TurtleArt.tawindow import TurtleArtWindow from TurtleArt.taexportlogo import save_logo @@ -68,8 +69,10 @@ class TurtleMain(): _ICON_SUBPATH = 'images/turtle.png' _GNOME_PLUGIN_SUBPATH = 'gnome_plugins' _HOVER_HELP = '/desktop/sugar/activities/turtleart/hoverhelp' + _COORDINATE_SCALE = '/desktop/sugar/activities/turtleart/coordinatescale' def __init__(self): + self._setting_gconf_overrides = False self._abspath = os.path.abspath('.') self._execdirname = self._get_execution_dir() if self._execdirname is not None: @@ -187,6 +190,7 @@ return %s(self)" % (p, P, P) else: self.win.get_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) gobject.idle_add(self._project_loader, self._ta_file) + self._set_gconf_overrides() gtk.main() def _project_loader(self, file_name): @@ -216,16 +220,34 @@ return %s(self)" % (p, P, P) cr = cairo.Context(img_surface) surface = cr.get_target() self.turtle_canvas = surface.create_similar( - cairo.CONTENT_COLOR, max(1024, gtk.gdk.screen_width() * 2), - max(768, gtk.gdk.screen_height() * 2)) + cairo.CONTENT_COLOR, + # max(1024, gtk.gdk.screen_width() * 2), + # max(768, gtk.gdk.screen_height() * 2)) + gtk.gdk.screen_width() * 2, + gtk.gdk.screen_height() * 2) self.tw = TurtleArtWindow(self.canvas, self._execdirname, turtle_canvas=self.turtle_canvas, activity=self, running_sugar=False) self.tw.save_folder = self._abspath # os.path.expanduser('~') - if hasattr(self, 'client') and \ - self.client.get_int(self._HOVER_HELP) == 1: - self.hover.set_active(False) - self._do_hover_help_off_cb(None) + + if hasattr(self, 'client'): + if self.client.get_int(self._HOVER_HELP) == 1: + self.hover.set_active(False) + self._do_hover_help_off_cb(None) + if not self.client.get_int(self._COORDINATE_SCALE) in [0, 1]: + self.tw.coord_scale = 1 + else: + self.tw.coord_scale = 0 + + def _set_gconf_overrides(self): + if self.tw.coord_scale == 0: + self.tw.coord_scale = 1 + else: + self._do_rescale_cb(None) + if self.tw.coord_scale != 1: + self._setting_gconf_overrides = True + self.coords.set_active(True) + self._setting_gconf_overrides = False def _init_vars(self): ''' If we are invoked to start a project from Gnome, we should make @@ -393,8 +415,9 @@ return %s(self)" % (p, P, P) self._do_cartesian_cb) MenuBuilder.make_menu_item(menu, _('Polar coordinates'), self._do_polar_cb) - MenuBuilder.make_menu_item(menu, _('Rescale coordinates'), - self._do_rescale_cb) + self.coords = MenuBuilder.make_checkmenu_item( + menu, _('Rescale coordinates'), + self._do_rescale_cb, status=False) MenuBuilder.make_menu_item(menu, _('Grow blocks'), self._do_resize_cb, 1.5) MenuBuilder.make_menu_item(menu, _('Shrink blocks'), @@ -553,19 +576,31 @@ Would you like to save before quitting?')) def _do_rescale_cb(self, button): ''' Callback to rescale coordinate space. ''' + if self._setting_gconf_overrides: + return if self.tw.coord_scale == 1: - self.tw.coord_scale = self.tw.height / 200 - self.tw.eraser_button() + self.tw.coord_scale = self.tw.height / 40 + self.tw.update_overlay_position() if self.tw.cartesian is True: self.tw.overlay_shapes['Cartesian_labeled'].hide() self.tw.overlay_shapes['Cartesian'].set_layer(OVERLAY_LAYER) + default_values['forward'] = [10] + default_values['back'] = [10] + default_values['arc'] = [90, 10] + default_values['setpensize'] = [1] + self.tw.turtles.get_active_turtle().set_pen_size(1) else: self.tw.coord_scale = 1 - self.tw.eraser_button() if self.tw.cartesian is True: self.tw.overlay_shapes['Cartesian'].hide() self.tw.overlay_shapes['Cartesian_labeled'].set_layer( OVERLAY_LAYER) + default_values['forward'] = [100] + default_values['back'] = [100] + default_values['arc'] = [90, 100] + default_values['setpensize'] = [5] + self.tw.turtles.get_active_turtle().set_pen_size(5) + self.client.set_int(self._COORDINATE_SCALE, int(self.tw.coord_scale)) def _do_toggle_hover_help_cb(self, button): ''' Toggle hover help on/off ''' @@ -579,7 +614,8 @@ Would you like to save before quitting?')) ''' Turn hover help on ''' self.tw.no_help = False self.hover.set_active(True) - self.client.set_int(self._HOVER_HELP, 0) + if hasattr(self, 'client'): + self.client.set_int(self._HOVER_HELP, 0) def _do_hover_help_off_cb(self, button): ''' Turn hover help off ''' @@ -588,7 +624,8 @@ Would you like to save before quitting?')) if self.tw.status_spr is not None: self.tw.status_spr.hide() self.hover.set_active(False) - self.client.set_int(self._HOVER_HELP, 1) + if hasattr(self, 'client'): + self.client.set_int(self._HOVER_HELP, 1) def _do_palette_cb(self, widget): ''' Callback to show/hide palette of blocks. ''' @@ -817,7 +854,7 @@ Would you like to save before quitting?')) if os.path.exists(file_path): self.tw.load_files(file_path) break - self.tw.load_save_folder = os.path.join(activity.get_bundle_path(), + self.tw.load_save_folder = os.path.join(self._get_execution_dir(), 'samples') def _fill_samples_list(self, store): |