From 25e7097b3fbddcc140a081a5cf570d815c43c1d8 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Wed, 18 Aug 2010 18:16:39 +0000 Subject: removing files that were moved --- (limited to 'taconstants.py') diff --git a/taconstants.py b/taconstants.py deleted file mode 100644 index fb4f191..0000000 --- a/taconstants.py +++ /dev/null @@ -1,1065 +0,0 @@ -# -*- coding: utf-8 -*- -#Copyright (c) 2010, 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 -#in the Software without restriction, including without limitation the rights -#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -#copies of the Software, and to permit persons to whom the Software is -#furnished to do so, subject to the following conditions: - -#The above copyright notice and this permission notice shall be included in -#all copies or substantial portions of the Software. - -#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -#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 _ - -# -# Sprite layers -# - -HIDE_LAYER = 100 -CANVAS_LAYER = 500 -OVERLAY_LAYER = 525 -TURTLE_LAYER = 550 -BLOCK_LAYER = 600 -CATEGORY_LAYER = 700 -TAB_LAYER = 710 -STATUS_LAYER = 900 -TOP_LAYER = 1000 - -# -# Block-palette categories -# - -PALETTE_NAMES = ['turtle', 'pen', 'colors', 'numbers', 'flow', 'blocks', - 'extras', 'portfolio', 'trash'] - -PALETTES = [['clean', 'forward', 'back', 'show', 'left', 'right', - 'seth', 'setxy', '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'], - ['hat1', 'stack1', 'hat', 'hat2', 'stack2', 'stack', - 'storeinbox1', 'storeinbox2', 'string', 'box1', 'box2', 'box', - 'storein', 'start'], - ['kbinput', 'push', 'printheap', 'keyboard', 'pop', 'clearheap', - 'myfunc1arg', 'userdefined', 'addturtle', 'comment', 'print', - 'cartesian', 'width', 'height', 'polar', 'sandwichtop', - 'sandwichbottom'], - ['journal', 'audio', 'description', 'hideblocks', 'showblocks', - 'fullscreen', 'savepix', 'savesvg', '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"], ["#0000FF","#0000A0"], ["#FFFF00","#A0A000"]] - -BOX_COLORS = {'red':["#FF0000","#A00000"],'orange':["#FFD000","#AA8000"], - 'yellow':["#FFFF00","#A0A000"],'green':["#00FF00","#008000"], - 'cyan':["#00FFFF","#00A0A0"],'blue':["#0000FF","#000080"], - 'purple':["#FF00FF","#A000A0"], 'white':["#FFFFFF", "#A0A0A0"], - 'black':["#000000", "#000000"]} - -# -# Misc. parameters -# -PALETTE_HEIGHT = 120 -PALETTE_WIDTH = 175 -SELECTOR_WIDTH = 55 -ICON_SIZE = 55 -SELECTED_COLOR = "#0000FF" -SELECTED_STROKE_WIDTH = 1.0 -STANDARD_STROKE_WIDTH = 1.0 -BLOCK_SCALE = 2.0 -PALETTE_SCALE = 1.5 -DEFAULT_TURTLE = 1 -HORIZONTAL_PALETTE = 0 -VERTICAL_PALETTE = 1 -BLACK = 0xFFFFFFFF -WHITE = 0xFFFFFFFE - -# -# Block-style definitions -# -BASIC_STYLE_HEAD = ['start', 'hat1', 'hat2', 'restore', 'restoreall'] -BASIC_STYLE_HEAD_1ARG = ['hat'] -BASIC_STYLE_TAIL = ['stopstack', 'empty'] -BASIC_STYLE = ['clean', 'penup', 'pendown', 'stack1', 'stack2', 'vspace', - 'hideblocks', 'showblocks', 'clearheap', 'printheap', 'kbinput', - 'fullscreen', 'sandwichcollapsed', 'cartesian', 'polar', 'startfill', - 'stopfill'] -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'] -BASIC_STYLE_VAR_ARG = ['userdefined', 'userdefined2args', 'userdefined3args'] -BULLET_STYLE = ['templatelist', 'list'] -BASIC_STYLE_2ARG = ['arc', 'setxy', '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', - 'volume', 'pitch', 'voltage', 'resistance', 'gray'] -BOX_STYLE_MEDIA = ['description', 'audio', 'journal'] -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 = ['sandwichtop2'] -COLLAPSIBLE_BOTTOM = ['sandwichbottom'] - -# Depreciated block styles -PORTFOLIO_STYLE_2x2 = ['template2x2'] -PORTFOLIO_STYLE_1x1 = ['template1x1', 'template1x1a'] -PORTFOLIO_STYLE_2x1 = ['template2x1'] -PORTFOLIO_STYLE_1x2 = ['template1x2'] - -# -# Blocks that are expandable -# -EXPANDABLE = ['vspace', 'hspace', 'templatelist', 'list', 'identity2', - 'myfunc1arg', 'myfunc2arg', 'myfunc3arg', 'userdefined', - 'userdefined2args', 'userdefined3args'] - -# -# Blocks that are 'collapsible' -# -COLLAPSIBLE = ['sandwichbottom', 'sandwichcollapsed'] - -# -# Depreciated 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', 'journal'] - -# -# These blocks get a special skin -# -BLOCKS_WITH_SKIN = ['journal', 'audio', 'description', 'nop', 'userdefined', - 'userdefined2args', 'userdefined3args'] - -PYTHON_SKIN = ['nop', 'userdefined', 'userdefined2args', 'userdefined3args'] - -# -# Block-name dictionary used for labels -# -BLOCK_NAMES = { - 'addturtle':[_('turtle')], - 'and2':[_('and')], - 'arc':[_('arc'), _('angle'), _('radius')], - 'audio':[' '], - 'back':[_('back')], - 'black':[_('black')], - 'blue':[_('blue')+' = 70'], - 'bottompos':[_('bottom')], - 'bottomy':[_('picture bottom')], - 'box':[_('box')], - 'box1':[_('box 1')], - 'box2':[_('box 2')], - 'cartesian':[_('Cartesian')], - 'clean':[_(' clean ')], - 'clearheap':[_('empty heap')], - 'color':[_('color')], - 'comment':[_('comment')], - 'cyan':[_('cyan')+' = 50'], - 'decription':[' '], - 'division2':['/'], - 'empty':[_('empty trash')], - 'equal2':['='], - 'fillscreen':[_('fill screen'), _('color'), _('shade')], - 'forever':[_('forever')], - 'forward':[_('forward')], - 'fullscreen':[_('full screen')], - 'gray':[_('gray')], - 'greater2':[">"], - 'green':[_('green')+' = 30'], - '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'], - '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'], - 'orange':[_('orange')+' = 10'], - 'or2':[_('or')], - 'pendown':[_('pen down')], - 'pensize':[_('pen size')], - 'penup':[_('pen up')], - 'picturelist':[' '], - 'picture1x1':[' '], - 'picture1x1a':[' '], - 'picture2x2':[' '], - 'picture2x1':[' '], - 'picture1x2':[' '], - 'pitch':[_('pitch')], - 'plus2':['+'], - 'polar':[_('polar')], - 'pop':[_('pop')], - 'printheap':[_('show heap')], - 'print':[_('print')], - 'product2':['×'], - 'purple':[_('purple')+' = 90'], - 'push':[_('push')], - 'random':[_('random'), _('min'), _('max')], - 'red':[_('red')+' = 0'], - 'remainder2':[_('mod')], - 'repeat':[' ',_('repeat')], - 'resistance':[_('resistance')], - 'restore':[_('restore last')], - 'restoreall':[_('restore all')], - 'right':[_('right')], - 'rightpos':[_('right')], - 'rightx':[_('picture right')], - 'savepix':[_('save picture')], - 'savesvg':[_('save SVG')], - 'sandwichbottom':[' '], - 'sandwichcollapsed':[_('click to open')], - 'sandwichtop':[_('top of stack')], - 'sandwichtop2':[_('top of stack')], - 'scale':[_('scale')], - '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')], - 'shade':[_('shade')], - 'show':[_('show')], - 'showblocks':[_('show blocks')], - 'showaligned':[_('show aligned')], - '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')], - 'turtle':[_('turtle')], - 'until':[_('until')], - 'userdefined':[_(' ')], - 'userdefined2args':[_(' ')], - 'userdefined3args':[_(' ')], - 'voltage':[_('voltage')], - 'volume':[_('volume')], - 'vspace':[' '], - 'wait':[_('wait')], - 'while':[_('while')], - 'while2':[_('while')], - 'white':[_('white')], - 'width':[_('width')], - 'write':[_('write')], - 'xcor':[_('xcor')], - 'ycor':[_('ycor')], - 'yellow':[_('yellow')+' = 20']} - -# -# 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', - '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', - 'remainder2':'mod', - 'repeat':'repeat', - 'resistance':'resistance', - 'right':'right', - 'rightpos':'rpos', - 'rightx':'rightx', - 'sandwichtop':'comment', - 'sandwichtop2':'comment', - 'sandwichbottom':'nop', - 'sandwichcollapsed':'nop', - 'savepix':'savepix', - 'savesvg':'savesvg', - 'scale':'scale', - 'setcolor':'setcolor', - 'setgray':'setgray', - 'seth':'seth', - 'setpensize':'setpensize', - 'setscale':'setscale', - 'setshade':'setshade', - 'settextsize':'settextsize', - 'settextcolor':'settextcolor', - 'setxy':'setxy', - 'shade':'shade', - 'show':'show', - 'showblocks':'showblocks', - 'showaligned':'showaligned', - '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')], - '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')], - 'sandwichtop2':[_('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], - '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], - 'wait':[1], - 'write':[_('text'), 32]} - -# -# Blocks that can interchange strings and numbers for their arguments -# -STRING_OR_NUMBER_ARGS = ['plus2', 'equal2', 'less2', 'greater2', 'box', - 'template1x1', 'template1x2', 'template2x1', 'list', - 'template2x2', 'template1x1a', 'templatelist', 'nop', - 'print', 'stack', 'hat', 'addturtle', 'myfunc', - 'myfunc1arg', 'myfunc2arg', 'myfunc3arg', 'comment', - 'sandwichtop', 'sandwichtop2', 'userdefined', - 'userdefined2args', 'userdefined3args', 'storein'] - -CONTENT_ARGS = ['show', 'showaligned', 'push', 'storein', 'storeinbox1', - 'storeinbox2'] - -# -# Status blocks -# - -MEDIA_SHAPES = ['audiooff', 'audioon', 'audiosmall', - 'journaloff', 'journalon', 'journalsmall', - 'descriptionoff', 'descriptionon', 'descriptionsmall', - 'pythonoff', 'pythonon', 'pythonsmall', - 'list', '1x1', '1x1a', '2x1', '1x2', '2x2'] - -OVERLAY_SHAPES = ['Cartesian', 'Cartesian_labeled', 'polar'] - -STATUS_SHAPES = ['status', 'info', 'nostack', 'noinput', 'emptyheap', - 'emptybox', 'nomedia', 'nocode', 'overflowerror', 'negroot', - 'syntaxerror', 'nofile', 'nojournal', 'zerodivide'] - -# -# Emulate Sugar toolbar when running from outside of Sugar -# -TOOLBAR_SHAPES = ['hideshowoff', 'eraseron', 'run-fastoff', - 'run-slowoff', 'debugoff', 'stopiton'] - -# -# Legacy names -# -OLD_NAMES = {'product':'product2', 'storeinbox':'storein', 'minus':'minus2', - 'division':'division2', 'plus':'plus2', 'and':'and2', 'or':'or2', - 'less':'less2', 'greater':'greater2', 'equal':'equal2', - 'remainder':'remainder2', 'identity':'identity2', - 'division':'division2', 'audiooff':'audio', 'endfill':'stopfill', - 'descriptionoff':'description','template3':'templatelist', - 'template1':'template1x1', 'template2':'template2x1', - 'template6':'template1x2', 'template7':'template2x2', - 'template4':'template1x1a', 'hres':'width', 'vres':'height' } - -# -# Define the relative size and postion of media objects -# (w, h, x, y, dx, dy) -# -TITLEXY = (0.9375, 0.875) - -# -# Relative placement of portfolio objects (used by depreciated 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), - 't1x2': (0.45, 0.45, 0.0625, 0.125, 1.05, 1.05), - 't2x2': (0.45, 0.45, 0.0625, 0.125, 1.05, 1.05), - 't1x1a': (0.9, 0.9, 0.0625, 0.125, 0, 0), - 'bullet': (1, 1, 0.0625, 0.125, 0, 0.1), - 'insertimage': (0.333, 0.333)} - -# -# Names for blocks without names for popup help -# -SPECIAL_NAMES = { - 'audio':_('audio'), - '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'), - '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)"), - '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"), - '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"), - 'remainder2':_("modular (remainder) operator"), - 'repeat':_("loops specified number of times"), - 'resistance':_("sensor input resistance"), - 'restore':_("restores most recent blocks from trash"), - 'restoreall':_("restore all blocks from trash"), - '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"), - 'sandwichtop2':_("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"), - '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."), - 'shade':_("holds current pen shade"), - 'show':_("draws text or show media from the Journal"), - 'showblocks':_("restores hidden blocks"), - '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"), - '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}] -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', - 'Left', 'Right', 'KP_Home', 'KP_End', 'KP_Up', 'Super_L', - 'KP_Down', 'KP_Left', 'KP_Right', 'KP_Page_Down', 'Scroll_Lock', - 'Page_Down', 'Page_Up'] -WHITE_SPACE = ['space','Tab'] - -CURSOR = '█' -RETURN = '⏎' - - -# -# Macros (groups of blocks) -# -MACROS = { - 'until': - [[0, 'forever', 0, 0, [None, 2, 1]], - [1, 'vspace', 0, 0, [0, None]], - [2, 'ifelse', 0, 0, [0, None, 3, None, None]], - [3, 'vspace', 0, 0, [2, 4]], - [4, 'stopstack', 0, 0, [3, None]]], - 'while': - [[0, 'forever', 0, 0, [None, 2, 1]], - [1, 'vspace', 0, 0, [0, None]], - [2, 'ifelse', 0, 0, [0, None, 3, 4, None]], - [3, 'vspace', 0, 0, [2, None]], - [4, 'stopstack', 0, 0, [2, None]]], - 'kbinput': - [[0, 'forever', 0, 0, [None, 1, None]], - [1, 'kbinput', 0, 0, [0, 2]], - [2, 'vspace', 0, 0, [1, 3]], - [3, 'if', 0, 0, [2, 4, 7, 8]], - [4, 'greater2', 0, 0, [3, 5, 6, None]], - [5, 'keyboard', 0, 0, [4, None]], - [6, ['number', '0'], 0, 0, [4, None]], - [7, 'stopstack', 0, 0, [3, None]], - [8, 'vspace', 0, 0, [3, 9]], - [9, 'wait', 0, 0, [8, 10, None]], - [10, ['number', '1'], 0, 0, [9, None]]], - 'picturelist': - [[0, 'sandwichtop', 0, 0, [None, 1, 2]], - [1, ['string', _('bulleted list')], 0, 0, [0, None]], - [2, 'setxy', 0, 0, [0, 3, 4, 5]], - [3, 'titlex', 0, 0, [2, None]], - [4, 'titley', 0, 0, [2, None]], - [5, 'setscale', 0, 0, [2, 6, 7]], - [6, ['number', '100'], 0, 0, [5, None]], - [7, 'show', 0, 0, [5, 8, 9]], - [8, ['string',_('Title')], 0, 0, [7, None]], - [9, 'setxy', 0, 0, [7, 10, 11, 12]], - [10, 'leftx', 0, 0, [9, None]], - [11, 'topy', 0, 0, [9, None]], - [12, 'setscale', 0, 0, [9, 13, 14]], - [13, ['number', '67'], 0, 0, [12, None]], - [14, 'list', 0, 0, [12, 15, 16, 17]], - [15, ['string','∙ '], 0, 0, [14, None]], - [16, ['string','∙ '], 0, 0, [14, None]], - [17, 'sandwichbottom', 0, 0, [14, None]]], - 'picture1x1a': - [[0, 'sandwichtop', 0, 0, [None, 1, 2]], - [1, ['string', _('picture')], 0, 0, [0, None]], - [2, 'setxy', 0, 0, [0, 3, 4, 5]], - [3, 'titlex', 0, 0, [2, None]], - [4, 'titley', 0, 0, [2, None]], - [5, 'setscale', 0, 0, [2, 6, 7]], - [6, ['number', '100'], 0, 0, [5, None]], - [7, 'show', 0, 0, [5, 8, 9]], - [8, ['string',_('Title')], 0, 0, [7, None]], - [9, 'setscale', 0, 0, [7, 10, 11]], - [10, ['number', '90'], 0, 0, [9, None]], - [11, 'setxy', 0, 0, [9, 12, 13, 14]], - [12, 'leftx', 0, 0, [11, None]], - [13, 'topy', 0, 0, [11, None]], - [14, 'showaligned', 0, 0, [11, 15, 16]], - [15, 'journal', 0, 0, [14, None]], - [16, 'sandwichbottom', 0, 0, [14, None]]], - 'picture2x2': - [[0, 'sandwichtop', 0, 0, [None, 1, 2]], - [1, ['string', _('2×2 pictures')], 0, 0, [0, None]], - [2, 'setxy', 0, 0, [0, 3, 4, 5]], - [3, 'titlex', 0, 0, [2, None]], - [4, 'titley', 0, 0, [2, None]], - [5, 'setscale', 0, 0, [2, 6, 7]], - [6, ['number', '100'], 0, 0, [5, None]], - [7, 'show', 0, 0, [5, 8, 9]], - [8, ['string',_('Title')], 0, 0, [7, None]], - [9, 'setscale', 0, 0, [7, 10, 11]], - [10, ['number', '35'], 0, 0, [9, None]], - [11, 'setxy', 0, 0, [9, 12, 13, 14]], - [12, 'leftx', 0, 0, [11, None]], - [13, 'topy', 0, 0, [11, None]], - [14, 'showaligned', 0, 0, [11, 15, 16]], - [15, 'journal', 0, 0, [14, None]], - [16, 'setxy', 0, 0, [14, 17, 18, 19]], - [17, 'rightx', 0, 0, [16, None]], - [18, 'topy', 0, 0, [16, None]], - [19, 'showaligned', 0, 0, [16, 20, 21]], - [20, 'journal', 0, 0, [19, None]], - [21, 'setxy', 0, 0, [19, 22, 23, 24]], - [22, 'leftx', 0, 0, [21, None]], - [23, 'bottomy', 0, 0, [21, None]], - [24, 'showaligned', 0, 0, [21, 25, 26]], - [25, 'journal', 0, 0, [24, None]], - [26, 'setxy', 0, 0, [24, 27, 28, 29]], - [27, 'rightx', 0, 0, [26, None]], - [28, 'bottomy', 0, 0, [26, None]], - [29, 'showaligned', 0, 0, [26, 30, 31]], - [30, 'journal', 0, 0, [29, None]], - [31, 'sandwichbottom', 0, 0, [29, None]]], - 'picture2x1': - [[0, 'sandwichtop', 0, 0, [None, 1, 2]], - [1, ['string', _('2×1 pictures')], 0, 0, [0, None]], - [2, 'setxy', 0, 0, [0, 3, 4, 5]], - [3, 'titlex', 0, 0, [2, None]], - [4, 'titley', 0, 0, [2, None]], - [5, 'setscale', 0, 0, [2, 6, 7]], - [6, ['number', '100'], 0, 0, [5, None]], - [7, 'show', 0, 0, [5, 8, 9]], - [8, ['string',_('Title')], 0, 0, [7, None]], - [9, 'setscale', 0, 0, [7, 10, 11]], - [10, ['number', '35'], 0, 0, [9, None]], - [11, 'setxy', 0, 0, [9, 12, 13, 14]], - [12, 'leftx', 0, 0, [11, None]], - [13, 'topy', 0, 0, [11, None]], - [14, 'showaligned', 0, 0, [11, 15, 16]], - [15, 'journal', 0, 0, [14, None]], - [16, 'setxy', 0, 0, [14, 17, 18, 19]], - [17, 'leftx', 0, 0, [16, None]], - [18, 'bottomy', 0, 0, [16, None]], - [19, 'showaligned', 0, 0, [16, 20, 21]], - [20, 'description', 0, 0, [19, None]], - [21, 'setxy', 0, 0, [19, 22, 23, 24]], - [22, 'rightx', 0, 0, [21, None]], - [23, 'topy', 0, 0, [21, None]], - [24, 'showaligned', 0, 0, [21, 25, 26]], - [25, 'journal', 0, 0, [24, None]], - [26, 'setxy', 0, 0, [24, 27, 28, 29]], - [27, 'rightx', 0, 0, [26, None]], - [28, 'bottomy', 0, 0, [26, None]], - [29, 'showaligned', 0, 0, [26, 30, 31]], - [30, 'description', 0, 0, [29, None]], - [31, 'sandwichbottom', 0, 0, [29, None]]], - 'picture1x2': - [[0, 'sandwichtop', 0, 0, [None, 1, 2]], - [1, ['string', _('1×2 pictures')], 0, 0, [0, None]], - [2, 'setxy', 0, 0, [0, 3, 4, 5]], - [3, 'titlex', 0, 0, [2, None]], - [4, 'titley', 0, 0, [2, None]], - [5, 'setscale', 0, 0, [2, 6, 7]], - [6, ['number', '100'], 0, 0, [5, None]], - [7, 'show', 0, 0, [5, 8, 9]], - [8, ['string',_('Title')], 0, 0, [7, None]], - [9, 'setscale', 0, 0, [7, 10, 11]], - [10, ['number', '35'], 0, 0, [9, None]], - [11, 'setxy', 0, 0, [9, 12, 13, 14]], - [12, 'leftx', 0, 0, [11, None]], - [13, 'topy', 0, 0, [11, None]], - [14, 'showaligned', 0, 0, [11, 15, 16]], - [15, 'journal', 0, 0, [14, None]], - [16, 'setxy', 0, 0, [14, 17, 18, 19]], - [17, 'rightx', 0, 0, [16, None]], - [18, 'topy', 0, 0, [16, None]], - [19, 'showaligned', 0, 0, [16, 20, 21]], - [20, 'description', 0, 0, [19, None]], - [21, 'setxy', 0, 0, [19, 22, 23, 24]], - [22, 'leftx', 0, 0, [21, None]], - [23, 'bottomy', 0, 0, [21, None]], - [24, 'showaligned', 0, 0, [21, 25, 26]], - [25, 'journal', 0, 0, [24, None]], - [26, 'setxy', 0, 0, [24, 27, 28, 29]], - [27, 'rightx', 0, 0, [26, None]], - [28, 'bottomy', 0, 0, [26, None]], - [29, 'showaligned', 0, 0, [26, 30, 31]], - [30, 'description', 0, 0, [29, None]], - [31, 'sandwichbottom', 0, 0, [29, None]]], - 'picture1x1': - [[0, 'sandwichtop', 0, 0, [None, 1, 2]], - [1, ['string', _('1×1 pictures')], 0, 0, [0, None]], - [2, 'setxy', 0, 0, [0, 3, 4, 5]], - [3, 'titlex', 0, 0, [2, None]], - [4, 'titley', 0, 0, [2, None]], - [5, 'setscale', 0, 0, [2, 6, 7]], - [6, ['number', '100'], 0, 0, [5, None]], - [7, 'show', 0, 0, [5, 8, 9]], - [8, ['string',_('Title')], 0, 0, [7, None]], - [9, 'setscale', 0, 0, [7, 10, 11]], - [10, ['number', '35'], 0, 0, [9, None]], - [11, 'setxy', 0, 0, [9, 12, 13, 14]], - [12, 'leftx', 0, 0, [11, None]], - [13, 'topy', 0, 0, [11, None]], - [14, 'showaligned', 0, 0, [11, 15, 16]], - [15, 'journal', 0, 0, [14, None]], - [16, 'setxy', 0, 0, [14, 17, 18, 19]], - [17, 'rightx', 0, 0, [16, None]], - [18, 'topy', 0, 0, [16, None]], - [19, 'showaligned', 0, 0, [16, 20, 21]], - [20, 'description', 0, 0, [19, None]], - [21, 'sandwichbottom', 0, 0, [19, None]]], - } -- cgit v0.9.1