Revision: 54109
          http://brlcad.svn.sourceforge.net/brlcad/?rev=54109&view=rev
Author:   bob1961
Date:     2012-12-21 18:55:54 +0000 (Fri, 21 Dec 2012)
Log Message:
-----------
Added the ability to toggle between detailed sketch edit mode and general 
sketch edit mode (Archer).

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

Modified: brlcad/trunk/src/tclscripts/archer/SketchEditFrame.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/archer/SketchEditFrame.tcl      2012-12-21 
13:22:15 UTC (rev 54108)
+++ brlcad/trunk/src/tclscripts/archer/SketchEditFrame.tcl      2012-12-21 
18:55:54 UTC (rev 54109)
@@ -80,13 +80,24 @@
     }
 
     protected {
-       variable segments {}
-       variable V
-       variable A
-       variable B
-       variable VL {}
-       variable SL {}
+       variable mSegments {}
+       variable mV
+       variable mA
+       variable mB
+       variable mVL {}
+       variable mSL {}
 
+       variable mVx ""
+       variable mVy ""
+       variable mVz ""
+       variable mAx ""
+       variable mAy ""
+       variable mAz ""
+       variable mBx ""
+       variable mBy ""
+       variable mBz ""
+
+       variable mDetailMode 0
        variable mPickTol 11
        variable mLastIndex -1
        variable mEscapeCreate 1
@@ -142,6 +153,7 @@
        method handleDetailPopup {_index _X _Y}
        method handleEnter {_row _col}
        method highlightCurrentSketchElements {}
+       method initCanvas {_gdata}
        method initPointHighlight {}
        method initSketchData {_gdata}
        method loadTables {_gdata}
@@ -174,6 +186,7 @@
        method pick_vertex {_mx _my {_tag ""}}
        method seg_delete {_sx _sy _vflag}
        method seg_pick_highlight {_sx _sy}
+       method set_canvas {}
        method setup_move_arbitrary {}
        method setup_move_segment {}
        method setup_move_selected {}
@@ -237,7 +250,7 @@
     set myscale [expr {$myscale * $_sf}]
     $itk_component(canvas) scale all 0 0 $_sf $_sf
     drawSegments
-    $itk_component(canvas) configure -scrollregion [$itk_component(canvas) 
bbox all]
+#    $itk_component(canvas) configure -scrollregion [$itk_component(canvas) 
bbox all]
 }
 
 
@@ -252,7 +265,7 @@
 
 
 ::itcl::body SketchEditFrame::get_vlist {} {
-    return $VL
+    return $mVL
 }
 
 
@@ -309,91 +322,35 @@
        return
     }
 
-    $::ArcherCore::application setCanvas $itk_component(canvas)
-    set segments {}
-    set VL {}
-    set SL {}
-    set needs_saving 0
-    $itk_component(canvas) delete all
-    initSketchData $_gdata
-    createSegments
-    drawSegments
-    clear_canvas_bindings
-    set mEscapeCreate 1
-    set mEditMode 0
-    set mPrevEditMode 0
-    set mLastIndex -1
+    set_canvas
 
