All is about my experience | Linux

Like Us

05 May 2017

Memanggil Dialog dari Main Window dengan Vala


vala
Kali ini kita akan belajar membuat window dialog yang dapat dipanggil dari window utama.
Jadi kita akan membuat dua tampilan window, kita akan gunakan Gtk.Window sebagai main window dan Gtk.Dialog sebagai second window atau dialog.

Buka program Builder dan buat project baru, atau boleh gunakan project yang sudah ada yang biasa digunakan untuk latihan.

Window Dialog

Buat object/class baru yang akan kita jadikan sebagai window dialog yang nantinya dapat dipanggil dari window utama ( main window )
Tambahkan kode ini kedalam "src/main.vala" setelah "Using Gtk"

public class Dialogku:Dialog {
    public Dialogku() {
        this.title = "Ini aku";
        set_default_size(200,200);

        var label = new Label("Taraaaa... aku dialog");

        var box = get_content_area() as Box;
        box.pack_start(label, true, false, 0);
    }
}
Pada kode diatas kita telah membuat Object/class baru "Dialogku" sebagai turunan dari object "Gtk.Dialog" dan nantinya object ini akan dapat dipanggil dari main window

Sekarang kita coba panggil object tersebut dari window utama melalui event tombol yang diklik. Ketika tombol diklik maka tampilkan "Dialogku".
Tempatkan setelah class "Dialogku"


int main (string[] args) {

    init (ref args);

    var window = new Window ();
    window.title = "Tombol";
    window.set_default_size (300, 100);
    window.border_width = 20;
    window.destroy.connect (Gtk.main_quit);

    var button = new Button();
    button.set_label("Klik untuk membuka dialog");

    //Tombol diklik, tampilkan "Dialogku"
    button.clicked.connect(() => {
        var dialog = new Dialogku();

        //Agar dialog selalu ditempatkan diatas window utama
        dialog.set_transient_for(window);
        dialog.show_all();
    });

    window.add(button);

    //Tampilkan window
    window.show_all();

    Gtk.main ();
    return 0;
}
Seperti inilah hasilnya


Kode lengkapnya disini

using Gtk;

public class Dialogku:Dialog {
    public Dialogku() {
        this.title = "Ini aku";
        set_default_size(200,200);

        var label = new Label("Taraaaa... aku dialog");

        var box = get_content_area() as Box;
        box.pack_start(label, true, false, 0);
    }
}

int main (string[] args) {

    init (ref args);

    var window = new Window ();
    window.title = "Tombol";
    window.set_default_size (300, 100);
    window.border_width = 20;
    window.destroy.connect (Gtk.main_quit);

    var button = new Button();
    button.set_label("Klik untuk membuka dialog");
    button.clicked.connect(() => {
        var dialog = new Dialogku();
        dialog.set_transient_for(window);
        dialog.show_all();
    });

    window.add(button);

    //Tampilkan window
    window.show_all();

    Gtk.main ();
    return 0;
}

Mari berdiskusi dikolom komentar