Revision: 76233
          http://sourceforge.net/p/brlcad/code/76233
Author:   starseeker
Date:     2020-06-27 15:12:31 +0000 (Sat, 27 Jun 2020)
Log Message:
-----------
Expose snapping to lines option in Archer menu, but still quite a bit to do to 
actually enable the feature...

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

Modified: brlcad/trunk/src/tclscripts/archer/Archer.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/archer/Archer.tcl       2020-06-27 06:57:31 UTC 
(rev 76232)
+++ brlcad/trunk/src/tclscripts/archer/Archer.tcl       2020-06-27 15:12:31 UTC 
(rev 76233)
@@ -5747,6 +5747,8 @@
                -helpstr "Toggle display of the grid."
            checkbutton sgrid -label "Snap Grid" \
                -helpstr "Toggle grid snapping."
+           checkbutton slines -label "Snap to Lines" \
+               -helpstr "Toggle line snapping."
            checkbutton adc -label "Angle/Distance Cursor" \
                -helpstr "Toggle display of the angle distance cursor."
        }
@@ -5883,6 +5885,12 @@
        -variable [::itcl::scope mSnapGrid] \
        -command [::itcl::code $this snapGrid] \
        -state disabled
+    $itk_component(menubar) menuconfigure .modes.slines \
+       -offvalue 0 \
+       -onvalue 1 \
+       -variable [::itcl::scope mSnapLines] \
+       -command [::itcl::code $this snapLines] \
+       -state disabled
     $itk_component(menubar) menuconfigure .modes.adc \
        -offvalue 0 \
        -onvalue 1 \
@@ -6190,6 +6198,13 @@
        -command [::itcl::code $this snapGrid] \
        -state disabled
     $itk_component(${_prefix}modesmenu) add checkbutton \
+       -label "Snap to Lines" \
+       -offvalue 0 \
+       -onvalue 1 \
+       -variable [::itcl::scope mSnapLines] \
+       -command [::itcl::code $this snapLines] \
+       -state disabled
+    $itk_component(${_prefix}modesmenu) add checkbutton \
        -label "Angle/Distance Cursor" \
        -offvalue 0 \
        -onvalue 1 \
@@ -6230,6 +6245,7 @@
                $itk_component(${prefix}modesmenu) entryconfigure "Lighting" 
-state normal
                $itk_component(${prefix}modesmenu) entryconfigure "Grid" -state 
normal
                $itk_component(${prefix}modesmenu) entryconfigure "Snap Grid" 
-state normal
+               $itk_component(${prefix}modesmenu) entryconfigure "Snap to 
Lines" -state normal
                $itk_component(${prefix}modesmenu) entryconfigure 
"Angle/Distance Cursor" -state normal
 
                $itk_component(${prefix}raytracemenu) entryconfigure "check 
overlaps" -state normal
@@ -6261,6 +6277,7 @@
            $itk_component(menubar) menuconfigure .modes.light -state normal
            $itk_component(menubar) menuconfigure .modes.grid -state normal
            $itk_component(menubar) menuconfigure .modes.sgrid -state normal
+           $itk_component(menubar) menuconfigure .modes.slines -state normal
            $itk_component(menubar) menuconfigure .modes.adc -state normal
 
            $itk_component(menubar) menuconfigure .raytrace.checkoverlaps 
-state normal
@@ -9364,6 +9381,7 @@
     puts $_pfile "set mLighting $mLighting"
     puts $_pfile "set mShowGrid $mShowGrid"
     puts $_pfile "set mSnapGrid $mSnapGrid"
+    puts $_pfile "set mSnapLines $mSnapLines"
     puts $_pfile "set mShowADC $mShowADC"
 
     puts $_pfile "set GeometryEditFrame::mHighlightPoints 
$GeometryEditFrame::mHighlightPoints"

Modified: brlcad/trunk/src/tclscripts/archer/ArcherCore.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/archer/ArcherCore.tcl   2020-06-27 06:57:31 UTC 
(rev 76232)
+++ brlcad/trunk/src/tclscripts/archer/ArcherCore.tcl   2020-06-27 15:12:31 UTC 
(rev 76233)
@@ -396,6 +396,7 @@
        variable mShowScale 0
        variable mShowGrid 0
        variable mSnapGrid 0
+       variable mSnapLines 0
        variable mShowADC 0
 
        # variables for preference state
@@ -945,6 +946,7 @@
        method showModelAxesTicks {}
        method showGrid     {}
        method snapGrid     {}
+       method snapLines    {}
        method showADC     {}
 
        # private mged commands
@@ -2140,6 +2142,9 @@
     if {$mSnapGrid} {
        snapGrid
     }
+    if {$mSnapLines} {
+       snapLines
+    }
     if {$mShowADC} {
        showADC
     }
