I use the GtkBuilder with Glade, where you can specify an event function and it will later call it.
Example in C:
Code: Select all
#include <gtk\gtk.h>
extern "C" __declspec( dllexport ) void on_window1_destroy()
{
gtk_main_quit();
}
int main(int argc, char** argv)
{
GtkWidget *Window = 0;
GtkBuilder *GBuild;
gtk_init(&argc, &argv);
GBuild = gtk_builder_new();
gtk_builder_add_from_file(GBuild, "test2.glade", NULL);
Window = GTK_WIDGET(gtk_builder_get_object (GBuild, "window1"));
gtk_builder_connect_signals(GBuild, 0);
gtk_widget_show_all(Window);
g_object_unref (GBuild);
gtk_main();
return 0;
}
Code: Select all
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="2.16"/>
<!-- interface-naming-policy project-wide -->
<object class="GtkWindow" id="window1">
<signal name="destroy" handler="on_window1_destroy"/>
</object>
</interface>
Example PB:
Code: Select all
XIncludeFile "..\include\gtk2.pbi"
ProcedureCDLL on_window1_destroy()
gtk_main_quit()
EndProcedure
ProcedureC main()
Protected window.i
Protected gBuilder.i
If gtk_init(0, 0)
gBuilder = gtk_builder_new ()
gtk_builder_add_from_file(gBuilder, @"test2.glade", #Null)
gtk_builder_connect_signals(gBuilder, 0)
Window = gtk_builder_get_object (gBuilder, @"window1")
gtk_widget_show_all(Window)
g_object_unref (gBuilder)
gtk_main ()
EndIf
EndProcedure
main()
With Purebasic the whole does not work, because PB is not the function exported.
Therefore, my wish that Purebasic functions declared with ProcedureCDLL / ProcedureDLL
be exported from executable.