1. Getting Started
1.1. Create example.vala
Copy/paste this into a file called example.vala:
using Clutter;
void
main(string[] args)
{
Clutter.init(ref args);
var hello = new Text() {
text = "Ohaider, world!",
x = 50,
y = 50 };
var stage = new Stage() {
width = 400,
height = 150 };
stage.add_child(hello);
stage.show();
stage.destroy.connect(Clutter.main_quit);
Clutter.main();
}
1.2. Compile and run
Run this in a terminal:
valac --pkg clutter-1.0 example.vala ./example
1.3. Result
Voilà!
1.4. Discussion
We first called
Clutter.init(ref args);
You have to do this before running any Clutter code. Clutter.init() will also parse any Clutter-specific flags (e.g. --clutter-debug=all) that you pass to your program.
We then created a Clutter.Text and set its .text, .x, and .y properties:
var hello = new Text() {
text = "Ohaider, world!",
x = 50,
y = 50 };The x and y properties set the position of the Clutter.Text. In Clutter, the point (0, 0) is the top-left of the stage, not the bottom-left, because y-coordinates in Clutter are reversed relative to mathematics.
We then created a Clutter.Stage, and put the Clutter.Text inside it:
var stage = new Stage() {
width = 400,
height = 150 };
stage.add_child(hello);A Clutter.Stage represents the main window of a Clutter program; any program you write will use one.
Finally, we showed the stage and ran Clutter.main():
stage.show(); stage.destroy.connect(Clutter.main_quit); Clutter.main();
The second line is needed so that Clutter will quit when the window is closed. Clutter.main() basically runs a big loop which checks for events and updates the stage when things happen.
In summary, you'll always want these 4 lines in your Clutter program:
Clutter.init(ref args); stage.show(); stage.destroy.connect(Clutter.main_quit); Clutter.main();