123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678(**************************************************************************)(* 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$ *)openStdLabelsopenGauxopenGtkopenGtkBaseopenGtkTextopenOgtkTextPropsopenGObjtypemark_name=[`INSERT|`SEL_BOUND|`NAMEofstring]letmark_name=function`INSERT->"insert"|`SEL_BOUND->"selection_bound"|`NAMEs->stypemark=[mark_name|`MARKoftext_mark]classchild_anchorobj=objectmethodget_oid=Gobject.get_oidobjmethodas_childanchor:text_child_anchor=objmethodwidgets=List.map(newwidget)(ChildAnchor.get_widgetsobj)methoddeleted=ChildAnchor.get_deletedobjendletchild_anchor()=newchild_anchor(ChildAnchor.create[])classtag_signalsobj=object(self)inherit['a]gobject_signalsobjmethodevent=self#connectTag.S.eventendtypetag_property0=[|`ACCUMULATIVE_MARGINofbool|`BACKGROUNDofstring|`BACKGROUND_FULL_HEIGHTofbool|`BACKGROUND_FULL_HEIGHT_SETofbool|`BACKGROUND_GDKofGdk.color|`BACKGROUND_SETofbool|`DIRECTIONofTags.text_direction|`EDITABLEofbool|`EDITABLE_SETofbool|`FAMILYofstring|`FAMILY_SETofbool|`FONTofstring|`FONT_DESCofPango.font_description|`FOREGROUNDofstring|`FOREGROUND_GDKofGdk.color|`FOREGROUND_SETofbool|`INDENTofint|`INDENT_SETofbool|`INVISIBLEofbool|`INVISIBLE_SETofbool|`JUSTIFICATIONofTags.justification|`JUSTIFICATION_SETofbool|`LANGUAGEofstring|`LANGUAGE_SETofbool|`LEFT_MARGINofint|`LEFT_MARGIN_SETofbool|`PARAGRAPH_BACKGROUNDofstring|`PARAGRAPH_BACKGROUND_GDKofGdk.color|`PARAGRAPH_BACKGROUND_SETofbool|`PIXELS_ABOVE_LINESofint|`PIXELS_ABOVE_LINES_SETofbool|`PIXELS_BELOW_LINESofint|`PIXELS_BELOW_LINES_SETofbool|`PIXELS_INSIDE_WRAPofint|`PIXELS_INSIDE_WRAP_SETofbool|`RIGHT_MARGINofint|`RIGHT_MARGIN_SETofbool|`RISEofint|`RISE_SETofbool|`SCALE_SETofbool|`SIZEofint|`SIZE_POINTSoffloat|`SIZE_SETofbool|`STRETCHofPango.Tags.stretch|`STRETCH_SETofbool|`STRIKETHROUGHofbool|`STRIKETHROUGH_SETofbool|`STYLEofPango.Tags.style|`STYLE_SETofbool|`TABS_SETofbool|`UNDERLINEofPango.Tags.underline|`UNDERLINE_SETofbool|`VARIANTofPango.Tags.variant|`VARIANT_SETofbool|`WEIGHT_SETofbool|`WRAP_MODEofTags.wrap_mode|`WRAP_MODE_SETofbool]typetag_property=[|`WEIGHTofPango.Tags.weight|`SCALEofPango.Tags.scale|tag_property0]lettext_tag_param(x:tag_property)=text_tag_param(matchxwith|`WEIGHTw->`WEIGHT(Pango.Tags.weight_to_intw)|`SCALEs->`SCALE(Pango.Tags.scale_to_floats)|#tag_property0asx->x)classtagobj=object(self)methodget_oid=Gobject.get_oidobjmethodas_tag:text_tag=objmethodconnect=newtag_signalsobjmethodpriority=Tag.get_priorityobjmethodset_priorityp=Tag.set_priorityobjp(* [BM] my very first polymorphic method in OCaml...*)methodevent:'a.'aGtk.obj->GdkEvent.any->Gtk.text_iter->bool=Tag.eventobjmethodset_propertyp=Gobject.set_paramsobj[text_tag_paramp]methodset_propertiesl=Gobject.set_paramsobj(List.maptext_tag_paraml)methodget_property:'a.(_,'a)Gobject.property->'a=Gobject.Property.getobjendlettag?name()=newtag(Tag.create?name[])typecontents=[`CHARofGlib.unichar|`PIXBUFofGdkPixbuf.pixbuf|`CHILDofchild_anchor|`UNKNOWN]classnocopy_iterit=object(self)valit=(it:text_iter)methodas_iter=itmethodassign(r:nocopy_iter)=Iter.assignitr#as_itermethodforward_char=Iter.forward_charitmethodbackward_char=Iter.backward_charitmethodforward_charsn=Iter.forward_charsitnmethodbackward_charsn=Iter.backward_charsitnmethodforward_line=Iter.forward_lineitmethodbackward_line=Iter.backward_lineitmethodforward_linesn=Iter.forward_linesitnmethodbackward_linesn=Iter.backward_linesitnmethodforward_word_end=Iter.forward_word_enditmethodforward_word_endsn=Iter.forward_word_endsitnmethodbackward_word_start=Iter.backward_word_startitmethodbackward_word_startsn=Iter.backward_word_startsitnmethodforward_cursor_position=Iter.forward_cursor_positionitmethodbackward_cursor_position=Iter.backward_cursor_positionitmethodforward_cursor_positionsn=Iter.forward_cursor_positionsitnmethodbackward_cursor_positionsn=Iter.backward_cursor_positionsitnmethodforward_sentence_end=Iter.forward_sentence_enditmethodbackward_sentence_start=Iter.backward_sentence_startitmethodforward_sentence_endsn=Iter.forward_sentence_endsitnmethodbackward_sentence_startsn=Iter.backward_sentence_startsitnmethodforward_to_end=Iter.forward_to_enditmethodforward_to_line_end=Iter.forward_to_line_enditmethodforward_to_tag_toggle(tag:tagoption)=Iter.forward_to_tag_toggleit(may_maptag~f:(funt->t#as_tag))methodbackward_to_tag_toggle(tag:tagoption)=Iter.backward_to_tag_toggleit(may_maptag~f:(funt->t#as_tag))methodset_offset=Iter.set_offsetitmethodset_line=Iter.set_lineitmethodset_line_offset=Iter.set_line_offsetitmethodset_line_index=Iter.set_line_indexitmethodset_visible_line_index=Iter.set_visible_line_indexitmethodset_visible_line_offset=Iter.set_visible_line_offsetitmethodforward_find_char?(limit:iteroption)f=Iter.forward_find_charitf(may_maplimit~f:(funt->t#as_iter))methodbackward_find_char?(limit:iteroption)f=Iter.backward_find_charitf(may_maplimit~f:(funt->t#as_iter))endanditerit=object(self)valnocopy=newnocopy_iteritvalit=(it:text_iter)methodnocopy=nocopymethodas_iter=itmethodcopy=newiter(Iter.copyit)methodbuffer=Iter.get_bufferitmethodoffset=Iter.get_offsetitmethodline=Iter.get_lineitmethodline_offset=Iter.get_line_offsetitmethodline_index=Iter.get_line_indexitmethodvisible_line_index=Iter.get_visible_line_indexitmethodvisible_line_offset=Iter.get_visible_line_offsetitmethodchar=Iter.get_charitmethodcontents:contents=letc=Iter.get_charitinifc<>0xfffcthen`CHARcelsematchIter.get_pixbufitwithSomep->`PIXBUFp|None->matchIter.get_child_anchoritwithSomec->`CHILD(newchild_anchorc)|None->`UNKNOWNmethodget_slice~(stop:iter)=Iter.get_sliceitstop#as_itermethodget_text~(stop:iter)=Iter.get_textitstop#as_itermethodget_visible_slice~(stop:iter)=Iter.get_visible_sliceitstop#as_itermethodget_visible_text~(stop:iter)=Iter.get_visible_textitstop#as_itermethodmarks=Iter.get_marksitmethodget_toggled_tagsb=List.map(funx->newtagx)(Iter.get_toggled_tagsitb)methodbegins_tag(tag:tagoption)=Iter.begins_tagit(may_maptag~f:(funt->t#as_tag))methodends_tag(tag:tagoption)=Iter.ends_tagit(may_maptag~f:(funt->t#as_tag))methodtoggles_tag(tag:tagoption)=Iter.toggles_tagit(may_maptag~f:(funt->t#as_tag))methodhas_tag(t:tag)=Iter.has_tagitt#as_tagmethodtags=List.map(funt->newtagt)(Iter.get_tagsit)methodeditable=Iter.editableitmethodcan_insert=Iter.can_insertitmethodstarts_word=Iter.starts_worditmethodends_word=Iter.ends_worditmethodinside_word=Iter.inside_worditmethodstarts_line=Iter.starts_lineitmethodends_line=Iter.ends_lineitmethodstarts_sentence=Iter.starts_sentenceitmethodends_sentence=Iter.ends_sentenceitmethodinside_sentence=Iter.inside_sentenceitmethodis_cursor_position=Iter.is_cursor_positionitmethodchars_in_line=Iter.get_chars_in_lineitmethodbytes_in_line=Iter.get_bytes_in_lineitmethodlanguage=Pango.Language.to_string(Iter.get_languageit)methodis_end=Iter.is_enditmethodis_start=Iter.is_startitmethodforward_char=lets=self#copyins#nocopy#forward_char;smethodbackward_char=lets=self#copyins#nocopy#backward_char;smethodforward_charsn=lets=self#copyins#nocopy#forward_charsn;smethodbackward_charsn=lets=self#copyins#nocopy#backward_charsn;smethodforward_line=lets=self#copyins#nocopy#forward_line;smethodbackward_line=lets=self#copyins#nocopy#backward_line;smethodforward_linesn=lets=self#copyins#nocopy#forward_linesn;smethodbackward_linesn=lets=self#copyins#nocopy#backward_linesn;smethodforward_word_end=lets=self#copyins#nocopy#forward_word_end;smethodforward_word_endsn=lets=self#copyins#nocopy#forward_word_endsn;smethodbackward_word_start=lets=self#copyins#nocopy#backward_word_start;smethodbackward_word_startsn=lets=self#copyins#nocopy#backward_word_startsn;smethodforward_cursor_position=lets=self#copyins#nocopy#forward_cursor_position;smethodbackward_cursor_position=lets=self#copyins#nocopy#backward_cursor_position;smethodforward_cursor_positionsn=lets=self#copyins#nocopy#forward_cursor_positionsn;smethodbackward_cursor_positionsn=lets=self#copyins#nocopy#backward_cursor_positionsn;smethodforward_sentence_end=lets=self#copyins#nocopy#forward_sentence_end;smethodbackward_sentence_start=lets=self#copyins#nocopy#backward_sentence_start;smethodforward_sentence_endsn=lets=self#copyins#nocopy#forward_sentence_endsn;smethodbackward_sentence_startsn=lets=self#copyins#nocopy#backward_sentence_startsn;smethodset_offsetn=lets=self#copyins#nocopy#set_offsetn;smethodset_linen=lets=self#copyins#nocopy#set_linen;smethodset_line_offsetn=lets=self#copyins#nocopy#set_line_offsetn;smethodset_line_indexn=lets=self#copyins#nocopy#set_line_indexn;smethodset_visible_line_indexn=lets=self#copyins#nocopy#set_visible_line_indexn;smethodset_visible_line_offsetn=lets=self#copyins#nocopy#set_visible_line_offsetn;smethodforward_to_end=lets=self#copyins#nocopy#forward_to_end;smethodforward_to_line_end=lets=self#copyins#nocopy#forward_to_line_end;smethodforward_to_tag_toggle(tag:tagoption)=lets=self#copyins#nocopy#forward_to_tag_toggletag;smethodbackward_to_tag_toggle(tag:tagoption)=lets=self#copyins#nocopy#backward_to_tag_toggletag;smethodequal(a:iter)=Iter.equalita#as_itermethodcompare(a:iter)=Iter.compareita#as_itermethodin_range~(start:iter)~(stop:iter)=Iter.in_rangeitstart#as_iterstop#as_itermethodforward_search?flags?(limit:iteroption)s=may_map(Iter.forward_searchits?flags(may_maplimit~f:(funt->t#as_iter)))~f:(fun(s,t)->newiters,newitert)methodbackward_search?flags?(limit:iteroption)s=may_map(Iter.backward_searchits?flags(may_maplimit~f:(funt->t#as_iter)))~f:(fun(s,t)->newiters,newitert)methodforward_find_char?limitf=lets=self#copyins#nocopy#forward_find_char?limitf;smethodbackward_find_char?limitf=lets=self#copyins#nocopy#backward_find_char?limitf;send(* let iter i = new iter (Iter.copy i) *)letas_iter(it:iter)=it#as_iterclasstag_table_signalsobj=objectinherit['a]gobject_signalsobjinherittext_tag_table_sigsendclasstag_table_skelobj=objectvalobj=(obj:>text_tag_table)methodget_oid=Gobject.get_oidobjmethodas_tag_table:text_tag_table=objmethodadd=TagTable.addobjmethodremove=TagTable.removeobjmethodlookup=TagTable.lookupobjmethodsize=TagTable.get_sizeobjendclasstag_tableobj=objectinherittag_table_skelobjmethodconnect=newtag_table_signalsobjendlettag_table()=newtag_table(TagTable.create[])classtypebuffer_signals_skel_type=objectmethodapply_tag:callback:(tag->start:iter->stop:iter->unit)->GtkSignal.idmethodbegin_user_action:callback:(unit->unit)->GtkSignal.idmethodchanged:callback:(unit->unit)->GtkSignal.idmethoddelete_range:callback:(start:iter->stop:iter->unit)->GtkSignal.idmethodend_user_action:callback:(unit->unit)->GtkSignal.idmethodinsert_child_anchor:callback:(iter->Gtk.text_child_anchor->unit)->GtkSignal.idmethodinsert_pixbuf:callback:(iter->GdkPixbuf.pixbuf->unit)->GtkSignal.idmethodinsert_text:callback:(iter->string->unit)->GtkSignal.idmethodmark_deleted:callback:(Gtk.text_mark->unit)->GtkSignal.idmethodmark_set:callback:(iter->Gtk.text_mark->unit)->GtkSignal.idmethodmodified_changed:callback:(unit->unit)->GtkSignal.idmethodremove_tag:callback:(tag->start:iter->stop:iter->unit)->GtkSignal.idmethodnotify_cursor_position:callback:(int->unit)->GtkSignal.idmethodnotify_has_selection:callback:(bool->unit)->GtkSignal.idmethodnotify_tag_table:callback:(Gtk.text_tag_table->unit)->GtkSignal.idendclasstype['b]buffer_signals_type=object('a)inheritbuffer_signals_skel_typemethodafter:'amethodprivateconnect:'c.('b,'c)GtkSignal.t->callback:'c->GtkSignal.idmethodprivatenotify:'c.('b,'c)Gobject.property->callback:('c->unit)->GtkSignal.idendclassvirtualbuffer_signals_skel=object(self)inherittext_buffer_sigsmethodapply_tag~callback=self#connectBuffer.S.apply_tag~callback:(funtagstartstop->callback(newtagtag)~start:(newiterstart)~stop:(newiterstop))methoddelete_range~callback=self#connectBuffer.S.delete_range~callback:(funstartstop->callback~start:(newiterstart)~stop:(newiterstop))methodinsert_child_anchor~callback=self#connectBuffer.S.insert_child_anchor~callback:(funiter->callback(newiteriter))methodinsert_pixbuf~callback=self#connectBuffer.S.insert_pixbuf~callback:(funiter->callback(newiteriter))methodinsert_text~callback=self#connectBuffer.S.insert_text~callback:(funiter->callback(newiteriter))methodmark_set~callback=self#connectBuffer.S.mark_set~callback:(funit->callback(newiterit))methodremove_tag~callback=self#connectBuffer.S.remove_tag~callback:(funtagstartstop->callback(newtagtag)~start:(newiterstart)~stop:(newiterstop))endclassbuffer_signalsobj=objectinherit['a]gobject_signalsobjinheritbuffer_signals_skelendexceptionNo_such_markofstringtypeposition=[`OFFSETofint|`LINEofint|`LINECHARofint*int|`LINEBYTEofint*int|`START|`END|`ITERofiter|mark]classbuffer_skelobj=object(self)valobj=(obj:>text_buffer)methodprivateobj=objinherittext_buffer_propsmethodget_oid=Gobject.get_oidobjmethodas_buffer=objmethodline_count=Buffer.get_line_countobjmethodchar_count=Buffer.get_char_countobj(* method tag_table = Buffer.get_tag_table obj *)methodinsert?iter?(tag_names:stringlist=[])?(tags:taglist=[])text=matchtags,tag_nameswith|[],[]->beginmatchiterwith|None->Buffer.insert_at_cursorobjtext|Someiter->Buffer.insertobj(as_iteriter)textend|_->beginmatchiterwith|None->letinsert_iter()=self#get_iter_at_mark`INSERTinletstart_offset=(insert_iter())#offsetinBuffer.insert_at_cursorobjtext;letstart=self#get_iter_at_charstart_offsetinList.itertags~f:(self#apply_tag~start~stop:(insert_iter()));List.itertag_names~f:(self#apply_tag_by_name~start~stop:(insert_iter()))|Someiter->letstart_offset=iter#offsetinBuffer.insertobj(as_iteriter)text;letstart=self#get_iter_at_charstart_offsetinList.itertags~f:(self#apply_tag~start~stop:iter);List.itertag_names~f:(self#apply_tag_by_name~start~stop:iter)endmethodinsert_interactive?iter?(default_editable=true)text=matchiterwith|None->Buffer.insert_interactive_at_cursorobjtextdefault_editable|Someiter->Buffer.insert_interactiveobj(as_iteriter)textdefault_editablemethodinsert_range~iter~start~stop=Buffer.insert_rangeobj(as_iteriter)(as_iterstart)(as_iterstop)methodinsert_range_interactive~iter~start~stop?(default_editable=true)()=Buffer.insert_range_interactiveobj(as_iteriter)(as_iterstart)(as_iterstop)default_editablemethoddelete~start~stop=Buffer.deleteobj(as_iterstart)(as_iterstop)methoddelete_interactive~start~stop?(default_editable=true)()=Buffer.delete_interactiveobj(as_iterstart)(as_iterstop)default_editablemethodset_texttext=Buffer.set_textobjtextmethodget_text?start?stop?(slice=false)?(visible=false)()=letstart,stop=matchstart,stopwith|None,None->Buffer.get_boundsobj|Somestart,None->as_iterstart,Buffer.get_start_iterobj|None,Somestop->Buffer.get_end_iterobj,as_iterstop|Somestart,Somestop->as_iterstart,as_iterstopin(ifslicethenBuffer.get_sliceelseBuffer.get_text)objstartstop(notvisible)methodinsert_pixbuf~iter~pixbuf=Buffer.insert_pixbufobj(as_iteriter)pixbufmethodcreate_mark?name?(left_gravity=true)iter=Buffer.create_markobjname(as_iteriter)left_gravitymethodget_mark:mark->_=function`MARKmark->mark|#mark_nameasmark->letname=mark_namemarkinmatchBuffer.get_markobjnamewith|None->raise(No_such_markname)|Somem->mmethodmove_markmark~where=Buffer.move_markobj(self#get_markmark)(as_iterwhere)methoddelete_markmark=Buffer.delete_markobj(self#get_markmark)methodplace_cursor~where=Buffer.place_cursorobj(as_iterwhere)methodselect_rangeinsbound=Buffer.select_rangeobj(as_iterins)(as_iterbound)methodapply_tag(tag:tag)~start~stop=Buffer.apply_tagobjtag#as_tag(as_iterstart)(as_iterstop)methodremove_tag(tag:tag)~start~stop=Buffer.remove_tagobjtag#as_tag(as_iterstart)(as_iterstop)methodapply_tag_by_namename~start~stop=Buffer.apply_tag_by_nameobjname(as_iterstart)(as_iterstop)methodremove_tag_by_namename~start~stop=Buffer.remove_tag_by_nameobjname(as_iterstart)(as_iterstop)methodremove_all_tags~start~stop=Buffer.remove_all_tagsobj(as_iterstart)(as_iterstop)methodcreate_tag?nameproperties=lett=newtag(Buffer.create_tag_0objname)inifproperties<>[]thent#set_propertiesproperties;tmethodget_iter(pos:position)=letit=matchposwith`START->Buffer.get_start_iterobj|`END->Buffer.get_end_iterobj|`OFFSETn->Buffer.get_iter_at_offsetobjn|`LINEn->Buffer.get_iter_at_lineobjn|`LINECHAR(l,c)->Buffer.get_iter_at_line_offsetobjlc|`LINEBYTE(l,c)->Buffer.get_iter_at_line_indexobjlc|`ITERit->it#as_iter|#markasmark->Buffer.get_iter_at_markobj(self#get_markmark)innewiteritmethodget_iter_at_char?linechar_offset=matchline,char_offsetwith|Somev,0->newiter(Buffer.get_iter_at_lineobjv)|None,v->newiter(Buffer.get_iter_at_offsetobjv)|Somel,c->newiter(Buffer.get_iter_at_line_offsetobjlc)methodget_iter_at_byte~lineindex=newiter(Buffer.get_iter_at_line_indexobjlineindex)methodget_iter_at_markmark=newiter(Buffer.get_iter_at_markobj(self#get_markmark))methodstart_iter=newiter(Buffer.get_start_iterobj)methodend_iter=newiter(Buffer.get_end_iterobj)methodbounds=lets,t=Buffer.get_boundsobjinnewiters,newitertmethodmodified=Buffer.get_modifiedobjmethodset_modifiedsetting=Buffer.set_modifiedobjsettingmethoddelete_selection?(interactive=true)?(default_editable=true)()=Buffer.delete_selectionobjinteractivedefault_editablemethodselection_bounds=letstart,stop=Buffer.get_selection_boundsobjin(newiterstart,newiterstop)methodbegin_user_action()=Buffer.begin_user_actionobjmethodend_user_action()=Buffer.end_user_actionobjmethodcreate_child_anchor(iter:iter)=newchild_anchor(Buffer.create_child_anchorobjiter#as_iter)methodinsert_child_anchor(iter:iter)(child_anchor:child_anchor)=Buffer.insert_child_anchorobjiter#as_iterchild_anchor#as_childanchormethodpaste_clipboard?iter?(default_editable=true)clipboard=Buffer.paste_clipboardobj(GData.as_clipboardclipboard)(may_mapas_iteriter)default_editablemethodcopy_clipboardclip=Buffer.copy_clipboardobj(GData.as_clipboardclip)methodcut_clipboard?(default_editable=true)clipboard=Buffer.cut_clipboardobj(GData.as_clipboardclipboard)default_editablemethodadd_selection_clipboardclip=Buffer.add_selection_clipboardobj(GData.as_clipboardclip)methodremove_selection_clipboardclip=Buffer.remove_selection_clipboardobj(GData.as_clipboardclip)endclassbufferobj=objectinheritbuffer_skelobjmethodconnect=newbuffer_signalsobjendletbuffer?tag_table?text()=lettag_table=matchtag_tablewithNone->None|Somex->Somex#as_tag_tableinletb=newbuffer(Buffer.create?tag_table[])inmatchtextwithNone->b|Somet->b#set_textt;bclassview_signalsobj=objectinheritwidget_signals_impl(obj:[>Gtk.text_view]obj)inherittext_view_sigsendclassview_skelobj=object(self)inherit[_]widget_implobjinherittext_view_propsmethodevent=newGObj.event_opsobjmethodas_view=(obj:>text_viewobj)methodset_buffer(b:buffer)=View.set_bufferobj(b#as_buffer)methodbuffer=newbuffer(View.get_bufferobj)methodscroll_to_mark?(within_margin=0.)?(use_align=false)?(xalign=0.)?(yalign=0.)mark=View.scroll_to_markobj(self#buffer#get_markmark)within_marginuse_alignxalignyalignmethodscroll_to_iter?(within_margin=0.)?(use_align=false)?(xalign=0.)?(yalign=0.)iter=View.scroll_to_iterobj(as_iteriter)within_marginuse_alignxalignyalignmethodscroll_mark_onscreenmark=View.scroll_mark_onscreenobj(self#buffer#get_markmark)methodmove_mark_onscreenmark=View.move_mark_onscreenobj(self#buffer#get_markmark)methodplace_cursor_onscreen()=View.place_cursor_onscreenobjmethodvisible_rect=View.get_visible_rectobjmethodget_iter_locationiter=View.get_iter_locationobj(as_iteriter)methodget_line_at_yy=letit,n=View.get_line_at_yobjyin(newiterit,n)methodget_line_yrangeiter=View.get_line_yrangeobj(as_iteriter)methodget_iter_at_location~x~y=newiter(View.get_iter_at_locationobjxy)methodbuffer_to_window_coords~tag~x~y=View.buffer_to_window_coordsobjtagxymethodwindow_to_buffer_coords~tag~x~y=View.window_to_buffer_coordsobjtagxymethodget_windowwin=View.get_windowobjwinmethodget_window_typewin=View.get_window_typeobjwinmethodset_border_window_size~typ~size=View.set_border_window_sizeobjtypsizemethodget_border_window_sizetyp=View.get_border_window_sizeobjtypmethodforward_display_lineiter=View.forward_display_lineobj(as_iteriter)methodbackward_display_lineiter=View.backward_display_lineobj(as_iteriter)methodforward_display_line_enditer=View.forward_display_line_endobj(as_iteriter)methodbackward_display_line_startiter=View.backward_display_line_startobj(as_iteriter)methodstarts_display_lineiter=View.starts_display_lineobj(as_iteriter)methodmove_visuallyitercount=View.move_visuallyobj(as_iteriter)countmethodadd_child_at_anchor(w:widget)(anchor:child_anchor)=View.add_child_at_anchorobjw#as_widgetanchor#as_childanchormethodadd_child_in_window~(child:widget)~which_window~x~y=View.add_child_in_windowobjchild#as_widgetwhich_windowxymethodmove_child~(child:widget)~x~y=View.move_childobjchild#as_widgetxyendclassviewobj=objectinheritview_skelobjmethodconnect=newview_signalsobjendletview?(buffer:bufferoption)=View.make_params[]~cont:(GContainer.pack_container~create:(funpl->letw=matchbufferwith|None->View.create[]|Someb->View.create_with_bufferb#as_bufferinGobject.set_paramswpl;newvieww))