From fee5b3cbdd5662728eef7956d7caed80dea071c6 Mon Sep 17 00:00:00 2001 From: Pootle daemon Date: Mon, 12 Nov 2012 05:30:58 +0000 Subject: Merge branch 'master' of git.sugarlabs.org:turtleart/mainline --- 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() -- cgit v0.9.1