123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256(**************************************************************************)(* 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 *)(* *)(* *)(**************************************************************************)moduleGtkAction=GtkActionPropsopenGtkActionclassaction_signalsobj=objectinherit[[>Gtk.action]]GObj.gobject_signalsobjinheritOgtkActionProps.action_sigsendclassaction_skelobj=objectvalobj=objmethodprivateobj=objinheritOgtkActionProps.action_propsmethodas_action=(obj:>Gtk.actionGobject.obj)methodactivate()=Action.activateobjmethodis_sensitive=Action.is_sensitiveobjmethodis_visible=Action.is_visibleobj(*
method connect_proxy w = Action.connect_proxy obj (GObj.as_widget w)
method disconnect_proxy w = Action.disconnect_proxy obj (GObj.as_widget w)
*)methodget_proxies=List.map(newGObj.widget)(Action.get_proxiesobj)methodconnect_accelerator()=Action.connect_acceleratorobjmethoddisconnect_accelerator()=Action.disconnect_acceleratorobjmethodset_accel_path=Action.set_accel_pathobjmethodset_accel_group=Action.set_accel_groupobj(*
method block_activate_from (w : GObj.widget) = Action.block_activate_from obj w#as_widget
method unblock_activate_from (w : GObj.widget) = Action.unblock_activate_from obj w#as_widget
*)endclassactionobj=objectinheritaction_skelobjmethodconnect=newaction_signalsobjendletaction~name()=newaction(Action.create~name[])classtoggle_action_signalsobj=objectinheritaction_signalsobjinheritOgtkActionProps.toggle_action_sigsendclasstoggle_action_skelobj=objectinheritaction_skelobjinheritOgtkActionProps.toggle_action_propsmethodtoggled()=ToggleAction.toggledobjmethodset_active=ToggleAction.set_activeobjmethodget_active=ToggleAction.get_activeobjendclasstoggle_actionobj=objectinherittoggle_action_skelobjmethodconnect=newtoggle_action_signalsobjendlettoggle_action~name()=newtoggle_action(ToggleAction.create[Gobject.paramAction.P.namename])classradio_action_signalsobj=objectinherittoggle_action_signalsobjmethodchanged~callback=GtkSignal.connect~sgn:RadioAction.S.changed~callback:(funo->callback(RadioAction.get_current_valueo))~afterobjendclassradio_actionobj=objectinherittoggle_action_skelobjinheritOgtkActionProps.radio_action_propsmethodconnect=newradio_action_signalsobjmethodas_radio_action=(obj:>Gtk.radio_actionGobject.obj)methodget_current_value=RadioAction.get_current_valueobjendletradio_action?group~name~value()=newradio_action(RadioAction.create(Gobject.Property.may_consRadioAction.P.group(Gaux.may_map(fung->Some(g#as_radio_action))group)[Gobject.paramAction.P.namename;Gobject.paramRadioAction.P.valuevalue]))classaction_group_signalsobj=object(self)inherit[[>Gtk.action_group]]GObj.gobject_signalsobjmethodprivatevirtualconnect:'b.('a,'b)GtkSignal.t->callback:'b->GtkSignal.idmethodconnect_proxy~callback=self#connect{ActionGroup.S.connect_proxywithGtkSignal.marshaller=funf->GtkSignal.marshal2(Gobject.Data.gobject:Gtk.actionGtk.objGobject.data_conv)GObj.conv_widget"GtkActionGroup::connect_proxy"f}(funo->callback(newactiono))methoddisconnect_proxy~callback=self#connect{ActionGroup.S.disconnect_proxywithGtkSignal.marshaller=funf->GtkSignal.marshal2(Gobject.Data.gobject:Gtk.actionGtk.objGobject.data_conv)GObj.conv_widget"GtkActionGroup::disconnect_proxy"f}(funo->callback(newactiono))methodpost_activate~callback=self#connectActionGroup.S.post_activate(funo->callback(newactiono))methodpre_activate~callback=self#connectActionGroup.S.pre_activate(funo->callback(newactiono))endclassaction_groupobj=objectvalobj=objmethodprivateobj=objinheritOgtkActionProps.action_group_propsmethodas_group=(obj:>Gtk.action_groupGobject.obj)methodconnect=newaction_group_signalsobjmethodget_actionn=newaction(ActionGroup.get_actionobjn)methodlist_actions=List.map(newaction)(ActionGroup.list_actionsobj)methodadd_action:'a.(#action_skelas'a)->unit=funa->ActionGroup.add_actionobja#as_actionmethodadd_action_with_accel:'a.?accel:string->(#action_skelas'a)->unit=fun?accela->ActionGroup.add_action_with_accelobja#as_actionaccelmethodremove_action:'a.(#action_skelas'a)->unit=funa->ActionGroup.remove_actionobja#as_actionendletaction_group~name()=newaction_group(ActionGroup.create~name[])type'aentry=action_group->'aletadd_single_actionreta?stock?label?accel?tooltip(group:#action_group)=Gaux.maya#set_labellabel;Gaux.maya#set_tooltiptooltip;Gaux.maya#set_stock_idstock;group#add_action_with_accel?accela;retaletadd_actionname?callback=leta=action~name()inGaux.maycallback~f:(funcb->a#connect#activate~callback:(fun()->cba));add_single_actionignorealetadd_toggle_actionname?active?callback=leta=toggle_action~name()inGaux.maya#set_activeactive;Gaux.maycallback~f:(funcb->a#connect#activate~callback:(fun()->cba));add_single_actionignorealetadd_radio_actionnamevalue=leta=radio_action~name~value()inadd_single_action(funa->a)aletadd_actionsac_group=List.iter(funf->let()=fac_groupin())letgroup_radio_actions?init_value?callbackradio_action_entriesac_group=letlast_radio_ac=List.fold_left(funradio_grpf->letradio_ac=fac_groupinradio_ac#set_groupradio_grp;Gaux.may(funinit_v->radio_ac#set_active(radio_ac#value=init_v))init_value;Someradio_ac#as_radio_action)Noneradio_action_entriesinGaux.may(funcb->Gaux.may(funo->GtkSignal.connect~sgn:RadioAction.S.changed~callback:(funcurr->cb(RadioAction.get_current_valuecurr))o)last_radio_ac)callback;()classui_manager_signalsobj=object(self)inherit[[>Gtk.ui_manager]]GObj.gobject_signalsobjinheritOgtkActionProps.ui_manager_sigsmethodconnect_proxy~callback=self#connect{UIManager.S.connect_proxywithGtkSignal.marshaller=funf->GtkSignal.marshal2(Gobject.Data.gobject:Gtk.actionGtk.objGobject.data_conv)GObj.conv_widget"GtkUIManager::connect_proxy"f}(funo->callback(newactiono))methoddisconnect_proxy~callback=self#connect{UIManager.S.disconnect_proxywithGtkSignal.marshaller=funf->GtkSignal.marshal2(Gobject.Data.gobject:Gtk.actionGtk.objGobject.data_conv)GObj.conv_widget"GtkUIManager::disconnect_proxy"f}(funo->callback(newactiono))methodpost_activate~callback=self#connectUIManager.S.post_activate(funo->callback(newactiono))methodpre_activate~callback=self#connectUIManager.S.pre_activate(funo->callback(newactiono))endtypeui_id=intletinvalid_id=0classui_managerobj=objectvalobj=objmethodprivateobj=objinheritOgtkActionProps.ui_manager_propsmethodconnect=newui_manager_signalsobjmethodas_ui_manager=(obj:>Gtk.ui_managerGtk.obj)methodinsert_action_group(g:action_group)=UIManager.insert_action_groupobjg#as_groupmethodremove_action_group(g:action_group)=UIManager.remove_action_groupobjg#as_groupmethodget_action_groups=List.map(newaction_group)(UIManager.get_action_groupsobj)methodget_accel_group=UIManager.get_accel_groupobjmethodget_widgets=newGObj.widget(UIManager.get_widgetobjs)methodget_toplevelskind=List.map(newGObj.widget)(UIManager.get_toplevelsobjkind)methodget_actions=newaction(UIManager.get_actionobjs)methodadd_ui_from_string=UIManager.add_ui_from_stringobjmethodadd_ui_from_file=UIManager.add_ui_from_fileobjmethodnew_merge_id()=UIManager.new_merge_idobjmethodadd_ui=UIManager.add_uiobjmethodremove_ui=UIManager.remove_uiobjmethodensure_update()=UIManager.ensure_updateobjendletui_manager()=newui_manager(UIManager.create[])