-    update idletasks
-    set canv_height [winfo height $itk_component(canvas)]
-    set canv_width [winfo width $itk_component(canvas)]
-    set min_max [$itk_component(canvas) bbox all]
-    set tmp_scale1 [expr double($canv_width) / ([lindex $min_max 2] - [lindex 
$min_max 0] + 2.0 * $vert_radius)]
-    if { $tmp_scale1 < 0.0 } {set tmp_scale1 [expr -$tmp_scale1] }
-    set tmp_scale2 [expr double($canv_height) / ([lindex $min_max 3] - [lindex 
$min_max 1] + 2.0 * $vert_radius)]
-    if { $tmp_scale2 < 0.0 } {set tmp_scale2 [expr -$tmp_scale2] }
-    if { $tmp_scale1 < $tmp_scale2 } {
-       do_scale $tmp_scale1
-    } else {
-       do_scale $tmp_scale2
-    }
+    set V [bu_get_value_by_keyword V $_gdata]
+    set mVx [lindex $V 0]
+    set mVy [lindex $V 1]
+    set mVz [lindex $V 2]
+    set A [bu_get_value_by_keyword A $_gdata]
+    set mAx [lindex $A 0]
+    set mAy [lindex $A 1]
+    set mAz [lindex $A 2]
+    set B [bu_get_value_by_keyword B $_gdata]
+    set mBx [lindex $B 0]
+    set mBy [lindex $B 1]
+    set mBz [lindex $B 2]
 }
 
 
 ::itcl::body SketchEditFrame::updateGeometry {} {
-    # Not ready
-    return
-
     if {$itk_option(-mged) == "" ||
        $itk_option(-geometryObject) == ""} {
        return
     }
 
-    set pipe_spec {}
-    set pt {}
+    $itk_option(-mged) adjust $itk_option(-geometryObject) \
+       V [list $mVx $mVy $mVz] \
+       A [list $mAx $mAy $mAz] \
+       B [list $mBx $mBy $mBz]
 
-    foreach aname [lsort [array names mVertDetail]] {
-       set alist [split $aname ","]
-       if {[llength $alist] != 2} {
-           continue
-       }
-
-       set row [lindex $alist 0]
-       if {$row == 0} {
-           continue
-       }
-
-       set index [expr {$row - 1}]
-       set col [lindex $alist 1]
-       if {$col == 0} {
-           continue
-       }
-
-       switch -- $col \
-           $OD_COL {
-               lappend pipe_spec O$index $mVertDetail($row,$col)
-           } \
-           $ID_COL {
-               lappend pipe_spec I$index $mVertDetail($row,$col)
-           } \
-           $RADIUS_COL {
-               lappend pipe_spec R$index $mVertDetail($row,$col)
-           } \
-           $PX_COL - \
-           $PY_COL {
-               lappend pt $mVertDetail($row,$col)
-           } \
-           $PZ_COL {
-               lappend pt $mVertDetail($row,$col)
-               lappend pipe_spec V$index $pt
-               set pt {}
-           } \
-           default {
-               $::ArcherCore::application putString "Encountered bad one - 
$mVertDetail($row,$col)"
-           }
-    }
-
-    eval $itk_option(-mged) adjust $itk_option(-geometryObject) $pipe_spec
+#    write_sketch_to_db
     GeometryEditFrame::updateGeometry
 }
 
@@ -466,6 +423,104 @@
            -anchor w
     } {}
 
+    itk_component add sketchDMode {
+       ::ttk::checkbutton $parent.sketchdmode \
+           -command [::itcl::code $this set_canvas] \
+           -text "Detail" \
+           -variable [::itcl::scope mDetailMode]
+    } {}
+
+    # Create header labels
+    itk_component add sketchXL {
+       ::ttk::label $parent.sketchXL \
+           -text "X"
+    } {}
+    itk_component add sketchYL {
+       ::ttk::label $parent.sketchYL \
+           -text "Y"
+    } {}
+    itk_component add sketchZL {
+       ::ttk::label $parent.sketchZL \
+           -text "Z"
+    } {}
+
+    # create widgets for vertices
+    itk_component add sketchVL {
+       ::ttk::label $parent.sketchVL \
+           -text "V:" \
+           -anchor e
+    } {}
+    itk_component add sketchVxE {
+       ::ttk::entry $parent.sketchVxE \
+           -textvariable [::itcl::scope mVx] \
+           -validate key \
+           -validatecommand {::cadwidgets::Ged::validateDouble %P}
+    } {}
+    itk_component add sketchVyE {
+       ::ttk::entry $parent.sketchVyE \
+           -textvariable [::itcl::scope mVy] \
+           -validate key \
+           -validatecommand {::cadwidgets::Ged::validateDouble %P}
+    } {}
+    itk_component add sketchVzE {
+       ::ttk::entry $parent.sketchVzE \
+           -textvariable [::itcl::scope mVz] \
+           -validate key \
+           -validatecommand {::cadwidgets::Ged::validateDouble %P}
+    } {}
+    itk_component add sketchVUnitsL {
+       ::ttk::label $parent.sketchVUnitsL \
+           -textvariable [::itcl::scope itk_option(-units)] \
+           -anchor e
+    } {}
+
+    itk_component add sketchAL {
+       ::ttk::label $parent.sketchAL \
+           -text "A:" \
+           -anchor e
+    } {}
+    itk_component add sketchAxE {
+       ::ttk::entry $parent.sketchAxE \
+           -textvariable [::itcl::scope mAx] \
+           -validate key \
+           -validatecommand {::cadwidgets::Ged::validateDouble %P}
+    } {}
+    itk_component add sketchAyE {
+       ::ttk::entry $parent.sketchAyE \
+           -textvariable [::itcl::scope mAy] \
+           -validate key \
+           -validatecommand {::cadwidgets::Ged::validateDouble %P}
+    } {}
+    itk_component add sketchAzE {
+       ::ttk::entry $parent.sketchAzE \
+           -textvariable [::itcl::scope mAz] \
+           -validate key \
+           -validatecommand {::cadwidgets::Ged::validateDouble %P}
+    } {}
+    itk_component add sketchBL {
+       ::ttk::label $parent.sketchBL \
+           -text "B:" \
+           -anchor e
+    } {}
+    itk_component add sketchBxE {
+       ::ttk::entry $parent.sketchBxE \
+           -textvariable [::itcl::scope mBx] \
+           -validate key \
+           -validatecommand {::cadwidgets::Ged::validateDouble %P}
+    } {}
+    itk_component add sketchByE {
+       ::ttk::entry $parent.sketchByE \
+           -textvariable [::itcl::scope mBy] \
+           -validate key \
+           -validatecommand {::cadwidgets::Ged::validateDouble %P}
+    } {}
+    itk_component add sketchBzE {
+       ::ttk::entry $parent.sketchBzE \
+           -textvariable [::itcl::scope mBz] \
+           -validate key \
+           -validatecommand {::cadwidgets::Ged::validateDouble %P}
+    } {}
+
     set row 0
     grid $itk_component(sketchType) \
        -row $row \
