Revision: 54915
          http://brlcad.svn.sourceforge.net/brlcad/?rev=54915&view=rev
Author:   bob1961
Date:     2013-03-27 15:17:28 +0000 (Wed, 27 Mar 2013)
Log Message:
-----------
Added a preference for the max number of members displayed in Archer's tree for 
a combination. This prevents the GUI from locking when some user wants a few 
hundred thousand members in a single group (ttk::treeview doesn't handle this 
well). Also warn the user when all members are not visible.

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

Modified: brlcad/trunk/src/tclscripts/archer/Archer.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/archer/Archer.tcl       2013-03-27 15:06:37 UTC 
(rev 54914)
+++ brlcad/trunk/src/tclscripts/archer/Archer.tcl       2013-03-27 15:17:28 UTC 
(rev 54915)
@@ -1649,6 +1649,7 @@
     set mTarget $_target
     set mDbType "BRL-CAD"
     set mCopyObj ""
+    set mCombWarningList ""
 
     if {![catch {$mTarget ls}]} {
        set mDbShared 1
@@ -2947,6 +2948,19 @@
            -validatecommand {::cadwidgets::Ged::validateDigit %P}
     } {}
 
+    itk_component add maxcombmembL {
+       ::ttk::label $itk_component(generalF).maxcombmembL \
+           -anchor e \
+           -text "Max Comb Members Shown"
+    } {}
+    itk_component add maxcombmembE {
+       ::ttk::entry $itk_component(generalF).maxcombmembE \
+           -width 12 \
+           -textvariable [::itcl::scope mMaxCombMembersShownPref] \
+           -validate key \
+           -validatecommand {::cadwidgets::Ged::validateDigit %P}
+    } {}
+
     itk_component add affectedTreeNodesModeCB {
        ::ttk::checkbutton $itk_component(generalF).affectedTreeNodesModeCB \
            -text "Highlight Affected Tree/List Nodes" \
@@ -3023,9 +3037,11 @@
     grid $itk_component(rayColorVoidF) -column 1 -row $i -sticky ew
 
     # Disable tree attributes indefinitely
-#    incr i
-#    grid $itk_component(treeAttrsL) -column 0 -row $i -sticky e
-#    grid $itk_component(treeAttrsE) -column 1 -row $i -sticky ew
+    if {0} {
+    incr i
+    grid $itk_component(treeAttrsL) -column 0 -row $i -sticky e
+    grid $itk_component(treeAttrsE) -column 1 -row $i -sticky ew
+    }
 
     incr i
     grid $itk_component(selGroupL) -column 0 -row $i -sticky e
@@ -3037,6 +3053,9 @@
     grid $itk_component(rtbotmintieL) -column 0 -row $i -sticky e
     grid $itk_component(rtbotmintieE) -column 1 -row $i -sticky ew
     incr i
+    grid $itk_component(maxcombmembL) -column 0 -row $i -sticky e
+    grid $itk_component(maxcombmembE) -column 1 -row $i -sticky ew
+    incr i
     set i [buildOtherGeneralPreferences $i]
     grid $itk_component(affectedTreeNodesModeCB) \
        -columnspan 2 \
@@ -8368,6 +8387,8 @@
     gedCmd configure -rayColorVoid $mRayColorVoid
 
     $itk_component(ged) fontsize $mDisplayFontSize
+
+    rebuildTree
 }
 
 
@@ -8443,6 +8464,12 @@
        set cflag 1
     }
 
+    if {$mMaxCombMembersShownPref != $mMaxCombMembersShown} {
+       set mMaxCombMembersShown $mMaxCombMembersShownPref
+       set mCombWarningList ""
+       set cflag 1
+    }
+
     if {$mEnableListViewAllAffected != $mEnableListViewAllAffectedPref} {
        set mEnableListViewAllAffected $mEnableListViewAllAffectedPref
        set tflag 1
@@ -8959,6 +8986,7 @@
     set mDbUnits [gedCmd units -s]
     set mRtBotMintiePref $mRtBotMintie
     set mCompSelectGroupPref $mCompSelectGroup
+    set mMaxCombMembersShownPref $mMaxCombMembersShown
 
     # Convert mCompSelectMode to a string for the preferences panel
     set mCompSelectModePref [lindex $COMP_SELECT_MODE_NAMES $mCompSelectMode]
@@ -9130,6 +9158,7 @@
     puts $_pfile "set mRtBotMintie $mRtBotMintie"
     puts $_pfile "set mCompSelectGroup $mCompSelectGroup"
     puts $_pfile "set mCompSelectMode $mCompSelectMode"
+    puts $_pfile "set mMaxCombMembersShown $mMaxCombMembersShown"
 
     puts $_pfile "set mGridAnchor \"$mGridAnchor\""
     puts $_pfile "set mGridColor \"$mGridColor\""

Modified: brlcad/trunk/src/tclscripts/archer/ArcherCore.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/archer/ArcherCore.tcl   2013-03-27 15:06:37 UTC 
(rev 54914)
+++ brlcad/trunk/src/tclscripts/archer/ArcherCore.tcl   2013-03-27 15:17:28 UTC 
(rev 54915)
@@ -463,6 +463,7 @@
 
        variable mMaxCombMembersShown 200
        variable mMaxCombMembersShownPref ""
+       variable mCombWarningList ""
 
        variable mZClipBack 100.0
        variable mZClipBackPref 100.0
@@ -856,7 +857,7 @@
        # db/display commands
        method getNodeChildren  {_node}
        method getTreeFromGData  {_gdata}
-       method getTreeMembers  {_comb}
+       method getTreeMembers  {_comb {_wflag 0}}
        method getTreeOp {_parent _child}
        method renderComp        {_node}
        method render             {_node _state _trans _updateTree {_wflag 1} 
{_node_id ""}}
@@ -3573,7 +3574,7 @@
 }
 
 
-::itcl::body ArcherCore::getTreeMembers {_comb} {
+::itcl::body ArcherCore::getTreeMembers {_comb {_wflag 0}} {
     if {![$itk_component(ged) exists $_comb]} {
        return ""
     }
@@ -3586,6 +3587,15 @@
        incr i
 
        if {$i >= $mMaxCombMembersShown} {
+           if {$_wflag} {
+               set j [lsearch $mCombWarningList $_comb]
+
+               if {$j == -1} {
+                   tk_messageBox -message "Warning: not all members of $_comb 
will be visible in the tree. See the \"Max Comb Members Shown\" preference."
+                   lappend mCombWarningList $_comb
+               }
+           }
+
            break
        }
     }
@@ -4633,7 +4643,7 @@
            switch -- $ctype {
                "comb" {
                    #set tree [getTreeFromGData $cgdata]
-                   foreach gctext [getTreeMembers $ctext] {
+                   foreach gctext [getTreeMembers $ctext 1] {
                        if {[catch {$itk_component(ged) get $gctext} gcgdata]} {
                            set op [getTreeOp $ctext $gctext]
                            set img [getTreeImage $gctext "invalid" $op]
@@ -5157,6 +5167,7 @@
     set mTarget $target
     set mDbType "BRL-CAD"
     set mCopyObj ""
+    set mCombWarningList ""
 
     if {![catch {$mTarget ls}]} {
        set mDbShared 1

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