using Gtk;

[GtkTemplate (ui = "/org/foo/my/mywidget.ui")]
public class MyWidget : Box {
	public string text {
		get { return entry.text; }
		set { entry.text = value; }
	}

	[GtkChild]
	private Entry entry;

	public MyWidget (string text) {
		this.text = text;
	}

	[GtkCallback]
	private void on_button_clicked (Button button) {
		print ("The button was clicked with entry text: %s\n", entry.text);
	}

	[GtkCallback]
	private void on_entry_changed (Editable editable) {
		print ("The entry text changed: %s\n", entry.text);

		notify_property ("text");
	}
}

void main(string[] args) {
	Gtk.init (ref args);
	var win = new Window();
	win.destroy.connect (Gtk.main_quit);

	var widget = new MyWidget ("The entry text!");

	win.add (widget);
	win.show_all ();

	Gtk.main ();
}
