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
from sugar.graphics import units
from sugar.graphics.window import Window
class PanelWindow(Window):
class PanelWindow(gtk.Window):
def __init__(self, orientation):
Window.__init__(self)
gtk.Window.__init__(self)
self.hover = False
self._orientation = orientation
@ -32,9 +31,13 @@ class PanelWindow(Window):
self.connect('enter-notify-event', self._enter_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,
orientation=self._orientation)
self.set_root(self._bg)
self._canvas.set_root(self._bg)
self._update_size()

View File

@ -54,7 +54,7 @@ class HomeWindow(Window):
self._mesh_box = MeshBox(shell, MenuShell(self))
self._transition_box = TransitionBox()
self.set_root(self._home_box)
self.canvas.set_root(self._home_box)
self._transition_box.connect('completed',
self._transition_completed_cb)
@ -81,7 +81,7 @@ class HomeWindow(Window):
def set_zoom_level(self, level):
self._level = level
self.set_root(self._transition_box)
self.canvas.set_root(self._transition_box)
if level == sugar.ZOOM_HOME:
scale = units.XLARGE_ICON_SCALE
@ -94,11 +94,11 @@ class HomeWindow(Window):
def _transition_completed_cb(self, transition_box):
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:
self.set_root(self._friends_box)
self.canvas.set_root(self._friends_box)
elif self._level == sugar.ZOOM_MESH:
self.set_root(self._mesh_box)
self.canvas.set_root(self._mesh_box)
self._update_mesh_state()

View File

@ -68,14 +68,12 @@ class Activity(Window, gtk.Container):
if service:
self._join(service)
self.realize()
group = gtk.Window()
group.realize()
self.window.set_group(group.window)
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
def do_add(self, widget):
if self.child:

View File

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

View File

@ -16,34 +16,10 @@
# Boston, MA 02111-1307, USA.
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):
def __init__(self):
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
if icon_name:
self.set_icon_name(icon_name)

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 hippo
from sugar.graphics import color
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)
from sugar.graphics.toolbox import Toolbox
class Window(gtk.Window):
def __init__(self, window_type=gtk.WINDOW_TOPLEVEL):
gtk.Window.__init__(self, window_type)
def __init__(self):
gtk.Window.__init__(self)
self._canvas = hippo.Canvas()
self._canvas.set_style(_Style())
self.add(self._canvas)
self._canvas.show()
self.connect('realize', self._window_realize_cb)
def set_root(self, root):
self._canvas.set_root(root)
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
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
from sugar.graphics2.window import Window
class ActivityToolbar(gtk.Toolbar):
def __init__(self):
gtk.Toolbar.__init__(self)
from sugar.graphics.window import Window
from sugar.graphics.toolbutton import ToolButton
from sugar.graphics.toolbox import ActivityToolbar
class EditToolbar(gtk.Toolbar):
def __init__(self):
@ -32,8 +30,7 @@ class TextToolbar(gtk.Toolbar):
def __init__(self):
gtk.Toolbar.__init__(self)
button = gtk.ToolButton()
button.set_icon_name('text-format-bold')
button = ToolButton('text-format-bold')
self.insert(button, -1)
button.show()