DEFINITION MODULE FOR "C" GtkBuilder ; (* m2-GTK4 - GtkBuilder: build a widget tree from UI description XML (".ui" files). Mapped onto . Two styles of API: * gtk_builder_new_from_file/_from_resource/_from_string are convenience constructors. They return NIL on failure but do not report the error message. * gtk_builder_add_from_* take a VAR error: GError, so callers can inspect parse failures: VAR err: GError; err := NIL; IF gtk_builder_add_from_string(b, ui, -1, err) = 0 THEN ... END; IF err # NIL THEN GtkUtils.ErrorMessage(err, msg); ... END; The length argument is gssize; pass -1 for a NUL-terminated string. Objects are fetched by id with gtk_builder_get_object (an opaque handle - cast/assign to the concrete type). GtkBuilder is a GObject: release it with GtkUtils.Unref / g_object_unref. The gtk_builder_value_from_string* functions are omitted because they need a GValue, which is not bound (yet). *) FROM SYSTEM IMPORT ADDRESS; FROM GError IMPORT GError; EXPORT UNQUALIFIED GtkBuilder, GtkBuilderError, GtkBuilderClosureFlags, GtkBuilderErrorInvalidTypeFunction, GtkBuilderErrorUnhandledTag, GtkBuilderErrorMissingAttribute, GtkBuilderErrorInvalidAttribute, GtkBuilderErrorInvalidTag, GtkBuilderErrorMissingPropertyValue, GtkBuilderErrorInvalidValue, GtkBuilderErrorVersionMismatch, GtkBuilderErrorDuplicateId, GtkBuilderErrorObjectTypeRefused, GtkBuilderErrorTemplateMismatch, GtkBuilderErrorInvalidProperty, GtkBuilderErrorInvalidSignal, GtkBuilderErrorInvalidId, GtkBuilderErrorInvalidFunction, GtkBuilderClosureSwapped, gtk_builder_new, gtk_builder_new_from_file, gtk_builder_new_from_resource, gtk_builder_new_from_string, gtk_builder_add_from_file, gtk_builder_add_from_resource, gtk_builder_add_from_string, gtk_builder_add_objects_from_file, gtk_builder_add_objects_from_resource, gtk_builder_add_objects_from_string, gtk_builder_get_object, gtk_builder_get_objects, gtk_builder_get_type_from_name, gtk_builder_expose_object, gtk_builder_get_current_object, gtk_builder_set_current_object, gtk_builder_set_translation_domain, gtk_builder_get_translation_domain, gtk_builder_get_scope, gtk_builder_set_scope, gtk_builder_create_closure, gtk_builder_extend_with_template, gtk_builder_error_quark; TYPE GtkBuilder = ADDRESS; GtkBuilderError = CARDINAL; GtkBuilderClosureFlags = CARDINAL; CONST GtkBuilderErrorInvalidTypeFunction = 0; GtkBuilderErrorUnhandledTag = 1; GtkBuilderErrorMissingAttribute = 2; GtkBuilderErrorInvalidAttribute = 3; GtkBuilderErrorInvalidTag = 4; GtkBuilderErrorMissingPropertyValue = 5; GtkBuilderErrorInvalidValue = 6; GtkBuilderErrorVersionMismatch = 7; GtkBuilderErrorDuplicateId = 8; GtkBuilderErrorObjectTypeRefused = 9; GtkBuilderErrorTemplateMismatch = 10; GtkBuilderErrorInvalidProperty = 11; GtkBuilderErrorInvalidSignal = 12; GtkBuilderErrorInvalidId = 13; GtkBuilderErrorInvalidFunction = 14; GtkBuilderClosureSwapped = 1; (* GTK_BUILDER_CLOSURE_SWAPPED *) (* GQuark gtk_builder_error_quark(void) *) PROCEDURE gtk_builder_error_quark () : CARDINAL; (* GtkBuilder *gtk_builder_new(void) *) PROCEDURE gtk_builder_new () : GtkBuilder; (* GtkBuilder *gtk_builder_new_from_file(const char *filename) *) PROCEDURE gtk_builder_new_from_file (filename: ARRAY OF CHAR) : GtkBuilder; (* GtkBuilder *gtk_builder_new_from_resource(const char *resource_path) *) PROCEDURE gtk_builder_new_from_resource (resource_path: ARRAY OF CHAR) : GtkBuilder; (* GtkBuilder *gtk_builder_new_from_string(const char *string, gssize length) *) PROCEDURE gtk_builder_new_from_string (string: ARRAY OF CHAR; length: LONGINT) : GtkBuilder; (* gboolean gtk_builder_add_from_file(GtkBuilder *builder, const char *filename, GError **error) *) PROCEDURE gtk_builder_add_from_file (builder: GtkBuilder; filename: ARRAY OF CHAR; VAR error: GError) : [ INTEGER ]; (* gboolean gtk_builder_add_from_resource(GtkBuilder *builder, const char *resource_path, GError **error) *) PROCEDURE gtk_builder_add_from_resource (builder: GtkBuilder; resource_path: ARRAY OF CHAR; VAR error: GError) : [ INTEGER ]; (* gboolean gtk_builder_add_from_string(GtkBuilder *builder, const char *buffer, gssize length, GError **error) *) PROCEDURE gtk_builder_add_from_string (builder: GtkBuilder; buffer: ARRAY OF CHAR; length: LONGINT; VAR error: GError) : [ INTEGER ]; (* gboolean gtk_builder_add_objects_from_file(GtkBuilder *builder, const char *filename, const char **object_ids, GError **error) *) PROCEDURE gtk_builder_add_objects_from_file (builder: GtkBuilder; filename: ARRAY OF CHAR; object_ids: ADDRESS; VAR error: GError) : [ INTEGER ]; (* gboolean gtk_builder_add_objects_from_resource(GtkBuilder *builder, const char *resource_path, const char **object_ids, GError **error) *) PROCEDURE gtk_builder_add_objects_from_resource (builder: GtkBuilder; resource_path: ARRAY OF CHAR; object_ids: ADDRESS; VAR error: GError) : [ INTEGER ]; (* gboolean gtk_builder_add_objects_from_string(GtkBuilder *builder, const char *buffer, gssize length, const char **object_ids, GError **error) *) PROCEDURE gtk_builder_add_objects_from_string (builder: GtkBuilder; buffer: ARRAY OF CHAR; length: LONGINT; object_ids: ADDRESS; VAR error: GError) : [ INTEGER ]; (* GObject *gtk_builder_get_object(GtkBuilder *builder, const char *name) *) PROCEDURE gtk_builder_get_object (builder: GtkBuilder; name: ARRAY OF CHAR) : ADDRESS; (* GSList *gtk_builder_get_objects(GtkBuilder *builder) *) PROCEDURE gtk_builder_get_objects (builder: GtkBuilder) : ADDRESS; (* GType gtk_builder_get_type_from_name(GtkBuilder *builder, const char *type_name) *) PROCEDURE gtk_builder_get_type_from_name (builder: GtkBuilder; type_name: ARRAY OF CHAR) : LONGCARD; (* void gtk_builder_expose_object(GtkBuilder *builder, const char *name, GObject *object) *) PROCEDURE gtk_builder_expose_object (builder: GtkBuilder; name: ARRAY OF CHAR; object: ADDRESS); (* GObject *gtk_builder_get_current_object(GtkBuilder *builder) *) PROCEDURE gtk_builder_get_current_object (builder: GtkBuilder) : ADDRESS; (* void gtk_builder_set_current_object(GtkBuilder *builder, GObject *current_object) *) PROCEDURE gtk_builder_set_current_object (builder: GtkBuilder; current_object: ADDRESS); (* void gtk_builder_set_translation_domain(GtkBuilder *builder, const char *domain) *) PROCEDURE gtk_builder_set_translation_domain (builder: GtkBuilder; domain: ARRAY OF CHAR); (* const char *gtk_builder_get_translation_domain(GtkBuilder *builder) *) PROCEDURE gtk_builder_get_translation_domain (builder: GtkBuilder) : ADDRESS; (* GtkBuilderScope *gtk_builder_get_scope(GtkBuilder *builder) *) PROCEDURE gtk_builder_get_scope (builder: GtkBuilder) : ADDRESS; (* void gtk_builder_set_scope(GtkBuilder *builder, GtkBuilderScope *scope) *) PROCEDURE gtk_builder_set_scope (builder: GtkBuilder; scope: ADDRESS); (* GClosure *gtk_builder_create_closure(GtkBuilder *builder, const char *function_name, GtkBuilderClosureFlags flags, GObject *object, GError **error) *) PROCEDURE gtk_builder_create_closure (builder: GtkBuilder; function_name: ARRAY OF CHAR; flags: GtkBuilderClosureFlags; object: ADDRESS; VAR error: GError) : ADDRESS; (* gboolean gtk_builder_extend_with_template(GtkBuilder *builder, GObject *object, GType template_type, const char *buffer, gssize length, GError **error) *) PROCEDURE gtk_builder_extend_with_template (builder: GtkBuilder; object: ADDRESS; template_type: LONGCARD; buffer: ARRAY OF CHAR; length: LONGINT; VAR error: GError) : [ INTEGER ]; END GtkBuilder.