Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter@walter-laptop.(none)>2010-01-29 18:48:02 (GMT)
committer Walter Bender <walter@walter-laptop.(none)>2010-01-29 18:48:02 (GMT)
commitda3c83800dafe0c9d3cab46cede1fe02cfb66802 (patch)
tree6dd6b90abc3b8e71a5079b2aed63fbff77e715dc
parent2c3095f9d3b0f2bc6377112a55113bf5c3b0029f (diff)
ifelse
-rw-r--r--block.py27
-rw-r--r--constants.py8
-rwxr-xr-xsprite_factory.py25
-rw-r--r--taproject.py8
-rw-r--r--tawindow.py2
5 files changed, 56 insertions, 14 deletions
diff --git a/block.py b/block.py
index 276308d..0725075 100644
--- a/block.py
+++ b/block.py
@@ -205,6 +205,8 @@ class Block:
self._make_flow_style_1arg(e, svg)
elif self.name in FLOW_STYLE_BOOLEAN:
self._make_flow_style_boolean(e, svg)
+ elif self.name in FLOW_STYLE_ELSE:
+ self._make_flow_style_else(e, svg)
else:
self._make_basic_style(e, svg)
print ">>>>> I don't know how to create a %s block" % (self.name)
@@ -379,7 +381,7 @@ class Block:
('bool', False, self.svg.docks[2][0],
self.svg.docks[2][1]))
self._left, self._right = self.svg.get_width()-self.svg.docks[1][0], 0
-
+
def _make_not_style(self, e, svg):
self.svg.expand(15+e, 0)
self._make_boolean_not(svg)
@@ -415,7 +417,9 @@ class Block:
self.svg.docks[2][1], '['),
('flow', False, self.svg.docks[3][0],
self.svg.docks[3][1], ']'))
- self._left, self._right = 2, self.svg.get_width()-self.svg.docks[1][0]
+ self._left = 2
+ self._right = self.svg.get_width()-self.svg.docks[1][0]+ \
+ self.svg.get_innie_width()*1.5
def _make_flow_style_boolean(self, e, svg):
self.svg.expand(25+e, 0)
@@ -433,6 +437,25 @@ class Block:
self.svg.docks[3][1], ']'))
self._left, self._right = 2, self.svg.get_width()-self.svg.docks[1][0]
+ def _make_flow_style_else(self, e, svg):
+ self.svg.expand(25+e, 0)
+ self.svg.set_slot(True)
+ self.svg.set_tab(True)
+ self.svg.set_else(True)
+ self.svg.set_boolean(True)
+ self._make_basic_flow(svg)
+ self.docks = (('flow', True, self.svg.docks[0][0],
+ self.svg.docks[0][1]),
+ ('bool', False, self.svg.docks[1][0],
+ self.svg.docks[1][1]),
+ ('flow', False, self.svg.docks[3][0],
+ self.svg.docks[3][1], '['),
+ ('flow', False, self.svg.docks[2][0],
+ self.svg.docks[2][1], ']['),
+ ('flow', False, self.svg.docks[4][0],
+ self.svg.docks[4][1], ']'))
+ self._left, self._right = 2, self.svg.get_width()-self.svg.docks[1][0]
+
def _make_basic_block(self, svg):
self.shapes.append(svg_str_to_pixbuf(self.svg.basic_block()))
self.width = self.svg.get_width()
diff --git a/constants.py b/constants.py
index 6cd9462..4ce1b14 100644
--- a/constants.py
+++ b/constants.py
@@ -44,7 +44,7 @@ PALETTES = [['forward', 'back', 'clean', 'left', 'right', 'show',
['plus2', 'minus2', 'product2',
'division2', 'identity2', 'remainder2', 'sqrt', 'random',
'number', 'greater', 'less', 'equal', 'not', 'and', 'or'],
- ['wait', 'forever', 'repeat', 'if', 'hspace',
+ ['wait', 'forever', 'repeat', 'if', 'ifelse', 'hspace',
'vspace', 'stopstack'],
['hat1', 'stack1', 'hat', 'hat2', 'stack2', 'stack',
'storeinbox1', 'storeinbox2', 'string', 'box1', 'box2', 'box',
@@ -102,6 +102,7 @@ NOT_STYLE = ['not']
FLOW_STYLE = ['forever', 'hspace']
FLOW_STYLE_1ARG = ['repeat']
FLOW_STYLE_BOOLEAN = ['if']
+FLOW_STYLE_ELSE = ['ifelse']
#
# blocks that contain media
@@ -124,13 +125,14 @@ BLOCK_NAMES = {'clean':[_('clean')], 'forward':[_('forward')],
'fillscreen':[_('fill screen'),_('color'),_('shade')],
'shade':[_('shade')], 'nop':[_('load Python code')],
'pensize':[_('pen size')], 'textsize':[_('text size')],
- 'color':[_('color')],
+ 'color':[_('color')], 'ifelse':['', _('if'), _('then else')],
'plus2':['+'], 'minus2':['–'], 'product2':['×'], 'division2':['/'],
'remainder2':[_('mod')], 'identity2':['←'],
'random':[_('random'),_('min'),_('max')], 'sqrt':['√'],
'less':['<'],'greater':[">"], 'equal':['='], 'and':[_('and')],
'not':[_('not')], 'print':[_('print')], 'wait':[_('wait')], 'or':[_('or')],
- 'forever':[_('forever')], 'repeat':[_('repeat')], 'if':[_('if then')],
+ 'forever':[_('forever')], 'repeat':['', _('repeat')],
+ 'if':['', _('if'), _('then')],
'stopstack':[_('stop action')], 'hspace':[' '], 'vspace':[' '],
'start':[_('start')], 'hat1':[_('action 1')],
'stack1':[_('action 1')],
diff --git a/sprite_factory.py b/sprite_factory.py
index 1a3f330..b8b9635 100755
--- a/sprite_factory.py
+++ b/sprite_factory.py
@@ -59,6 +59,7 @@ class SVG:
self._porch_y = self._innie_y1+self._innie_y2+4*self._stroke_width
self._expand_x = 0
self._expand_y = 0
+ self._else = False
self._fill = "#00FF00"
self._stroke = "#00A000"
self._gradiant = False
@@ -111,9 +112,15 @@ class SVG:
svg += self._rline_to(0,self._radius/2.0)
svg += self._do_boolean()
svg += self._rline_to(0,self._radius/2.0)
- svg += self._rline_to(self._radius+self._slot_x, 0)
+ if self._else:
+ svg += self._rline_to(self._radius*3+self._slot_x*2, 0)
+ else:
+ svg += self._rline_to(self._radius+self._slot_x, 0)
svg += self._rarc_to(1,1)
svg += self._rline_to(-self._radius,0)
+ if self._else:
+ svg += self._do_tab()
+ svg += self._rline_to(-self._radius*2, 0)
svg += self._do_tab()
svg += self._rline_to(-self._radius, 0)
svg += self._rline_to(0, self._expand_y)
@@ -335,6 +342,9 @@ class SVG:
def set_boolean(self, flag=False):
self._bool = flag
+ def set_else(self, flag=False):
+ self._else = flag
+
#
# Exotic methods
#
@@ -631,15 +641,16 @@ def close_file(f):
f.close()
def generator(datapath):
- svg0 = SVG()
- svg0.set_orientation(180)
+
+ """
+ svgt = SVG()
+ svgt.set_orientation(180)
f = open_file(datapath, "turtle180.svg")
- svg_str = svg0.turtle()
+ svg_str = svgt.turtle()
f.write(svg_str)
close_file(f)
-
-
"""
+
svg0 = SVG()
f = open_file(datapath, "flow-test.svg")
svg0.set_scale(1)
@@ -647,11 +658,13 @@ def generator(datapath):
# svg0.set_innie([True])
svg0.set_boolean(True)
svg0.set_tab(True)
+ svg0.set_else(True)
svg0.set_gradiant(True)
svg_str = svg0.basic_flow()
f.write(svg_str)
close_file(f)
+ """
svg1 = SVG()
f = open_file(datapath, "blob-test.svg")
svg1.set_scale(1)
diff --git a/taproject.py b/taproject.py
index f0fb314..298f281 100644
--- a/taproject.py
+++ b/taproject.py
@@ -174,7 +174,13 @@ def load_block(tw, b):
if type(btype) == type((1,2)):
btype, value = btype
if btype in CONTENT_BLOCKS:
- values = [value]
+ if btype == 'number':
+ try:
+ values = [int(value)]
+ except ValueError:
+ values = [float(value)]
+ else:
+ values = [value]
else:
values = []
diff --git a/tawindow.py b/tawindow.py
index 0868102..b5b7a3c 100644
--- a/tawindow.py
+++ b/tawindow.py
@@ -1218,7 +1218,6 @@ class TurtleArtWindow():
"""
def _number_check(self):
n = self.selected_blk.spr.labels[0].replace(CURSOR,'')
- print "(%s, %s)" % (self.selected_blk.spr.labels[0], n)
if n in ['-', '.', '-.']:
n = 0
if n is not None:
@@ -1248,7 +1247,6 @@ class TurtleArtWindow():
#
def numcheck(new, old):
- print "old: %s, new: %s" % (str(old), str(new))
n = new.replace(CURSOR,'')
if n is '':
return "0"