Revision: 54107
          http://brlcad.svn.sourceforge.net/brlcad/?rev=54107&view=rev
Author:   bob1961
Date:     2012-12-21 13:07:01 +0000 (Fri, 21 Dec 2012)
Log Message:
-----------
Collapsed the "Move Arbitrary", "Move Selected", "Select Points" and "Select 
Segments" modes into a single "Move" mode.

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 
11:50:43 UTC (rev 54106)
+++ brlcad/trunk/src/tclscripts/archer/SketchEditFrame.tcl      2012-12-21 
13:07:01 UTC (rev 54107)
@@ -41,13 +41,10 @@
        common Z_COL 3
 
        common moveArbitrary 1
-       common moveSelected 2
-       common selectPoints 3
-       common selectSegments 4
-       common createLine 5
-       common createCircle 6
-       common createArc 7
-       common createBezier 8
+       common createLine 2
+       common createCircle 3
+       common createArc 4
+       common createBezier 5
 
        common EPSILON 0.00000000000000001
 
@@ -55,10 +52,7 @@
        common mEdgeDetailHeadings {{} A B}
        common mFaceDetailHeadings {{} A B C}
        common mEditLabels {
-           {Move Arbitrary}
-           {Move Selected}
-           {Select Points}
-           {Select Segments}
+           Move
            {Create Line}
            {Create Circle}
            {Create Arc}
@@ -164,6 +158,7 @@
        method create_bezier {}
        method create_circle {}
        method create_line {}
+       method delete_selected {}
        method end_arc {_mx _my}
        method end_arc_radius_adjust {_segment _mx _my}
        method end_bezier {_segment _cflag}
@@ -172,7 +167,7 @@
        method escape_line {}
        method fix_vertex_references {_unused_vindices}
        method handle_escape {}
-       method item_pick_highlight {_sx _sy}
+       method item_pick_highlight {_mx _my}
        method next_bezier {_segment _mx _my}
        method pick_arbitrary {_mx _my}
        method pick_segment {_mx _my}
@@ -180,7 +175,6 @@
        method seg_delete {_sx _sy _vflag}
        method seg_pick_highlight {_sx _sy}
        method setup_move_arbitrary {}
-       method setup_move_point {}
        method setup_move_segment {}
        method setup_move_selected {}
        method start_arc_radius_adjust {_segment _mx _my}
@@ -190,9 +184,9 @@
        method start_line {_x _y}
        method start_line_guts {{_mx ""} {_my ""}}
        method start_move_arbitrary {_sx _sy _rflag}
-       method start_move_point {_sx _sy}
        method start_move_segment {_sx _sy _rflag}
        method start_move_selected {_sx _sy}
+       method start_move_selected2 {_sx _sy}
        method start_seg_pick {}
        method start_vert_pick {}
        method tag_selected_verts {}
@@ -550,18 +544,6 @@
            $itk_component(canvas) configure -cursor crosshair
            setup_move_arbitrary
        } \
