diff options
author | Walter Bender <walter@sugarlabs.org> | 2010-12-06 17:29:04 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2010-12-06 17:29:04 (GMT) |
commit | 07da8a18901ec53c8052ead7a33be71f34caafe3 (patch) | |
tree | b866fa3130add09dfe4f966ad1666843d0acfcf1 /TurtleArt/tawindow.py | |
parent | fa74358e3fd1b4ea6df4105d3fe9bb3138bcbf3b (diff) |
added _align_to_grid()
Diffstat (limited to 'TurtleArt/tawindow.py')
-rw-r--r-- | TurtleArt/tawindow.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py index cbb2ae6..34a9e31 100644 --- a/TurtleArt/tawindow.py +++ b/TurtleArt/tawindow.py @@ -1985,6 +1985,8 @@ class TurtleArtWindow(): self.audiograb.stop_grabbing() stop_media(self.lc) exit() + elif keyname == 'g': + self._align_to_grid() elif self.selected_blk is not None: if self.selected_blk.name == 'number': @@ -2183,13 +2185,32 @@ class TurtleArtWindow(): self.display_coordinates() self.selected_turtle = None + def _align_to_grid(self, grid=20): + """ Align blocks at the top of stacks to a grid """ + for blk in self.block_list.list: + if blk.type == 'block': + top = find_top_block(blk) + if top == blk: + x = top.spr.get_xy()[0] + y = top.spr.get_xy()[1] + if x < 0: + dx = -x % grid + else: + dx = -(x % grid) + if y < 0: + dy = -y % grid + else: + dy = -(y % grid) + self._jog_block(top, dx, -dy) + def _jog_block(self, blk, dx, dy): """ Jog block """ if blk.type == 'proto': return if collapsed(blk): return - + if dx == 0 and dy == 0: + return self._disconnect(blk) self.drag_group = find_group(blk) |