@@ -476,6 +531,54 @@
        -column 1 \
        -columnspan 3 \
        -sticky nsew
+    grid $itk_component(sketchDMode) \
+       -row $row \
+       -column 3 \
+       -columnspan 2 \
+       -sticky nse
+    incr row
+    grid x $itk_component(sketchXL) \
+       $itk_component(sketchYL) \
+       $itk_component(sketchZL) \
+       -row $row
+    incr row
+    grid $itk_component(sketchVL) \
+       $itk_component(sketchVxE) \
+       $itk_component(sketchVyE) \
+       $itk_component(sketchVzE) \
+       $itk_component(sketchVUnitsL) \
+       -row $row \
+       -sticky nsew
+    incr row
+    grid $itk_component(sketchAL) \
+       $itk_component(sketchAxE) \
+       $itk_component(sketchAyE) \
+       $itk_component(sketchAzE) \
+       -row $row \
+       -sticky nsew
+    incr row
+    grid $itk_component(sketchBL) \
+       $itk_component(sketchBxE) \
+       $itk_component(sketchByE) \
+       $itk_component(sketchBzE) \
+       -row $row \
+       -sticky nsew
+
+    grid columnconfigure $parent 1 -weight 1
+    grid columnconfigure $parent 2 -weight 1
+    grid columnconfigure $parent 3 -weight 1
+#    grid columnconfigure $parent 4 -weight 1
+
+    # Set up bindings
+    bind $itk_component(sketchVxE) <Return> [::itcl::code $this 
updateGeometryIfMod]
+    bind $itk_component(sketchVyE) <Return> [::itcl::code $this 
updateGeometryIfMod]
+    bind $itk_component(sketchVzE) <Return> [::itcl::code $this 
updateGeometryIfMod]
+    bind $itk_component(sketchAxE) <Return> [::itcl::code $this 
updateGeometryIfMod]
+    bind $itk_component(sketchAyE) <Return> [::itcl::code $this 
updateGeometryIfMod]
+    bind $itk_component(sketchAzE) <Return> [::itcl::code $this 
updateGeometryIfMod]
+    bind $itk_component(sketchBxE) <Return> [::itcl::code $this 
updateGeometryIfMod]
+    bind $itk_component(sketchByE) <Return> [::itcl::code $this 
updateGeometryIfMod]
+    bind $itk_component(sketchBzE) <Return> [::itcl::code $this 
updateGeometryIfMod]
 }
 
 
@@ -525,6 +628,56 @@
        $itk_option(-geometryObject) == ""} {
        return
     }
