[pyclutter] examples: Add basic actor example code
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pyclutter] examples: Add basic actor example code
- Date: Sun, 12 Apr 2015 15:44:22 +0000 (UTC)
commit 9912fe2766295c74901bbb63df0cc9ead6e90b18
Author: Emmanuele Bassi <ebassi gnome org>
Date: Sun Apr 12 16:43:48 2015 +0100
examples: Add basic actor example code
Ported straight from the C equivalent.
examples/Makefile.am | 3 +-
examples/basic-actor.py | 105 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 107 insertions(+), 1 deletions(-)
---
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 1b336ac..c07f55d 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -1 +1,2 @@
-EXTRA_DIST =
+EXTRA_DIST = \
+ basic-actor.py
diff --git a/examples/basic-actor.py b/examples/basic-actor.py
new file mode 100644
index 0000000..0caca93
--- /dev/null
+++ b/examples/basic-actor.py
@@ -0,0 +1,105 @@
+import sys
+
+from gi.repository import Clutter
+
+class ToggleActor(Clutter.Actor):
+ def __init__(self):
+ Clutter.Actor.__init__(self)
+ self._toggled = False
+
+ @property
+ def toggled(self):
+ return self._toggled
+
+ def toggle(self):
+ if self._toggled:
+ self._toggled = False
+ else:
+ self._toggled = True
+
+def animate_color(actor, event):
+ actor.toggle()
+
+ end_color = None
+ if actor.toggled:
+ end_color = Clutter.Color.get_static(Clutter.StaticColor.BLUE)
+ else:
+ end_color = Clutter.Color.get_static(Clutter.StaticColor.RED)
+
+ with actor.easing_state(500, Clutter.AnimationMode.LINEAR):
+ actor.props.background_color = end_color
+
+ return True
+
+def on_transition_stopped(actor, transition_name, is_finished):
+ if transition_name == 'rotation-angle-y':
+ with actor.easing_state():
+ actor.set_rotation_angle(Clutter.RotateAxis.Y_AXIS, 0)
+
+def animate_rotation(actor, event):
+ with actor.easing_state(1000):
+ actor.set_rotation_angle(Clutter.RotateAxis.Y_AXIS, 360.0)
+
+ return True
+
+def on_crossing(actor, event):
+ z_pos = 0
+ if event.type == Clutter.EventType.ENTER:
+ z_pos = -250
+
+ with actor.easing_state(500, Clutter.AnimationMode.EASE_OUT_BOUNCE):
+ actor.set_z_position(z_pos)
+
+ return True
+
+if __name__ == '__main__':
+ stage = Clutter.Stage(title="Three Flowers in a Vase")
+ stage.props.user_resizable = True
+ stage.connect('destroy', Clutter.main_quit)
+
+ vase = Clutter.Actor(name='vase')
+ vase.props.layout_manager = Clutter.BoxLayout()
+ vase.props.background_color = Clutter.Color.get_static(Clutter.StaticColor.SKY_BLUE_LIGHT)
+ vase.add_constraint(Clutter.AlignConstraint(source=stage, align_axis=Clutter.AlignAxis.BOTH, factor=0.5))
+ stage.add_child(vase)
+
+ flowers = []
+
+ flower = ToggleActor()
+ flower.set_name('flower.1')
+ flower.set_size(128, 128)
+ flower.set_margin_left(12)
+ flower.set_background_color(Clutter.Color.get_static(Clutter.StaticColor.RED))
+ flower.props.reactive = True
+ flower.connect('button-press-event', animate_color)
+ vase.add_child(flower)
+ flowers.append(flower)
+
+ flower = Clutter.Actor(name='flower.2')
+ flower.set_size(128, 128)
+ flower.set_margin_top(12)
+ flower.set_margin_bottom(12)
+ flower.set_margin_left(6)
+ flower.set_margin_right(6)
+ flower.set_background_color(Clutter.Color.get_static(Clutter.StaticColor.YELLOW))
+ flower.set_reactive(True)
+ flower.connect('enter-event', on_crossing)
+ flower.connect('leave-event', on_crossing)
+ vase.add_child(flower)
+ flowers.append(flower)
+
+ # The third one is green
+ flower = Clutter.Actor(name='flower.3')
+ flower.set_size(128, 128)
+ flower.set_margin_right(12)
+ flower.set_background_color(Clutter.Color.get_static(Clutter.StaticColor.GREEN))
+ flower.set_pivot_point(0.5, 0.0)
+ flower.props.reactive = True
+ flower.connect('button-press-event', animate_rotation)
+ flower.connect('transition-stopped', on_transition_stopped)
+ vase.add_child(flower)
+ flowers.append(flower)
+
+ stage.show()
+
+ Clutter.main()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]