Revision: 54884
          http://brlcad.svn.sourceforge.net/brlcad/?rev=54884&view=rev
Author:   bob1961
Date:     2013-03-26 17:36:58 +0000 (Tue, 26 Mar 2013)
Log Message:
-----------
ArcherCore::getTreeMembers is no longer recursive.

Modified Paths:
--------------
    brlcad/trunk/src/tclscripts/archer/ArcherCore.tcl

Modified: brlcad/trunk/src/tclscripts/archer/ArcherCore.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/archer/ArcherCore.tcl   2013-03-26 16:26:27 UTC 
(rev 54883)
+++ brlcad/trunk/src/tclscripts/archer/ArcherCore.tcl   2013-03-26 17:36:58 UTC 
(rev 54884)
@@ -461,6 +461,9 @@
        variable mPerspective 0
        variable mPerspectivePref 0
 
+       variable mMaxCombMembersShown 200
+       variable mMaxCombMembersShownPref ""
+
        variable mZClipBack 100.0
        variable mZClipBackPref 100.0
        variable mZClipFront 100.0
@@ -853,7 +856,7 @@
        # db/display commands
        method getNodeChildren  {_node}
        method getTreeFromGData  {_gdata}
-       method getTreeMembers  {_tlist {_mlist {}}}
+       method getTreeMembers  {_comb}
        method getTreeOp {_parent _child}
        method renderComp        {_node}
        method render             {_node _state _trans _updateTree {_wflag 1} 
{_node_id ""}}
@@ -2379,8 +2382,7 @@
            return
        }
 
-       set tree [getTreeFromGData $pgdata]
-       set mlist [getTreeMembers $tree]
+       set mlist [getTreeMembers $ptext]
 
        # Reconcile clists (i.e. the tree's view)
        # with mlist (i.e. the database's view).
@@ -2469,8 +2471,7 @@
                                }
 
                            } else {
-                               set ctree [getTreeFromGData $cgdata]
-                               set cmlist [getTreeMembers $ctree]
+                               set cmlist [getTreeMembers $ctext]
                                if {$cmlist != ""} {
                                    removeTreeNodeTag $cnode $TREE_OPENED_TAG
                                    $itk_component(newtree) item $cnode -open 
false
@@ -2500,8 +2501,7 @@
        set ptype [lindex $pgdata 0]
 
        if {$ptype == "comb"} {
-           set tree [getTreeFromGData $pgdata]
-           set mlist [getTreeMembers $tree]
+           set mlist [getTreeMembers $ptext]
            if {$mlist != ""} {
                removeTreeNodeTag $_pnode $TREE_OPENED_TAG
                $itk_component(newtree) item $_pnode -open false
@@ -3091,9 +3091,8 @@
     if {[llength $add_list] > 0} {
        eval group $mCompSelectGroup $add_list
 
-       set tree [$itk_component(ged) get $mCompSelectGroup tree]
-       if {[llength $tree] > 0} {
-           set tlist [getTreeMembers $tree]
+       set tlist [getTreeMembers $mCompSelectGroup]
+       if {[llength $tlist] > 0} {
            putString "$mCompSelectGroup now contains:"
            putString "\t$tlist"
        }
@@ -3114,9 +3113,10 @@
            return ""
        }
 
-       set tree [$itk_component(ged) get $mCompSelectGroup tree]
-       if {[llength $tree] > 0} {
-           set mCompSelectGroupList [getTreeMembers $tree]
+       #set tree [$itk_component(ged) get $mCompSelectGroup tree]
+       set tlist [getTreeMembers $mCompSelectGroup]
+       if {[llength $tlist] > 0} {
+           set mCompSelectGroupList $tlist
        }
     }
 
@@ -3146,9 +3146,8 @@
     if {[llength $rem_list] > 0} {
        eval rm $mCompSelectGroup $rem_list
 
-       set tree [$itk_component(ged) get $mCompSelectGroup tree]
-       if {[llength $tree] > 0} {
-           set tlist [getTreeMembers $tree]
+       set tlist [getTreeMembers $mCompSelectGroup]
+       if {[llength $tlist] > 0} {
            putString "$mCompSelectGroup now contains:"
            putString "\t$tlist"
        } else {
@@ -3555,11 +3554,12 @@
        return {}
     }
 
-    if {[catch {gedCmd get $node tree} tlist]} {
+
+    if {[catch {getTreeMembers $node} tlist]} {
        return {}
     }
 
-    return [getTreeMembers $tlist]
+    return $tlist
 }
 
 ::itcl::body ArcherCore::getTreeFromGData {_gdata} {
@@ -3572,22 +3572,25 @@
     return {}
 }
 
-::itcl::body ArcherCore::getTreeMembers {_tlist {_mlist {}}} {
-    set len [llength $_tlist]
-    set op [lindex $_tlist 0]
-    if {$op == "l"} {
-       set name [lindex $_tlist 1]
-       lappend _mlist $name
-       return $_mlist
+
+::itcl::body ArcherCore::getTreeMembers {_comb} {
+    if {![$itk_component(ged) exists $_comb]} {
+       return ""
     }
 
-    if {$len == 3} {
-       set _mlist [getTreeMembers [lindex $_tlist 1] $_mlist]
-       set _mlist [getTreeMembers [lindex $_tlist 2] $_mlist]
-       return $_mlist
+    set i 0
+
+    set tlist {}
+    foreach item [regsub -all {/R} [lrange [split [$itk_component(ged) tree -d 
1 $_comb] "\n"] 1 end-1] ""] {
+       lappend tlist [lindex $item 1]
+       incr i
+
+       if {$i >= $mMaxCombMembersShown} {
+           break
+       }
     }
 
-    return $_mlist
+    return $tlist
 }
 
 
@@ -4092,8 +4095,7 @@
        set mlist ""
        switch -- $ctype {
            "comb" {
-               set tree [getTreeFromGData $cgdata]
-               set mlist [getTreeMembers $tree]
+               set mlist [getTreeMembers $_ctext]
            }
            "dsp" -
            "ebm" -
@@ -4630,8 +4632,8 @@
 
            switch -- $ctype {
                "comb" {
-                   set tree [getTreeFromGData $cgdata]
-                   foreach gctext [getTreeMembers $tree] {
+                   #set tree [getTreeFromGData $cgdata]
+                   foreach gctext [getTreeMembers $ctext] {
                        if {[catch {$itk_component(ged) get $gctext} gcgdata]} {
                            set op [getTreeOp $ctext $gctext]
                            set img [getTreeImage $gctext "invalid" $op]

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Own the Future-Intel® Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest.
Compete for recognition, cash, and the chance to get your game 
on Steam. $5K grand prize plus 10 genre and skill prizes. 
Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to