More work on the new graphics API.

This commit is contained in:
Marco Pesenti Gritti 2007-04-26 11:31:41 +02:00
parent 9446c951ac
commit e49146752f
9 changed files with 95 additions and 74 deletions

View File

@ -18,11 +18,10 @@ import gtk
import hippo import hippo
from sugar.graphics import units from sugar.graphics import units
from sugar.graphics.window import Window
class PanelWindow(Window): class PanelWindow(gtk.Window):
def __init__(self, orientation): def __init__(self, orientation):
Window.__init__(self) gtk.Window.__init__(self)
self.hover = False self.hover = False
self._orientation = orientation self._orientation = orientation
@ -32,9 +31,13 @@ class PanelWindow(Window):
self.connect('enter-notify-event', self._enter_notify_cb) self.connect('enter-notify-event', self._enter_notify_cb)
self.connect('leave-notify-event', self._leave_notify_cb) self.connect('leave-notify-event', self._leave_notify_cb)
self._canvas = hippo.Canvas()
self.add(self._canvas)
self._canvas.show()
self._bg = hippo.CanvasBox(background_color=0x414141ff, self._bg = hippo.CanvasBox(background_color=0x414141ff,
orientation=self._orientation) orientation=self._orientation)
self.set_root(self._bg) self._canvas.set_root(self._bg)
self._update_size() self._update_size()

View File

@ -54,7 +54,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.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 +81,7 @@ class HomeWindow(Window):
def set_zoom_level(self, level): def set_zoom_level(self, level):
self._level = level self._level = level
self.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 +94,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.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.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.set_root(self._mesh_box) self.canvas.set_root(self._mesh_box)
self._update_mesh_state() self._update_mesh_state()

View File

@ -68,14 +68,12 @@ class Activity(Window, gtk.Container):
if service: if service:
self._join(service) self._join(service)
self.realize()
group = gtk.Window()
group.realize()
self.window.set_group(group.window)
self._bus = ActivityService(self) self._bus = ActivityService(self)
activity_toolbar = ActivityToolbar()
self.toolbox.add_toolbar('Activity', activity_toolbar)
activity_toolbar.show()
# DEPRECATED It will be removed after 3-6-2007 stable image # DEPRECATED It will be removed after 3-6-2007 stable image
def do_add(self, widget): def do_add(self, widget):
if self.child: if self.child:

View File

@ -16,6 +16,9 @@
# Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
import gtk import gtk
import gobject
from sugar.graphics.toolbutton import ToolButton
class Toolbox(gtk.VBox): class Toolbox(gtk.VBox):
__gtype_name__ = 'SugarToolbox' __gtype_name__ = 'SugarToolbox'
@ -30,3 +33,20 @@ 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')

View File

@ -16,34 +16,10 @@
# Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
import gtk import gtk
import hippo
from sugar.graphics2.toolbox import Toolbox class ToolButton(gtk.ToolButton):
def __init__(self, icon_name=None):
gtk.ToolButton.__init__(self)
class Window(gtk.Window): if icon_name:
def __init__(self): self.set_icon_name(icon_name)
gtk.Window.__init__(self)
vbox = gtk.VBox()
self.add(vbox)
self.toolbox = Toolbox()
vbox.pack_start(self.toolbox, False)
self.toolbox.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):
if self.canvas:
self._canvas_box.remove(self.canvas)
self._canvas_box.add(canvas)
self.canvas = canvas

View File

@ -1,24 +1,56 @@
import hippo # Copyright (C) 2007, Red Hat, Inc.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
import gtk import gtk
import hippo
from sugar.graphics import color from sugar.graphics.toolbox import Toolbox
class _Style(gtk.Style):
__gtype_name__ = 'SugarCanvasStyle'
def __init__(self):
gtk.Style.__init__(self)
def do_set_background(self, window, state):
window.set_back_pixmap(None, False)
class Window(gtk.Window): class Window(gtk.Window):
def __init__(self, window_type=gtk.WINDOW_TOPLEVEL): def __init__(self):
gtk.Window.__init__(self, window_type) gtk.Window.__init__(self)
self._canvas = hippo.Canvas() self.connect('realize', self._window_realize_cb)
self._canvas.set_style(_Style())
self.add(self._canvas)
self._canvas.show()
def set_root(self, root): vbox = gtk.VBox()
self._canvas.set_root(root) self.add(vbox)
self.toolbox = Toolbox()
vbox.pack_start(self.toolbox, False)
self.toolbox.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):
if self.canvas:
self._canvas_box.remove(self.canvas)
self._canvas_box.add(canvas)
self.canvas = canvas
def _window_realize_cb(self, window):
group = gtk.Window()
group.realize()
window.window.set_group(group.window)

View File

@ -1,5 +0,0 @@
sugardir = $(pythondir)/sugar/graphics2
sugar_PYTHON = \
__init__.py \
window.py \
toolbox.py

View File

@ -18,11 +18,9 @@
import gtk import gtk
from sugar.graphics2.window import Window from sugar.graphics.window import Window
from sugar.graphics.toolbutton import ToolButton
class ActivityToolbar(gtk.Toolbar): from sugar.graphics.toolbox import ActivityToolbar
def __init__(self):
gtk.Toolbar.__init__(self)
class EditToolbar(gtk.Toolbar): class EditToolbar(gtk.Toolbar):
def __init__(self): def __init__(self):
@ -32,8 +30,7 @@ class TextToolbar(gtk.Toolbar):
def __init__(self): def __init__(self):
gtk.Toolbar.__init__(self) gtk.Toolbar.__init__(self)
button = gtk.ToolButton() button = ToolButton('text-format-bold')
button.set_icon_name('text-format-bold')
self.insert(button, -1) self.insert(button, -1)
button.show() button.show()