123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189(**************************************************************************)(* ocgtk - OCaml bindings for GTK4 *)(* *)(* This program is free software; you can redistribute it *)(* and/or modify it under the terms of the GNU Library General *)(* Public License version 2, as published by the *)(* Free Software Foundation with the exception described in file *)(* COPYING which comes with the library. *)(* *)(* Based on lablgtk3 (https://github.com/garrigue/lablgtk) *)(* *)(**************************************************************************)(** GObject module for GTK4 type system, properties, and signals *)let()=Callback.register"Printexc.to_string"Printexc.to_string(** {2 Core Types} *)type-'aobj(** GObject instance - abstract pointer type *)typeg_type=int(** GType identifier *)typeg_value(** Abstract type for GValue *)typeg_closure(** Abstract type for GClosure *)(** {2 Object Operations} *)externalget_type:'aobj->g_type="ml_g_object_get_type"externalunsafe_cast:'aobj->'bobj="%identity"externalcoerce:'aobj->unitobj="%identity"externalsame:'aobj->'bobj->bool="ml_gobject_same"externalget_ref_count:'aobj->int="ml_g_object_get_ref_count"(** {2 Type System} *)moduleType=structtypet=g_typeletequal(a:t)(b:t)=Int.equalabletto_int(t:t)=texternalname:t->string="ml_g_type_name"externalfrom_name:string->t="ml_g_type_from_name"externalparent:t->t="ml_g_type_parent"externalis_a:t->t->bool="ml_g_type_is_a"externalof_fundamental_int:int->t="ml_g_type_of_fundamental"letinvalid=of_fundamental_int0letnone=of_fundamental_int1letinterface=of_fundamental_int2letchar_=of_fundamental_int3letuchar=of_fundamental_int4letboolean=of_fundamental_int5letint_=of_fundamental_int6letuint=of_fundamental_int7letlong=of_fundamental_int8letulong=of_fundamental_int9letint64=of_fundamental_int10letuint64=of_fundamental_int11letenum=of_fundamental_int12letflags=of_fundamental_int13letfloat_=of_fundamental_int14letdouble=of_fundamental_int15letstring=of_fundamental_int16letpointer=of_fundamental_int17letboxed=of_fundamental_int18letparam=of_fundamental_int19letobject_=of_fundamental_int20end(** {2 GValue Operations} *)moduleValue=structtypet=g_valueexternalcreate_empty:unit->t="ml_g_value_new"externalinit:t->g_type->unit="ml_g_value_init_gtype"externalreset:t->unit="ml_g_value_reset"externalget_type:t->g_type="ml_g_value_get_gtype"letcreategtype=letv=create_empty()ininitvgtype;vexternalget_int:t->int="ml_g_value_get_int"externalset_int:t->int->unit="ml_g_value_set_int"externalget_uint:t->int="ml_g_value_get_uint"externalset_uint:t->int->unit="ml_g_value_set_uint"externalget_boolean:t->bool="ml_g_value_get_boolean"externalset_boolean:t->bool->unit="ml_g_value_set_boolean"externalget_string:t->string="ml_g_value_get_string"externalset_string:t->string->unit="ml_g_value_set_string"externalget_float:t->float="ml_g_value_get_float"externalset_float:t->float->unit="ml_g_value_set_float"externalget_double:t->float="ml_g_value_get_double"externalset_double:t->float->unit="ml_g_value_set_double"externalget_int64:t->int64="ml_g_value_get_int64"externalset_int64:t->int64->unit="ml_g_value_set_int64"externalget_variant:t->Gvariant.t="ml_g_value_get_variant"externalset_variant:t->Gvariant.t->unit="ml_g_value_set_variant"externalget_enum_int:t->int="ml_g_value_get_enum_int"externalset_enum_int:t->int->unit="ml_g_value_set_enum_int"externalget_flags_int:t->int="ml_g_value_get_flags_int"externalset_flags_int:t->int->unit="ml_g_value_set_flags_int"externalget_boxed:t->'aobj="ml_g_value_get_boxed"externalset_boxed:t->'aobj->unit="ml_g_value_set_boxed"externalget_object_internal:t->'aobj="ml_g_value_get_object"externalset_object_internal:t->'aobj->unit="ml_g_value_set_object"externalset_object_null:t->unit="ml_g_value_set_object_null"letget_objectv=matchget_object_internalvwithexception_->None|x->Somexletset_objectv=function|Someobj->set_object_internalvobj|None->set_object_nullvletget_object_exnv=get_object_internalvletset_object_exnvobj=set_object_internalvobjend(** {2 Properties} *)moduleProperty=structexternalget_value:'aobj->name:string->g_value->unit="ml_g_object_get_property"externalset_value:'aobj->name:string->g_value->unit="ml_g_object_set_property"externalget_type:'aobj->name:string->g_type="ml_g_object_get_property_type"externalfreeze_notify:'aobj->unit="ml_g_object_freeze_notify"externalthaw_notify:'aobj->unit="ml_g_object_thaw_notify"externalnotify:'aobj->name:string->unit="ml_g_object_notify"end(** {2 Closures} *)moduleClosure=structtypet=g_closuretypeargstypeargv={result:g_value;nargs:int;args:args}externalcreate:(argv->unit)->t="ml_g_closure_new"externalnth:argv->pos:int->g_value="ml_g_closure_get_arg"externalresult:argv->g_value="ml_g_closure_get_result"externalget_result_type:argv->g_type="ml_g_closure_get_result_type"externalget_type:argv->pos:int->g_type="ml_g_closure_get_arg_type"externalset_result:argv->g_value->unit="ml_g_closure_set_result"end(** {2 Signals} *)moduleSignal=structtypehandler_id=intexternalconnect:'aobj->name:string->callback:g_closure->after:bool->handler_id="ml_g_signal_connect_closure"letconnect_simpleobj~name~callback~after=letclosure=Closure.create(fun_argv->callback())inconnectobj~name~callback:closure~afterexternaldisconnect:'aobj->handler_id->unit="ml_g_signal_handler_disconnect"externalhandler_block:'aobj->handler_id->unit="ml_g_signal_handler_block"externalhandler_unblock:'aobj->handler_id->unit="ml_g_signal_handler_unblock"externalhandler_is_connected:'aobj->handler_id->bool="ml_g_signal_handler_is_connected"externalemit_by_name:'aobj->name:string->unit="ml_g_signal_emit_by_name"end