I'm trying to make a simple app with glade/gtk/vala. So far I have this:
using Gtk;
class HelloWorldApp : GLib.Object {
const string UI = "test.glade";
public Window main_window;
[CCode (instance_pos = -1)]
public void on_btn_hello_clicked(Button source) {
stdout.printf("Hello, world");
}
construct {
Builder builder = new Builder();
builder.add_from_file(UI);
main_window = builder.get_object("window1") as Window;
main_window.destroy.connect(Gtk.main_quit);
builder.connect_signals(this);
}
}
class HelloWorld : GLib.Object {
public static int main(string[] args) {
Gtk.init (ref args);
HelloWorldApp h = new HelloWorldApp();
h.main_window.show_all();
Gtk.main();
return 0;
}
}
When I run this it outputs: (helloworld:22641): Gtk-WARNING **: Could not find signal handler 'on_btn_hello_clicked' but otherwise runs fine apart from the handler not being called
What am I doing wrong?
You are doing one or more of the following three things wrong:
Gtk.Builder
, you have to add --pkg gmodule-2.0
to your valac
command line. (link)
hello_world_app_on_btn_hello_clicked
. (link)
[CCode (cname="G_MODULE_EXPORT on_btn_hello_clicked")]
. (link)
the live.gnome.org has all those informations, including the Windows quirks: http://live.gnome.org/Vala/GTKSample#Loading_User_Interface_from_XML_File
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With