diff options
author | Walter Bender <walter@walter-laptop.(none)> | 2010-02-09 16:17:44 (GMT) |
---|---|---|
committer | Walter Bender <walter@walter-laptop.(none)> | 2010-02-09 16:17:44 (GMT) |
commit | 21b5205a773fb9a5049a7ed9b973f268fd598d63 (patch) | |
tree | d68288ac04f50d8ebe7bdf25d6a2c1e10e18b540 /tablock.py | |
parent | 25d9cf32599975491adec6ea6d0b955c620125cf (diff) |
expandable no. args to user-defined blocks
Diffstat (limited to 'tablock.py')
-rw-r--r-- | tablock.py | 26 |
1 files changed, 24 insertions, 2 deletions
@@ -152,10 +152,10 @@ class Block: self.spr.draw() # We may want to add additional slots for arguments ("innies"). - def add_arg(self): + def add_arg(self, keep_expanding=True): h = self.svg.get_height() self._ei += 1 - if self.type == 'block': + if self.type == 'block' and keep_expanding: self.svg.set_show(True) else: self.svg.set_show(False) @@ -307,6 +307,8 @@ class Block: self._make_number_style(svg) elif self.name in NUMBER_STYLE_BLOCK: self._make_number_style_block(svg) + elif self.name in NUMBER_STYLE_VAR_ARG: + self._make_number_style_var_arg(svg) elif self.name in NUMBER_STYLE_1ARG: self._make_number_style_1arg(svg) elif self.name in NUMBER_STYLE_1STRARG: @@ -458,6 +460,26 @@ class Block: ['number', False, self.svg.docks[1][0], self.svg.docks[1][1]]] + def _make_number_style_var_arg(self, svg): + self.svg.expand(self._dx+self._ex, self._ey) + innie = [True] + for i in range(self._ei+1): + innie.append(True) + self.svg.set_innie(innie) + self.svg.set_outie(True) + self.svg.set_tab(False) + self.svg.set_slot(False) + self._make_basic_block(svg) + self.docks = [['number', True, self.svg.docks[2+self._ei][0], + self.svg.docks[2+self._ei][1]], + ['number', False, self.svg.docks[0][0], + self.svg.docks[0][1], '[']] + for i in range(self._ei+1): + self.docks.append(['number', False, self.svg.docks[i+1][0], + self.svg.docks[i+1][1]]) + self.docks.append(['unavailable', False, 0, 0, ']']) + print self.docks + def _make_number_style_block(self, svg): self.svg.expand(self._dx+self._ex, self._ey) self.svg.set_innie([True,True]) |