From 6e8e6c49597b2833ce68e0e9db46117818320d20 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Sat, 23 Jan 2010 22:55:16 +0000 Subject: fixed bug in basic block with 2args --- diff --git a/block.py b/block.py index 4ec0595..2336905 100644 --- a/block.py +++ b/block.py @@ -116,7 +116,8 @@ class Block: self._make_block(name, 0, svg) self.spr = sprites.Sprite(sprite_list, x, y, self.shape) - self.spr.set_margins(self._left, 0, self._right, 0) + self.spr.set_margins(self._left, svg.get_slot_depth(), self._right, + svg.get_slot_depth()*2) # if labels were passed, use them if len(labels) > 0: @@ -145,10 +146,6 @@ class Block: self._make_block(name, e, svg) self.spr.set_shape(self.shape) - """ - Do something with default values? - """ - def _make_block(self, name, e, svg): self._set_colors(name, svg) svg.set_stroke_width(STANDARD_STROKE_WIDTH) @@ -164,7 +161,7 @@ class Block: elif name in BASIC_STYLE_1ARG: self._make_basic_style_1arg(e, svg) elif name in BASIC_STYLE_2ARG: - self._make_basic_style_1arg(e, svg) + self._make_basic_style_2arg(e, svg) elif name in BOX_STYLE: self._make_box_style(e, svg) elif name in NUMBER_STYLE: @@ -187,11 +184,7 @@ class Block: self._make_flow_style_boolean(e, svg) else: self._make_basic_style(e, svg) - print "don't know how to create a block for %s" % (name) - - print self.docks - print "w %d h %d" % (svg._width, svg._height) - print "l %d r %d" % (self._left, self._right) + print "don't know how to create a %s block" % (name) def _set_colors(self, name, svg): if name in TURTLE_PALETTE: @@ -234,7 +227,7 @@ class Block: self.docks = (('start', True, 0, 0), ('string', False, svg.docks[0][0], svg.docks[0][1]), ('flow', False, svg.docks[1][0], svg.docks[1][1])) - self._left, self._right = 0, svg.get_innie_size() + self._left, self._right = 0, svg.get_innie_width() def _make_basic_style_tail(self, e, svg): svg.expand(40+e, 0) @@ -250,7 +243,7 @@ class Block: self.docks = (('flow', True, svg.docks[0][0], svg.docks[0][1]), ('number', False, svg.docks[1][0], svg.docks[1][1]), ('flow', False, svg.docks[2][0], svg.docks[2][1])) - self._left, self._right = 0, svg.get_innie_size() + self._left, self._right = 0, svg.get_innie_width() def _make_basic_style_2arg(self, e, svg): svg.expand(25+e, 0) @@ -260,7 +253,7 @@ class Block: ('number', False, svg.docks[1][0], svg.docks[1][1]), ('number', False, svg.docks[2][0], svg.docks[2][1]), ('flow', False, svg.docks[3][0], svg.docks[3][1])) - self._left, self._right = 0, svg.get_width()-svg.docks[1][0] + self._left, self._right = 0, svg.get_innie_width()*1.5 def _make_box_style(self, e, svg): svg.expand(60+e, 0) @@ -308,7 +301,8 @@ class Block: self.docks = (('number', True, svg.docks[2][0], svg.docks[2][1]), ('number', False, svg.docks[0][0], svg.docks[0][1]), ('number', False, svg.docks[1][0], svg.docks[1][1])) - self._left, self._right = svg.docks[2][0], svg.get_width()-svg.docks[0][0] + self._left = svg.docks[2][0] + self._right = svg.get_width()-svg.docks[0][0] def _make_compare_style(self, e, svg): svg.expand(10+e,0) diff --git a/constants.py b/constants.py index cc3c56a..2af8c74 100644 --- a/constants.py +++ b/constants.py @@ -163,7 +163,8 @@ DEFAULTS = {'forward':[100], 'back':[100], 'left':[90], 'right':[90], 'set shade':[50], 'fill screen':[60,80], 'number':[100], 'random':[0,100], 'wait':[1], 'repeat':[4], 'set xy':[0,0], 'store in':[_('my box'),100], 'box':[_('my box')], - 'def action':[_('action')], 'action':[_('action')]} + 'def action':[_('action')], 'action':[_('action')], + 'store in box 1':[100], 'store in box 2':[100]} # # 'dead key' Unicode dictionaries diff --git a/sprite_factory.py b/sprite_factory.py index 1bfb1b1..b761d61 100755 --- a/sprite_factory.py +++ b/sprite_factory.py @@ -256,9 +256,12 @@ class SVG: def get_height(self): return self._height - def get_innie_size(self): + def get_innie_width(self): return (self._innie_x1+self._innie_x2)*self._scale + def get_slot_depth(self): + return self._slot_y*self._scale + def clear_docks(self): self.docks = [] @@ -510,7 +513,8 @@ class SVG: self._rline_to(0, -self._slot_y), self._rline_to(-self._stroke_width, 0)) self.docks.append((int(self._x*self._scale), - int(self._y*self._scale))) + int((self._y+self._stroke_width)*\ + self._scale))) return s else: return self._rline_to(-self._slot_x, 0) diff --git a/tawindow.py b/tawindow.py index 4b9daa2..5e845d5 100644 --- a/tawindow.py +++ b/tawindow.py @@ -913,12 +913,15 @@ class TurtleArtWindow(): self.dragpos = 20, 20 newblk.connections = [None]*len(newblk.docks) print "new block %s" % (newblk.name) - for i in range(len(newblk.defaults)): - dock = newblk.docks[i+1] # the first dock position is a connector + print newblk.defaults + print newblk.docks + for i, argvalue in enumerate(newblk.defaults): + # skip the first dock position--it is always a connector + dock = newblk.docks[i+1] argname = dock[0] + print "adding block %s with value %s" % (argname, str(argvalue)) if argname == 'unavailable': continue - argvalue = newblk.defaults[i] if (type(argvalue) is str or type(argvalue) is unicode) and\ argname == 'number': argname = 'string' -- cgit v0.9.1