Memanggil Dialog dari Main Window dengan 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 windowSekarang 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 hasilnyaKode 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