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