sugar-toolkit-gtk3/examples/scene/scene.py

65 lines
1.5 KiB
Python
Raw Normal View History

#!/usr/bin/python
2006-07-22 13:48:47 +02:00
import math
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
2006-07-22 12:28:59 +02:00
from sugar.scene.CircleLayout import CircleLayout
2006-07-22 13:48:47 +02:00
from sugar.scene.Timeline import Timeline
2006-07-22 13:48:47 +02:00
def __drawing_area_expose_cb(widget, event, stage):
stage.render(widget.window)
2006-07-22 13:48:47 +02:00
def __next_frame_cb(timeline, frame_num, group):
2006-07-22 14:32:04 +02:00
angle = math.pi * 2 * frame_num / timeline.get_n_frames()
2006-07-22 13:48:47 +02:00
group.get_layout().set_angle(angle)
group.do_layout()
drawing_area.window.invalidate_rect(None, False)
def __completed_cb(timeline, group):
group.get_layout().set_angle(0)
group.do_layout()
drawing_area.window.invalidate_rect(None, False)
stage = Stage()
pixbuf = gtk.gdk.pixbuf_new_from_file('background.png')
stage.add(PixbufActor(pixbuf))
icons_group = Group()
2006-07-24 11:01:25 +02:00
icons_group.set_position(100, 100)
i = 1
while i <= 5:
pixbuf = gtk.gdk.pixbuf_new_from_file('activity%d.png' % i)
icons_group.add(PixbufActor(pixbuf))
i += 1
2006-07-22 12:28:59 +02:00
layout = CircleLayout(100)
2006-07-22 13:48:47 +02:00
icons_group.set_layout(layout)
2006-07-22 12:28:59 +02:00
stage.add(icons_group)
window = gtk.Window()
window.set_default_size(640, 480)
drawing_area = gtk.DrawingArea()
2006-07-22 13:48:47 +02:00
drawing_area.connect('expose_event', __drawing_area_expose_cb, stage)
window.add(drawing_area)
drawing_area.show()
window.show()
2006-07-24 11:01:25 +02:00
timeline = Timeline(stage, 200)
2006-07-22 13:48:47 +02:00
timeline.connect('next-frame', __next_frame_cb, icons_group)
timeline.connect('completed', __completed_cb, icons_group)
timeline.start()
gtk.main()