-       $moveSelected {
-           $itk_component(canvas) configure -cursor {}
-           setup_move_selected
-       } \
-       $selectPoints {
-           $itk_component(canvas) configure -cursor crosshair
-           start_vert_pick
-       } \
-       $selectSegments {
-           $itk_component(canvas) configure -cursor {}
-           start_seg_pick
-       } \
        $createLine {
            $itk_component(canvas) configure -cursor crosshair
            create_line
@@ -824,6 +806,10 @@
     bind $itk_component(canvas) <l> [::itcl::code $this create_line]
     bind $itk_component(canvas) <m> [::itcl::code $this setup_move_arbitrary]
 
+    bind $itk_component(canvas) <BackSpace> [::itcl::code $this 
delete_selected]
+    bind $itk_component(canvas) <d> [::itcl::code $this delete_selected]
+    bind $itk_component(canvas) <Delete> [::itcl::code $this delete_selected]
+
     bind $itk_component(canvas) <B1-Motion> {}
     bind $itk_component(canvas) <ButtonPress-1> {}
     bind $itk_component(canvas) <Shift-ButtonPress-1> {}
@@ -1033,6 +1019,7 @@
        set type [$item get_type]
        set vlist [$item get_verts]
        set vindex [lsearch $vlist $curr_vertex]
+
        switch -- $type {
            "SketchCArc" -
            "SketchLine" {
@@ -1155,6 +1142,50 @@
 }
 
 
+::itcl::body SketchEditFrame::delete_selected {} {
+    set selected [$itk_component(canvas) find withtag selected]
+    set slist {}
+    set vlist {}
+    foreach id $selected {
+       set tags [$itk_component(canvas) gettags $id]
+       set item [lindex $tags 0]
+       set type [lindex $tags 1]
+       switch $type {
+           segs   {
+               lappend slist $item
+           }
+           verts  {
+               lappend vlist [string range $item 1 end]
+           }
+       }
+    }
+
+    set svlist {}
+    foreach item $slist {
+       set index [lsearch $segments $item]
+       set segments [lreplace $segments $index $index]
+       $itk_component(canvas) delete $item
+
+       eval lappend svlist [$item get_verts]
+
+       ::itcl::delete object $item
+    }
+
+    set alist [lsort -integer -decreasing -unique [eval lappend alist $vlist 
$svlist]]
+
+    set unused_vindices {}
+    foreach vindex $alist {
+       if {[vert_is_used $vindex] == {}} {
+           set VL [lreplace $VL $vindex $vindex]
+           lappend unused_vindices $vindex
+       }
+    }
+    fix_vertex_references $unused_vindices
+
+    write_sketch_to_db
+}
+
+
 ::itcl::body SketchEditFrame::end_arc {_mx _my} {
     set index [pick_vertex $_mx $_my]
     if {$index == -1} {
@@ -1290,15 +1321,6 @@
        $moveArbitrary {
            # nothing yet
        } \
-       $moveSelected {
-           # nothing yet
-       } \
-       $selectPoints {
-           # nothing yet
-       } \
-       $selectSegments {
-           # nothing yet
-       } \
        $createLine {
            set mEscapeCreate 1
            set mLastIndex -1
@@ -1320,8 +1342,8 @@
 }
 
 
-::itcl::body SketchEditFrame::item_pick_highlight {_sx _sy} {
-    set item [pick_arbitrary $_sx $_sy]
+::itcl::body SketchEditFrame::item_pick_highlight {_mx _my} {
+    set item [pick_arbitrary $_mx $_my]
     if {$item == -1} return
 
     set tags [$itk_component(canvas) gettags $item]
@@ -1337,6 +1359,7 @@
            set curr_seg $item
        } else {
            $item unhighlight
+           $item untag_verts moving
 
            if {$item == $curr_seg} {
                set curr_seg ""
@@ -1345,23 +1368,22 @@
 
        set curr_vertex ""
     } else {
-       # Strip off the first character
-       set item [string range $item 1 end]
+       set pid [$itk_component(canvas) find withtag $item]
 
-       set pid [$itk_component(canvas) find withtag p$item]
-
        if {[lsearch $ids $pid] == -1} {
-           $itk_component(canvas) itemconfigure p$item -fill red -outline red
-           $itk_component(canvas) addtag selected withtag p$item
-           set curr_vertex $item
+           $itk_component(canvas) itemconfigure $item -fill red -outline red
+           $itk_component(canvas) addtag selected withtag $item
+           set curr_vertex [string range $item 1 end]
        } else {
-           $itk_component(canvas) itemconfigure p$item -fill black -outline 
black
-           $itk_component(canvas) dtag p$item selected
+           $itk_component(canvas) itemconfigure $item -fill black -outline 
black
+           $itk_component(canvas) dtag $item selected
            set curr_vertex ""
        }
 
        set curr_seg ""
     }
+
+    tag_selected_verts
 }
 
 
@@ -1395,14 +1417,12 @@
 
 
 ::itcl::body SketchEditFrame::pick_arbitrary {_mx _my} {
-    set x [$itk_component(canvas) canvasx $_mx]
-    set y [$itk_component(canvas) canvasy $_my]
-    set item [$itk_component(canvas) find closest $x $y]
-    if {$item == ""} {
-       return -1
+    set item [pick_vertex $_mx $_my]
+    if {$item == -1} {
+       return [pick_segment $_mx $_my]
     }
 
-    return $item
+    return "p$item"
 }
 
 
@@ -1494,11 +1514,14 @@
        set curr_seg $item
     } else {
        $item unhighlight
+       $item untag_verts moving
 
        if {$item == $curr_seg} {
            set curr_seg ""
        }
     }
+
+    tag_selected_verts
 }
 
 
@@ -1515,18 +1538,15 @@
 
     clear_canvas_bindings
     bind $itk_component(canvas) <ButtonPress-1> [::itcl::code $this 
start_move_arbitrary %x %y 0]
-    bind $itk_component(canvas) <Shift-ButtonPress-1> [::itcl::code $this 
start_move_segment %x %y 1]
+#    bind $itk_component(canvas) <Shift-ButtonPress-1> [::itcl::code $this 
seg_pick_highlight %x %y]
+    bind $itk_component(canvas) <Control-ButtonPress-1> [::itcl::code $this 
start_move_selected %x %y]
+    bind $itk_component(canvas) <Shift-ButtonPress-1> [::itcl::code $this 
start_move_selected2 %x %y]
+    bind $itk_component(canvas) <r><ButtonPress-1> [::itcl::code $this 
start_move_segment %x %y 1]
 
     set mPrevEditMode $mEditMode
 }
 
 
-::itcl::body SketchEditFrame::setup_move_point {} {
-    clear_canvas_bindings
-    bind $itk_component(canvas) <ButtonPress-1> [::itcl::code $this 
start_move_point %x %y]
-}
-
-
 ::itcl::body SketchEditFrame::setup_move_segment {} {
     clear_canvas_bindings
     bind $itk_component(canvas) <ButtonPress-1> [::itcl::code $this 
start_move_segment %x %y 0]
@@ -1779,17 +1799,6 @@
 }
 
 
-::itcl::body SketchEditFrame::start_move_point {_sx _sy} {
-    $itk_component(canvas) dtag moving moving
-    unhighlight_selected
-
-    vert_pick_highlight $_sx $_sy
-    $itk_component(canvas) addtag moving withtag selected
-
-    start_move_selected $_sx $_sy
-}
-
-
 ::itcl::body SketchEditFrame::start_move_segment {_sx _sy _rflag} {
     $itk_component(canvas) dtag moving moving
     unhighlight_selected
@@ -1819,6 +1828,13 @@
 }
 
 
+::itcl::body SketchEditFrame::start_move_selected2 {_sx _sy} {
+    item_pick_highlight  $_sx $_sy
+#    seg_pick_highlight  $_sx $_sy
+    start_move_selected $_sx $_sy
+}
+
+
 ::itcl::body SketchEditFrame::start_seg_pick {} {
     $itk_component(canvas) dtag moving moving
     unhighlight_selected
@@ -1841,6 +1857,8 @@
 
 
 ::itcl::body SketchEditFrame::tag_selected_verts {} {
+    $itk_component(canvas) dtag moving moving
+
     $itk_component(canvas) addtag moving withtag selected
     set ids [$itk_component(canvas) find withtag selected]
     foreach id $ids {
@@ -2007,6 +2025,11 @@
        $canv addtag $atag withtag p$end_index
     }
 
+    method untag_verts { atag } {
+       $canv dtag p$start_index $atag
+       $canv dtag p$end_index $atag
+    }
+
     method fix_vertex_reference { deleted_verts } {
        foreach index $deleted_verts {
            if { $start_index > $index } {incr start_index -1}
@@ -2255,6 +2278,12 @@
        }
     }
 
+    method untag_verts { atag } {
+       foreach index $index_list {
+           $canv dtag p$index $atag
+       }
+    }
+
     method fix_vertex_reference { deleted_verts } {
        foreach del $deleted_verts {
            for { set index 0 } { $index < $num_points } { incr index } {
@@ -2369,6 +2398,11 @@
        $canv addtag $atag withtag p$end_index
     }
 
+    method untag_verts { atag } {
+       $canv dtag p$start_index $atag
+       $canv dtag p$end_index $atag
+    }
+
     method fix_vertex_reference { deleted_verts } {
        foreach index $deleted_verts {
            if { $start_index > $index } {incr start_index -1}

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