+
+    set gdata [$itk_option(-mged) get $itk_option(-geometryObject)]
+    set gdata [lrange $gdata 1 end]
+
+    set V [bu_get_value_by_keyword V $gdata]
+    set Vx [lindex $V 0]
+    set Vy [lindex $V 1]
+    set Vz [lindex $V 2]
+    set A [bu_get_value_by_keyword A $gdata]
+    set Ax [lindex $A 0]
+    set Ay [lindex $A 1]
+    set Az [lindex $A 2]
+    set B [bu_get_value_by_keyword B $gdata]
+    set Bx [lindex $B 0]
+    set By [lindex $B 1]
+    set Bz [lindex $B 2]
+
+    if {$mVx == ""  ||
+       $mVx == "-" ||
+       $mVy == ""  ||
+       $mVy == "-" ||
+       $mVz == ""  ||
+       $mVz == "-" ||
+       $mAx == ""  ||
+       $mAx == "-" ||
+       $mAy == ""  ||
+       $mAy == "-" ||
+       $mAz == ""  ||
+       $mAz == "-" ||
+       $mBx == ""  ||
+       $mBx == "-" ||
+       $mBy == ""  ||
+       $mBy == "-" ||
+       $mBz == ""  ||
+       $mBz == "-"} {
+       # Not valid
+       return
+    }
+
+    if {$Vx != $mVx ||
+       $Vy != $mVy ||
+       $Vz != $mVz ||
+       $Ax != $mAx ||
+       $Ay != $mAy ||
+       $Az != $mAz ||
+       $Bx != $mBx ||
+       $By != $mBy ||
+       $Bz != $mBz} {
+       updateGeometry
+    }
 }
 
 
