Revision: 40234 http://brlcad.svn.sourceforge.net/brlcad/?rev=40234&view=rev Author: bob1961 Date: 2010-08-19 14:25:34 +0000 (Thu, 19 Aug 2010)
Log Message: ----------- Follow-on mods for updating the tree view after creating new combinations and changing membership of existing combinations. Modified Paths: -------------- brlcad/trunk/src/tclscripts/archer/Archer.tcl Modified: brlcad/trunk/src/tclscripts/archer/Archer.tcl =================================================================== --- brlcad/trunk/src/tclscripts/archer/Archer.tcl 2010-08-19 14:16:56 UTC (rev 40233) +++ brlcad/trunk/src/tclscripts/archer/Archer.tcl 2010-08-19 14:25:34 UTC (rev 40234) @@ -265,7 +265,8 @@ # ArcherCore Override Section method buildCommandView {} method dblClick {_tags} - method addCombMemberWrapper {_cmd args} + method addCombMemberWrapper {_cmd _cflag args} + method createCombWrapper {_cmd args} method removeCombMemberWrapper {_cmd args} method combWrapper {_cmd _minArgs args} method createWrapper {_cmd args} @@ -1020,7 +1021,8 @@ # Create a combination. # ::itcl::body Archer::c {args} { - eval combWrapper c 2 $args +# eval combWrapper c 2 $args + putString "Momentarily disabled. Fix me!" } ::itcl::body Archer::clone {args} { @@ -1986,9 +1988,7 @@ } } -::itcl::body Archer::addCombMemberWrapper {_cmd args} { - SetWaitCursor $this - +::itcl::body Archer::addCombMemberWrapper {_cmd _cflag args} { # Returns a help message. set alen [llength $args] if {$alen == 0} { @@ -2018,7 +2018,7 @@ } } - + SetWaitCursor $this checkpoint $cname $LEDGER_MODIFY if {[catch {eval gedCmd $_cmd $args} ret]} { @@ -2029,44 +2029,31 @@ # Delete any toplevel nodes of newly added members foreach member $mlist { if {[info exists mText2Node($member)]} { - set leftovers {} - set leftovers2 {} foreach sublist $mText2Node($member) { set pnode [lindex $sublist 1] if {$pnode == {}} { set cnode [lindex $sublist 0] + + # Before deleting cnode we need to delete any + # use of cnode and its descendents in the data + # variables that are used to interact with the + # tree viewer. + purgeNodeData $cnode + $itk_component(newtree) delete $cnode - unset mNode2Text($cnode) - unset mCNode2PList($cnode) - - if {[info exists mPNode2CList()]} { - foreach csublist $mPNode2CList() { - if {$cnode != [lindex $csublist 1]} { - lappend leftovers2 $csublist - } - } - } - } else { - lappend leftovers $sublist } } - - if {$leftovers == {}} { - unset mText2Node($member) - } else { - set mText2Node($member) $leftovers - } - - if {$leftovers2 == {}} { - unset mPNode2CList() - } else { - set mPNode2CList() $leftovers2 - } } } + if {$_cflag} { + SetNormalCursor $this + return + } + # Add new members to parent node(s) if the parent nodes have been previously opened. + set cnode "" if {[info exists mText2Node($cname)]} { foreach sublist $mText2Node($cname) { set cnode [lindex $sublist 0] @@ -2080,14 +2067,41 @@ } object_update $cname -# selectTreePath $cname + if {$cnode != ""} { + set path "" + foreach pnode [lreverse [findTreeParentNodes $cnode]] { + append path "/" $mNode2Text($pnode) + } + + if {$path != ""} { + append path "/" + } + + append path $cname + selectTreePath $path + } + SetNormalCursor $this } -::itcl::body Archer::removeCombMemberWrapper {_cmd args} { +::itcl::body Archer::createCombWrapper {_cmd args} { + eval addCombMemberWrapper $_cmd 1 $args + SetWaitCursor $this + set cname [lindex $args 0] + fillTree {} $cname $mEnableListView + $itk_component(ged) draw $cname + selectTreePath $cname + checkpoint $cname $LEDGER_CREATE + set mNeedSave 1 + updateSaveMode + + SetNormalCursor $this +} + +::itcl::body Archer::removeCombMemberWrapper {_cmd args} { # Returns a help message. set alen [llength $args] if {$alen == 0} { @@ -2109,6 +2123,7 @@ } } + SetWaitCursor $this checkpoint $cname $LEDGER_MODIFY if {[catch {eval gedCmd $_cmd $args} ret]} { @@ -2117,12 +2132,13 @@ } # Delete members from parent nodes + set cnode "" if {[info exists mText2Node($cname)]} { foreach sublist $mText2Node($cname) { - set combnode [lindex $sublist 0] + set cnode [lindex $sublist 0] - if {[info exists mPNode2CList($combnode)]} { - foreach clist $mPNode2CList($combnode) { + if {[info exists mPNode2CList($cnode)]} { + foreach clist $mPNode2CList($cnode) { set mname [lindex $clist 0] if {$mname == $TREE_PLACEHOLDER_TAG} { @@ -2153,7 +2169,7 @@ selectTreePath $member } } elseif {$member == $mSelectedObj} { - selectTreePath [getTreePath $combnode] + selectTreePath [getTreePath $cnode] } } } @@ -2164,7 +2180,22 @@ } object_update $cname -# selectTreePath $cname + + if {$cnode != ""} { + set path "" + foreach pnode [lreverse [findTreeParentNodes $cnode]] { + append path "/" $mNode2Text($pnode) + } + + if {$path != ""} { + append path "/" + } + + append path $cname + selectTreePath $path + } + + updateTree SetNormalCursor $this } @@ -2182,11 +2213,10 @@ # Check for the existence of obj if {[catch {gedCmd attr show $obj} adata]} { # Create a new combination - eval createWrapper $_cmd $args + eval createCombWrapper $_cmd $args } else { # Modifying an existing combination - eval addCombMemberWrapper $_cmd $args -# eval gedWrapper $_cmd 0 0 1 2 $args + eval addCombMemberWrapper $_cmd 0 $args } } @@ -2257,19 +2287,6 @@ set clist [lindex $expandedArgs 0] } - "c" - - "comb" - - "g" - - "r" { - # Returns a help message. - if {[llength $args] < 2} { - return [gedCmd $_cmd] - } - - set options {} - set expandedArgs $args - set clist [lindex $expandedArgs 0] - } default { return "createWrapper: $_cmd not recognized." } @@ -2286,12 +2303,6 @@ set clist $ret } - # Checkpoint the created object -# checkpoint_olist $clist $LEDGER_CREATE -# refreshTree 1 -# -# updateUndoState - set name $clist fillTree {} $name $mEnableListView $itk_component(ged) draw $name This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ This SF.net email is sponsored by Make an app they can't live without Enter the BlackBerry Developer Challenge http://p.sf.net/sfu/RIM-dev2dev _______________________________________________ BRL-CAD Source Commits mailing list brlcad-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-commits