Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file gtkSignal.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200(**************************************************************************)(* Lablgtk *)(* *)(* This program is free software; you can redistribute it *)(* and/or modify it under the terms of the GNU Library General *)(* Public License as published by the Free Software Foundation *)(* version 2, with the exception described in file COPYING which *)(* comes with the library. *)(* *)(* This program is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Library General Public License for more details. *)(* *)(* You should have received a copy of the GNU Library General *)(* Public License along with this program; if not, write to the *)(* Free Software Foundation, Inc., 59 Temple Place, Suite 330, *)(* Boston, MA 02111-1307 USA *)(* *)(* *)(**************************************************************************)openStdLabelsopenGobjecttypeidtype'amarshaller='a->Closure.argv->unittype('a,'b)t={name:string;classe:'a;marshaller:'bmarshaller}typequery={id:int;signal_name:string;itype:string;flags:int;return:string;params:stringarray;}letenter_callback=ref(fun()->())andexit_callback=ref(fun()->())letstop_emit_ref=reffalseletstop_emit()=stop_emit_ref:=truetypesaved_state=Stateofboolletpush_callback()=!enter_callback();letold=!stop_emit_refinstop_emit_ref:=false;Stateoldletpop_callback(Stateold)=letres=!stop_emit_refinstop_emit_ref:=old;!exit_callback();resletuser_handler=refraiseletsafe_call?(where="function call")fx=tryfxwithexn->try!user_handlerexnwithexn->Printf.eprintf"In %s, uncaught exception: %s\n"where(Printexc.to_stringexn);ifPrintexc.backtrace_status()thenPrintexc.print_backtracestderr;flushstderrexternalsignal_new:string->g_type->Gobject.signal_typelist->unit="ml_g_signal_new_me"externalquery:int->query="ml_g_signal_query"externallist_ids:g_type->intarray="ml_g_signal_list_ids"externalconnect_by_name:'aobj->name:string->callback:g_closure->after:bool->id="ml_g_signal_connect_closure"externalemit_stop_by_name:'aobj->name:string->unit="ml_g_signal_stop_emission_by_name"externalhandler_block:'aobj->id->unit="ml_g_signal_handler_block"externalhandler_unblock:'aobj->id->unit="ml_g_signal_handler_unblock"externaldisconnect:'aobj->id->unit="ml_g_signal_handler_disconnect"externalis_connected:'aobj->id->bool="ml_g_signal_handler_is_connected"letmarshal_unitf_=f()letmarshal_intfargv=matchClosure.get_argsargvwith|_::`INTn::_->fn|_->invalid_arg"GtkSignal.marshal_int"letmarshal_stringfargv=matchClosure.get_argsargvwith|_::`STRING(Somes)::_->fs|_->invalid_arg"GtkSignal.marshal_string"letmarshal1conv1namefargv=letarg1=tryData.of_valueconv1(Closure.nthargv1)with_->failwith("GtkSignal.marshal1 : "^name)infarg1letmarshal2conv1conv2namefargv=letgetconvpos=Data.of_valueconv(Closure.nthargv~pos)inletarg1,arg2=trygetconv11,getconv22with_->failwith("GtkSignal.marshal2 : "^name)infarg1arg2letmarshal3conv1conv2conv3namefargv=letgetconvpos=Data.of_valueconv(Closure.nthargv~pos)inletarg1,arg2,arg3=trygetconv11,getconv22,getconv33with_->failwith("GtkSignal.marshal3 : "^name)infarg1arg2arg3letmarshal4conv1conv2conv3conv4namefargv=letgetconvpos=Data.of_valueconv(Closure.nthargv~pos)inletarg1,arg2,arg3,arg4=trygetconv11,getconv22,getconv33,getconv44with_->failwith("GtkSignal.marshal4 : "^name)infarg1arg2arg3arg4letmarshal5conv1conv2conv3conv4conv5namefargv=letgetconvpos=Data.of_valueconv(Closure.nthargv~pos)inletarg1,arg2,arg3,arg4,arg5=trygetconv11,getconv22,getconv33,getconv44,getconv55with_->failwith("GtkSignal.marshal5 : "^name)infarg1arg2arg3arg4arg5letmarshal6conv1conv2conv3conv4conv5conv6namefargv=letgetconvpos=Data.of_valueconv(Closure.nthargv~pos)inletarg1,arg2,arg3,arg4,arg5,arg6=trygetconv11,getconv22,getconv33,getconv44,getconv55,getconv66with_->failwith("GtkSignal.marshal6 : "^name)infarg1arg2arg3arg4arg5arg6letset_resultconvargvres=Closure.set_resultargv(conv.injres)letmarshal0_ret~retfargv=set_resultretargv(f())letmarshal1_ret~retconv1namefargv=set_resultretargv(marshal1conv1namefargv)letmarshal2_ret~retconv1conv2namefargv=set_resultretargv(marshal2conv1conv2namefargv)letmarshal3_ret~retconv1conv2conv3namefargv=set_resultretargv(marshal3conv1conv2conv3namefargv)letmarshal4_ret~retconv1conv2conv3conv4namefargv=set_resultretargv(marshal4conv1conv2conv3conv4namefargv)externalemit_by_name:'aobj->name:string->params:'bdata_setarray->g_value="ml_g_signal_emit_by_name"letemit_by_name_unitobj~name~params=ignore(emit_by_nameobj~name~params)letemit(obj:'aobj)~(sgn:('a,'b)t)~(emitter:cont:(_data_setarray->'c)->'b)~(conv:g_value->'c)=emitter~cont:(funparams->conv(emit_by_nameobj~name:sgn.name~params))letemit_unitobj=emitobj~emitter:(fun~cont()->cont[||])~conv:ignore()letemit_int=emit~emitter:(fun~contn->cont[|`INTn|])~conv:ignoreexternal_override_class_closure:string->g_type->g_closure->unit="ml_g_signal_override_class_closure"letoverride_class_closure{name=name}tc=_override_class_closurenametcexternalchain_from_overridden:Closure.argv->unit="ml_g_signal_chain_from_overridden"letconnect_aux~name~marshaller~callback?(after=false)(obj:'aobj)=letcallbackargv=letold=push_callback()in(safe_call(marshallercallback)argv~where:("callback for signal "^name);ifpop_callbackoldthenemit_stop_by_nameobj~nameelse())inconnect_by_nameobj~name~callback:(Closure.createcallback)~afterletconnect~sgn:((sgn:('a,_)t))~callback?after(obj:'aobj)=connect_aux~name:sgn.name~marshaller:sgn.marshaller~callback?afterobjletconnect_property~(prop:('a,_)property)~callback(obj:'aobj)=letname="notify::"^prop.Gobject.nameinletcallback=fun()->callback(getpropobj)inconnect_aux~name~marshaller:marshal_unit~callbackobj