@@ -565,12 +718,12 @@
 
 
 ::itcl::body SketchEditFrame::createSegments {} {
-    foreach seg $SL {
+    foreach seg $mSL {
        set type [lindex $seg 0]
        set seg [lrange $seg 1 end]
        switch $type {
            line {
-               lappend segments ::SketchEditFrame::[SketchLine \#auto $this 
$itk_component(canvas) $seg]
+               lappend mSegments ::SketchEditFrame::[SketchLine \#auto $this 
$itk_component(canvas) $seg]
            }
            carc {
                set index [lsearch -exact $seg R]
@@ -580,10 +733,10 @@
                    set tmp_radius [expr {$tolocal * $tmp_radius}]
                    set seg [lreplace $seg $index $index $tmp_radius]
                }
-               lappend segments ::SketchEditFrame::[SketchCArc \#auto $this 
$itk_component(canvas) $seg]
+               lappend mSegments ::SketchEditFrame::[SketchCArc \#auto $this 
$itk_component(canvas) $seg]
            }
            bezier {
-               lappend segments ::SketchEditFrame::[SketchBezier \#auto $this 
$itk_component(canvas) $seg]
+               lappend mSegments ::SketchEditFrame::[SketchBezier \#auto $this 
$itk_component(canvas) $seg]
            }
            default {
                $::ArcherCore::application putString "Curve segments of type 
'$type' are not yet handled"
@@ -606,7 +759,7 @@
     $itk_component(canvas) delete all
     drawVertices
     set first 1
-    foreach seg $segments {
+    foreach seg $mSegments {
        if { $first } {
            set first 0
            $seg draw first_seg
@@ -614,14 +767,14 @@
            $seg draw ""
        }
     }
-    $itk_component(canvas) configure -scrollregion [$itk_component(canvas) 
bbox all]
+#    $itk_component(canvas) configure -scrollregion [$itk_component(canvas) 
bbox all]
 }
 
 
 ::itcl::body SketchEditFrame::drawVertices {} {
     set index 0
     $itk_component(canvas) delete verts
-    foreach vert $VL {
+    foreach vert $mVL {
        set xc [lindex $vert 0]
        set yc [lindex $vert 1]
        set x1 [expr {$myscale * $xc - $vert_radius}]
@@ -688,6 +841,39 @@
 }
 
 
+::itcl::body SketchEditFrame::initCanvas {_gdata} {
+    $::ArcherCore::application setCanvas $itk_component(canvas)
+
+    set mSegments {}
+    set mVL {}
+    set mSL {}
+    set needs_saving 0
+    $itk_component(canvas) delete all
+    initSketchData $_gdata
+    createSegments
+    drawSegments
+    clear_canvas_bindings
+    set mEscapeCreate 1
+    set mEditMode 0
+    set mPrevEditMode 0
+    set mLastIndex -1
+
+    update idletasks
+    set canv_height [winfo height $itk_component(canvas)]
+    set canv_width [winfo width $itk_component(canvas)]
+    set min_max [$itk_component(canvas) bbox all]
+    set tmp_scale1 [expr double($canv_width) / ([lindex $min_max 2] - [lindex 
$min_max 0] + 2.0 * $vert_radius)]
+    if { $tmp_scale1 < 0.0 } {set tmp_scale1 [expr -$tmp_scale1] }
+    set tmp_scale2 [expr double($canv_height) / ([lindex $min_max 3] - [lindex 
$min_max 1] + 2.0 * $vert_radius)]
+    if { $tmp_scale2 < 0.0 } {set tmp_scale2 [expr -$tmp_scale2] }
+    if { $tmp_scale1 < $tmp_scale2 } {
+       do_scale $tmp_scale1
+    } else {
+       do_scale $tmp_scale2
+    }
+}
+
+
 ::itcl::body SketchEditFrame::initPointHighlight {} {
     if {$itk_option(-mged) == ""} {
        return
@@ -702,28 +888,28 @@
        switch $key {
            V {
                for { set index 0 } { $index < 3 } { incr index } {
-                   set V($index) [expr {$tolocal * [lindex $value $index]}]
+                   set mV($index) [expr {$tolocal * [lindex $value $index]}]
                }
            }
            A {
                for { set index 0 } { $index < 3 } { incr index } {
-                   set A($index) [expr {$tolocal * [lindex $value $index]}]
+                   set mA($index) [expr {$tolocal * [lindex $value $index]}]
                }
            }
            B {
                for { set index 0 } { $index < 3 } { incr index } {
-                   set B($index) [expr {$tolocal * [lindex $value $index]}]
+                   set mB($index) [expr {$tolocal * [lindex $value $index]}]
                }
            }
            VL {
                foreach vert $value {
                    set x [expr {$tolocal * [lindex $vert 0]}]
                    set y [expr {$tolocal * [lindex $vert 1]}]
-                   lappend VL "$x $y"
+                   lappend mVL "$x $y"
                }
            }
            SL {
-               set SL $value
+               set mSL $value
            }
        }
     }
@@ -834,7 +1020,7 @@
        }
        2 {
            # use radius entry widget
-           set vert [lindex $VL $index1]
+           set vert [lindex $mVL $index1]
            set ex [expr {[lindex $vert 0] + $radius}]
            set ey [lindex $vert 1]
        }
@@ -850,18 +1036,18 @@
     if {$_coord_type != 3} {
        if {$index1 == $index2} {
            # need to create a new vertex
-           set index1 [llength $VL]
-           lappend VL "$ex $ey"
+           set index1 [llength $mVL]
+           lappend mVL "$ex $ey"
            $_segment set_vars S $index1
        } else {
-           set VL [lreplace $VL $index1 $index1 "$ex $ey"]
+           set mVL [lreplace $mVL $index1 $index1 "$ex $ey"]
        }
     }
 
     $itk_component(canvas) delete ::SketchEditFrame::$_segment
     $_segment draw ""
     set radius [$_segment get_radius]
-    $itk_component(canvas) configure -scrollregion [$itk_component(canvas) 
bbox all]
+#    $itk_component(canvas) configure -scrollregion [$itk_component(canvas) 
bbox all]
     if {$_state} {
        $itk_component(canvas) configure -cursor crosshair
        create_circle
@@ -879,19 +1065,19 @@
 
        if {$index1 == $index2} {
            # need to create a new vertex
-           set index1 [llength $VL]
-           lappend VL "$ex $ey"
+           set index1 [llength $mVL]
+           lappend mVL "$ex $ey"
        }
     } else {
        if {$index != $index1} {
            # At this point index1 refers to the last vertex in VL. Remove it.
-           set VL [lreplace $VL end end]
+           set mVL [lreplace $mVL end end]
            set index1 $index
        } else {
            # Here we have to add a vertex
-           set vert [lindex $VL $index]
-           set index1 [llength $VL]
-           lappend VL $vert
+           set vert [lindex $mVL $index]
+           set index1 [llength $mVL]
+           lappend mVL $vert
        }
     }
 
@@ -918,8 +1104,8 @@
 
            if {$_state == 1} {
                # need to create a new vertex
-               set index2 [llength $VL]
-               lappend VL "$ex $ey"
+               set index2 [llength $mVL]
+               lappend mVL "$ex $ey"
            }
        }
        2 {
@@ -932,12 +1118,12 @@
     }
 
     if {$_coord_type != 2} {
-       set VL [lreplace $VL $index2 $index2 "$ex $ey"]
+       set mVL [lreplace $mVL $index2 $index2 "$ex $ey"]
     }
 
     $itk_component(canvas) delete ::SketchEditFrame::$_segment
     $_segment draw ""
-    $itk_component(canvas) configure -scrollregion [$itk_component(canvas) 
bbox all]
+#    $itk_component(canvas) configure -scrollregion [$itk_component(canvas) 
bbox all]
 
     if {$_state == 2} {
        $itk_component(canvas) configure -cursor crosshair
@@ -962,12 +1148,12 @@
        if {$index1 != $index2} {
            if {!$mIgnoreMotion} {
                # Update the vertex
-               set VL [lreplace $VL $index2 $index2 "$ex $ey"]
+               set mVL [lreplace $mVL $index2 $index2 "$ex $ey"]
            }
        } else {
            # Add a vertex
-           set index2 [llength $VL]
-           lappend VL "$ex $ey"
+           set index2 [llength $mVL]
+           lappend mVL "$ex $ey"
        }
     } else {
        if {$index != $index2} {
@@ -977,10 +1163,10 @@
 
            # If not a button press
            if {$_state != 1} {
-               set lastv [expr {[llength $VL] - 1}]
+               set lastv [expr {[llength $mVL] - 1}]
 
                if {$lastv == $prevIndex2} {
-                   set VL [lreplace $VL end end]
+                   set mVL [lreplace $mVL end end]
                }
            }
        }
@@ -1030,7 +1216,7 @@
            }
        }
 
-       set VL [lreplace $VL $curr_vertex $curr_vertex]
+       set mVL [lreplace $mVL $curr_vertex $curr_vertex]
        fix_vertex_references $curr_vertex
 
        set mEscapeCreate 1
@@ -1048,7 +1234,7 @@
        set new_coords [$itk_component(canvas) coords $id]
        set new_x [expr ([lindex $new_coords 0] + [lindex $new_coords 2])/(2.0 
* $myscale)]
        set new_y [expr -([lindex $new_coords 1] + [lindex $new_coords 3])/(2.0 
* $myscale)]
-       set VL [lreplace $VL $index $index [concat $new_x $new_y]]
+       set mVL [lreplace $mVL $index $index [concat $new_x $new_y]]
     }
     redrawSegments
     if {$_state == 0} {
@@ -1161,8 +1347,8 @@
 
     set svlist {}
     foreach item $slist {
-       set index [lsearch $segments $item]
-       set segments [lreplace $segments $index $index]
+       set index [lsearch $mSegments $item]
+       set mSegments lreplace $mSegments $index $index]
        $itk_component(canvas) delete $item
 
        eval lappend svlist [$item get_verts]
@@ -1175,7 +1361,7 @@
     set unused_vindices {}
     foreach vindex $alist {
        if {[vert_is_used $vindex] == {}} {
-           set VL [lreplace $VL $vindex $vindex]
+           set mVL [lreplace $mVL $vindex $vindex]
            lappend unused_vindices $vindex
        }
     }
@@ -1191,8 +1377,8 @@
        set ex [expr {[$itk_component(canvas) canvasx $_mx] / $myscale}]
        set ey [expr {-[$itk_component(canvas) canvasy $_my] / $myscale}]
 
-       set index [llength $VL]
-       lappend VL "$ex $ey"
+       set index [llength $mVL]
+       lappend mVL "$ex $ey"
        drawVertices
     }
 
