From 9ccda70199c098ea6b45bec059225976cfb3b0d7 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 27 Apr 2007 08:51:19 +0000 Subject: Refactor the window API a bit to make it more flexible. --- (limited to 'sugar') diff --git a/sugar/activity/activity.py b/sugar/activity/activity.py index 41d9f08..da1cac6 100644 --- a/sugar/activity/activity.py +++ b/sugar/activity/activity.py @@ -28,7 +28,30 @@ import gtk from sugar.presence import presenceservice from sugar.activity.activityservice import ActivityService from sugar.graphics.window import Window -from sugar.graphics.toolbox import ActivityToolbar +from sugar.graphics.toolbox import Toolbox +from sugar.graphics.toolbutton import ToolButton + +class ActivityToolbar(gtk.Toolbar): + def __init__(self, activity): + gtk.Toolbar.__init__(self) + + self._activity = activity + + button = ToolButton('window-close') + button.connect('clicked', self._close_button_clicked_cb) + self.insert(button, -1) + button.show() + + def _close_button_clicked_cb(self, button): + self._activity.destroy() + +class ActivityToolbox(Toolbox): + def __init__(self, activity): + Toolbox.__init__(self) + + activity_toolbar = ActivityToolbar(activity) + self.add_toolbar('Activity', activity_toolbar) + activity_toolbar.show() class Activity(Window, gtk.Container): """Base Activity class that all other Activities derive from.""" @@ -70,11 +93,6 @@ class Activity(Window, gtk.Container): self._bus = ActivityService(self) - activity_toolbar = ActivityToolbar() - self.toolbox.add_toolbar('Activity', activity_toolbar) - activity_toolbar.connect('close', self._activity_toolbar_close_cb) - activity_toolbar.show() - def get_service_name(self): """Gets the activity service name.""" return os.environ['SUGAR_BUNDLE_SERVICE_NAME'] @@ -94,9 +112,6 @@ class Activity(Window, gtk.Container): self._service.join() self.present() - def _activity_toolbar_close_cb(self, activity_toolbar): - self.destroy() - def _share_cb(self, ps, success, service, err): self._pservice.disconnect(self._share_sigid) self._share_sigid = None diff --git a/sugar/graphics/toolbox.py b/sugar/graphics/toolbox.py index 52accbc..9439120 100644 --- a/sugar/graphics/toolbox.py +++ b/sugar/graphics/toolbox.py @@ -33,20 +33,3 @@ class Toolbox(gtk.VBox): def add_toolbar(self, name, toolbar): self._notebook.append_page(toolbar, gtk.Label(name)) - -class ActivityToolbar(gtk.Toolbar): - __gsignals__ = { - 'close': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, ([])), - } - - def __init__(self): - gtk.Toolbar.__init__(self) - - button = ToolButton('window-close') - button.connect('clicked', self._close_button_clicked_cb) - self.insert(button, -1) - button.show() - - def _close_button_clicked_cb(self, button): - self.emit('close') diff --git a/sugar/graphics/window.py b/sugar/graphics/window.py index 56ff59f..d2afaf8 100644 --- a/sugar/graphics/window.py +++ b/sugar/graphics/window.py @@ -18,37 +18,36 @@ import gtk import hippo -from sugar.graphics.toolbox import Toolbox - class Window(gtk.Window): def __init__(self): gtk.Window.__init__(self) - self.connect('realize', self._window_realize_cb) - - vbox = gtk.VBox() - self.add(vbox) - - self.toolbox = Toolbox() - vbox.pack_start(self.toolbox, False) - self.toolbox.show() + self.connect('realize', self._window_realize_cb) - self._canvas_box = gtk.VBox() - vbox.pack_start(self._canvas_box) - self._canvas_box.show() - - self.canvas = hippo.Canvas() - self._canvas_box.pack_start(self.canvas) - self.canvas.show() - - vbox.show() + self.toolbox = None + self.canvas = None + + self._vbox = gtk.VBox() + self.add(self._vbox) + self._vbox.show() def set_canvas(self, canvas): if self.canvas: - self._canvas_box.remove(self.canvas) + self._vbox.remove(self.canvas) - self._canvas_box.add(canvas) + self._vbox.pack_start(canvas) + self._vbox.reorder_child(canvas, -1) + self.canvas = canvas + + def set_toolbox(self, toolbox): + if self.toolbox: + self._vbox.remove(self.toolbox) + + self._vbox.pack_start(toolbox, False) + self._vbox.reorder_child(toolbox, 0) + + self.toolbox = toolbox def _window_realize_cb(self, window): group = gtk.Window() -- cgit v0.9.1