diff --git a/sugar/chat/SVGdraw.py b/sugar/chat/sketchpad/SVGdraw.py similarity index 100% rename from sugar/chat/SVGdraw.py rename to sugar/chat/sketchpad/SVGdraw.py diff --git a/sugar/chat/sketchpad/Sketch.py b/sugar/chat/sketchpad/Sketch.py index ea1b4bb9..8c70f8d4 100644 --- a/sugar/chat/sketchpad/Sketch.py +++ b/sugar/chat/sketchpad/Sketch.py @@ -1,3 +1,5 @@ +from SVGdraw import path + class Sketch: def __init__(self): self._points = [] @@ -14,3 +16,16 @@ class Sketch: else: ctx.line_to(x, y) ctx.stroke() + + def draw_to_svg(self): + i = 0 + for [x, y] in self._points: + coords = str(x) + ' ' + str(y) + ' ' + if i == 0: + path_data = 'M ' + coords + elif i == 1: + path_data += 'L ' + coords + else: + path_data += coords + i += 1 + return path(path_data, fill = 'none', stroke = '#000000') diff --git a/sugar/chat/sketchpad/SketchPad.py b/sugar/chat/sketchpad/SketchPad.py index 0bcfebfd..d368ff8f 100644 --- a/sugar/chat/sketchpad/SketchPad.py +++ b/sugar/chat/sketchpad/SketchPad.py @@ -5,6 +5,9 @@ import cairo from Sketch import Sketch +from SVGdraw import drawing +from SVGdraw import svg + class SketchPad(gtk.DrawingArea): def __init__(self): gtk.DrawingArea.__init__(self) @@ -42,7 +45,19 @@ class SketchPad(gtk.DrawingArea): if self._active_sketch: self._active_sketch.add_point(event.x, event.y) self.window.invalidate_rect(None, False) - + + def to_svg(self): + d = drawing() + s = svg() + for sketch in self._sketches: + s.addElement(sketch.draw_to_svg()) + d.setSVG(s) + return d.toXml() + +def test_quit(w, sketchpad): + print sketchpad.to_svg() + gtk.main_quit() + if __name__ == "__main__": window = gtk.Window() window.set_default_size(400, 300) @@ -54,4 +69,6 @@ if __name__ == "__main__": window.show() + window.connect("destroy", test_quit, sketchpad) + gtk.main() diff --git a/sugar/p2p/MostlyReliablePipe.py b/sugar/p2p/MostlyReliablePipe.py index e6ba3429..9e794739 100644 --- a/sugar/p2p/MostlyReliablePipe.py +++ b/sugar/p2p/MostlyReliablePipe.py @@ -537,23 +537,20 @@ class MostlyReliablePipe(object): return False def _retransmit_check_worker(self): - try: - now = time.time() - for key in self._incoming.keys()[:]: - message = self._incoming[key] - if message.complete(): - continue - next_rt = message.next_rt_time() - if next_rt == 0 or next_rt > now: - continue - if self._retransmit_request(message): - # Kill the message, too many retries - print "(MRP): Dropped message %s, exceeded retries." % _stringify_sha(message.sha()) - self._dispatched[key] = message - message.set_dispatch_time() - del self._incoming[key] - except KeyboardInterrupt: - return False + now = time.time() + for key in self._incoming.keys()[:]: + message = self._incoming[key] + if message.complete(): + continue + next_rt = message.next_rt_time() + if next_rt == 0 or next_rt > now: + continue + if self._retransmit_request(message): + # Kill the message, too many retries + print "(MRP): Dropped message %s, exceeded retries." % _stringify_sha(message.sha()) + self._dispatched[key] = message + message.set_dispatch_time() + del self._incoming[key] return True def _process_incoming_data(self, segment): diff --git a/sugar/p2p/presence.py b/sugar/p2p/presence.py index d0f6000e..4c5c086f 100644 --- a/sugar/p2p/presence.py +++ b/sugar/p2p/presence.py @@ -60,14 +60,7 @@ class PresenceDiscovery(object): # print "Browsing domain '%s' on %i.%i ..." % (domain, interface, protocol) - try: - b = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.ServiceTypeBrowserNew(interface, protocol, domain, dbus.UInt32(0))), avahi.DBUS_INTERFACE_SERVICE_TYPE_BROWSER) - except dbus.DBusException, exc: - str_exc = str(exc) - if str_exc.find("The name org.freedesktop.Avahi was not provided by any .service files") >= 0: - raise Exception("Avahi does not appear to be running. '%s'" % str_exc) - else: - raise exc + b = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.ServiceTypeBrowserNew(interface, protocol, domain, dbus.UInt32(0))), avahi.DBUS_INTERFACE_SERVICE_TYPE_BROWSER) b.connect_to_signal('ItemNew', self.new_service_type) self._service_type_browsers[(interface, protocol, domain)] = b diff --git a/sugar/session/session.py b/sugar/session/session.py index df0a0db4..94a61263 100644 --- a/sugar/session/session.py +++ b/sugar/session/session.py @@ -38,7 +38,4 @@ def start(console): args.append('--console') os.spawnvp(os.P_NOWAIT, 'python', args) - try: - gtk.main() - except KeyboardInterrupt: - pass + gtk.main()