From f76778cb84a098aa2b22a957f87e1b8c75015747 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Thu, 12 Dec 2013 16:48:56 +0000 Subject: auto-resize until boolean section --- (limited to 'TurtleArt') diff --git a/TurtleArt/tablock.py b/TurtleArt/tablock.py index 3b9650f..402de33 100644 --- a/TurtleArt/tablock.py +++ b/TurtleArt/tablock.py @@ -1088,7 +1088,8 @@ class Block: self.svg.docks[4][1], ']']] def _make_clamp_style_until(self, svg, extend_x=0, extend_y=4): - self.svg.expand(self.dx + self.ex + extend_x, self.ey + extend_y) + self.svg.expand(self.dx + self.ex + extend_x, self.ey + extend_y, + 0, self.ey2) self.svg.set_slot(True) self.svg.set_tab(True) self.svg.set_boolean(True) diff --git a/TurtleArt/taconstants.py b/TurtleArt/taconstants.py index 81f15f0..3e92956 100644 --- a/TurtleArt/taconstants.py +++ b/TurtleArt/taconstants.py @@ -341,8 +341,6 @@ VOICES = {'af': 'afrikaans', 'cy': 'welsh-test', 'el': 'greek', MACROS = { 'ifthenelse': # Because it is too big to fit on the palette [[0, 'ifelse', 0, 0, [None, None, None, None, None]]], - 'untilmacro': # Because it is too big to fit on the palette - [[0, 'until', 0, 0, [None, None, None, None]]], 'kbinput': [[0, 'until', 0, 0, [None, 1, 4, None]], [1, 'greater2', 0, 0, [0, 2, 3, None]], @@ -545,9 +543,6 @@ MACROS = { 'reskin': [[0, 'skin', 0, 0, [None, 1, None]], [1, 'journal', 0, 0, [0, None]]], - 'saveheaptojournal': - [[0, 'saveheap', 0, 0, [None, 1, None]], - [1, 'journal', 0, 0, [0, None]]], 'loadheapfromjournal': [[0, 'loadheap', 0, 0, [None, 1, None]], [1, 'journal', 0, 0, [0, None]]]} diff --git a/TurtleArt/tasprite_factory.py b/TurtleArt/tasprite_factory.py index 7f9494c..8360dbb 100755 --- a/TurtleArt/tasprite_factory.py +++ b/TurtleArt/tasprite_factory.py @@ -634,22 +634,12 @@ stroke-width="3.5" fill="%s" stroke="none" />\n' % (self._stroke) svg += self._inverse_corner(1, 1, 90, 0, 0) svg += self._do_slot() svg += self._rline_to(self._radius, 0) - if self._second_clamp: - svg += self._corner(-1, 1) - svg += self.line_to(xx, self._y) - svg += self._rline_to(-self._expand_x, 0) - svg += self._do_tab() - svg += self._inverse_corner(-1, 1, 90, 0, 0) - svg += self._rline_to(0, self._expand_y2) - svg += self._inverse_corner(1, 1, 90, 0, 0) - svg += self._do_slot() - svg += self._rline_to(self._radius, 0) if self._innie[0] is True: svg += self._do_innie() else: self.margins[2] = \ int((self._x - self._stroke_width + 0.5) * self._scale) - svg += self._rline_to(0, self._radius * 3) + svg += self._rline_to(0, self._radius + self._expand_y2) if self._bool is True: svg += self._do_boolean() svg += self._corner(-1, 1) diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py index 2f0a036..4584726 100644 --- a/TurtleArt/tawindow.py +++ b/TurtleArt/tawindow.py @@ -2554,10 +2554,14 @@ before making changes to your program')) continue if blk.name in EXPANDABLE_FLOW: if blk.name in block_styles['clamp-style-1arg'] or \ - blk.name in block_styles['clamp-style-boolean'] or \ - blk.name in block_styles['clamp-style-until']: + blk.name in block_styles['clamp-style-boolean']: if blk.connections[2] is not None: self._resize_clamp(blk, blk.connections[2]) + elif blk.name in block_styles['clamp-style-until']: + if blk.connections[2] is not None: + self._resize_clamp(blk, blk.connections[2]) + if blk.connections[1] is not None: + self._resize_clamp(blk, blk.connections[1], dockn=1) elif blk.name in block_styles['clamp-style']: if blk.connections[1] is not None: self._resize_clamp(blk, blk.connections[1]) @@ -3392,12 +3396,18 @@ before making changes to your program')) if best_destination.name in \ block_styles['clamp-style-1arg'] or \ best_destination.name in \ - block_styles['clamp-style-boolean'] or \ - best_destination.name in \ - block_styles['clamp-style-until']: + block_styles['clamp-style-boolean']: if best_destination_dockn == 2: self._resize_clamp(best_destination, self.drag_group[0]) + elif best_destination.name in \ + block_styles['clamp-style-until']: + if best_destination_dockn == 2: + self._resize_clamp(best_destination, + self.drag_group[0]) + elif best_destination_dockn == 1: + self._resize_clamp(best_destination, + self.drag_group[0], dockn=1) elif best_destination.name in block_styles['clamp-style'] or \ best_destination.name in \ block_styles['clamp-style-collapsible']: @@ -3496,16 +3506,18 @@ before making changes to your program')) self._cascade_expandable(blk2) elif c is not None and blk2.name in EXPANDABLE_FLOW: if blk2.name in block_styles['clamp-style-1arg'] or \ - blk2.name in block_styles['clamp-style-boolean'] or \ - blk2.name in block_styles['clamp-style-until']: + blk2.name in block_styles['clamp-style-boolean']: if c == 2: - self._resize_clamp(blk2, None, c) + self._resize_clamp(blk2, None, dockn=c) + elif blk2.name in block_styles['clamp-style-until']: + if c in [1, 2]: + self._resize_clamp(blk2, None, dockn=c) elif blk2.name in block_styles['clamp-style'] or \ blk2.name in block_styles['clamp-style-collapsible']: if c == 1: self._resize_clamp(blk2, None) elif blk2.name in block_styles['clamp-style-else']: - if c == 2 or c == 3: + if c in [2, 3]: self._resize_clamp(blk2, None, dockn=c) while blk3 is not None and blk3.connections[dockn] is not None: self._resize_clamp(blk3, blk3.connections[dockn], dockn=dockn) @@ -3521,22 +3533,35 @@ before making changes to your program')) y1 = blk.docks[-1][3] if blk.name in block_styles['clamp-style-else'] and dockn == 3: blk.reset_y2() + elif blk.name in block_styles['clamp-style-until'] and dockn == 1: + blk.reset_y2() else: blk.reset_y() dy = 0 # Calculate height of drag group - while gblk is not None: - delta = int((gblk.docks[-1][3] - gblk.docks[0][3]) / gblk.scale) - if delta == 0: - dy += 21 # Fixme: don't hardcode size of stop action block - else: - dy += delta - gblk = gblk.connections[-1] - # Clamp has room for one 'standard' block by default - if dy > 0: - dy -= 21 # Fixme: don't hardcode + if blk.name in block_styles['clamp-style-until'] and dockn == 1: + if gblk is not None: + dy = int(gblk.spr.rect.height / gblk.scale) + # Room for part of one 'standard' boolean by default + if dy > 0: + dy -= 25 # Fixme: don't hardcode size of slot + if dy < 0: + dy = 0 + else: + while gblk is not None: + delta = int((gblk.docks[-1][3] - gblk.docks[0][3]) / gblk.scale) + if delta == 0: + dy += 21 # Fixme: don't hardcode size of slot + else: + dy += delta + gblk = gblk.connections[-1] + # Clamp has room for one 'standard' block by default + if dy > 0: + dy -= 21 # Fixme: don't hardcode size of slot if blk.name in block_styles['clamp-style-else'] and dockn == 3: blk.expand_in_y2(dy) + elif blk.name in block_styles['clamp-style-until'] and dockn == 1: + blk.expand_in_y2(dy) else: blk.expand_in_y(dy) y2 = blk.docks[-1][3] -- cgit v0.9.1