From 61247fb0e77c0717a65de9ce0790011ba038f470 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Fri, 29 Jan 2010 22:37:18 +0000 Subject: simple expandable block scheme --- (limited to 'block.py') diff --git a/block.py b/block.py index 8137f74..e955895 100644 --- a/block.py +++ b/block.py @@ -86,6 +86,8 @@ class Block: self.content = None self.primitive = None self.type = type + self._ex = 0 + self._ey = 0 self._font_size = [6.0, 4.5] self._left = 2 self._right = 2 @@ -129,6 +131,18 @@ class Block: self._make_block(e, self.svg) self.spr.set_shape(self.shapes[0]) + # We may want to grow a block vertically. + def expand_in_y(self, dy): + self._ey += dy + self._make_block(0, self.svg) + self.spr.set_shape(self.shapes[0]) + + # We may want to grow a block vertically. + def expand_in_x(self, dx): + self._ex += dx + self._make_block(0, self.svg) + self.spr.set_shape(self.shapes[0]) + def _new_block_from_factory(self, sprite_list, x, y): self.svg = SVG() self.svg.set_scale(self.scale) @@ -221,14 +235,14 @@ class Block: self.svg.set_colors(self.colors) def _make_basic_style(self, e, svg): - self.svg.expand(e, 0) + self.svg.expand(e+self._ex, self._ey) self._make_basic_block(svg) self.docks = (('flow',True,self.svg.docks[0][0],self.svg.docks[0][1]), ('flow',False,self.svg.docks[1][0],self.svg.docks[1][1])) self._left, self._right = 2, 2 def _make_basic_style_head(self, e, svg): - self.svg.expand(10+e, 0) + self.svg.expand(10+e+self._ex, self._ey) self.svg.set_slot(False) self.svg.set_cap(True) self._make_basic_block(svg) @@ -238,7 +252,7 @@ class Block: self._left, self._right = 2, 2 def _make_basic_style_head_1arg(self, e, svg): - self.svg.expand(10+e, 0) + self.svg.expand(10+e+self._ex, self._ey) self.svg.set_innie([True]) self.svg.set_slot(False) self.svg.set_cap(True) @@ -251,7 +265,7 @@ class Block: self._left, self._right = 2, self.svg.get_innie_width()*1.5 def _make_basic_style_tail(self, e, svg): - self.svg.expand(10+e, 0) + self.svg.expand(10+e+self._ex, self._ey) self.svg.set_tab(False) self._make_basic_block(svg) self.docks = (('flow', True, self.svg.docks[0][0], @@ -259,7 +273,7 @@ class Block: ('unavailable', False, 0, 0)) def _make_basic_style_1arg(self, e, svg): - self.svg.expand(10+e, 0) + self.svg.expand(10+e+self._ex, self._ey) self.svg.set_innie([True]) self._make_basic_block(svg) self.docks = (('flow', True, self.svg.docks[0][0], @@ -271,7 +285,7 @@ class Block: self._left, self._right = 2, self.svg.get_innie_width()*1.5 def _make_basic_style_2arg(self, e, svg): - self.svg.expand(10+e, 0) + self.svg.expand(10+e+self._ex, self._ey) self.svg.set_innie([True,True]) self._make_basic_block(svg) self.docks = (('flow', True, self.svg.docks[0][0], @@ -285,7 +299,7 @@ class Block: self._left, self._right = 2, self.svg.get_innie_width()*1.5 def _make_box_style(self, e, svg): - self.svg.expand(60+e, 0) + self.svg.expand(60+e+self._ex, self._ey) self._make_basic_box(svg) self.docks = (('number', True, self.svg.docks[0][0], self.svg.docks[0][1]), @@ -293,7 +307,7 @@ class Block: self._left, self._right = self.svg.docks[1][0], 1 def _make_number_style(self, e, svg): - self.svg.expand(e, 0) + self.svg.expand(e+self._ex, self._ey) self.svg.set_innie([True,True]) self.svg.set_outie(True) self.svg.set_tab(False) @@ -313,7 +327,7 @@ class Block: self._right = self.svg.get_innie_width()*1.5 def _make_number_style_block(self, e, svg): - self.svg.expand(e, 0) + self.svg.expand(e+self._ex, self._ey) self.svg.set_innie([True,True]) self.svg.set_outie(True) self.svg.set_tab(False) @@ -330,7 +344,7 @@ class Block: self._right = self.svg.get_innie_width()*1.5 def _make_number_style_1arg(self, e, svg): - self.svg.expand(e, 0) + self.svg.expand(e+self._ex, self._ey) self.svg.set_innie([True]) self.svg.set_outie(True) self.svg.set_tab(False) @@ -343,7 +357,7 @@ class Block: self._left, self._right = self.svg.docks[1][0], self.svg.docks[1][0] def _make_number_style_porch(self, e, svg): - self.svg.expand(e, 0) + self.svg.expand(e+self._ex, self._ey) self.svg.set_innie([True,True]) self.svg.set_outie(True) self.svg.set_tab(False) @@ -360,7 +374,7 @@ class Block: self._right = self.svg.get_width()-self.svg.docks[0][0] def _make_compare_style(self, e, svg): - self.svg.expand(10+e,0) + self.svg.expand(10+e+self._ex, self._ey) self._make_boolean_compare(svg) self.docks = (('bool', True, self.svg.docks[0][0], self.svg.docks[0][1], '('), @@ -372,7 +386,7 @@ class Block: self._left, self._right = self.svg.get_width()-self.svg.docks[2][0], 0 def _make_boolean_style(self, e, svg): - self.svg.expand(10+e,0) + self.svg.expand(10+e+self._ex, self._ey) self._make_boolean_and_or(svg) self.docks = (('bool', True, self.svg.docks[0][0], self.svg.docks[0][1]), @@ -383,7 +397,7 @@ class Block: 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.svg.expand(15+e+self._ex, self._ey) self._make_boolean_not(svg) self.docks = (('bool', True, self.svg.docks[0][0], self.svg.docks[0][1]), @@ -393,7 +407,7 @@ class Block: self._left = self._right def _make_flow_style(self, e, svg): - self.svg.expand(e, 0) + self.svg.expand(e+self._ex, self._ey) self.svg.set_slot(True) self._make_basic_flow(svg) self.docks = (('flow', True, self.svg.docks[0][0], @@ -404,7 +418,7 @@ class Block: self._left, self._right = 0, self.svg.get_width()-self.svg.docks[1][0] def _make_flow_style_1arg(self, e, svg): - self.svg.expand(e, 0) + self.svg.expand(e+self._ex, self._ey) self.svg.set_slot(True) self.svg.set_tab(True) self.svg.set_innie([True]) @@ -422,7 +436,7 @@ class Block: self.svg.get_innie_width()*1.5 def _make_flow_style_boolean(self, e, svg): - self.svg.expand(e, 0) + self.svg.expand(e+self._ex, self._ey) self.svg.set_slot(True) self.svg.set_tab(True) self.svg.set_boolean(True) @@ -438,7 +452,7 @@ class Block: 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(e, 0) + self.svg.expand(e+self._ex, self._ey) self.svg.set_slot(True) self.svg.set_tab(True) self.svg.set_else(True) -- cgit v0.9.1