Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPootle daemon <pootle@pootle.sugarlabs.org>2012-11-12 05:30:58 (GMT)
committer Pootle daemon <pootle@pootle.sugarlabs.org>2012-11-12 05:30:58 (GMT)
commitfee5b3cbdd5662728eef7956d7caed80dea071c6 (patch)
tree69fd66ca708ef14518e39f0d7eec5d35f0da5473
parent49a33a2d51980142613c03ca22b1bf7c5666b6ff (diff)
parent921ada788c1e7c4e616dccc848940c5a2b724311 (diff)
Merge branch 'master' of git.sugarlabs.org:turtleart/mainline
-rw-r--r--NEWS6
-rw-r--r--TurtleArt/sprites.py2
-rwxr-xr-xTurtleArt/tasprite_factory.py244
-rw-r--r--TurtleArt/tawindow.py51
-rwxr-xr-xturtleblocks.py10
5 files changed, 257 insertions, 56 deletions
diff --git a/NEWS b/NEWS
index c696cc3..2fcc627 100644
--- a/NEWS
+++ b/NEWS
@@ -4,14 +4,18 @@ BUG FIX:
* Fixed rounding error in calculating turtle movement
* Fixed truncation error in display of turtle position
* Fixed some grammatical errors in strings (cjl)
+* Fixed inconsistent behaviour of Stop Button when running in GNOME
+* Work-around for #3675 (sensor channel swapping on XO 1.75)
+* More fine-tuning of on-screen keyboard support
NOTE:
-* taextras.py has been moved to its own repository
+* As of v167, taextras.py has been moved to its own repository
166
BUG FIXES:
* Fixed problem with label alignment on some blocks
+* Fixed problem with help label size (#4095)
* Fixed problem inserting blocks into some stacks
165
diff --git a/TurtleArt/sprites.py b/TurtleArt/sprites.py
index 989b129..f85458d 100644
--- a/TurtleArt/sprites.py
+++ b/TurtleArt/sprites.py
@@ -151,7 +151,7 @@ class Sprites:
print 'sprites.redraw_sprites: no Cairo context'
return
for spr in self.list:
- if area == None:
+ if area is None:
spr.draw(cr=cr)
else:
intersection = spr.rect.intersect(area)
diff --git a/TurtleArt/tasprite_factory.py b/TurtleArt/tasprite_factory.py
index 0cbe1cf..4ad377a 100755
--- a/TurtleArt/tasprite_factory.py
+++ b/TurtleArt/tasprite_factory.py
@@ -1197,11 +1197,245 @@ def close_file(f):
def generator(datapath):
- svg0 = SVG()
- f = open_file(datapath, "true.svg")
- svg0.set_scale(2)
- svg0.expand(30, 0, 0, 0)
- svg_str = svg0.boolean_not(True)
+
+ svg = SVG()
+ f = open_file(datapath, "boolean_notnot.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg_str = svg.boolean_not(True)
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "boolean_not.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg_str = svg.boolean_not(False)
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "basic.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "blank.svg")
+ svg.set_scale(2)
+ svg.set_slot(False)
+ svg.set_tab(False)
+ svg.set_tail(False)
+ svg.expand(30, 0, 0, 0)
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "head.svg")
+ svg.set_scale(2)
+ svg.set_slot(False)
+ svg.set_cap(True)
+ svg.expand(30, 0, 0, 0)
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "head1arg.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_innie([True])
+ svg.set_slot(False)
+ svg.set_cap(True)
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "tail1arg.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_innie([True])
+ svg.set_slot(False)
+ svg.set_tail(True)
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "tail.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_slot(False)
+ svg.set_tail(True)
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "basic1arg.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_innie([True])
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "basic2arg.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_innie([True, True])
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "basic3arg.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_innie([True, True, True])
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "box.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg_str = svg.basic_box()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "media.svg")
+ svg.set_scale(2)
+ svg.expand(40, 30, 0, 0)
+ svg_str = svg.basic_box()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "number.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_innie([True, True])
+ svg.set_outie(True)
+ svg.set_tab(False)
+ svg.set_slot(False)
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "number1arg.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_innie([True])
+ svg.set_outie(True)
+ svg.set_tab(False)
+ svg.set_slot(False)
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "number3arg.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_innie([True, True, True])
+ svg.set_outie(True)
+ svg.set_tab(False)
+ svg.set_slot(False)
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "numberp.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_innie([True, True])
+ svg.set_outie(True)
+ svg.set_tab(False)
+ svg.set_slot(False)
+ svg.set_porch(True)
+ svg_str = svg.basic_block()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "comparep.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_porch(True)
+ svg_str = svg.boolean_compare()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "compare.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg_str = svg.boolean_compare()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "andor.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg_str = svg.boolean_and_or()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "clamp.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_slot(True)
+ svg.set_tab(True)
+ svg.second_clamp(False)
+ svg_str = svg.clamp()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "clampn.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_slot(True)
+ svg.set_tab(True)
+ svg.set_innie([True])
+ svg.second_clamp(False)
+ svg_str = svg.clamp()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "clampb.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_slot(True)
+ svg.set_tab(True)
+ svg.set_boolean(True)
+ svg.second_clamp(False)
+ svg_str = svg.clamp()
+ f.write(svg_str)
+ close_file(f)
+
+ svg = SVG()
+ f = open_file(datapath, "clampe.svg")
+ svg.set_scale(2)
+ svg.expand(30, 0, 0, 0)
+ svg.set_slot(True)
+ svg.set_tab(True)
+ svg.set_boolean(True)
+ svg.second_clamp(True)
+ svg_str = svg.clamp()
f.write(svg_str)
close_file(f)
diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py
index 019b345..34d8588 100644
--- a/TurtleArt/tawindow.py
+++ b/TurtleArt/tawindow.py
@@ -207,7 +207,6 @@ 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
@@ -484,20 +483,6 @@ 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
@@ -660,8 +645,6 @@ class TurtleArtWindow():
if not self.hide:
for blk in self.just_blocks():
blk.spr.hide()
- for spr in self.triangle_sprs:
- spr.hide()
self.hide_palette()
self.hide = True
else:
@@ -1248,22 +1231,7 @@ class TurtleArtWindow():
# 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:
- nf = float(self.selected_blk.spr.labels[0])
- 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))
- self._text_buffer.set_text(str(n))
- return True
- elif self._action_name(self.selected_blk, hat=True):
+ if self._action_name(self.selected_blk, hat=True):
if self.selected_blk.values[0] == _('action'):
self._new_stack_block(self.selected_blk.spr.labels[0])
self._update_action_names(self.selected_blk.spr.labels[0])
@@ -1803,11 +1771,11 @@ class TurtleArtWindow():
def _unselect_block(self):
''' Unselect block '''
# After unselecting a 'number' block, we need to check its value
+ if self.selected_blk is None:
+ return
if self.selected_blk.name == 'number':
if self._text_to_check:
self._test_number()
- for spr in self.triangle_sprs:
- spr.hide()
elif self.selected_blk.name == 'string':
if self._text_to_check:
self._test_string()
@@ -2383,11 +2351,6 @@ class TurtleArtWindow():
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.set_layer(TOP_LAYER)
- self.triangle_sprs[0].move((int(bx + (bw - tw) / 2), by - th))
- self.triangle_sprs[1].move((int(bx + (bw - tw) / 2), by + bh))
if not hasattr(self, '_text_entry'):
self._text_entry = gtk.TextView()
self._text_entry.set_justification(gtk.JUSTIFY_CENTER)
@@ -2408,6 +2371,8 @@ class TurtleArtWindow():
by += self.activity.menu_height + 4 # FIXME: padding
mx, my = blk.spr.label_left_top()
self._text_entry.set_pixels_above_lines(my)
+ bx -= int(self.activity.sw.get_hadjustment().get_value())
+ by -= int(self.activity.sw.get_vadjustment().get_value())
self.activity.fixed.move(self._text_entry, bx + mx, by + my * 2)
self.activity.fixed.show()
self._focus_out_id = self._text_entry.connect(
@@ -3202,10 +3167,8 @@ class TurtleArtWindow():
bounds = self._text_buffer.get_bounds()
text = self._text_buffer.get_text(bounds[0], bounds[1])
self._text_to_check = True
- if self.selected_blk.type == 'number':
- self._number_check(text)
- else:
- self._string_check(text)
+ if self.selected_blk is not None:
+ self._unselect_block()
def _test_string(self):
if hasattr(self, '_text_entry'):
diff --git a/turtleblocks.py b/turtleblocks.py
index 663db59..e82021d 100755
--- a/turtleblocks.py
+++ b/turtleblocks.py
@@ -329,16 +329,16 @@ class TurtleMain():
self.menu_bar.show()
self.menu_height = self.menu_bar.size_request()[1]
- sw = gtk.ScrolledWindow()
- sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- sw.show()
+ self.sw = gtk.ScrolledWindow()
+ self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ self.sw.show()
canvas = gtk.DrawingArea()
width = gtk.gdk.screen_width() * 2
height = gtk.gdk.screen_height() * 2
canvas.set_size_request(width, height)
- sw.add_with_viewport(canvas)
+ self.sw.add_with_viewport(canvas)
canvas.show()
- self.vbox.pack_end(sw, True, True)
+ self.vbox.pack_end(self.sw, True, True)
self.fixed.put(self.vbox, 0, 0)
self.fixed.show()