Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2007-04-27 08:51:19 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2007-04-27 08:51:19 (GMT)
commit9ccda70199c098ea6b45bec059225976cfb3b0d7 (patch)
treee3ad7f8a0da47eb283f9bb9bb042da395abb9824
parent9dcfcf89e96894d32905bfe9bae3e1310a21ae1b (diff)
Refactor the window API a bit to make it more flexible.
-rw-r--r--shell/view/home/HomeWindow.py20
-rw-r--r--sugar/activity/activity.py33
-rw-r--r--sugar/graphics/toolbox.py17
-rw-r--r--sugar/graphics/window.py41
4 files changed, 56 insertions, 55 deletions
diff --git a/shell/view/home/HomeWindow.py b/shell/view/home/HomeWindow.py
index c65432d..d59bee9 100644
--- a/shell/view/home/HomeWindow.py
+++ b/shell/view/home/HomeWindow.py
@@ -19,7 +19,6 @@ import hippo
import cairo
from sugar.graphics.menushell import MenuShell
-from sugar.graphics.window import Window
from sugar.graphics import units
import sugar
@@ -33,13 +32,18 @@ _FRIENDS_PAGE = 1
_MESH_PAGE = 2
_TRANSITION_PAGE = 3
-class HomeWindow(Window):
+class HomeWindow(gtk.Window):
def __init__(self, shell):
- Window.__init__(self)
+ gtk.Window.__init__(self)
+
self._shell = shell
self._active = False
self._level = sugar.ZOOM_HOME
+ self._canvas = hippo.Canvas()
+ self.add(self._canvas)
+ self._canvas.show()
+
self.set_default_size(gtk.gdk.screen_width(),
gtk.gdk.screen_height())
@@ -54,7 +58,7 @@ class HomeWindow(Window):
self._mesh_box = MeshBox(shell, MenuShell(self))
self._transition_box = TransitionBox()
- self.canvas.set_root(self._home_box)
+ self._canvas.set_root(self._home_box)
self._transition_box.connect('completed',
self._transition_completed_cb)
@@ -81,7 +85,7 @@ class HomeWindow(Window):
def set_zoom_level(self, level):
self._level = level
- self.canvas.set_root(self._transition_box)
+ self._canvas.set_root(self._transition_box)
if level == sugar.ZOOM_HOME:
scale = units.XLARGE_ICON_SCALE
@@ -94,11 +98,11 @@ class HomeWindow(Window):
def _transition_completed_cb(self, transition_box):
if self._level == sugar.ZOOM_HOME:
- self.canvas.set_root(self._home_box)
+ self._canvas.set_root(self._home_box)
elif self._level == sugar.ZOOM_FRIENDS:
- self.canvas.set_root(self._friends_box)
+ self._canvas.set_root(self._friends_box)
elif self._level == sugar.ZOOM_MESH:
- self.canvas.set_root(self._mesh_box)
+ self._canvas.set_root(self._mesh_box)
self._update_mesh_state()
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()