;ò 4‚Gc@s&dkZdeifd„ƒYZdS(Nsdom_structure_widgetcBs·tZdZdfd„ƒYZehd„Zd„Zd„Zddd„Zdd „Z d „Z d „Z d „Z d „Z d„Zd„Zd„Zd„Zd„Zd„ZRS(s: this widget displays the structure of a dom tree snodeDisplayPropertiescBstZdZd„ZRS(s/ holds all properties for node cCs(d|_d|_d|_d|_dS(Nis(sselfsexpandedsfg_colorsbg_colorstag(sself((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys__init__.s   (s__name__s __module__s__doc__s__init__(((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pysnodeDisplayProperties*s cKshdd<}|i|ƒ|i|ƒ|idƒo |d=nhdd<dd<dd<d d<d d<d d<dd<}|i|ƒ|i|ƒtii||d |ƒti |d |ƒ|_ |i i d tidtiddƒti|d|i iƒ|_|i id|iiƒ|ii d tidtiddƒ||_t|_||_d|_d|_d|_d|_tiii tiii!g|_"|i"|_#|i idti$ƒ|i i%ti&ti'ƒ|i i(ti&ti)ƒ|i*d|dti&dƒt|_+|i i,dd|i-ƒ|i i,dd|i.ƒ|i i,dd|i/ƒ|i i,dd|i0ƒ|i i1dd „ƒ|i i1d!|i2ƒ|i i1d"|i3ƒ|i i1d#|i-ƒ|i i1d$|i.ƒ|i i1d%|i0ƒd&S('s- creates the dom tree widget shighlightthicknesss0sfontsbgswhitescursorstop_left_arrowsselectbackgroundsselectborderwidths insertwidthsexportselectionscnfssidesfillsexpandiscommandsyscrollcommands s+s-isstatesrootsiÿÿÿÿscollapses snodesscCsdS(Nsbreak((se((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pysgssssssN(4s my_defaultssupdatesconfigscnfshas_keys text_defaultssTkintersFrames__init__sselfsmastersTexts textWidgetspacksLEFTsBOTHs Scrollbarsyviewsscrolls configuressetsYsdomsNones selectedNodesreport_functions indent_steps expand_signs collapse_signs mergeTextsxmlsNodes TEXT_NODEsCDATA_SECTION_NODEs textTypessignorableTypessNORMALsmark_setsINSERTsENDs mark_gravitysRIGHTscreateNodeEntriess selectedTagstag_bindscollapseNodeEventsexpandNodeEventsselectNodeEventschooseNodeEventsbinds prevNodeEvents nextNodeEvent(sselfsmastersdomsreport_functionscnfsconfigs my_defaultss text_defaults((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys__init__4sN   E  %%       !  cCsl|i|ijodSn|io|i|ijo,|i}|o|i|ijSqddSndSdS(s: default function for visibility of nodes iiN(snodesnodeTypesselfsignorableTypess mergeTexts textTypesspreviousSiblingslastNode(sselfsnodeslastNode((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys isVisiblens cCst|iƒSdS(N(s xmlDecodesnodesnodeName(sselfsnode((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pysnameNode€sscCsœ|iidƒ otiƒ|_n|o||i_n|o||i_ n|ii o6|i i d|ii d|iid|ii ƒndS(s* sets the color of a node sDisplayPropertiess nodeName-s foregrounds backgroundN(snodes__dict__shas_keysdom_structure_widgetsnodeDisplayPropertiessDisplayPropertiessfgsfg_colorsbgsbg_colorstagsselfs textWidgets tag_config(sselfsnodesfgsbg((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys setNodeColorƒs  iÿÿÿÿc Cs§|djodSnd}|iidƒ otiƒ|_nd|i_xR|i D]G}|i |ƒ o|d7}qXnd||f}|iidƒ otiƒ|_n||i_|iid|d|iid|iiƒ|iƒot|i |i ƒo'|djod|i_n|djod|i_n|ii|||ƒ|iio#|ii||i|d fƒn |ii||i|d fƒ|ii||i|ƒ|d d|fƒ|ii|d |ƒ|iio |djo(|i||||i||dƒq•n]|ii||d |ƒ|ii||i|ƒ|d d|fƒ|ii|d |ƒ|d7}qXWdS(s8 recursive creation of all node entries iNsDisplayPropertiesis%s-%ds nodeName-s foregrounds backgroundscollapsesexpandsnodes s (sdepthsissubtrees__dict__shas_keysdom_structure_widgetsnodeDisplayPropertiessDisplayPropertiessexpandeds childNodessnodesselfs isVisiblessubtags this_subtagstags textWidgets tag_configsfg_colorsbg_colors hasChildNodessfiltersinserts mark_names indentations collapse_signs expand_signsnameNodescreateNodeEntriess indent_step( sselfssubtagssubtrees indentations mark_namesdepthsnodes this_subtagsi((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pyscreateNodeEntries’sX      #   #      cCs¥|idjou|iid|i|ifƒ}td„|ƒ}t |ƒdjodG|GdGHdSn|i |dƒdSn|id jodSnd Sd S( sM find tag, that denotes the subtree and pass to collapse_tag s4s@%d,%dcCs|d djS(Nisroot(st(st((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pysßsisnot good: found s to collapse!sbreakis2N( seventstypesselfs textWidgets tag_namessxsysmy_tagssfilters tree_tagsslens collapse_tag(sselfseventsmy_tagss tree_tags((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pyscollapseNodeEventØs" cCs¥|idjou|iid|i|ifƒ}td„|ƒ}t |ƒdjodG|GdGHdSn|i |dƒdSn|id jodSnd Sd S( sM find tag, that denotes the subtree and pass to collapse_tag s4s@%d,%dcCs|d djS(Nisroot(st(st((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pysòsisnot good: found s to expand!sbreakis2N( seventstypesselfs textWidgets tag_namessxsysmy_tagssfilterstree_tagslens expand_tag(sselfseventstree_tagsmy_tags((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pysexpandNodeEventës" cCsŠ|iid|i|ifƒ}td„|ƒ}t |ƒdjodG|GdGHn|i |d|i ƒ}|i |dƒdSdS( s* clicked once on the node s@%d,%dcCs|d djS(Nisroot(st(st((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pyssisnot good: found s to select!isbreakN(sselfs textWidgets tag_namesseventsxsysmy_tagssfilters tree_tagsslenssubtree_from_tagsdomssubtrees selectNode(sselfseventssubtreesmy_tagss tree_tags((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pysselectNodeEventþs"cCsÎ|itjodSn|ii|iiiƒ\}}|ii d|ƒ}t |ƒdjodSn|ii |dƒ}td„|ƒ}t |ƒdjodG|GdGHn|i|dƒdSdS( s$ event for down key sbreaksnodeicCs|d djS(Nisroot(st(st((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pyssisnot good: found s to select!N(sselfs selectedNodesNones textWidgets tag_rangessDisplayPropertiesstagsstartsends tag_nextrangesresultslens tag_namessmy_tagssfilters tree_tagss selectNode(sselfseventsendsmy_tagssstartsresults tree_tags((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys nextNodeEvent s!cCsÎ|itjodSn|ii|iiiƒ\}}|ii d|ƒ}t |ƒdjodSn|ii |dƒ}td„|ƒ}t |ƒdjodG|GdGHn|i|dƒdSdS( s" event for up key sbreaksnodeicCs|d djS(Nisroot(st(st((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys$sisnot good: found s to select!N(sselfs selectedNodesNones textWidgets tag_rangessDisplayPropertiesstagsstartsends tag_prevrangesresultslens tag_namessmy_tagssfilters tree_tagss selectNode(sselfseventsendsmy_tagssstartsresults tree_tags((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys prevNodeEvents!cCs~|io|i|iddƒn|i||iƒ}|i|ddƒ||_|io|o|id|ƒndS(sU mark node as selected the node is specified by the tree tag sbgswhitesgreens selectedNodeN(sselfs selectedNodes setNodeColorssubtree_from_tagstree_tagsdomssubtreesreport_function(sselfstree_tagssubtree((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys selectNode+s  cCst}|idjo†|iid|i|ifƒ}t d„|ƒ}t |ƒdjodG|GdGHn|i |dƒ|i|d|iƒ}n:|idjo%|itjod Sn|i}nd S|io|o|id |ƒnd Sd S( s= choose node: i.e. report to report function s4s@%d,%dcCs|d djS(Nisroot(st(st((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pysDsisnot good: found s to select!is2sbreaks chosenNodeN(sNonessubtreeseventstypesselfs textWidgets tag_namessxsysmy_tagssfilters tree_tagsslens selectNodessubtree_from_tagsdoms selectedNodesreport_function(sselfseventssubtreesmy_tagss tree_tags((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pyschooseNodeEvent<s"" cCs+|i||iƒ}d|i_|iiƒ}t |dt |ƒdd„|ƒ}|i tj o|i ii|jo|i|ƒnx9|D]1}|ii|d|dƒ|ii|ƒq”W|iid|d|dƒ}|ii|d|dƒ|ii|d|id|fƒd S( s8 collapses the tree under the given tag is-icCs|| |jS(N(ssslst(ssstsl((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys^ss.firsts.lastscollapsesexpandN(sselfssubtree_from_tagstagsdomssubtreesDisplayPropertiessexpandeds textWidgets tag_namessall_tagssfilterslenstags_to_deletes selectedNodesNones selectNodestsdeletes tag_deletes tag_nextranges symbol_indexsinserts expand_sign(sselfstags symbol_indexssubtreestags_to_deletestsall_tags((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys collapse_tagVs && cCs|i||iƒ}|ii|dƒ}|iit i |ƒ|ii d|d|dƒ}|ii d|d|dƒ}|ii |d|dƒ|ii|d|id|fƒ|ii|d|dƒ}|i||||it i dƒdS( s/ expand the tree under the tag s.lastsexpands.firstiiscollapseiÿÿÿÿN(sselfssubtree_from_tagstagsdomssubtrees textWidgetsindexs start_indexsmark_setsTkintersINSERTs tag_nextranges symbol_indexsdeletesinserts collapse_signsgets indentationscreateNodeEntriess indent_step(sselfstags symbol_indexssubtrees indentations start_index((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys expand_tagms  #  cCsX|}xG|idƒD]6}|djo |}qt|ƒ}|i|}qW|SdS(s- parse tag and traverse tree s-srootN(sdomssubtreestagssplitstokensintsindex_nrs childNodes(sselfstagsdomssubtreestokensindex_nr((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pyssubtree_from_tagƒs   (s__name__s __module__s__doc__snodeDisplayPropertiessNones__init__s isVisiblesnameNodes setNodeColorscreateNodeEntriesscollapseNodeEventsexpandNodeEventsselectNodeEvents nextNodeEvents prevNodeEvents selectNodeschooseNodeEvents collapse_tags expand_tagssubtree_from_tag(((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pysdom_structure_widget%s"  :   F        (sTkintersFramesdom_structure_widget(sdom_structure_widgetsTkinter((s;/mnt/gmirror/ports/math/py-gato/work/Gato/TextTreeWidget.pys?#s