From da3c83800dafe0c9d3cab46cede1fe02cfb66802 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Fri, 29 Jan 2010 18:48:02 +0000 Subject: ifelse --- 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" -- cgit v0.9.1