@@ -1200,15 +1386,15 @@
     set mLastIndex $index2
 
     # calculate an initial radius
-    set s [lindex $VL $index1]
+    set s [lindex $mVL $index1]
     set sx [lindex $s 0]
     set sy [lindex $s 1]
-    set e [lindex $VL $index2]
+    set e [lindex $mVL $index2]
     set ex [lindex $e 0]
     set ey [lindex $e 1]
     set radius [::dist $sx $sy $ex $ey]
     set new_seg [SketchCArc \#auto $this $itk_component(canvas) "S $index1 E 
$index2 R $radius L 0 O 1"]
-    lappend segments ::SketchEditFrame::$new_seg
+    lappend mSegments ::SketchEditFrame::$new_seg
     set needs_saving 1
     drawSegments
 
@@ -1229,13 +1415,13 @@
     if {$bi_len < 2} {
        return
     } elseif {$bi_len == 2 && [lindex $bezier_indices 0] == [lindex 
$bezier_indices 1]} {
-       set index [lsearch $segments ::SketchEditFrame::$_segment]
-       set segments [lreplace $segments $index $index]
+       set index [lsearch $mSegments ::SketchEditFrame::$_segment]
+       set mSegments [lreplace $mSegments $index $index]
        $itk_component(canvas) delete ::SketchEditFrame::$_segment
 
        set vindex [lindex $bezier_indices 0]
        if {[vert_is_used $vindex] == {}} {
-           set VL [lreplace $VL $vindex $vindex]
+           set mVL [lreplace $mVL $vindex $vindex]
            drawVertices
        }
 
@@ -1263,10 +1449,10 @@
     set cx 0.0
     set cy 0.0
 
-    set s_list [lindex $VL $index1]
+    set s_list [lindex $mVL $index1]
     set s(0) [lindex $s_list 0]
     set s(1) [lindex $s_list 1]
-    set e_list [lindex $VL $index2]
+    set e_list [lindex $mVL $index2]
     set e(0) [lindex $e_list 0]
     set e(1) [lindex $e_list 1]
     if {[circle_3pt $s(0) $s(1) $sx $sy $e(0) $e(1) cx cy]} {
@@ -1308,7 +1494,7 @@
 
 
 ::itcl::body SketchEditFrame::fix_vertex_references {_unused_vindices} {
-    foreach seg $segments {
+    foreach seg $mSegments {
        $seg fix_vertex_reference $_unused_vindices
     }
     drawVertices
@@ -1404,8 +1590,8 @@
            set bezier_indices [lindex $bezier_indices 0]
            set needs_saving 1
        }
-       lappend bezier_indices [llength $VL]
-       lappend VL "$sx $sy"
+       lappend bezier_indices [llength $mVL]
+       lappend mVL "$sx $sy"
        drawVertices
     }
 
@@ -1481,15 +1667,15 @@
     set item [pick_segment $_mx $_my]
     if {$item == -1} return
 
-    set index [lsearch $segments $item]
-    set segments [lreplace $segments $index $index]
+    set index [lsearch $mSegments $item]
+    set mSegments [lreplace $mSegments $index $index]
     $itk_component(canvas) delete $item
 
     if {$_vflag} {
        set unused_vindices {}
        foreach vindex [lsort -integer -decreasing [$item get_verts]] {
            if {[vert_is_used $vindex] == {}} {
-               set VL [lreplace $VL $vindex $vindex]
+               set mVL [lreplace $mVL $vindex $vindex]
                lappend unused_vindices $vindex
            }
        }
@@ -1524,6 +1710,29 @@
 }
 
 
+::itcl::body SketchEditFrame::set_canvas {} {
+    if {$mDetailMode} {
+       set gdata [lrange [$itk_option(-mged) get $itk_option(-geometryObject)] 
1 end]
+       initCanvas $gdata
+
+       set i 1
+       foreach label $mEditLabels {
+           $itk_component(editRB$i) configure -state normal
+           incr i
+       }
+    } else {
+       $::ArcherCore::application restoreCanvas
+
+       set i 1
+       set mEditMode 0
+       foreach label $mEditLabels {
+           $itk_component(editRB$i) configure -state disabled
+           incr i
+       }
+    }
+}
+
+
 ::itcl::body SketchEditFrame::setup_move_arbitrary {} {
     set mEditMode $moveArbitrary
     $itk_component(canvas) configure -cursor crosshair
@@ -1568,10 +1777,10 @@
     set sy [expr {-[$itk_component(canvas) canvasy $_my] / $myscale}]
     set cx 0.0
     set cy 0.0
-    set s_list [lindex $VL $index1]
+    set s_list [lindex $mVL $index1]
     set s(0) [lindex $s_list 0]
     set s(1) [lindex $s_list 1]
-    set e_list [lindex $VL $index2]
+    set e_list [lindex $mVL $index2]
     set e(0) [lindex $e_list 0]
     set e(1) [lindex $e_list 1]
     if {[circle_3pt $s(0) $s(1) $sx $sy $e(0) $e(1) cx cy]} {
@@ -1627,8 +1836,8 @@
            set sx [expr {[$itk_component(canvas) canvasx $_mx] / $myscale}]
            set sy [expr {-[$itk_component(canvas) canvasy $_my] / $myscale}]
 
-           set index1 [llength $VL]
-           lappend VL "$sx $sy"
+           set index1 [llength $mVL]
+           lappend mVL "$sx $sy"
            drawVertices
        }
     }
@@ -1657,19 +1866,19 @@
 
 
        if {$mLastIndex != -1} {
-           set bezier_indices [list $mLastIndex [llength $VL]]
+           set bezier_indices [list $mLastIndex [llength $mVL]]
        } else {
-           set bezier_indices [llength $VL]
+           set bezier_indices [llength $mVL]
            lappend bezier_indices $bezier_indices
        }
 
-       lappend VL "$sx $sy"
+       lappend mVL "$sx $sy"
        drawVertices
     }
 
     set curr_seg [SketchBezier \#auto $this $itk_component(canvas) \
                     "D [expr [llength $bezier_indices] - 1] P [list 
$bezier_indices]"]
-    lappend segments ::SketchEditFrame::$curr_seg
+    lappend mSegments ::SketchEditFrame::$curr_seg
     $curr_seg draw ""
 
     # setup to pick next bezier point
@@ -1696,15 +1905,15 @@
            set sy $y_coord
        }
 
-       set index1 [llength $VL]
-       lappend VL "$sx $sy"
+       set index1 [llength $mVL]
+       lappend mVL "$sx $sy"
     }
 
     set index2 $index1
 
     set radius 0.0
     set new_seg [SketchCArc \#auto $this $itk_component(canvas) "S $index1 E 
$index2 R -1 L 0 O 0"]
-    lappend segments ::SketchEditFrame::$new_seg
+    lappend mSegments ::SketchEditFrame::$new_seg
     set needs_saving 1
     continue_circle $new_seg 0 3 $_mx $_my
     drawSegments
@@ -1742,8 +1951,8 @@
            set sx [expr {[$itk_component(canvas) canvasx $_mx] / $myscale}]
            set sy [expr {-[$itk_component(canvas) canvasy $_my] / $myscale}]
 
-           set index1 [llength $VL]
-           lappend VL "$sx $sy"
+           set index1 [llength $mVL]
+           lappend mVL "$sx $sy"
        }
 
        set index2 $index1
