Linux Inside
89
γραμμή κώδικα, ενώ για να προσθέσουμε ένα παράθυρο,
ορίζουμε μία νέα (new) οντότητα τύπου “Window”.
Gtk.init (ref args);
var window = new Window ();
Σε αυτό το παράθυρο που φτιάξαμε, μπορούμε να αλλά-
ξουμε οτιδήποτε, π.χ., τον τίτλο του παραθύρου,
“window.title”, το πάχος των ορίων του παραθύρου,
“window.border_width”, κ.ο.κ. Ο λόγος για τον οποίο γράφου-
με πρώτα “window.” και μετά τα ορίσματα, είναι γιατί τα ορί-
σματα πρέπει να αρχικοποιούνται για το αντικείμενο που ακο-
λουθούν, δηλαδή το “window”.
window.title = "Vala tutorials";
window.border_width = 10;
window.window_position = WindowPosition.CENTER;
window.set_default_size (300, 100);
window.destroy.connect (Gtk.main_quit);
Για να προσθέσουμε ένα label, μία ετικέτα δηλαδή, δημι-
ουργούμε μία καινούργια μεταβλητή (var) και σε αυτήν αρχι-
κοποιούμε μία οντότητα τύπου “Label” στην οποία, με τη σει-
ρά του, αποθηκεύουμε το string με περιεχόμενο “Hello
World!”. Στη συνέχεια το προσθέτουμε στο “window” με το
“add (object)” και ζητούμε από το Gtk να εμφανίσει το παρά-
θυρο με τα περιεχόμενά του.
var label = new Label ("Hello World!");
window.add (label);
window.show_all();
Τέλος, καλούμε την κεντρική μέθοδο του Gtk και επιστρέ-
φουμε 0 σε περίπτωση που ο χρήστης πατήσει το κουμπί
κλεισίματος.
Gtk.main();
return 0;
}
Τώρα, για να μεταγλωττιστεί το γραφικό προγραμματάκι
μας, θα πρέπει να τρέξουμε την εντολή:
# valac -o hwg hello_world_gtk.vala –-pkg gtk+-2.0
To όρισμα “--pkg gtk+-2.0” υποδηλώνει στο μεταγλωττιστή
(compiler) μας ότι επιθυμούμε να χρησιμοποιήσουμε το API
(Application Programmable Interface) του Gtk 2.0. Αφού μετα-
γλωττιστεί ο κώδικάς μας και παραχθεί το εκτελέσιμό του, το
τρέχουμε (# ./hwg) και βλέπουμε ένα παράθυρο παρόμοιο
με αυτό της
εικόνας 1.
Ναι! Είναι τόσο απλό και τόσο διασκεδαστικό!
Στη συνέχεια, θα τροποποιήσουμε λίγο την πρώτη εφαρμο-
γή, που τρέχει μέσω τερματικού, και θα τη σπάσουμε σε δύο
κομμάτια. Δηλαδή, το μήνυμα «Hello World!» θα εκτυπώνεται
με τη δημιουργία μίας οντότητας της κλάσης μας και μέσω
αυτής θα καλούμε μία μέθοδο που εκτυπώνει το μήνυμα που
θέλουμε. Παρακάτω θα δείτε τον κώδικα.
class Tutorial : GLib.Object
{
void greeting ()
{
stdout.printf("Hello World!\n");
}
static void main (string[] args)
{
var tut = new Tutorial ();
tut.greeting();
}
}
Αν μεταγλωττίσετε αυτόν τον κώδικα με την εντολή “valac -
o <executable name> <filename>.vala” και ύστερα τρέξετε
το εκτελέσιμό του, θα δείτε το ίδιο ακριβώς αποτέλεσμα με
αυτό που είχατε στο πρώτο παράδειγμα του άρθρου.
Φυσικά, με τη Vala μπορείτε να κάνετε και πιο εκλεπτυσμέ-
να πράγματα, αν σκεφτείτε ότι έχει βασιστεί ολόκληρο γραφι-
κό περιβάλλον σε αυτή. Δεν μιλώ για κανένα άλλο από το
Unity του Ubuntu. Παρακάτω θα δείτε πώς ανοίγουμε ένα αρ-
χείο και διαβάζουμε το περιεχόμενό του. Η παρακάτω εφαρ-
μογή θα κάνει compile με την εντολή “valac --pkg gio-2.0”.
public static int main (string[] argv)
{
if (argv[1] == null)
{
stdout.printf ("Usage: %s <filename>\n", argv[0]);
return 1;
}
var file = File.new_for_path (argv[1]);
if (!file.query_exists ())
{
stderr.printf ("File '%s' doesn't exist.\n", file.get_
path ());
return 1;
}
try
{
var dis = new DataInputStream (file.read ());
string line;
while ((line = dis.read_line (null)) != null)
{
stdout.printf ("%s\n", line);
}
}
catch (Error e)
{
error ("%s", e.message);
}
return 0;
}
•
Linux Labs – Vala
Το προγραμματάκι μας εν δράσει!
1