diff options
Diffstat (limited to 'TurtleArt/taconstants.py')
-rw-r--r-- | TurtleArt/taconstants.py | 830 |
1 files changed, 34 insertions, 796 deletions
diff --git a/TurtleArt/taconstants.py b/TurtleArt/taconstants.py index 77ebefb..30920d6 100644 --- a/TurtleArt/taconstants.py +++ b/TurtleArt/taconstants.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -#Copyright (c) 2010, Walter Bender +#Copyright (c) 2010-11 Walter Bender #Permission is hereby granted, free of charge, to any person obtaining a copy #of this software and associated documentation files (the "Software"), to deal @@ -19,79 +19,6 @@ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN #THE SOFTWARE. -""" -This file contains the constants that by-in-large determine the -behavior of Turtle Art. Notably, the block palettes are defined -below. If you want to add a new block to Turtle Art, it is generally a -matter of modifying some tables below and then adding the primitive to -talogo.py. For example, if we want to add a new turtle command, -'uturn', we'd make the following changes: - -(1) We'd add 'uturn' to the PALETTES list of lists: - -PALETTES = [['forward', 'back', 'clean', 'left', 'right', 'uturn', 'show', - 'seth', 'setxy', 'heading', 'xcor', 'ycor', 'setscale', - 'arc', 'scale'], - ['penup','pendown', 'setpensize', 'fillscreen', 'pensize',... - -(2) Then we'd add it to one of the block-style definitions. Since it takes -no arguments, we'd add it here: - -BASIC_STYLE = ['clean', 'penup', 'pendown', 'stack1', 'stack2', 'vspace', - 'hideblocks', 'showblocks', 'clearheap', 'printheap', 'kbinput', 'uturn'] - -(3) Then we give it a name (Note the syntax _('string to be -translated') used by the language-internationalization system; also -note that the name is an array, as some blocks contain multiple -strings.): - -BLOCK_NAMES = { -... - 'uturn':[_('u-turn')], -... - } - -(4) and a help-menu entry: - -HELP_STRINGS = { -... - 'uturn':_('change the heading of the turtle 180 degrees'), -... - } - -(5) Next, we need to define it as a primitive for the Logo command -parser (generally just the same name): - -PRIMITIVES = { -... - 'uturn':'uturn', -... - } - -(6) Since there are no default arguments, we don't need to do anything -else here. But we do need to define the actual function in talogo.py - -DEFPRIM = { -... - 'uturn':[0, lambda self: self.tw.canvas.seth(self.tw.canvas.heading+180)], -... - } - -That's it. When you next run Turtle Art, you will have a 'uturn' block -on the Turtle Palette. - -Adding a new palette is simply a matter of: (1) adding an additional -entry to PALETTE_NAMES; (2) new list of blocks to PALETTES; and (3) an -additional entry in COLORS. However you will have to: (4) create icons -for the palette-selector buttons. These are kept in the icons -subdirectory. You need two icons: yourpalettenameoff.svg and -yourpalettenameon.svg, where yourpalettename is the same string as the -entry you added to the PALETTE_NAMES list. Note that the icons should -be the same size (55x55) as the others. This is the default icon size -for Sugar toolbars. - -""" - from gettext import gettext as _ # @@ -108,52 +35,7 @@ TAB_LAYER = 710 STATUS_LAYER = 900 TOP_LAYER = 1000 -# -# Block-palette categories -# - -PALETTE_NAMES = ['turtle', 'pen', 'colors', 'numbers', 'flow', 'blocks', - 'extras', 'sensor', 'portfolio', 'trash'] - -PALETTES = [['clean', 'forward', 'back', 'show', 'left', 'right', - 'seth', 'setxy2', 'heading', 'xcor', 'ycor', 'setscale', - 'arc', 'scale', 'leftpos', 'toppos', 'rightpos', - 'bottompos'], - ['penup', 'pendown', 'setpensize', 'fillscreen', 'pensize', - 'setcolor', 'setshade', 'setgray', 'color', 'shade', - 'gray', 'startfill', 'stopfill'], - ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', - 'white', 'black'], - ['plus2', 'minus2', 'product2', - 'division2', 'identity2', 'remainder2', 'sqrt', 'random', - 'number', 'greater2', 'less2', 'equal2', 'not', 'and2', 'or2'], - ['wait', 'forever', 'repeat', 'if', 'ifelse', 'while', 'until', - 'hspace', 'vspace', 'stopstack'], - ['start', 'hat1', 'stack1', 'hat', 'hat2', 'stack2', 'stack', - 'storeinbox1', 'storeinbox2', 'string', 'box1', 'box2', 'box', - 'storein'], - ['push', 'printheap', 'clearheap', 'pop', 'comment', 'print', - 'myfunc1arg', 'userdefined', - 'cartesian', 'width', 'height', 'polar', 'addturtle', 'reskin', - 'sandwichtop_no_label', 'sandwichbottom'], - ['kbinput', 'keyboard', 'readpixel', 'see', - 'sound', 'volume', 'pitch'], - ['journal', 'audio', 'video', 'description', 'hideblocks', - 'showblocks', 'fullscreen', 'savepix', 'savesvg', 'mediawait', - 'picturelist', 'picture1x1a', 'picture1x1', 'picture2x2', - 'picture2x1', 'picture1x2'], - ['empty', 'restoreall']] - -# -# Block-style attributes -# - -COLORS = [["#00FF00", "#00A000"], ["#00FFFF", "#00A0A0"], - ["#00FFFF", "#00A0A0"], ["#FF00FF", "#A000A0"], - ["#FFC000", "#A08000"], ["#FFFF00", "#A0A000"], - ["#FF0000", "#A00000"], ["#FF0000", "#A00000"], - ["#0000FF", "#0000A0"], ["#FFFF00", "#A0A000"]] - +# Special-case some block colors BOX_COLORS = {'red': ["#FF0000", "#A00000"], 'orange': ["#FFD000", "#AA8000"], 'yellow': ["#FFFF00", "#A0A000"], @@ -173,9 +55,10 @@ SELECTOR_WIDTH = 55 ICON_SIZE = 55 GRADIENT_COLOR = "#FFFFFF" STANDARD_STROKE_WIDTH = 1.0 -BLOCK_SCALE = 2.0 +BLOCK_SCALE = [0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 8.0] PALETTE_SCALE = 1.5 DEFAULT_TURTLE = 'Yertle' +DEFAULT_TURTLE_COLORS = ['#008000', '#00A000'] HORIZONTAL_PALETTE = 0 VERTICAL_PALETTE = 1 BLACK = -9999 @@ -190,78 +73,23 @@ DEFAULT_SCALE = 33 XO1 = 'xo1' XO15 = 'xo1.5' UNKNOWN = 'unknown' -SENSOR_AC_NO_BIAS = 'external' -SENSOR_AC_BIAS = 'sound' -SENSOR_DC_NO_BIAS = 'voltage' -SENSOR_DC_BIAS = 'resistance' -# -# Block-style definitions -# -BASIC_STYLE_HEAD = ['start', 'hat1', 'hat2', 'restore', 'restoreall'] -BASIC_STYLE_HEAD_1ARG = ['hat'] -BASIC_STYLE_TAIL = ['stopstack', 'empty'] -BASIC_STYLE = [] -BASIC_STYLE_EXTENDED_VERTICAL = ['clean', 'penup', 'pendown', 'stack1', - 'stack2', 'hideblocks', 'showblocks', 'clearheap', 'printheap', 'kbinput', - 'fullscreen', 'cartesian', 'polar', 'startfill', 'mediawait', - 'stopfill', 'readpixel', 'readcamera', 'vspace'] -INVISIBLE = ['sandwichcollapsed'] -BASIC_STYLE_EXTENDED = ['picturelist', 'picture1x1', 'picture2x2', - 'picture2x1', 'picture1x2', 'picture1x1a'] -BASIC_STYLE_1ARG = ['forward', 'back', 'left', 'right', 'seth', 'show', 'image', - 'setscale', 'setpensize', 'setcolor', 'setshade', 'print', 'showaligned', - 'settextsize', 'settextcolor', 'print', 'wait', 'storeinbox1', 'savepix', - 'storeinbox2', 'wait', 'stack', 'push', 'nop', 'addturtle', 'comment', - 'savesvg', 'setgray', 'skin', 'reskin'] -BASIC_STYLE_VAR_ARG = ['userdefined', 'userdefined2args', 'userdefined3args'] -BULLET_STYLE = ['templatelist', 'list'] -BASIC_STYLE_2ARG = ['arc', 'setxy', 'setxy2', 'fillscreen', 'storein', 'write'] -BOX_STYLE = ['number', 'xcor', 'ycor', 'heading', 'pensize', 'color', 'shade', - 'textcolor', 'textsize', 'box1', 'box2', 'string', 'leftpos', 'scale', - 'toppos', 'rightpos', 'bottompos', 'width', 'height', 'pop', 'keyboard', - 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'white', - 'black', 'titlex', 'titley', 'leftx', 'topy', 'rightx', 'bottomy', - 'sound', 'volume', 'pitch', 'voltage', 'resistance', 'gray', 'see', 'rfid', - 'luminance'] -BOX_STYLE_MEDIA = ['description', 'audio', 'journal', 'video', 'camera'] -NUMBER_STYLE = ['plus2', 'product2', 'myfunc'] -NUMBER_STYLE_VAR_ARG = ['myfunc1arg', 'myfunc2arg', 'myfunc3arg'] -NUMBER_STYLE_BLOCK = ['random'] -NUMBER_STYLE_PORCH = ['minus2', 'division2', 'remainder2'] -NUMBER_STYLE_1ARG = ['sqrt', 'identity2'] -NUMBER_STYLE_1STRARG = ['box'] -COMPARE_STYLE = ['greater2', 'less2', 'equal2'] -BOOLEAN_STYLE = ['and2', 'or2'] -NOT_STYLE = ['not'] -FLOW_STYLE = ['forever'] -FLOW_STYLE_TAIL = ['hspace'] -FLOW_STYLE_1ARG = ['repeat'] -FLOW_STYLE_BOOLEAN = ['if', 'while', 'until'] -FLOW_STYLE_WHILE = ['while2'] -FLOW_STYLE_ELSE = ['ifelse'] -COLLAPSIBLE_TOP = ['sandwichtop'] -COLLAPSIBLE_TOP_NO_ARM = ['sandwichtop_no_arm'] -COLLAPSIBLE_TOP_NO_LABEL = ['sandwichtop_no_label'] -COLLAPSIBLE_TOP_NO_ARM_NO_LABEL = ['sandwichtop_no_arm_no_label'] -COLLAPSIBLE_BOTTOM = ['sandwichbottom'] - -# Depreciated block styles -PORTFOLIO_STYLE_2x2 = ['template2x2'] -PORTFOLIO_STYLE_1x1 = ['template1x1', 'template1x1a'] -PORTFOLIO_STYLE_2x1 = ['template2x1'] -PORTFOLIO_STYLE_1x2 = ['template1x2'] +CONSTANTS = {'leftpos': None, 'toppos': None, 'rightpos': None, + 'bottompos': None, 'width': None, 'height': None, 'red': 0, + 'orange': 10, 'yellow': 20, 'green': 40, 'cyan': 50, 'blue': 70, + 'purple': 90, 'titlex': None, 'titley': None, 'leftx': None, + 'topy': None, 'rightx': None, 'bottomy': None} # # Blocks that are expandable # -EXPANDABLE = ['vspace', 'hspace', 'identity2'] +EXPANDABLE_STYLE = ['boolean-style', 'compare-porch-style', 'compare-style', + 'number-style-porch', 'number-style', 'basic-style-2arg', + 'number-style-block'] -EXPANDABLE_BLOCKS = ['plus2', 'minus2', 'division2', 'remainder2', 'product2', - 'random', 'equal2', 'greater2', 'less2', 'and2', 'or2', - 'arc', 'setxy', 'setxy2', 'fillscreen', 'storein', 'write'] +EXPANDABLE = ['vspace', 'hspace', 'identity2'] -EXPANDABLE_ARGS = ['templatelist', 'list', 'myfunc1arg', 'myfunc2arg', +EXPANDABLE_ARGS = ['list', 'myfunc1arg', 'myfunc2arg', 'myfunc3arg', 'userdefined', 'userdefined2args', 'userdefined3args'] # @@ -270,418 +98,18 @@ EXPANDABLE_ARGS = ['templatelist', 'list', 'myfunc1arg', 'myfunc2arg', COLLAPSIBLE = ['sandwichbottom', 'sandwichcollapsed'] # -# Depreciated block styles that need dock adjustments +# Deprecated block styles that need dock adjustments # OLD_DOCK = ['and', 'or', 'plus', 'minus', 'division', 'product', 'remainder'] # -# Blocks that contain media -# -CONTENT_BLOCKS = ['number', 'string', 'description', 'audio', 'video', - 'journal', 'camera'] - -# # These blocks get a special skin # BLOCKS_WITH_SKIN = ['journal', 'audio', 'description', 'nop', 'userdefined', - 'video', 'userdefined2args', 'userdefined3args'] + 'video', 'userdefined2args', 'userdefined3args', 'camera'] PYTHON_SKIN = ['nop', 'userdefined', 'userdefined2args', 'userdefined3args'] -# -# These blocks hold constants -# -CONSTANTS = {'leftpos':None, 'toppos':None, 'rightpos':None, 'bottompos':None, - 'width':None, 'height':None, 'red':0, 'orange':10, 'yellow':20, - 'green':40, 'cyan':50, 'blue':70, 'purple':90, 'titlex':None, - 'titley':None, 'leftx':None, 'topy':None, 'rightx':None, - 'bottomy':None} - -# -# Block-name dictionary used for labels -# -BLOCK_NAMES = { - 'addturtle': [_('turtle')], - 'and2': [_('and')], - 'arc': [_('arc'), _('angle'), _('radius')], - 'audio': [' '], - 'back': [_('back')], - 'black': [_('black')], - 'blocks': [_('blocks')], - 'blue': [_('blue')], - 'bottompos': [_('bottom')], - 'bottomy': [_('picture bottom')], - 'box': [_('box')], - 'box1': [_('box 1')], - 'box2': [_('box 2')], - 'camera': [' '], - 'cartesian': [_('Cartesian')], - 'clean': [_(' clean ')], - 'clearheap': [_('empty heap')], - 'color': [_('color')], - 'colors': [_('colors')], - 'comment': [_('comment')], - 'cyan': [_('cyan')], - 'decription': [' '], - 'division2': ['/'], - 'empty': [_('empty trash')], - 'equal2': ['='], - 'extras': [_('extras')], - 'fillscreen': [_('fill screen'), _('color'), _('shade')], - 'flow': [_('flow')], - 'forever': [_('forever')], - 'forward': [_('forward')], - 'fullscreen': [_('full screen')], - 'gray': [_('gray')], - 'greater2': [">"], - 'green': [_('green')], - 'hat': [_('action')], - 'hat1': [_('action 1')], - 'hat2': [_('action 2')], - 'heading': [_('heading')], - 'height': [_('height')], - 'hideblocks': [_('hide blocks')], - 'hspace': [' '], - 'identity2': ['←'], - 'if': [' ', _('if'), _('then')], - 'ifelse': [' ', _('if'), _('then else')], - 'image': [_('show')], - 'journal': [' '], - 'kbinput': [_('query keyboard')], - 'keyboard': [_('keyboard')], - 'left': [_('left')], - 'leftpos': [_('left')], - 'leftx': [_('picture left')], - 'less2': ['<'], - 'list': ['list'], - 'luminance': [_('brightness')], - 'mediawait': [_('media wait')], - 'minus2': ['–'], - 'myfunc': [_('Python'), 'f(x)', 'x'], - 'myfunc1arg': [_('Python'), 'f(x)', 'x'], - 'myfunc2arg': [_('Python'), 'f(x,y)', ' '], - 'myfunc3arg': [_('Python'), 'f(x,y,z)', ' '], - 'nop': [_(' ')], - 'not': [_('not')], - 'number': ['100'], - 'numbers': [_('numbers')], - 'orange': [_('orange')], - 'or2': [_('or')], - 'pen': [_('pen')], - 'pendown': [_('pen down')], - 'pensize': [_('pen size')], - 'penup': [_('pen up')], - 'picturelist': [' '], - 'picture1x1': [' '], - 'picture1x1a': [' '], - 'picture2x2': [' '], - 'picture2x1': [' '], - 'picture1x2': [' '], - 'pitch': [_('pitch')], - 'plus2': [' + '], - 'polar': [_('polar')], - 'pop': [_('pop')], - 'portfolio': [_('portfolio')], - 'printheap': [_('show heap')], - 'print': [_('print')], - 'product2': ['×'], - 'purple': [_('purple')], - 'push': [_('push')], - 'random': [_('random'), _('min'), _('max')], - 'readcamera': [_('read camera')], - 'readpixel': [_('read pixel')], - 'red': [_('red')], - 'remainder2': [_('mod')], - 'repeat': [' ', _('repeat')], - 'reskin': [_('turtle shell')], - 'resistance': [_('resistance')], - 'restore': [_('restore last')], - 'restoreall': [_('restore all')], - 'rfid': [_('RFID')], - 'right': [_('right')], - 'rightpos': [_('right')], - 'rightx': [_('picture right')], - 'savepix': [_('save picture')], - 'savesvg': [_('save SVG')], - 'sandwichbottom': [' ', ' '], - 'sandwichcollapsed': [' '], - 'sandwichtop': [_('top of stack')], - 'sandwichtop_no_arm': [_('top of stack')], - 'sandwichtop_no_label': [' ', ' '], - 'sandwichtop_no_arm_no_label': [' ', _('click to open')], - 'scale': [_('scale')], - 'see': [_('turtle sees')], - 'sensor': [_('sensors')], - 'setcolor': [_('set color')], - 'setgray': [_('set gray')], - 'seth': [_('set heading')], - 'setpensize': [_('set pen size')], - 'setscale': [_('set scale')], - 'setshade': [_('set shade')], - 'settextcolor': [_('set text color')], - 'settextsize': [_('set text size')], - 'setxy': [_('set xy'), _('x'), _('y')], - 'setxy2': [_('set xy'), _('x'), _('y')], - 'shade': [_('shade')], - 'show': [_('show')], - 'showblocks': [_('show blocks')], - 'showaligned': [_('show aligned')], - 'skin': [_('turtle shell')], - 'sound': [_('sound')], - 'sqrt': ['√'], - 'stack': [_('action')], - 'stack1': [_('action 1')], - 'stack2': [_('action 2')], - 'start': [_('start')], - 'startfill': [_('start fill')], - 'stopfill': [_('end fill')], - 'stopstack': [_('stop action')], - 'storein': [_('store in'), _('box'), _('value')], - 'storeinbox1': [_('store in box 1')], - 'storeinbox2': [_('store in box 2')], - 'string': [_('text')], - 'template1x1': [' '], - 'template1x1a': [' '], - 'template1x2': [' '], - 'template2x1': [' '], - 'template2x2': [' '], - 'templatelist': [' '], - 'textsize': [_('text size')], - 'titlex': [_('title x')], - 'titley': [_('title y')], - 'toppos': [_('top')], - 'topy': [_('picture top')], - 'trash': [_('trash')], - 'turtle': [_('turtle')], - 'until': [_('until')], - 'userdefined': [_(' ')], - 'userdefined2args': [_(' ')], - 'userdefined3args': [_(' ')], - 'video': [' '], - 'voltage': [_('voltage')], - 'volume': [_('volume')], - 'vspace': [' '], - 'wait': [_('wait')], - 'while': [_('while')], - 'while2': [_('while')], - 'white': [_('white')], - 'width': [_('width')], - 'write': [_('write')], - 'xcor': [_('xcor')], - 'ycor': [_('ycor')], - 'yellow': [_('yellow')]} - -# -# Logo primitives -# - -PRIMITIVES = { - 'addturtle': 'turtle', - 'and2': 'and', - 'arc': 'arc', - 'back': 'back', - 'black': 'black', - 'blue': 'blue', - 'bottompos': 'bpos', - 'bottomy': 'boty', - 'box1': 'box1', - 'box2': 'box2', - 'box': 'box', - 'cartesian': 'cartesian', - 'clean': 'clean', - 'clearheap': 'clearheap', - 'color': 'color', - 'comment': 'comment', - 'cyan': 'cyan', - 'division2': 'division', - 'equal2': 'equal?', - 'fillscreen': 'fillscreen', - 'forever': 'forever', - 'forward': 'forward', - 'fullscreen': 'fullscreen', - 'gray': 'gray', - 'greater2': 'greater?', - 'green': 'green', - 'hat': 'nop3', - 'hat1': 'nop1', - 'hat2': 'nop2', - 'heading': 'heading', - 'height': 'vres', - 'hideblocks': 'hideblocks', - 'hspace': 'nop', - 'identity2': 'id', - 'if': 'if', - 'ifelse': 'ifelse', - 'image': 'show', - 'kbinput': 'kbinput', - 'keyboard': 'keyboard', - 'left': 'left', - 'leftpos': 'lpos', - 'leftx': 'leftx', - 'less2': 'less?', - 'list': 'bulletlist', - 'luminance': 'luminance', - 'mediawait': 'mediawait', - 'minus2': 'minus', - 'myfunc': 'myfunction', - 'myfunc1arg': 'myfunction', - 'myfunc2arg': 'myfunction2', - 'myfunc3arg': 'myfunction3', - 'nop': 'userdefined', - 'not': 'not', - 'orange': 'orange', - 'or2': 'or', - 'pendown': 'pendown', - 'pensize': 'pensize', - 'penup': 'penup', - 'pitch': 'pitch', - 'plus2': 'plus', - 'polar': 'polar', - 'pop': 'pop', - 'printheap': 'printheap', - 'print': 'print', - 'product2': 'product', - 'purple': 'purple', - 'push': 'push', - 'random': 'random', - 'red': 'red', - 'readcamera': 'readcamera', - 'readpixel': 'readpixel', - 'remainder2': 'mod', - 'repeat': 'repeat', - 'resistance': 'resistance', - 'rfid': 'rfid', - 'right': 'right', - 'rightpos': 'rpos', - 'rightx': 'rightx', - 'sandwichtop': 'comment', - 'sandwichtop_no_arm': 'comment', - 'sandwichtop_no_label': 'nop', - 'sandwichtop_no_arm_no_label': 'nop', - 'sandwichbottom': 'nop', - 'sandwichcollapsed': 'nop', - 'savepix': 'savepix', - 'savesvg': 'savesvg', - 'see': 'see', - 'scale': 'scale', - 'setcolor': 'setcolor', - 'setgray': 'setgray', - 'seth': 'seth', - 'setpensize': 'setpensize', - 'setscale': 'setscale', - 'setshade': 'setshade', - 'settextsize': 'settextsize', - 'settextcolor': 'settextcolor', - 'setxy': 'setxy', - 'setxy2': 'setxy2', - 'shade': 'shade', - 'show': 'show', - 'showblocks': 'showblocks', - 'showaligned': 'showaligned', - 'skin': 'skin', - 'sound': 'sound', - 'sqrt': 'sqrt', - 'stack': 'stack', - 'stack1': 'stack1', - 'stack2': 'stack2', - 'start': 'start', - 'startfill': 'startfill', - 'stopfill': 'stopfill', - 'stopstack': 'stopstack', - 'storein': 'storeinbox', - 'storeinbox1': 'storeinbox1', - 'storeinbox2': 'storeinbox2', - 'template1x1': 't1x1', - 'template1x1a': 't1x1a', - 'template1x2': 't1x2', - 'template2x1': 't2x1', - 'template2x2': 't2x2', - 'templatelist': 'bullet', - 'textsize': 'textsize', - 'titlex': 'titlex', - 'titley': 'titley', - 'toppos': 'tpos', - 'topy': 'topy', - 'userdefined': 'userdefined', - 'userdefined2args': 'userdefined2', - 'userdefined3args': 'userdefined3', - 'voltage': 'voltage', - 'volume': 'volume', - 'vspace': 'nop', - 'wait': 'wait', - 'while2': 'while', - 'white': 'white', - 'width': 'hres', - 'write': 'write', - 'xcor': 'xcor', - 'ycor': 'ycor', - 'yellow': 'yellow'} - -# -# block default values -# - -DEFAULTS = { - 'addturtle': [1], - 'arc': [90, 100], - 'audio': [None], - 'back': [100], - 'box': [_('my box')], - 'camera': ['CAMERA'], - 'comment': [_('comment')], - 'description': [None], - 'fillscreen': [60, 80], - 'forever': [None, 'vspace'], - 'forward': [100], - 'hat': [_('action')], - 'if': [None, None, 'vspace'], - 'ifelse': [None, 'vspace', None, 'vspace'], - 'journal': [None], - 'left': [90], - 'list': ['∙ ', '∙ '], - 'media': [None], - 'myfunc': ['x', 100], - 'myfunc1arg': ['x', 100], - 'myfunc2arg': ['x+y', 100, 100], - 'myfunc3arg': ['x+y+z', 100, 100, 100], - 'nop': [100], - 'number': [100], - 'random': [0, 100], - 'repeat': [4, None, 'vspace'], - 'right': [90], - 'sandwichtop': [_('label')], - 'sandwichtop_no_arm': [_('label')], - 'savepix': [_('picture name')], - 'savesvg': [_('picture name')], - 'setcolor': [0], - 'setgray': [100], - 'seth': [0], - 'setpensize': [5], - 'setscale': [33], - 'setshade': [50], - 'settextsize': [48], - 'settextcolor': [0], - 'setxy': [0, 0], - 'setxy2': [0, 0], - 'show': [_('text')], - 'showaligned': [_('text')], - 'stack': [_('action')], - 'storeinbox1': [100], - 'storeinbox2': [100], - 'storein': [_('my box'), 100], - 'string': [_('text')], - 'template1x1': [_('Title'), 'None'], - 'template1x1a': [_('Title'), 'None'], - 'template1x2': [_('Title'), 'None', 'None'], - 'template2x1': [_('Title'), 'None', 'None'], - 'template2x2': [_('Title'), 'None', 'None', 'None', 'None'], - 'templatelist': [_('Title'), '∙ '], - 'userdefined': [100], - 'userdefined2args': [100, 100], - 'userdefined3args': [100, 100, 100], - 'video': [None], - 'wait': [1], - 'write': [_('text'), 32]} # # Blocks that can interchange strings and numbers for their arguments @@ -697,6 +125,9 @@ STRING_OR_NUMBER_ARGS = ['plus2', 'equal2', 'less2', 'greater2', 'box', CONTENT_ARGS = ['show', 'showaligned', 'push', 'storein', 'storeinbox1', 'storeinbox2'] +PREFIX_DICTIONARY = {'journal': '#smedia_', 'description': '#sdescr_', + 'audio': '#saudio_', 'video': '#svideo_'} + # # Status blocks # @@ -709,7 +140,7 @@ MEDIA_SHAPES = ['audiooff', 'audioon', 'audiosmall', 'pythonoff', 'pythonon', 'pythonsmall', 'list', '1x1', '1x1a', '2x1', '1x2', '2x2'] -OVERLAY_SHAPES = ['Cartesian', 'Cartesian_labeled', 'polar'] +OVERLAY_SHAPES = ['Cartesian', 'Cartesian_labeled', 'polar', 'metric'] STATUS_SHAPES = ['status', 'info', 'nostack', 'dupstack', 'noinput', 'emptyheap', 'emptybox', 'nomedia', 'nocode', 'overflowerror', @@ -735,7 +166,8 @@ OLD_NAMES = {'product': 'product2', 'storeinbox': 'storein', 'minus': 'minus2', 'template1': 'template1x1', 'template2': 'template2x1', 'template6': 'template1x2', 'template7': 'template2x2', 'template4': 'template1x1a', 'hres': 'width', 'vres': 'height', - 'sandwichtop2': 'sandwichtop'} + 'sandwichtop2': 'sandwichtop', 'image': 'show', + 'container': 'indentity2', 'insertimage': 'show'} # # Define the relative size and postion of media objects @@ -744,7 +176,7 @@ OLD_NAMES = {'product': 'product2', 'storeinbox': 'storein', 'minus': 'minus2', TITLEXY = (0.9375, 0.875) # -# Relative placement of portfolio objects (used by depreciated blocks) +# Relative placement of portfolio objects (used by deprecated blocks) # TEMPLATES = {'t1x1': (0.5, 0.5, 0.0625, 0.125, 1.05, 0), 't2z1': (0.5, 0.5, 0.0625, 0.125, 1.05, 1.05), @@ -755,215 +187,21 @@ TEMPLATES = {'t1x1': (0.5, 0.5, 0.0625, 0.125, 1.05, 0), 'insertimage': (0.333, 0.333)} # -# Names for blocks without names for popup help -# -SPECIAL_NAMES = { - 'audio': _('audio'), - 'camera': _('camera'), - 'division2': _('divide'), - 'equal2': _('equal'), - 'greater2': _('greater than'), - 'hspace': _('horizontal space'), - 'identity2': _('identity'), - 'if': _('if then'), - 'ifelse': _('if then else'), - 'journal': _('journal'), - 'less2': _('less than'), - 'minus2': _('minus'), - 'nop': _('Python code'), - 'number': _('number'), - 'plus2': _('plus'), - 'product2': _('multiply'), - 'sqrt': _('square root'), - 'template1x1': _('presentation 1x1'), - 'template1x1a': _('presentation 1x1'), - 'template1x2': _('presentation 1x2'), - 'template2x1': _('presentation 2x1'), - 'template2x2': _('presentation 2x2'), - 'templatelist': _('presentation bulleted list'), - 'textsize': _('text size'), - 'video': _('video'), - 'vspace': _('vertical space')} - -# -# Help messages -# -HELP_STRINGS = { - 'addturtle': _("chooses which turtle to command"), - 'and2': _("logical AND operator"), - 'arc': _("moves turtle along an arc"), - 'audio': _("Sugar Journal audio object"), - 'back': _("moves turtle backward"), - 'blocks': _("Palette of variable blocks"), - 'bottompos': _("ycor of bottom of screen"), - 'box1': _("Variable 1 (numeric value)"), - 'box2': _("Variable 2 (numeric value)"), - 'box': _("named variable (numeric value)"), - 'camera': _('camera output'), - 'cartesian': _("displays Cartesian coordinates"), - 'clean': _("clears the screen and reset the turtle"), - 'clearheap': _("emptys FILO (first-in-last-out heap)"), - 'color': _("holds current pen color (can be used in place of a number block)"), - 'colors': _("Palette of pen colors"), - 'comment': _("places a comment in your code"), - 'debugoff': _("Debug"), - 'description': _("Sugar Journal description field"), - 'division2': _("divides top numeric input (numerator) by bottom numeric input (denominator)"), - 'empty': _("permanently deletes items in trash"), - 'eraseron': _("Clean"), - 'equal2': _("logical equal-to operator"), - 'extras': _("Palette of extra options"), - 'fillscreen': _("fills the background with (color, shade)"), - 'flow': _("Palette of flow operators"), - 'forever': _("loops forever"), - 'forward': _("moves turtle forward"), - 'fullscreen': _("hides the Sugar toolbars"), - 'gray': _("holds current gray level (can be used in place of a number block)"), - 'greater2': _("logical greater-than operator"), - 'hat1': _("top of Action 1 stack"), - 'hat2': _("top of Action 2 stack"), - 'hat': _("top of nameable action stack"), - 'heading': _("holds current heading value of the turtle (can be used in place of a number block)"), - 'height': _("the canvas height"), - 'hideblocks': _("declutters canvas by hiding blocks"), - 'hideshowoff': _("Hide blocks"), - 'hspace': _("jogs stack right"), - 'identity2': _("identity operator used for extending blocks"), - 'ifelse': _("if-then-else operator that uses boolean operators from Numbers palette"), - 'if': _("if-then operator that uses boolean operators from Numbers palette"), - 'journal': _("Sugar Journal media object"), - 'kbinput': _("query for keyboard input (results stored in keyboard block)"), - 'keyboard': _("holds results of query-keyboard block"), - 'leftpos': _("xcor of left of screen"), - 'left': _("turns turtle counterclockwise (angle in degrees)"), - 'less2': _("logical less-than operator"), - 'luminance': _("light level detected by camera"), - 'mediawait': _("wait for current video or audio to complete"), - 'minus2': _("subtracts bottom numeric input from top numeric input"), - 'myfunc': _("a programmable block: used to add advanced math equations, e.g., sin(x)"), - 'myfunc1arg': _("a programmable block: used to add advanced single-variable math equations, e.g., sin(x)"), - 'myfunc2arg': _("a programmable block: used to add advanced multi-variable math equations, e.g., sqrt(x*x+y*y)"), - 'myfunc3arg': _("a programmable block: used to add advanced multi-variable math equations, e.g., sin(x+y+z)"), - 'next': _('displays next palette'), - 'nop': _("runs code found in the tamyblock.py module found in the Journal"), - 'not': _("logical NOT operator"), - 'numbers': _("Palette of numeric operators"), - 'number': _("used as numeric input in mathematic operators"), - 'or': _("logical OR operator"), - 'orientation': _("changes the orientation of the palette of blocks"), - 'pendown': _("Turtle will draw when moved."), - 'pen': _("Palette of pen commands"), - 'pensize': _("holds current pen size (can be used in place of a number block)"), - 'penup': _("Turtle will not draw when moved."), - 'picture1x1': _("presentation template: select Journal object (with description)"), - 'picture1x1a': _("presentation template: select Journal object (no description)"), - 'picture1x2': _("presentation template: select two Journal objects"), - 'picture2x1': _("presentation template: select two Journal objects"), - 'picture2x2': _("presentation template: select four Journal objects"), - 'picturelist': _("presentation template: list of bullets"), - 'pitch': _('microphone input pitch'), - 'plus2': _("adds two alphanumeric inputs"), - 'polar': _("displays polar coordinates"), - 'pop': _("pops value off FILO (first-in last-out heap)"), - 'portfolio': _("Palette of presentation templates"), - 'print': _("prints value in status block at bottom of the screen"), - 'printheap': _("shows values in FILO (first-in last-out heap)"), - 'product2': _("multiplies two numeric inputs"), - 'push': _("pushes value onto FILO (first-in last-out heap)"), - 'random': _("returns random number between minimum (top) and maximum (bottom) values"), - 'readcamera': _("Average RGB color from camera is pushed to the stack"), - 'readpixel': _("RGB color under the turtle is pushed to the stack"), - 'remainder2': _("modular (remainder) operator"), - 'repeat': _("loops specified number of times"), - 'resistance': _("sensor input resistance"), - 'reskin': _("put a custom 'shell' on the turtle"), - 'restore': _("restores most recent blocks from trash"), - 'restoreall': _("restore all blocks from trash"), - 'rfid': _("RFID"), - 'rightpos': _("xcor of right of screen"), - 'right': _("turns turtle clockwise (angle in degrees)"), - 'run-fastoff': _("Run"), - 'run-slowoff': _("Step"), - 'sandwichbottom': _("bottom block in a collapsibe stack: click to collapse"), - 'sandwichcollapsed': _("bottom block in a collapsed stack: click to open"), - 'sandwichtop': _("top of a collapsible stack"), - 'sandwichtop_no_label': _("top of a collapsed stack"), - 'sandwichtop_no_arm': _("top of a collapsible stack"), - 'sandwichtop_no_arm_no_label': _("top of a collapsed stack"), - 'savepix': _("saves a picture to the Sugar Journal"), - 'savesvg': _("saves turtle graphics as an SVG file in the Sugar Journal"), - 'scale': _("holds current scale value"), - 'see': _('returns the color that the turtle "sees"'), - 'sensor': _("Palette of sensor blocks"), - 'setcolor': _("sets color of the line drawn by the turtle"), - 'setgray': _("sets gray level of the line drawn by the turtle"), - 'seth': _("sets the heading of the turtle (0 is towards the top of the screen.)"), - 'setpensize': _("sets size of the line drawn by the turtle"), - 'setscale': _("sets the scale of media"), - 'setshade': _("sets shade of the line drawn by the turtle"), - 'settextcolor': _("sets color of text drawn by the turtle"), - 'settextsize': _("sets size of text drawn by turtle"), - 'setxy': _("moves turtle to position xcor, ycor; (0, 0) is in the center of the screen."), - 'setxy2': _("moves turtle to position xcor, ycor; (0, 0) is in the center of the screen."), - 'shade': _("holds current pen shade"), - 'show': _("draws text or show media from the Journal"), - 'showblocks': _("restores hidden blocks"), - 'skin': _("put a custom 'shell' on the turtle"), - 'sound': _("raw microphone input signal"), - 'sqrt': _("calculates square root"), - 'stack1': _("invokes Action 1 stack"), - 'stack2': _("invokes Action 2 stack"), - 'stack': _("invokes named action stack"), - 'start': _("connects action to toolbar run buttons"), - 'startfill': _("starts filled polygon (used with end fill block)"), - 'stopfill': _("completes filled polygon (used with start fill block)"), - 'stopiton': _("Stop turtle"), - 'stopstack': _("stops current action"), - 'storeinbox1': _("stores numeric value in Variable 1"), - 'storeinbox2': _("stores numeric value in Variable 2"), - 'storein': _("stores numeric value in named variable"), - 'string': _("string value"), - 'template1x1': _("presentation template: select Journal object (with description)"), - 'template1x1a': _("presentation template: select Journal object (no description)"), - 'template1x2': _("presentation template: select two Journal objects"), - 'template2x1': _("presentation template: select two Journal objects"), - 'template2x2': _("presentation template: select four Journal objects"), - 'templatelist': _("presentation template: list of bullets"), - 'textcolor': _("holds current text color (can be used in place of a number block)"), - 'textsize': _("holds current text size (can be used in place of a number block)"), - 'toppos': _("ycor of top of screen"), - 'trash': _("Trashcan"), - 'turtle': _("Palette of turtle commands"), - 'until': _("do-until-True operator that uses boolean operators from Numbers palette"), - 'userdefined': _("runs code found in the tamyblock.py module found in the Journal"), - 'userdefined2args': _("runs code found in the tamyblock.py module found in the Journal"), - 'userdefined3args': _("runs code found in the tamyblock.py module found in the Journal"), - 'video': _("Sugar Journal video object"), - 'voltage': _("sensor voltage"), - 'volume': _("microphone input volume"), - 'vspace': _("jogs stack down"), - 'wait': _("pauses program execution a specified number of seconds"), - 'while': _("do-while-True operator that uses boolean operators from Numbers palette"), - 'width': _("the canvas width"), - 'xcor': _("holds current x-coordinate value of the turtle (can be used in place of a number block)"), - 'ycor': _("holds current y-coordinate value of the turtle (can be used in place of a number block)")} - -# # 'dead key' Unicode dictionaries # DEAD_KEYS = ['grave', 'acute', 'circumflex', 'tilde', 'diaeresis', 'abovering'] -DEAD_DICTS = [{'A':192, 'E':200, 'I':204, 'O':210, 'U':217, 'a':224, 'e':232, - 'i':236, 'o':242, 'u':249}, - {'A':193, 'E':201, 'I':205, 'O':211, 'U':218, 'a':225, 'e':233, - 'i':237, 'o':243, 'u':250}, - {'A':194, 'E':202, 'I':206, 'O':212, 'U':219, 'a':226, 'e':234, - 'i':238, 'o':244, 'u':251}, - {'A':195, 'O':211, 'N':209, 'U':360, 'a':227, 'o':245, 'n':241, - 'u':361}, - {'A':196, 'E':203, 'I':207, 'O':211, 'U':218, 'a':228, 'e':235, - 'i':239, 'o':245, 'u':252}, - {'A':197, 'a':229}] +DEAD_DICTS = [{'A': 192, 'E': 200, 'I': 204, 'O': 210, 'U': 217, 'a': 224, + 'e': 232, 'i': 236, 'o': 242, 'u': 249}, + {'A': 193, 'E': 201, 'I': 205, 'O': 211, 'U': 218, 'a': 225, + 'e': 233, 'i': 237, 'o': 243, 'u': 250}, + {'A': 194, 'E': 202, 'I': 206, 'O': 212, 'U': 219, 'a': 226, + 'e': 234, 'i': 238, 'o': 244, 'u': 251}, + {'A': 195, 'O': 211, 'N': 209, 'U': 360, 'a': 227, 'o': 245, + 'n': 241, 'u': 361}, + {'A': 196, 'E': 203, 'I': 207, 'O': 211, 'U': 218, 'a': 228, + 'e': 235, 'i': 239, 'o': 245, 'u': 252}, + {'A': 197, 'a': 229}] NOISE_KEYS = ['Shift_L', 'Shift_R', 'Control_L', 'Caps_Lock', 'Pause', 'Alt_L', 'Alt_R', 'KP_Enter', 'ISO_Level3_Shift', 'KP_Divide', 'Escape', 'Return', 'KP_Page_Up', 'Up', 'Down', 'Menu', |