Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TurtleArt/tawindow.py
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2012-01-06 00:20:39 (GMT)
committer Walter Bender <walter.bender@gmail.com>2012-01-06 00:20:39 (GMT)
commit5dc2ede4623608db76524faff04fa6f3640c8e4c (patch)
tree47ccb6115d338dfd970008976b21a03ee18085b6 /TurtleArt/tawindow.py
parent256d24722b5e93becc629777eaa6190326c3d2d4 (diff)
add adjusters for number blocks
Diffstat (limited to 'TurtleArt/tawindow.py')
-rw-r--r--TurtleArt/tawindow.py44
1 files changed, 42 insertions, 2 deletions
diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py
index 36628d8..846c77c 100644
--- a/TurtleArt/tawindow.py
+++ b/TurtleArt/tawindow.py
@@ -192,6 +192,7 @@ class TurtleArtWindow():
self.selected_blk = None
self.selected_spr = None
self.selected_turtle = None
+ self.triangle_sprs = []
self.drag_group = None
self.drag_turtle = 'move', 0, 0
self.drag_pos = 0, 0
@@ -414,6 +415,20 @@ class TurtleArtWindow():
self.toolbar_shapes[name].type = 'toolbar'
self.toolbar_shapes['stopiton'].hide()
+ # Make the triangle buttons for adjusting numeric values
+ svg = SVG()
+ svg.set_scale(self.scale)
+ self.triangle_sprs.append(Sprite(self.sprite_list, 0, 0,
+ svg_str_to_pixbuf(svg.triangle_up(["#FF00FF", "#A000A0"]))))
+ self.triangle_sprs[-1].set_label('+')
+ self.triangle_sprs[-1].type = 'control'
+ self.triangle_sprs[-1].hide()
+ self.triangle_sprs.append(Sprite(self.sprite_list, 0, 0,
+ svg_str_to_pixbuf(svg.triangle_down(["#FF00FF", "#A000A0"]))))
+ self.triangle_sprs[-1].set_label('-')
+ self.triangle_sprs[-1].type = 'control'
+ self.triangle_sprs[-1].hide()
+
def set_sharing(self, shared):
self._sharing = shared
@@ -994,8 +1009,25 @@ class TurtleArtWindow():
def button_press(self, mask, x, y):
self.block_operation = 'click'
+ # Find out what was clicked
+ spr = self.sprite_list.find_sprite((x, y))
+
# Unselect things that may have been selected earlier
if self.selected_blk is not None:
+ if self.selected_blk.name == 'number' and spr in self.triangle_sprs:
+ # increment or decrement a number block
+ nf = float(self.selected_blk.spr.labels[0].replace(CURSOR, ''))
+ ni = int(nf)
+ if ni == nf:
+ n = ni
+ else:
+ n = nf
+ if spr == self.triangle_sprs[0]:
+ n += 1
+ else:
+ n -= 1
+ self.selected_blk.spr.set_label(str(n) + CURSOR)
+ return True
self._unselect_block()
self.selected_turtle = None
@@ -1003,8 +1035,6 @@ class TurtleArtWindow():
if self.status_spr is not None:
self.status_spr.hide()
- # Find out what was clicked
- spr = self.sprite_list.find_sprite((x, y))
self.dx = 0
self.dy = 0
if spr is None:
@@ -1267,6 +1297,8 @@ class TurtleArtWindow():
# After unselecting a 'number' block, we need to check its value
if self.selected_blk.name == 'number':
self._number_check()
+ for spr in self.triangle_sprs:
+ spr.hide()
elif self.selected_blk.name == 'string':
self._string_check()
self.selected_blk.unhighlight()
@@ -1791,6 +1823,14 @@ class TurtleArtWindow():
if blk.name == 'number' or blk.name == 'string':
self.saved_string = blk.spr.labels[0]
blk.spr.labels[0] += CURSOR
+ if blk.name == 'number':
+ bx, by = blk.spr.get_xy()
+ bw, bh = blk.spr.get_dimensions()
+ tw, th = self.triangle_sprs[0].get_dimensions()
+ for spr in self.triangle_sprs:
+ spr.restore()
+ self.triangle_sprs[0].move((int(bx + (bw - tw) / 2), by - th))
+ self.triangle_sprs[1].move((int(bx + (bw - tw) / 2), by + bh))
elif blk.name in block_styles['box-style-media'] and \
blk.name not in NO_IMPORT: