Revision: 58480
          http://sourceforge.net/p/brlcad/code/58480
Author:   bob1961
Date:     2013-11-07 18:25:21 +0000 (Thu, 07 Nov 2013)
Log Message:
-----------
Added the itcl interface to libtclcad's data scaling functionality.

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

Modified: brlcad/trunk/src/tclscripts/lib/Ged.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/lib/Ged.tcl     2013-11-07 18:16:03 UTC (rev 
58479)
+++ brlcad/trunk/src/tclscripts/lib/Ged.tcl     2013-11-07 18:25:21 UTC (rev 
58480)
@@ -194,6 +194,7 @@
        method data_move_object_mode {_pane _x _y}
        method data_move_point_mode {_pane _x _y}
        method data_pick {args}
+       method data_scale_mode {args}
        method dbconcat {args}
        method dbfind {args}
        method dbip {args}
@@ -397,6 +398,7 @@
        method pane_center {_pane args}
        method pane_constrain_rmode {_pane args}
        method pane_constrain_tmode {_pane args}
+       method pane_data_scale_mode {_pane args}
        method pane_eye {_pane args}
        method pane_eye_pos {_pane args}
        method pane_fb2pix {_pane args}
@@ -692,6 +694,7 @@
        method begin_data_poly_cont {}
        method begin_data_poly_ell {}
        method begin_data_poly_rect {}
+       method begin_data_scale {_pane}
        method begin_view_measure {_pane _part1_button _part1_button _x _y}
        method begin_view_measure_part2 {_pane _button _x _y}
        method default_views {}
@@ -705,6 +708,7 @@
        method end_data_poly_cont {_pane {_button 1}}
        method end_data_poly_ell {_pane {_button 1}}
        method end_data_poly_rect {_pane {_button 1}}
+       method end_data_scale {_pane}
        method end_view_measure {_pane _part1_button _part2_button}
        method end_view_measure_part2 {_pane _button}
        method end_view_rect {_pane {_button 1} {_pflag 0} {_bot ""}}
@@ -728,6 +732,7 @@
        method init_data_move_object {{_button 1}}
        method init_data_move_point {{_button 1}}
        method init_data_pick {{_button 1}}
+       method init_data_scale {{_button 1}}
        method init_data_poly_circ {{_button 1}}
        method init_data_poly_cont {{_button 1}}
        method init_data_poly_ell {{_button 1}}
@@ -783,6 +788,10 @@
        method clear_end_data_move_callback_list {}
        method delete_end_data_move_callback {_callback}
 
+       method add_end_data_scale_callback {_callback}
+       method clear_end_data_scale_callback_list {}
+       method delete_end_data_scale_callback {_callback}
+
        method add_mouse_data_callback {_callback}
        method clear_mouse_data_callback_list {}
        method delete_mouse_data_callback {_callback}
@@ -870,6 +879,7 @@
        variable mEndDataArrowCallbacks ""
        variable mEndDataLineCallbacks ""
        variable mEndDataMoveCallbacks ""
+       variable mEndDataScaleCallbacks ""
        variable mMouseDataCallbacks ""
        variable mMouseRayCallbacks ""
        variable mPrevGedMouseX 0
@@ -1542,6 +1552,10 @@
     eval $mGed data_pick $itk_component($itk_option(-pane)) $args
 }
 
+::itcl::body cadwidgets::Ged::data_scale_mode {args} {
+    eval $mGed data_scale_mode $itk_component($itk_option(-pane)) $args
+}
+
 ::itcl::body cadwidgets::Ged::dbconcat {args} {
     eval $mGed dbconcat $args
 }
@@ -2549,6 +2563,10 @@
     eval $mGed constrain_tmode $itk_component($_pane) $args
 }
 
+::itcl::body cadwidgets::Ged::pane_data_scale_mode {_pane args} {
+    eval $mGed data_scale_mode $itk_component($_pane) $args
+}
+
 ::itcl::body cadwidgets::Ged::pane_eye {_pane args} {
     eval $mGed eye $itk_component($_pane) $args
 }
@@ -4103,6 +4121,13 @@
 }
 
 
+::itcl::body cadwidgets::Ged::begin_data_scale {_pane} {
+    # Temporarily turn off view callbacks
+    set mSaveViewCallbacks($_pane) [$mGed view_callback $itk_component($_pane)]
+    $mGed view_callback $itk_component($_pane) ""
+}
+
+
 ::itcl::body cadwidgets::Ged::begin_view_measure {_pane _part1_button 
_part2_button _x _y} {
     measure_line_erase
 
@@ -4463,6 +4488,25 @@
 }
 
 
+::itcl::body cadwidgets::Ged::end_data_scale {_pane} {
+    set svcallback [$mGed view_callback $itk_component($_pane)]
+    $mGed view_callback $itk_component($_pane) ""
+
+    $mGed idle_mode $itk_component($_pane)
+
+    refresh_off
+
+    foreach callback $mEndDataScaleCallbacks {
+       catch {$callback}
+    }
+
+    refresh_on
+    refresh_all
+
+    $mGed view_callback $itk_component($_pane) $svcallback
+}
+
+
 ::itcl::body cadwidgets::Ged::end_view_measure {_pane _part1_button 
_part2_button} {
     $mGed idle_mode $itk_component($_pane)
 
@@ -4790,6 +4834,16 @@
 }
 
 
+::itcl::body cadwidgets::Ged::init_data_scale {{_button 1}} {
+    measure_line_erase
+
+    foreach dm {ur ul ll lr} {
+       bind $itk_component($dm) <$_button> "$mGed data_scale_mode 
$itk_component($dm) %x %y; focus %W; break"
+       bind $itk_component($dm) <ButtonRelease-$_button> "[::itcl::code $this 
end_data_scale $dm]; break"
+    }
+}
+
+
 ::itcl::body cadwidgets::Ged::init_data_poly_circ {{_button 1}} {
     measure_line_erase
 
@@ -5456,6 +5510,26 @@
     }
 }
 
+::itcl::body cadwidgets::Ged::add_end_data_scale_callback {_callback} {
+    set i [lsearch $mEndDataScaleCallbacks $_callback]
+
+    # Add if not already in list
+    if {$i == -1} {
+       lappend mEndDataScaleCallbacks $_callback
+    }
+}
+
+::itcl::body cadwidgets::Ged::clear_end_data_scale_callback_list {} {
+    set mEndDataScaleCallbacks {}
+}
+
+::itcl::body cadwidgets::Ged::delete_end_data_scale_callback {_callback} {
+    set i [lsearch $mEndDataScaleCallbacks $_callback]
+    if {$i != -1} {
+       set mEndDataScaleCallbacks [lreplace $mEndDataScaleCallbacks $i $i]
+    }
+}
+
 ::itcl::body cadwidgets::Ged::add_mouse_ray_callback {_callback} {
     set i [lsearch $mMouseRayCallbacks $_callback]
 

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


------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to