#!/usr/bin/python import clutter test_unmerge = """\ { "id" : "blue-button", "type" : "ClutterRectangle", "color" : "#0000ffff", "x" : 350, "y" : 50, "width" : 100, "height" : 100, "visible" : true, "reactive" : true } """ test_behaviour = """\ { "id" : "main-timeline", "type" : "ClutterTimeline", "duration" : 5000, "fps" : 60, "loop" : true } { "id" : "path-behaviour", "type" : "ClutterBehaviourPath", "knots" : [ [ 50, 50 ], { "x" : 100, "y" : 100 } ], "alpha" : { "timeline" : "main-timeline", "function" : "ramp" } } { "id" : "rotate-behaviour", "type" : "ClutterBehaviourRotate", "angle-start" : 0.0, "angle-end" : 360.0, "axis" : "y-axis", "alpha" : { "timeline" : "main-timeline", "function" : "sine" } } { "id" : "fade-behaviour", "type" : "ClutterBehaviourOpacity", "opacity-start" : 255, "opacity-end" : 0, "alpha" : { "timeline" : "main-timeline", "function" : "ramp-inc" } } """ class Main: def __init__(self): pass def red_button_press(self, actor, event): print "[*] Pressed %s" % (clutter.get_script_id(actor)) timeline = self.script.get_object("main-timeline") if (not timeline.is_playing()): timeline.start() else: timeline.stop() def blue_button_press(self, actor, event): print "[*] Pressed %s" % (clutter.get_script_id(actor)) print "[*] Unmerge objects with merge id %s" % (self.merge_id) self.script.unmerge_objects(self.merge_id) def run(self): self.script = clutter.Script() print ">>>> load script" self.script.load_from_data(test_behaviour,len(test_behaviour)) self.script.load_from_file("test-script.json") self.merge_id=self.script.load_from_data(test_unmerge,len(test_unmerge)) print ">>>> connect signals" self.script.connect_signals(None) (self.stage, red_button, blue_button ) = self.script.get_objects("main-stage",\ "red-button",\ "blue-button") self.stage.show() red_button.connect("button-press-event",self.red_button_press) blue_button.connect("button-press-event",self.blue_button_press) clutter.main() if __name__ == "__main__": main = Main() main.run()