@@ -1755,7 +1964,7 @@
 ::itcl::body SketchEditFrame::start_line_guts {{_mx ""} {_my ""}} {
     $itk_component(canvas) configure -cursor crosshair
     set new_seg [SketchLine \#auto $this $itk_component(canvas) "S $index1 E 
$index2"]
-    lappend segments ::SketchEditFrame::$new_seg
+    lappend mSegments ::SketchEditFrame::$new_seg
     set needs_saving 1
     drawSegments
     clear_canvas_bindings
@@ -1930,7 +2139,7 @@
        $itk_component(canvas) dtag p$index selected
        $itk_component(canvas) itemconfigure p$index -outline black -fill black
     } else {
-       set VL [lreplace $VL $index $index]
+       set mVL [lreplace $mVL $index $index]
        fix_vertex_references $index
        write_sketch_to_db
     }
@@ -1939,7 +2148,7 @@
 
 ::itcl::body SketchEditFrame::vert_is_used {_vindex} {
     set slist {}
-    foreach seg $segments {
+    foreach seg $mSegments {
        if {[$seg is_vertex_used $_vindex]} {
            #$seg describe
            lappend slist $seg
@@ -1968,14 +2177,14 @@
 
 
 ::itcl::body SketchEditFrame::write_sketch_to_db {} {
-    set out "V { [expr {$tobase * $V(0)}] [expr {$tobase * $V(1)}] [expr 
{$tobase * $V(2)}] }"
-    append out " A { [expr {$tobase * $A(0)}] [expr {$tobase * $A(1)}] [expr 
{$tobase * $A(2)}] }"
-    append out " B { [expr {$tobase * $B(0)}] [expr {$tobase * $B(1)}] [expr 
{$tobase * $B(2)}] } VL {"
-    foreach vert $VL {
+    set out "V { [expr {$tobase * $mV(0)}] [expr {$tobase * $mV(1)}] [expr 
{$tobase * $mV(2)}] }"
+    append out " A { [expr {$tobase * $mA(0)}] [expr {$tobase * $mA(1)}] [expr 
{$tobase * $mA(2)}] }"
+    append out " B { [expr {$tobase * $mB(0)}] [expr {$tobase * $mB(1)}] [expr 
{$tobase * $mB(2)}] } VL {"
+    foreach vert $mVL {
        append out " { [expr {$tobase * [lindex $vert 0]}] [expr {$tobase * 
[lindex $vert 1]}] }"
     }
     append out " } SL {"
-    foreach seg $segments {
+    foreach seg $mSegments {
        append out " [$seg serialize $tobase] "
     }
     append out " }"
@@ -2331,10 +2540,10 @@
        }
 
        # calculate some segments
-       set segments [expr $count * 4]
+       set mSegments [expr $count * 4]
        set points ""
-       for { set i 0 } { $i < $segments } { incr i } {
-           set t [expr {1.0 - [expr [expr $segments - $i - 1.0] / [expr 
$segments - 1.0]]}]
+       for { set i 0 } { $i < $mSegments}  { incr i } {
+           set t [expr {1.0 - [expr [expr $mSegments - $i - 1.0] / [expr 
$mSegments - 1.0]]}]
            lappend points [calc_bezier $count $coords $t]
        }
        set points [join $points]

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


------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to