# Διάλογος (Vala)

Tiffany Antopolski
tiffany.antopolski@gmail.com 2012
Ένα αναδυόμενο παράθυρο
Δημήτρης Σπίγγος
dmtrs32@gmail.com 2012, 2013

# Διάλογος

Ένας διάλογος με το σήμα απάντησης συνδεμένο σε μια συνάρτηση επανάκλησης.

/* Ένα παράθυρο στην εφαρμογή. */ public class MyWindow : Gtk.ApplicationWindow {

/*Κατασκευαστής*/ internal MyWindow (MyApplication app) { Object (application: app, title: "GNOME Button");

this.window_position = Gtk.WindowPosition.CENTER; this.set_default_size (250,50);

var button = new Gtk.Button.with_label ("Click Me");

/* Σύνδεση του σήματος "clicked" του κουμπιού στον * χειριστή του σήματος (aka. this.callback function). */ button.clicked.connect (this.on_button_click);

/* Προσθήκη του κουμπιού σε αυτό το παράθυρο και εμφάνισή του. */ this.add (button); button.show (); }

/* Ο χειριστής σήματος για τα κουμπιά του σήματος 'clicked'. */ void on_button_click (Gtk.Button button) { var dialog = new Gtk.Dialog.with_buttons ("A Gtk+ Dialog", this, Gtk.DialogFlags.MODAL, Gtk.Stock.OK, Gtk.ResponseType.OK, null);

var content_area = dialog.get_content_area (); var label = new Gtk.Label ("Αυτό δείχνει έναν διάλογο με ετικέτα");

content_area.add (label);

/* Σύνδεση του σήματος 'response' του διαλόγου * του χειριστή σήματος. Εκπέμπεται όταν πατιέται το κουμπί ΕΝΤΑΞΕΙ * του διαλόγου. */ dialog.response.connect (on_response);

/* Εμφάνιση του διαλόγου και όλων των γραφικών συστατικών. */ dialog.show_all (); }

/* Ο χειριστής σήματος για το σήμα 'response' του διαλόγου. */ void on_response (Gtk.Dialog dialog, int response_id) {

/* Για να δείτε την ακέραιη τιμή του τύπου απάντησης. Αυτό είναι μόνο * για λόγους επίδειξης.*/ print ("response is %d\n", response_id);

/* Αυτό προκαλεί την καταστροφή του διαλόγου. */ dialog.destroy (); }

}

/* Αυτή είναι η εφαρμογή. */ public class MyApplication : Gtk.Application {

/* Ο κατασκευαστής της εφαρμογής. */ internal MyApplication () { Object (application_id: "org.example.MyApplication"); }

/* Αντικατάσταση του σήματος 'activate' της GLib.Application. */ protected override void activate () {

/* Δημιουργία παραθύρου για αυτήν την εφαρμογή και εμφάνισή του. */ new MyWindow (this).show (); } }

/* Η κύρια συνάρτηση δημιουργεί και εκτελεί την εφαρμογή. */ public int main (string[] args) { return new MyApplication ().run (args); }

Σε αυτό το παράδειγμα χρησιμοποιήσαμε τα παρακάτω:

Gtk.Dialog

Gtk.Dialog.with_buttons

Gtk.Label

get_content_area