Refactor the window API a bit to make it more flexible.
This commit is contained in:
parent
9dcfcf89e9
commit
9ccda70199
@ -19,7 +19,6 @@ import hippo
|
|||||||
import cairo
|
import cairo
|
||||||
|
|
||||||
from sugar.graphics.menushell import MenuShell
|
from sugar.graphics.menushell import MenuShell
|
||||||
from sugar.graphics.window import Window
|
|
||||||
from sugar.graphics import units
|
from sugar.graphics import units
|
||||||
import sugar
|
import sugar
|
||||||
|
|
||||||
@ -33,13 +32,18 @@ _FRIENDS_PAGE = 1
|
|||||||
_MESH_PAGE = 2
|
_MESH_PAGE = 2
|
||||||
_TRANSITION_PAGE = 3
|
_TRANSITION_PAGE = 3
|
||||||
|
|
||||||
class HomeWindow(Window):
|
class HomeWindow(gtk.Window):
|
||||||
def __init__(self, shell):
|
def __init__(self, shell):
|
||||||
Window.__init__(self)
|
gtk.Window.__init__(self)
|
||||||
|
|
||||||
self._shell = shell
|
self._shell = shell
|
||||||
self._active = False
|
self._active = False
|
||||||
self._level = sugar.ZOOM_HOME
|
self._level = sugar.ZOOM_HOME
|
||||||
|
|
||||||
|
self._canvas = hippo.Canvas()
|
||||||
|
self.add(self._canvas)
|
||||||
|
self._canvas.show()
|
||||||
|
|
||||||
self.set_default_size(gtk.gdk.screen_width(),
|
self.set_default_size(gtk.gdk.screen_width(),
|
||||||
gtk.gdk.screen_height())
|
gtk.gdk.screen_height())
|
||||||
|
|
||||||
@ -54,7 +58,7 @@ class HomeWindow(Window):
|
|||||||
self._mesh_box = MeshBox(shell, MenuShell(self))
|
self._mesh_box = MeshBox(shell, MenuShell(self))
|
||||||
self._transition_box = TransitionBox()
|
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_box.connect('completed',
|
||||||
self._transition_completed_cb)
|
self._transition_completed_cb)
|
||||||
@ -81,7 +85,7 @@ class HomeWindow(Window):
|
|||||||
def set_zoom_level(self, level):
|
def set_zoom_level(self, level):
|
||||||
self._level = level
|
self._level = level
|
||||||
|
|
||||||
self.canvas.set_root(self._transition_box)
|
self._canvas.set_root(self._transition_box)
|
||||||
|
|
||||||
if level == sugar.ZOOM_HOME:
|
if level == sugar.ZOOM_HOME:
|
||||||
scale = units.XLARGE_ICON_SCALE
|
scale = units.XLARGE_ICON_SCALE
|
||||||
@ -94,11 +98,11 @@ class HomeWindow(Window):
|
|||||||
|
|
||||||
def _transition_completed_cb(self, transition_box):
|
def _transition_completed_cb(self, transition_box):
|
||||||
if self._level == sugar.ZOOM_HOME:
|
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:
|
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:
|
elif self._level == sugar.ZOOM_MESH:
|
||||||
self.canvas.set_root(self._mesh_box)
|
self._canvas.set_root(self._mesh_box)
|
||||||
|
|
||||||
self._update_mesh_state()
|
self._update_mesh_state()
|
||||||
|
|
||||||
|
@ -28,7 +28,30 @@ import gtk
|
|||||||
from sugar.presence import presenceservice
|
from sugar.presence import presenceservice
|
||||||
from sugar.activity.activityservice import ActivityService
|
from sugar.activity.activityservice import ActivityService
|
||||||
from sugar.graphics.window import Window
|
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):
|
class Activity(Window, gtk.Container):
|
||||||
"""Base Activity class that all other Activities derive from."""
|
"""Base Activity class that all other Activities derive from."""
|
||||||
@ -70,11 +93,6 @@ class Activity(Window, gtk.Container):
|
|||||||
|
|
||||||
self._bus = ActivityService(self)
|
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):
|
def get_service_name(self):
|
||||||
"""Gets the activity service name."""
|
"""Gets the activity service name."""
|
||||||
return os.environ['SUGAR_BUNDLE_SERVICE_NAME']
|
return os.environ['SUGAR_BUNDLE_SERVICE_NAME']
|
||||||
@ -94,9 +112,6 @@ class Activity(Window, gtk.Container):
|
|||||||
self._service.join()
|
self._service.join()
|
||||||
self.present()
|
self.present()
|
||||||
|
|
||||||
def _activity_toolbar_close_cb(self, activity_toolbar):
|
|
||||||
self.destroy()
|
|
||||||
|
|
||||||
def _share_cb(self, ps, success, service, err):
|
def _share_cb(self, ps, success, service, err):
|
||||||
self._pservice.disconnect(self._share_sigid)
|
self._pservice.disconnect(self._share_sigid)
|
||||||
self._share_sigid = None
|
self._share_sigid = None
|
||||||
|
@ -33,20 +33,3 @@ class Toolbox(gtk.VBox):
|
|||||||
|
|
||||||
def add_toolbar(self, name, toolbar):
|
def add_toolbar(self, name, toolbar):
|
||||||
self._notebook.append_page(toolbar, gtk.Label(name))
|
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')
|
|
||||||
|
@ -18,38 +18,37 @@
|
|||||||
import gtk
|
import gtk
|
||||||
import hippo
|
import hippo
|
||||||
|
|
||||||
from sugar.graphics.toolbox import Toolbox
|
|
||||||
|
|
||||||
class Window(gtk.Window):
|
class Window(gtk.Window):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
gtk.Window.__init__(self)
|
gtk.Window.__init__(self)
|
||||||
|
|
||||||
self.connect('realize', self._window_realize_cb)
|
self.connect('realize', self._window_realize_cb)
|
||||||
|
|
||||||
vbox = gtk.VBox()
|
self.toolbox = None
|
||||||
self.add(vbox)
|
self.canvas = None
|
||||||
|
|
||||||
self.toolbox = Toolbox()
|
self._vbox = gtk.VBox()
|
||||||
vbox.pack_start(self.toolbox, False)
|
self.add(self._vbox)
|
||||||
self.toolbox.show()
|
self._vbox.show()
|
||||||
|
|
||||||
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()
|
|
||||||
|
|
||||||
def set_canvas(self, canvas):
|
def set_canvas(self, canvas):
|
||||||
if self.canvas:
|
if self.canvas:
|
||||||
self._canvas_box.remove(self.canvas)
|
self._vbox.remove(self.canvas)
|
||||||
|
|
||||||
|
self._vbox.pack_start(canvas)
|
||||||
|
self._vbox.reorder_child(canvas, -1)
|
||||||
|
|
||||||
self._canvas_box.add(canvas)
|
|
||||||
self.canvas = canvas
|
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):
|
def _window_realize_cb(self, window):
|
||||||
group = gtk.Window()
|
group = gtk.Window()
|
||||||
group.realize()
|
group.realize()
|
||||||
|
Loading…
Reference in New Issue
Block a user