From e39c136f6ac3e2fafc7ff17e4e1d38a157f261cf Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Sun, 13 Mar 2011 16:25:23 +0000 Subject: send turtle mouse movements to share; don't reset remote turtle --- (limited to 'TurtleArt') diff --git a/TurtleArt/tacanvas.py b/TurtleArt/tacanvas.py index 553455f..dea9ed6 100644 --- a/TurtleArt/tacanvas.py +++ b/TurtleArt/tacanvas.py @@ -195,17 +195,19 @@ class TurtleGraphics: self.settextcolor(70) self.setshade(50, share) for turtle_key in iter(self.tw.turtles.dict): - self.set_turtle(turtle_key) - self.tw.active_turtle.set_color(0) - self.tw.active_turtle.set_shade(50) - self.tw.active_turtle.set_gray(100) - self.tw.active_turtle.set_pen_size(5) - self.tw.active_turtle.reset_shapes() - self.seth(0, share) - self.setpen(False, share) - self.setxy(0, 0, share) - self.setpen(True, share) - self.tw.active_turtle.hide() + # Don't reset remote turtles + if not self.tw.remote_turtle(turtle_key): + self.set_turtle(turtle_key) + self.tw.active_turtle.set_color(0) + self.tw.active_turtle.set_shade(50) + self.tw.active_turtle.set_gray(100) + self.tw.active_turtle.set_pen_size(5) + self.tw.active_turtle.reset_shapes() + self.seth(0, share) + self.setpen(False, share) + self.setxy(0, 0, share) + self.setpen(True, share) + self.tw.active_turtle.hide() self.set_turtle(self.tw.default_turtle_name) self.tw.svg_string = '' self.svg.reset_min_max() diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py index 7068dc0..1342662 100644 --- a/TurtleArt/tawindow.py +++ b/TurtleArt/tawindow.py @@ -928,10 +928,8 @@ class TurtleArtWindow(): t = self.turtles.spr_to_turtle(spr) if t is not None: # If turtle is shared, ignore click - if hasattr(self, 'turtle_dictionary'): - if t.get_name() in self.turtle_dictionary and \ - t.get_name() != self.nick: - return True + if self.remote_turtle(t.get_name()): + return True self.selected_turtle = t self.canvas.set_turtle(self.turtles.get_turtle_key(t)) self._turtle_pressed(x, y) @@ -1342,12 +1340,21 @@ class TurtleArtWindow(): dy = y - dragy - sy self.selected_turtle.spr.set_layer(TOP_LAYER) self.selected_turtle.move((sx + dx, sy + dy)) + if self.sharing(): # share turtle movement + self.send_event("x|%s" % ( + data_to_string([self.selected_turtle.get_name(), + [round_int(sx + dx), + round_int(sy + dy)]]))) else: dx = x - sx - self.active_turtle.spr.rect.width / 2 dy = y - sy - self.active_turtle.spr.rect.height / 2 self.canvas.seth(int(dragx + atan2(dy, dx) / DEGTOR + 5) / \ 10 * 10) self.lc.update_label_value('heading', self.canvas.heading) + if self.sharing(): # share turtle rotation + self.send_event("r|%s" % ( + data_to_string([self.selected_turtle.get_name(), + round_int(self.heading)]))) # If we are hoving, show popup help. elif self.drag_group is None: @@ -1545,6 +1552,15 @@ class TurtleArtWindow(): if self.block_operation == 'click': self._click_block(x, y) + def remote_turtle(self, name): + ''' Is this a remote turtle? ''' + if name == self.nick: + return False + if hasattr(self, 'turtle_dictionary') and \ + name in self.turtle_dictionary: + return True + return False + def _move_turtle(self, x, y): """ Move the selected turtle to (x, y). """ (cx, cy) = self.canvas.canvas.get_xy() -- cgit v0.9.1