@@ -4110,6 +4115,7 @@
     set mShowViewAxes [gedCmd cget -viewAxesEnable]
     set mShowGrid [gedCmd cget -gridEnable]
     set mSnapGrid [gedCmd cget -gridSnap]
+    set mSnapLines [gedCmd cget -linesSnap]
     set mShowADC [gedCmd cget -adcEnable]
 }
 
@@ -4230,6 +4236,10 @@
     catch {gedCmd configure -gridSnap $mSnapGrid}
 }
 
+::itcl::body ArcherCore::snapLines {} {
+    catch {gedCmd configure -linesSnap $mSnapLines}
+}
+
 ::itcl::body ArcherCore::showADC {} {
     catch {gedCmd configure -adcEnable $mShowADC}
 }

Modified: brlcad/trunk/src/tclscripts/lib/Ged.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/lib/Ged.tcl     2020-06-27 06:57:31 UTC (rev 
76232)
+++ brlcad/trunk/src/tclscripts/lib/Ged.tcl     2020-06-27 15:12:31 UTC (rev 
76233)
@@ -85,6 +85,7 @@
     itk_option define -centerDotEnable centerDotEnable CenterDotEnable 1
     itk_option define -gridEnable gridEnable GridEnable 0
     itk_option define -gridSnap gridSnap GridSnap 0
+    itk_option define -linesSnap linesSnap LinesSnap 0
     itk_option define -hideSubtractions hideSubtractions HideSubtractions 0
     itk_option define -measuringStickColor measuringStickColor 
MeasuringStickColor Yellow
     itk_option define -measuringStickMode measuringStickMode 
MeasuringStickMode 0
@@ -1038,6 +1039,10 @@
     grid snap $itk_option(-gridSnap)
 }
 
+::itcl::configbody cadwidgets::Ged::linesSnap {
+    #puts "called Ged::linesSnap method"
+}
+
 ::itcl::configbody cadwidgets::Ged::mGedFile {
     cadwidgets::Ged::open $mGedFile
 }
@@ -4325,6 +4330,8 @@
     # above (i.e. neither a geometry object nor a data point was hit)
     # and gridSnap is active, apply snap to grid to the data point
     # currently being moved.
+
+    # TODO - need to handle lines snapping in some fashion here as well...
     if {$point == "" && $itk_option(-gridSnap)} {
        # First, get the data point being moved.
        if {$mLastDataType == "data_labels" || $mLastDataType == 
"sdata_labels"} {
@@ -4374,6 +4381,7 @@
 ::itcl::body cadwidgets::Ged::end_data_poly_move {_pane} {
     refresh_off
 
+    # TODO - need to handle lines snapping in some fashion here as well...
     if {$itk_option(-gridSnap)} {
        # First, get the data point being moved.
        set point [eval $mGed data_polygons $itk_component($_pane) get_point 
$mLastDataIndex]
@@ -4455,6 +4463,7 @@
 ::itcl::body cadwidgets::Ged::end_data_poly_circ {_pane {_button 1}} {
     $mGed idle_mode $itk_component($_pane)
 
+    # TODO - need to handle lines snapping in some fashion here as well...
     if {$itk_option(-gridSnap)} {
        set mpos [$mGed get_prev_mouse $itk_component($_pane)]
        eval $mGed mouse_poly_circ $itk_component($_pane) $mpos
@@ -4478,6 +4487,7 @@
 
     set mpos [$mGed get_prev_mouse $itk_component($_pane)]
 
+    # TODO - need to handle lines snapping in some fashion here as well...
     if {$itk_option(-gridSnap)} {
        set view [eval $mGed screen2view $itk_component($_pane) $mpos]
        set view [$mGed snap_view $itk_component($_pane) [lindex $view 0] 
[lindex $view 1]]
@@ -4503,6 +4513,7 @@
 ::itcl::body cadwidgets::Ged::end_data_poly_ell {_pane {_button 1}} {
     $mGed idle_mode $itk_component($_pane)
 
+    # TODO - need to handle lines snapping in some fashion here as well...
     if {$itk_option(-gridSnap)} {
        set mpos [$mGed get_prev_mouse $itk_component($_pane)]
        eval $mGed mouse_poly_ell $itk_component($_pane) $mpos
@@ -4524,6 +4535,7 @@
 ::itcl::body cadwidgets::Ged::end_data_poly_rect {_pane {_button 1}} {
     $mGed idle_mode $itk_component($_pane)
 
+    # TODO - need to handle lines snapping in some fashion here as well...
     if {$itk_option(-gridSnap)} {
        set mpos [$mGed get_prev_mouse $itk_component($_pane)]
        eval $mGed mouse_poly_rect $itk_component($_pane) $mpos

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



_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to