Changeset 65 for trunk/gui/scripts
- Timestamp:
- Sep 25, 2005, 3:24:05 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gui/scripts/xyresult.tcl
r64 r65 85 85 86 86 private variable _hilite ;# info for element currently highlighted 87 private variable _axisPopup ;# info for axis being edited 87 private variable _axis ;# info for axis manipulations 88 private variable _axisPopup ;# info for axis being edited in popup 88 89 } 89 90 … … 511 512 [itcl::code $this _axis hilite $axis off] 512 513 $g axis bind $axis <ButtonPress> \ 513 [itcl::code $this _axis edit $axis] 514 [itcl::code $this _axis click $axis %x %y] 515 $g axis bind $axis <B1-Motion> \ 516 [itcl::code $this _axis drag $axis %x %y] 517 $g axis bind $axis <ButtonRelease> \ 518 [itcl::code $this _axis release $axis %x %y] 514 519 } 515 520 … … 818 823 # ---------------------------------------------------------------------- 819 824 # USAGE: _axis hilite <axis> <state> 825 # 826 # USAGE: _axis click <axis> <x> <y> 827 # USAGE: _axis drag <axis> <x> <y> 828 # USAGE: _axis release <axis> <x> <y> 829 # 820 830 # USAGE: _axis edit <axis> 821 831 # USAGE: _axis changed <axis> <what> … … 848 858 -titlecolor $itk_option(-foreground) 849 859 } 860 } 861 click { 862 if {[llength $args] != 3} { 863 error "wrong # args: should be \"_axis click axis x y\"" 864 } 865 set axis [lindex $args 0] 866 set x [lindex $args 1] 867 set y [lindex $args 2] 868 set g $itk_component(plot) 869 870 set _axis(moved) 0 871 set _axis(click-x) $x 872 set _axis(click-y) $y 873 foreach {min max} [$g axis limits $axis] break 874 set _axis(min0) $min 875 set _axis(max0) $max 876 } 877 drag { 878 if {[llength $args] != 3} { 879 error "wrong # args: should be \"_axis drag axis x y\"" 880 } 881 set axis [lindex $args 0] 882 set x [lindex $args 1] 883 set y [lindex $args 2] 884 set g $itk_component(plot) 885 886 if {[info exists _axis(click-x)] && [info exists _axis(click-y)]} { 887 foreach {x0 y0 pw ph} [$g extents plotarea] break 888 switch -glob $axis { 889 x* { 890 set pix $x 891 set pix0 $_axis(click-x) 892 set pixmin $x0 893 set pixmax [expr {$x0+$pw}] 894 } 895 y* { 896 set pix $y 897 set pix0 $_axis(click-y) 898 set pixmin [expr {$y0+$ph}] 899 set pixmax $y0 900 } 901 } 902 set log [$g axis cget $axis -logscale] 903 set min $_axis(min0) 904 set max $_axis(max0) 905 set dpix [expr {abs($pix-$pix0)}] 906 set v0 [$g axis invtransform $axis $pixmin] 907 set v1 [$g axis invtransform $axis [expr {$pixmin+$dpix}]] 908 if {$log} { 909 set v0 [expr {log10($v0)}] 910 set v1 [expr {log10($v1)}] 911 set min [expr {log10($min)}] 912 set max [expr {log10($max)}] 913 } 914 915 if {$pix > $pix0} { 916 set delta [expr {$v1-$v0}] 917 } else { 918 set delta [expr {$v0-$v1}] 919 } 920 set min [expr {$min-$delta}] 921 set max [expr {$max-$delta}] 922 if {$log} { 923 set min [expr {pow(10.0,$min)}] 924 set max [expr {pow(10.0,$max)}] 925 } 926 $g axis configure $axis -min $min -max $max 927 928 # move axis, don't edit on release 929 set _axis(move) 1 930 } 931 } 932 release { 933 if {[llength $args] != 3} { 934 error "wrong # args: should be \"_axis release axis x y\"" 935 } 936 set axis [lindex $args 0] 937 set x [lindex $args 1] 938 set y [lindex $args 2] 939 940 if {![info exists _axis(moved)] || !$_axis(moved)} { 941 # small movement? then treat as click -- pop up axis editor 942 set dx [expr {abs($x-$_axis(click-x))}] 943 set dy [expr {abs($y-$_axis(click-y))}] 944 if {$dx < 2 && $dy < 2} { 945 _axis edit $axis 946 } 947 } else { 948 # one last movement 949 _axis drag $axis $x $y 950 } 951 catch {unset _axis} 850 952 } 851 953 edit {
Note: See TracChangeset
for help on using the changeset viewer.