Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file gWindow.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338(**************************************************************************)(* 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$ *)openGauxopenGtkopenGtkBaseopenGtkContainersopenGtkWindowopenGtkMiscopenGObjopenOgtkBasePropsopenGContainerletset=Gobject.Property.setletget=Gobject.Property.get(** Window **)moduleP=Window.Pclasswindow_skelobj=object(self)inherit['b]bin_implobjinheritwindow_propsmethodevent=newGObj.event_opsobjmethodas_window=(obj:>Gtk.windowobj)methodactivate_focus()=Window.activate_focusobjmethodactivate_default()=Window.activate_defaultobjmethodadd_accel_group=Window.add_accel_groupobjmethodset_default_size~width~height=setobjP.default_widthwidth;setobjP.default_heightheightmethodmove=Window.moveobjmethodparse_geometry=Window.parse_geometryobjmethodresize=Window.resizeobjmethodset_geometry_hints?min_size?max_size?base_size?aspect?resize_inc?win_gravity?pos?user_pos?user_sizew=Window.set_geometry_hintsobj?min_size?max_size?base_size?aspect?resize_inc?win_gravity?pos?user_pos?user_size(as_widgetw)methodset_transient_forw=setobjP.transient_for(Somew)methodset_wmclass=Window.set_wmclassobjmethodshow()=Widget.showobjmethodpresent()=Window.presentobjmethodiconify()=Window.iconifyobjmethoddeiconify()=Window.deiconifyobjendclasswindowobj=objectinheritwindow_skel(obj:[>Gtk.window]obj)methodconnect=newcontainer_signals_implobjmethodmaximize()=Window.maximizeobjmethodunmaximize()=Window.unmaximizeobjmethodfullscreen()=Window.fullscreenobjmethodunfullscreen()=Window.unfullscreenobjmethodstick()=Window.stickobjmethodunstick()=Window.unstickobjendletmake_window~create=Window.make_params~cont:(funpl?wmclass->Container.make_paramspl~cont:(funpl?(show=false)()->let(w:#window_skel)=createplinmay(fun(name,clas)->w#set_wmclass~name~clas)wmclass;ifshowthenw#show();w))letwindow?kind=make_window[]~create:(funpl->newwindow(Window.create?kindpl))letcast_window(w:#widget)=newwindow(Window.castw#as_widget)lettoplevel(w:#widget)=trySome(cast_windoww#misc#toplevel)withGobject.Cannot_cast_->None(** Dialog **)class['a]dialog_signals(obj:[>Gtk.dialog]obj)~decode=object(self)inheritcontainer_signals_implobjmethodresponse~(callback:'a->unit)=self#connectDialog.S.response~callback:(funi->callback(decodei))methodclose=self#connectDialog.S.closeendletreclist_rassock=function|(a,b)::_whenb=k->a|_::l->list_rassockl|[]->raiseNot_foundletresp=Dialog.std_responseletrnone=resp`NONEandrreject=resp`REJECTandraccept=resp`ACCEPTandrdelete=resp`DELETE_EVENTandrok=resp`OKandrcancel=resp`CANCELandrclose=resp`CLOSEandryes=resp`YESandrno=resp`NOandrapply=resp`APPLYandrhelp=resp`HELPclassvirtual['a]dialog_baseobj=object(self)inheritwindow_skelobjinheritdialog_propsmethodaction_area=newGPack.button_box(Dialog.action_areaobj)methodvbox=newGPack.box(Dialog.vboxobj)methodprivatevirtualencode:'a->intmethodprivatevirtualdecode:int->'amethodresponsev=Dialog.responseobj(self#encodev)methodset_response_sensitivevs=Dialog.set_response_sensitiveobj(self#encodev)smethodset_default_responsev=Dialog.set_default_responseobj(self#encodev)methodrun()=letresp=Dialog.runobjinifresp=rnonethenfailwith"dialog destroyed"elseself#decoderespendclass['a]dialog_skelobj=objectinherit['a]dialog_baseobjvalmutabletbl=[rdelete,`DELETE_EVENT]valmutableid=0methodprivateencode(v:'a)=list_rassocvtblmethodprivatedecoder=tryList.assocrtblwithNot_found->Format.eprintf"Warning: unknown response id:%d in dialog. \
Please report to lablgtk dev team.@."r;`DELETE_EVENTendclass['a]dialog_extobj=object(self)inherit['a]dialog_skelobjmethodadd_buttontext(v:'a)=tbl<-(id,v)::tbl;Dialog.add_buttonobjtextid;id<-succidmethodadd_button_stocks_idv=self#add_button(GtkStock.convert_ids_id)vendclass['a]dialogobj=object(self)inherit['a]dialog_ext(obj:>Gtk.dialogobj)methodconnect:'adialog_signals=newdialog_signalsobj(self#decode)endletmake_dialogpl?parent?destroy_with_parent~create=make_window~create:(funpl->letd=createplinmay(funp->d#set_transient_forp#as_window)parent;mayd#set_destroy_with_parentdestroy_with_parent;d)plletdialog?(no_separator=false)=make_dialog[]~create:(funpl->letpl=ifno_separatorthen(Gobject.paramDialog.P.has_separatorfalse)::plelseplinnewdialog(Dialog.createpl))typeany_response=[GtkEnums.response|`OTHERofint]classdialog_anyobj=object(self)inherit[any_response]dialog_base(obj:>Gtk.dialogobj)methodprivateencode=function`OTHERn->n|#GtkEnums.responseasv->Dialog.std_responsevmethodprivatedecoder=try(Dialog.decode_responser:GtkEnums.response:>[>GtkEnums.response])withInvalid_argument_->`OTHERrmethodconnect:any_responsedialog_signals=newdialog_signalsobjself#decodemethodadd_buttontextv=Dialog.add_buttonobjtext(self#encodev)methodadd_button_stocks_idv=self#add_button(GtkStock.convert_ids_id)vend(** MessageDialog **)type'abuttons=Gtk.Tags.buttons_type*(int*'a)listmoduleButtons=structletok=`OK,[rok,`OK]letclose=`CLOSE,[rclose,`CLOSE]letyes_no=`YES_NO,[ryes,`YES;rno,`NO]letok_cancel=`OK_CANCEL,[rok,`OK;rcancel,`CANCEL]typecolor_selection=[`OK|`CANCEL|`HELP|`DELETE_EVENT]typefile_selection=[`OK|`CANCEL|`HELP|`DELETE_EVENT]typefont_selection=[`OK|`CANCEL|`APPLY|`DELETE_EVENT]typeabout=[`CANCEL|`CLOSE|`DELETE_EVENT]endclass['a]message_dialogobj~(buttons:'abuttons)=object(self)inherit['a]dialog_skelobjinheritmessage_dialog_propsmethodconnect:'adialog_signals=newdialog_signalsobjself#decodeinitializertbl<-sndbuttons@tblendletmessage_dialog~buttons?message_type?message=MessageDialog.make_params[]?message_type?text:message~cont:(funpl->make_dialogpl~create:(funpl->letw=MessageDialog.create~buttons:(fstbuttons)plinnewmessage_dialog~buttonsw))(** AboutDialog *)letnamep=ifGtkMain.Main.version>=(2,12,0)thenGtkBaseProps.AboutDialog.P.program_nameelseGtkBaseProps.Widget.P.nameclassabout_dialogobj=object(self)inherit[Buttons.about]dialog_skelobjinheritabout_dialog_propsaspropsmethodname=Gobject.getnamepobjmethodset_name=Gobject.setnamepobjmethodconnect:Buttons.aboutdialog_signals=newdialog_signalsobjself#decodemethodset_artists=AboutDialog.set_artistsobjmethodartists=AboutDialog.get_artistsobjmethodset_authors=AboutDialog.set_authorsobjmethodauthors=AboutDialog.get_authorsobjmethodset_documenters=AboutDialog.set_documentersobjmethoddocumenters=AboutDialog.get_documentersobjinitializertbl<-[rcancel,`CANCEL;rclose,`CLOSE]@tblendletabout_dialog?name?authors=letpl=Gobject.Property.may_consnamepname[]inAboutDialog.make_paramspl~cont:(funpl->make_dialogpl~create:(funpl->letd=AboutDialog.create()inGobject.set_paramsdpl;may(AboutDialog.set_authorsd)authors;newabout_dialogd))(** Plug **)classplug_signalsobj=objectinheritcontainer_signals_impl(obj:[>plug]obj)inheritplug_sigsendclassplug(obj:Gtk.plugobj)=objectinheritwindow_skelobjmethodconnect=newplug_signalsobjend(*
let plug ~window:xid =
Container.make_params [] ~cont:(fun pl ?(show=false) () ->
let w = Plug.create xid in
Gobject.set_params w pl;
if show then Widget.show w;
new plug w)
*)(** Socket **)classsocket_signalsobj=objectinheritcontainer_signals_impl(obj:[>socket]obj)inheritsocket_sigsendclasssocketobj=object(self)inheritcontainer(obj:Gtk.socketobj)methodconnect=newsocket_signalsobjmethodxwindow=self#misc#realize();Gdk.Window.get_xwindowself#misc#windowendletsocket=pack_container[]~create:(funpl->newsocket(Socket.createpl))(** FileChooser *)class['a]file_chooser_dialog_signalsobj~decode=objectinherit['a]dialog_signalsobj~decodeinheritOgtkFileProps.file_chooser_sigsendclass['a]file_chooser_dialogobj=object(self)inherit['a]dialog_extobjinheritGFile.chooser_implmethodconnect:'afile_chooser_dialog_signals=newfile_chooser_dialog_signalsobjself#decodemethodadd_select_buttontextv=tbl<-(raccept,v)::tbl;Dialog.add_buttonobjtextracceptmethodadd_select_button_stocks_idv=self#add_select_button(GtkStock.convert_ids_id)vendletfile_chooser_dialog~action?filename=make_dialog[Gobject.paramGtkFile.FileChooser.P.actionaction]~create:(funpl->letw=GtkFile.FileChooser.dialog_createplinleto=newfile_chooser_dialogwinGaux.may~f:o#set_filenamefilename;o)