Changeset 1221 for branches/sandbox/gsascmds.tcl
 Timestamp:
 Sep 21, 2012 5:56:33 PM (9 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

branches/sandbox/gsascmds.tcl
r1216 r1221 3932 3932 exit 3933 3933 } 3934 3935 # Fourier routines 3936 proc EditFourier {phase} { 3937 #is this a valid phase #? 3938 if {[lsearch $::expmap(phaselist) $phase] == 1} return 3939 # check that all Fourier records are set to the current phase 3940 foreach i [listFourier] { 3941 set ph [Fourierinfo $i phase] 3942 if {$ph != $phase} {Fourierinfo $i phase set $phase} 3943 } 3944 # for now we will not offer access to section, (dmin, dmax not supported) 3945 set typelist {} 3946 foreach i [listFourier] { 3947 lappend typelist [Fourierinfo $i type] 3948 } 3949 set histlist [FourierHists $phase] 3950 set limits [getFourierLimits $phase] 3951 if {[winfo exists .export]} { 3952 set box .export.fourier 3953 } else { 3954 set box .fourier 3955 } 3956 catch {destroy $box} 3957 toplevel $box 3958 wm title $box "Set Fourier Options, phase $phase" 3959 grid [frame $box.1] row 1 column 1 rowspan 10 3960 grid [frame $box.2] row 1 column 2 rowspan 10 3961 grid [frame $box.b] sticky news row 11 column 1 columnspan 2 3962 grid columnconfigure $box.b 0 weight 1 3963 grid columnconfigure $box.b 3 weight 1 3964 grid [button $box.b.1 text Continue \ 3965 command "set ::DXTL(quit) 0; destroy $box" \ 3966 ] row 1 column 1 3967 grid [button $box.b.2 text Quit \ 3968 command "set ::DXTL(quit) 1; destroy $box" \ 3969 ] row 1 column 2 3970 3971 # map type selection 3972 set row 0 3973 grid [label $box.1.$row text "Select map type(s)"] column 1 row $row 3974 foreach typ {DELF FCLC FOBS 2FDF 3FDF 4FDF PTSN DPTS} lbl { 3975 "Difference Fourier" "Fcalc Fourier" "Fobs Fourier" 3976 "2*FoFc Fourier" "3*Fo2*Fc Fourier" "4*Fo3*Fc Fourier" "Patterson map" "DeltaF Patterson"\ 3977 } { 3978 incr row 3979 grid [ \ 3980 checkbutton $box.1.$row variable ::DXTL($typ) \ 3981 text "$lbl ($typ)" \ 3982 ] column 1 row $row sticky w 3983 if {[lsearch $typelist $typ] == 1} { 3984 set ::DXTL($typ) 0 3985 } else { 3986 set ::DXTL($typ) 1 3987 } 3988 } 3989 grid [label $box.2.a1 text "Histogram(s) to be used:\n(last superceeds)"] column 1 row 1 3990 grid [label $box.2.a2 textvariable ::DXTL(histlist) width 20] column 2 row 1 columnspan 2 3991 grid [button $box.2.a3 text Set \ 3992 command "SetFourierHists $box"] column 5 row 1 3993 set ::DXTL(histlist) {} 3994 foreach i $histlist { 3995 if {$::DXTL(histlist) != ""} {append ::DXTL(histlist) ", "} 3996 append ::DXTL(histlist) $i 3997 } 3998 grid [label $box.2.m1 text min] column 2 row 2 3999 grid [label $box.2.m2 text max] column 3 row 2 4000 grid [label $box.2.m3 text "map step\n(A)"] column 4 row 2 4001 set row 3 4002 foreach axis {X Y Z} lim [lrange $limits 1 end] step [lindex $limits 0] { 4003 incr row 4004 grid [label $box.2.0$axis text "$axis limits"] column 1 row $row sticky e 4005 grid [entry $box.2.min$axis width 10 textvariable ::DXTL(min$axis)] column 2 row $row 4006 grid [entry $box.2.max$axis width 10 textvariable ::DXTL(max$axis)] column 3 row $row 4007 grid [entry $box.2.step$axis width 10 textvariable ::DXTL(step$axis)] column 4 row $row 4008 set ::DXTL(min$axis) [lindex $lim 0] 4009 set ::DXTL(max$axis) [lindex $lim 1] 4010 set ::DXTL(step$axis) [format "%.4f" [expr {$step + 0.0001}]] 4011 } 4012 putontop $box 4013 tkwait window $box 4014 afterputontop 4015 if $::DXTL(quit) return 4016 delFourier 4017 foreach typ {DELF FCLC FOBS 2FDF 3FDF 4FDF PTSN DPTS} { 4018 if {$::DXTL($typ)} { 4019 addFourier $phase $typ 4020 } 4021 } 4022 if {$::DXTL(histlist) != "<none>"} { 4023 FourierHists $phase set [regsub all "," $::DXTL(histlist) " "] 4024 } 4025 setFourierLimits $phase \ 4026 [list $::DXTL(stepX) $::DXTL(stepY) $::DXTL(stepZ)] \ 4027 [list $::DXTL(minX) $::DXTL(maxX)] \ 4028 [list $::DXTL(minY) $::DXTL(maxY)] \ 4029 [list $::DXTL(minZ) $::DXTL(maxZ)] 4030 incr ::expgui(changed) 4031 } 4032 4033 proc SetFourierHists {top} { 4034 set box $top.hstsel 4035 set ::DXTL(histbox) $box 4036 catch {destroy $box} 4037 toplevel $box 4038 wm title $box "Select Histograms" 4039 grid [frame $box.1 class HistList] column 1 row 1 sticky news 4040 grid columnconfigure $box 1 weight 1 4041 grid [frame $box.2] column 2 row 1 4042 grid [label $box.2.a text {Select a histogram from the box 4043 to the left to add it to the 4044 histogram list below 4045 4046 (note that reflection intensities 4047 from the last histograms in list 4048 override earlier ones) 4049 4050 Histogram List:}] \ 4051 column 1 row 1 4052 grid [label $box.2.b textvariable ::DXTL(histlist)] column 1 row 2 4053 grid [button $box.2.c text Clear command ClearFourierHist] \ 4054 column 1 row 3 4055 grid [button $box.3 text Close command "destroy $box"] \ 4056 column 1 row 3 columnspan 2 4057 MakeHistBox $box.1 4058 bind $box.1.lbox <ButtonRelease1> { 4059 set selhist [$::DXTL(histbox).1.lbox curselection] 4060 if {[llength $selhist] != 1} return 4061 AddFourierHist [lindex $::expmap(powderlist) $selhist] 4062 lappend ::DXTL(histlist) 4063 set hist [lindex $::expmap(powderlist) $selhist] 4064 $::DXTL(histbox).2.b config text $hist 4065 } 4066 sethistlist 4067 putontop $box 4068 tkwait window $box 4069 afterputontop 4070 } 4071 4072 proc AddFourierHist {num} { 4073 if {$::DXTL(histlist) == "<none>"} { 4074 set ::DXTL(histlist) {} 4075 } 4076 if {$::DXTL(histlist) != ""} {append ::DXTL(histlist) ", "} 4077 append ::DXTL(histlist) $num 4078 } 4079 4080 proc ClearFourierHist {} { 4081 set ::DXTL(histlist) "<none>" 4082 }
Note: See TracChangeset
for help on using the changeset viewer.