diff --git a/examples/scene/activity1.png b/examples/scene/activity1.png new file mode 100644 index 00000000..f8b43500 Binary files /dev/null and b/examples/scene/activity1.png differ diff --git a/examples/scene/activity2.png b/examples/scene/activity2.png new file mode 100644 index 00000000..aaadc0f7 Binary files /dev/null and b/examples/scene/activity2.png differ diff --git a/examples/scene/activity3.png b/examples/scene/activity3.png new file mode 100644 index 00000000..6f645153 Binary files /dev/null and b/examples/scene/activity3.png differ diff --git a/examples/scene/activity4.png b/examples/scene/activity4.png new file mode 100644 index 00000000..c33e50ca Binary files /dev/null and b/examples/scene/activity4.png differ diff --git a/examples/scene/activity5.png b/examples/scene/activity5.png new file mode 100644 index 00000000..7f8c72a6 Binary files /dev/null and b/examples/scene/activity5.png differ diff --git a/examples/scene/background.png b/examples/scene/background.png new file mode 100644 index 00000000..346b5dce Binary files /dev/null and b/examples/scene/background.png differ diff --git a/examples/scene/scene.py b/examples/scene/scene.py new file mode 100755 index 00000000..5468cd19 --- /dev/null +++ b/examples/scene/scene.py @@ -0,0 +1,39 @@ +#!/usr/bin/python + +import pygtk +pygtk.require('2.0') +import gtk + +from sugar.scene.Stage import Stage +from sugar.scene.Group import Group +from sugar.scene.PixbufActor import PixbufActor + +def drawing_area_expose_cb(widget, event, stage): + stage.render(widget.window) + +stage = Stage() + +pixbuf = gtk.gdk.pixbuf_new_from_file('background.png') +stage.add(PixbufActor(pixbuf)) + +icons_group = Group() + +i = 1 +while i <= 5: + pixbuf = gtk.gdk.pixbuf_new_from_file('activity%d.png' % i) + icons_group.add(PixbufActor(pixbuf)) + i += 1 + +stage.add(icons_group) + +window = gtk.Window() +window.set_default_size(640, 480) + +drawing_area = gtk.DrawingArea() +drawing_area.connect('expose_event', drawing_area_expose_cb, stage) +window.add(drawing_area) +drawing_area.show() + +window.show() + +gtk.main() diff --git a/sugar/scene/Actor.py b/sugar/scene/Actor.py new file mode 100644 index 00000000..1ee7e2d5 --- /dev/null +++ b/sugar/scene/Actor.py @@ -0,0 +1,17 @@ +class Actor: + def __init__(self): + self._x = 0 + self._y = 0 + self._width = -1 + self._height = -1 + + def set_position(self, x, y): + self._x = x + self._y = y + + def set_size(self, width, height): + self._width = width + self._height = height + + def render(self, window): + pass diff --git a/sugar/scene/Group.py b/sugar/scene/Group.py new file mode 100644 index 00000000..b845cd87 --- /dev/null +++ b/sugar/scene/Group.py @@ -0,0 +1,15 @@ +from sugar.scene.Actor import Actor + +class Group(Actor): + def __init__(self): + self._actors = [] + + def add(self, actor): + self._actors.append(actor) + + def remove(self, actor): + self._actors.remove(actor) + + def render(self, drawable): + for actor in self._actors: + actor.render(drawable) diff --git a/sugar/scene/PixbufActor.py b/sugar/scene/PixbufActor.py new file mode 100644 index 00000000..00ed5871 --- /dev/null +++ b/sugar/scene/PixbufActor.py @@ -0,0 +1,13 @@ +import gtk + +from sugar.scene.Actor import Actor + +class PixbufActor(Actor): + def __init__(self, pixbuf): + Actor.__init__(self) + + self._pixbuf = pixbuf + + def render(self, drawable): + gc = gtk.gdk.GC(drawable) + drawable.draw_pixbuf(gc, self._pixbuf, 0, 0, self._x, self._y) diff --git a/sugar/scene/Stage.py b/sugar/scene/Stage.py new file mode 100644 index 00000000..f314db9c --- /dev/null +++ b/sugar/scene/Stage.py @@ -0,0 +1,5 @@ +from sugar.scene.Group import Group + +class Stage(Group): + def __init__(self): + Group.__init__(self) diff --git a/sugar/scene/__init__.py b/sugar/scene/__init__.py new file mode 100644 index 00000000..e69de29b