123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404(**************************************************************************)(* 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 *)(* *)(* *)(**************************************************************************)(* $Id$ *)openStdLabelsopenGauxopenGobjectopenGtkopenGtkDataopenGtkBase(* GObject *)class['a]gobject_signalsobj=objectvalobj:'aobj=objvalafter=falsemethodafter={<after=true>}methodprivateconnect:'b.('a,'b)GtkSignal.t->callback:'b->_=funsgn~callback->GtkSignal.connectobj~sgn~after~callbackmethodprivatenotify:'b.('a,'b)property->callback:('b->unit)->_=funprop~callback->GtkSignal.connect_propertyobj~prop~callbackendclassgobject_opsobj=objectvalobj=objmethodget_oid=get_oidobjmethodget_type=Type.name(get_typeobj)methoddisconnect=GtkSignal.disconnectobjmethodhandler_block=GtkSignal.handler_blockobjmethodhandler_unblock=GtkSignal.handler_unblockobjmethodset_property:'a.string->'adata_set->unit=Property.set_dynobjmethodget_property=Property.get_dynobjmethodfreeze_notify()=Property.freeze_notifyobjmethodthaw_notify()=Property.thaw_notifyobjend(* GtkObject *)classtype['a]objvar=objectvalobj:'aobjendclassgtkobjobj=objectvalobj=objmethodget_oid=get_oidobjendclasstypegtkobj_signals=object('a)methodafter:'aend(* Widget *)moduleWidget=GtkBase.WidgetmoduleEvent=Widget.Signals.EventmoduleSignals=Widget.SmoduleP=Widget.Pclassevent_signalsobj=object(self)inherit['a]gobject_signals(obj:>Gtk.widgetobj)methodany=self#connectEvent.anymethodafter_any=self#connectSignals.event_aftermethodbutton_press=self#connectEvent.button_pressmethodbutton_release=self#connectEvent.button_releasemethodconfigure=self#connectEvent.configuremethoddelete=self#connectEvent.deletemethoddestroy=self#connectEvent.destroymethodenter_notify=self#connectEvent.enter_notifymethodexpose=self#connectEvent.exposemethodfocus_in=self#connectEvent.focus_inmethodfocus_out=self#connectEvent.focus_outmethodkey_press=self#connectEvent.key_pressmethodkey_release=self#connectEvent.key_releasemethodleave_notify=self#connectEvent.leave_notifymethodmap=self#connectEvent.mapmethodmotion_notify=self#connectEvent.motion_notifymethodproperty_notify=self#connectEvent.property_notifymethodproximity_in=self#connectEvent.proximity_inmethodproximity_out=self#connectEvent.proximity_outmethodscroll=self#connectEvent.scrollmethodselection_clear=self#connectEvent.selection_clearmethodselection_notify=self#connectEvent.selection_notifymethodselection_request=self#connectEvent.selection_requestmethodunmap=self#connectEvent.unmapmethodvisibility_notify=self#connectEvent.visibility_notifymethodwindow_state=self#connectEvent.window_stateendclassevent_opsobj=objectvalobj=(obj:>Gtk.widgetobj)methodadd=Widget.add_eventsobjmethodconnect=newevent_signalsobjmethodsend:Gdk.Tags.event_typeGdk.event->bool=Widget.eventobjendletiter_setcolsetstyle=List.iter~f:(fun(state,color)->setstylestate(GDraw.colorcolor))classstylest=objectvalstyle=stmethodas_style=stylemethodcopy={<style=Style.copystyle>}(* method colormap = Style.get_colormap style*)(* method font = Style.get_font style*)methodbg=Style.get_bgstylemethodset_bg=iter_setcolStyle.set_bgstylemethodfg=Style.get_fgstylemethodset_fg=iter_setcolStyle.set_fgstylemethodlight=Style.get_lightstylemethodset_light=iter_setcolStyle.set_lightstylemethoddark=Style.get_darkstylemethodset_dark=iter_setcolStyle.set_darkstylemethodmid=Style.get_midstylemethodset_mid=iter_setcolStyle.set_midstylemethodbase=Style.get_basestylemethodset_base=iter_setcolStyle.set_basestylemethodtext=Style.get_textstylemethodset_text=iter_setcolStyle.set_textstyle(* method set_font = Style.set_font style*)endclasscss_providerprov=objectvalprov=provmethodas_css_provider=provmethodload_from_data=CssProvider.load_from_dataprovendletcss_provider()=newcss_provider(CssProvider.create())classstyle_contextctxt=objectvalctxt=ctxt(** Does not cascade!! StyleContext.add_provider_for_screen does cascade. *)methodadd_provider(provider:css_provider)=StyleContext.add_providerctxt(provider#as_css_provider)endclassselection_input(sel:Gtk.selection_data)=objectvalsel=selmethodselection=Selection.selectionselmethodtarget=Gdk.Atom.name(Selection.targetsel)endclassselection_datasel=objectinheritselection_inputselmethodtyp=Gdk.Atom.name(Selection.seltypesel)methoddata=Selection.get_dataselmethodformat=Selection.formatselendclassselection_contextsel=objectinheritselection_inputselmethodreturn?typ?(format=8)data=lettyp=matchtypwithSomet->Gdk.Atom.internt|_->Selection.targetselinSelection.setsel~typ~format~data:(Somedata)endclassdrag_signalsobj=object(self)inherit['a]gobject_signalsobjmethodprivateconnect_drag:'b.('a,Gdk.drag_context->'b)GtkSignal.t->callback:(drag_context->'b)->_=funsgn~callback->self#connectsgn(funcontext->callback(newdrag_contextcontext))methodbeginning=self#connect_dragSignals.drag_beginmethodending=self#connect_dragSignals.drag_endmethoddata_delete=self#connect_dragSignals.drag_data_deletemethodleave=self#connect_dragSignals.drag_leavemethodmotion=self#connect_dragSignals.drag_motionmethoddrop=self#connect_dragSignals.drag_dropmethoddata_get~callback=self#connectSignals.drag_data_get~callback:beginfuncontextseldata~info~time->callback(newdrag_contextcontext)(newselection_contextseldata)~info~timeendmethoddata_received~callback=self#connectSignals.drag_data_received~callback:(funcontext~x~ydata->callback(newdrag_contextcontext)~x~y(newselection_datadata))endanddrag_opsobj=objectvalobj=objmethodconnect=newdrag_signalsobjmethoddest_set?(flags=[`ALL])?(actions=[])targets=DnD.dest_setobj~flags~actions~targets:(Array.of_listtargets)methoddest_unset()=DnD.dest_unsetobjmethodget_data~target?(time=Int32.zero)(context:drag_context)=DnD.get_dataobjcontext#context~target:(Gdk.Atom.interntarget)~timemethodhighlight()=DnD.highlightobjmethodunhighlight()=DnD.unhighlightobjmethodsource_set?modi:m?(actions=[])targets=DnD.source_setobj?modi:m~actions~targets:(Array.of_listtargets)methodsource_unset()=DnD.source_unsetobjendanddrag_contextcontext=objectinheritGDraw.drag_contextcontextmethodcontext=contextmethodfinish=DnD.finishcontextmethodsource_widget=newwidget(unsafe_cast(DnD.get_source_widgetcontext))methodset_icon_widget(w:widget)=DnD.set_icon_widgetcontext(w#as_widget)(*
method set_icon_pixmap ?(colormap = Gdk.Color.get_system_colormap ())
(pix : GDraw.pixmap) =
DnD.set_icon_pixmap context ~colormap pix#pixmap ?mask:pix#mask
*)endandmisc_signalsobj=object(self)inherit[_]gobject_signalsobjmethoddestroy=self#connectSignals.destroymethodshow=self#connectSignals.showmethodhide=self#connectSignals.hidemethodmap=self#connectSignals.mapmethodunmap=self#connectSignals.unmapmethoddraw=self#connectSignals.drawmethodquery_tooltip=self#connectSignals.query_tooltipmethodrealize=self#connectSignals.realizemethodunrealize=self#connectSignals.unrealizemethodstate_changed=self#connectSignals.state_changedmethodsize_allocate=self#connectSignals.size_allocatemethodparent_set~callback=self#connectSignals.parent_set~callback:beginfunctionNone->callbackNone|Somew->callback(Some(newwidget(unsafe_castw)))endmethodstyle_set~callback=self#connectSignals.style_set~callback:(funopt->callback(mayopt~f:(newstyle)))methodselection_get~callback=self#connectSignals.selection_get~callback:beginfunseldata~info~time->callback(newselection_contextseldata)~info~timeendmethodselection_received~callback=self#connectSignals.selection_received~callback:(fundata->callback(newselection_datadata))endandmisc_opsobj=object(self)inheritgobject_opsobjmethodconnect=newmisc_signalsobjmethodshow()=Widget.showobjmethodunparent()=Widget.unparentobjmethodshow_all()=Widget.show_allobjmethodhide()=Widget.hideobjmethodmap()=Widget.mapobjmethodunmap()=Widget.unmapobjmethodrealize()=Widget.realizeobjmethodunrealize()=Widget.unrealizeobjmethoddraw=Widget.drawobjmethodqueue_draw()=Widget.queue_drawobjmethodqueue_draw_area=Widget.queue_draw_areaobjmethodactivate()=Widget.activateobjmethodreparent(w:widget)=Widget.reparentobjw#as_widget(* method popup = popup obj *)methodintersect=Widget.intersectobjmethodgrab_focus()=setP.has_focusobjtruemethodgrab_default()=setP.has_defaultobjtruemethodis_ancestor(w:widget)=Widget.is_ancestorobjw#as_widgetmethodadd_accelerator:'a.sgn:('a,unit->unit)GtkSignal.t->_=fun~sgn:sg~group?modi?flagskey->letsg={sgwithGtkSignal.classe=`widget}inWidget.add_acceleratorobj~sgn:sggroup~key?modi?flagsmethodremove_accelerator~group?modikey=Widget.remove_acceleratorobjgroup~key?modi(* method lock_accelerators () = lock_accelerators obj *)methodsensitive=getP.sensitiveobjmethodset_name=setP.nameobjmethodset_sensitive=setP.sensitiveobjmethodset_can_default=setP.can_defaultobjmethodset_can_focus=setP.can_focusobjmethodset_app_paintable=setP.app_paintableobjmethodset_double_buffered=Widget.set_double_bufferedobjmethodset_size_request=Widget.size_params[]~cont:(funp()->set_paramsobjp)methodset_size_chars?desc?lang?width?height()=letmetrics=(self#pango_context:GPango.context)#get_metrics?desc?lang()inletwidth=may_mapwidth~f:(funw->w*GPango.to_pixelsmetrics#approx_digit_width)andheight=may_mapheight~f:(funh->h*GPango.to_pixels(metrics#ascent+metrics#descent))inself#set_size_request?width?height()methodset_style(style:style)=setP.styleobjstyle#as_style(* Deprecated since 3.0 *)methodmodify_fg=iter_setcolWidget.modify_fgobjmethodmodify_bg=iter_setcolWidget.modify_bgobjmethodmodify_text=iter_setcolWidget.modify_textobjmethodmodify_base=iter_setcolWidget.modify_baseobjmethodmodify_font(f:GPango.font_description)=Widget.modify_fontobjf#fdmethodmodify_font_by_names=Widget.modify_fontobj(Pango.Font.from_strings)(* End deprecated since 3.0 *)methodcreate_pango_context=newGPango.context(Widget.create_pango_contextobj)(* get functions *)methodname=getP.nameobjmethodtoplevel=trynewwidget(unsafe_cast(Widget.get_toplevelobj))withGpointer.Null->failwith"GObj.misc_ops#toplevel"methodwindow=Widget.windowobjmethodvisual=Widget.get_visualobjmethodvisual_depth=Gdk.Visual.depth(Widget.get_visualobj)methodpointer=Widget.get_pointerobjmethodstyle=newstyle(getP.styleobj)methodstyle_context=newstyle_context(Widget.get_style_contextobj)methodvisible=getP.visibleobjmethodparent=may_map(funw->newwidget(unsafe_castw))(getP.parentobj)methodallocation=Widget.allocationobjmethodpango_context=newGPango.context(Widget.get_pango_contextobj)(* icon *)methodrender_icon~sizeid=Widget.render_iconobj(GtkStock.convert_idid)size(* selection *)methodconvert_selection~target?(time=Int32.zero)sel=Selection.convertobj~sel~target:(Gdk.Atom.interntarget)~timemethodgrab_selection?(time=Int32.zero)sel=Selection.owner_setobj~sel~timemethodadd_selection_target~target?(info=0)sel=Selection.add_targetobj~sel~target:(Gdk.Atom.interntarget)~infomethodclear_selection_targetssel=Selection.clear_targetsobj~sel(* tooltip *)methodhas_tooltip=getP.has_tooltipobjmethodtooltip_markup=getP.tooltip_markupobjmethodtooltip_text=getP.tooltip_textobjmethodset_has_tooltip=setP.has_tooltipobjmethodset_tooltip_markup=setP.tooltip_markupobjmethodset_tooltip_text=setP.tooltip_textobjendandwidgetobj=object(self)inheritgtkobjobjinheritOgtkBaseProps.widget_propsmethodas_widget=(obj:>Gtk.widgetobj)methodmisc=newmisc_ops(obj:>Gtk.widgetobj)methoddrag=newdrag_ops(unsafe_castobj:Gtk.widgetobj)methodcoerce=(self:>widget)methoddestroy()=Widget.destroyobjendclasswidget_signals_implobj=object(self)inherit[[>Gtk.widget]]gobject_signalsobjmethoddestroy=self#connectWidget.S.destroyendclasstypewidget_signals=object('a)methodafter:'amethoddestroy:callback:(unit->unit)->GtkSignal.idendclass['a]widget_impl(obj:'aobj)=widgetobjclasswidget_fullobj=objectinheritwidgetobjmethodconnect=newwidget_signals_implobjendletas_widget(w:widget)=w#as_widgetletwrap_widgetw=newwidget(unsafe_castw)letunwrap_widgetw=unsafe_castw#as_widgetletconv_widget_option={kind=`OBJECT;proj=(function`OBJECTc->may_map~f:wrap_widgetc|_->failwith"GObj.get_object");inj=(func->`OBJECT(may_map~f:unwrap_widgetc))}letconv_widget={kind=`OBJECT;proj=(function`OBJECT(Somec)->wrap_widgetc|`OBJECTNone->raiseGpointer.Null|_->failwith"GObj.get_object");inj=(func->`OBJECT(Some(unwrap_widgetc)))}letpack_returnself~packing~show=maypacking~f:(funf->(f(self:>widget):unit));ifshow<>Somefalsethenself#misc#show();self