From 83a49dcd4e150fc8cdb26c92a6b1c353d00f13aa Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 17 Jul 2007 22:30:23 -0400 Subject: [PATCH 1/4] Don't close GlibTCPServer sockets prematurely --- NEWS | 2 ++ sugar/network.py | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 6095c577..41ec296e 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,5 @@ +* Don't close GlibTCPServer sockets prematurely (dcbw) + Snapshot 5212790236 * Fix initialization order of buddy class '_activities' member (dcbw) diff --git a/sugar/network.py b/sugar/network.py index 47927771..5579aa9b 100644 --- a/sugar/network.py +++ b/sugar/network.py @@ -69,6 +69,11 @@ class GlibTCPServer(SocketServer.TCPServer): self.handle_request() return True + def close_request(self, request): + """Called to clean up an individual request.""" + # let the request be closed by the request handler when its done + pass + class ChunkedGlibHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): """RequestHandler class that integrates with Glib mainloop. It writes @@ -112,6 +117,7 @@ class ChunkedGlibHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def _cleanup(self): if self._file: self._file.close() + self._file = None if self._srcid > 0: gobject.source_remove(self._srcid) self._srcid = 0 @@ -507,12 +513,23 @@ def xmlrpc_test(loop): error_handler=xmlrpc_error_cb, user_data=loop) -def main(): - loop = gobject.MainLoop() +def start_xmlrpc(): server = GlibXMLRPCServer(("", 8888)) inst = Test() server.register_instance(inst) gobject.idle_add(xmlrpc_test, loop) + +class TestReqHandler(ChunkedGlibHTTPRequestHandler): + def translate_path(self, path): + return "/tmp/foo" + +def start_http(): + server = GlibTCPServer(("", 8890), TestReqHandler) + +def main(): + loop = gobject.MainLoop() +# start_xmlrpc() + start_http() try: loop.run() except KeyboardInterrupt: @@ -521,3 +538,5 @@ def main(): if __name__ == "__main__": main() + + From 326126cbd70aa18f754779bb28d72ed517e1e7c6 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 18 Jul 2007 02:04:01 -0400 Subject: [PATCH 2/4] Suppress annoying warnings about unknown activities from the PS --- NEWS | 1 + shell/model/homeactivity.py | 10 +++++++++- shell/view/frame/FriendsBox.py | 25 ++++++++++++++++++------- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index 41ec296e..f9b8c155 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,4 @@ +* Suppress annoying warnings about unknown activities from the PS (dcbw) * Don't close GlibTCPServer sockets prematurely (dcbw) Snapshot 5212790236 diff --git a/shell/model/homeactivity.py b/shell/model/homeactivity.py index 4ee06d47..4487c09e 100644 --- a/shell/model/homeactivity.py +++ b/shell/model/homeactivity.py @@ -113,7 +113,15 @@ class HomeActivity(gobject.GObject): colour for the icon. """ pservice = presenceservice.get_instance() - activity = pservice.get_activity(self._activity_id) + + # HACK to suppress warning in logs when activity isn't found + # (if it's locally launched and not shared yet) + activity = None + for act in pservice.get_activities(): + if self._activity_id == act.props.id: + activity = act + break + if activity != None: return XoColor(activity.props.color) else: diff --git a/shell/view/frame/FriendsBox.py b/shell/view/frame/FriendsBox.py index 18b57d39..7b7dc601 100644 --- a/shell/view/frame/FriendsBox.py +++ b/shell/view/frame/FriendsBox.py @@ -105,13 +105,24 @@ class FriendsBox(hippo.CanvasBox): 'buddy-left', self.__buddy_left_cb) def _active_activity_changed_cb(self, home_model, home_activity): - if home_activity: - activity_id = home_activity.get_activity_id() - if activity_id: - ps = self._pservice.get_activity(activity_id) - self._set_activity_ps(ps) - else: - self._set_activity_ps(None) + if not home_activity: + self._set_activity_ps(None) + return + + activity_id = home_activity.get_activity_id() + if not activity_id: + self._set_activity_ps(None) + return + + # HACK to suppress warning in logs when activity isn't found + # (if it's locally launched and not shared yet) + activity = None + for act in self._pservice.get_activities(): + if activity_id == act.props.id: + activity = act + break + if activity: + self._set_activity_ps(activity) else: self._set_activity_ps(None) From c16c07e9541ff3fdacf60ed2a970f06e984ed014 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 18 Jul 2007 02:05:09 -0400 Subject: [PATCH 3/4] Keep owner in the center in mesh view --- shell/view/home/MeshBox.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shell/view/home/MeshBox.py b/shell/view/home/MeshBox.py index bb47f792..43411d10 100644 --- a/shell/view/home/MeshBox.py +++ b/shell/view/home/MeshBox.py @@ -260,6 +260,9 @@ class MeshBox(hippo.CanvasBox): self._remove_buddy(buddy_model) def _buddy_moved_cb(self, model, buddy_model, activity_model): + # Owner doesn't move from the center + if buddy_model.is_owner(): + return self._move_buddy(buddy_model, activity_model) def _activity_added_cb(self, model, activity_model): From 86b36cc5d3d09e8a106c19200129ca4a71112822 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 18 Jul 2007 02:08:16 -0400 Subject: [PATCH 4/4] Actually handle multiple mime types --- NEWS | 2 ++ sugar/activity/bundle.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index f9b8c155..deff125d 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,5 @@ +* Actually handle multiple mime types (dcbw) +* Keep owner in the center in mesh view (dcbw) * Suppress annoying warnings about unknown activities from the PS (dcbw) * Don't close GlibTCPServer sockets prematurely (dcbw) diff --git a/sugar/activity/bundle.py b/sugar/activity/bundle.py index feded650..74016d8d 100644 --- a/sugar/activity/bundle.py +++ b/sugar/activity/bundle.py @@ -132,7 +132,7 @@ class Bundle: if cp.has_option(section, 'mime_types'): mime_list = cp.get(section, 'mime_types') - self._mime_types = mime_list.strip(';') + self._mime_types = mime_list.strip(';').split(';') if cp.has_option(section, 'show_launcher'): if cp.get(section, 'show_launcher') == 'no':