#!/bin/sh # comment \ exec @WISH@ "$0" "$@" # Set path to gnuplot on windows, if required if { $tcl_platform(platform) eq "windows"} { # If gnuplot isn't in the path, then guess location and add to path if { [auto_execok gnuplot] eq "" } { # Path to mgnuplot executable set mypath [file dirname $argv0] # gnuplot.exe location relative to mgnuplot.exe in windows installer set gnuplotpath [file normalize "${mypath}/../../../../gnuplot/bin"] set ::env(PATH) "$::env(PATH);$gnuplotpath" } } #set gnuPlotstream [open {| gnuplot /d19/staff/wfs/tmp/jo } w] set gnuPlotstream [open {| gnuplot } r+] proc sendgnu com { global gnuPlotstream puts stdout $com ; flush stdout puts $gnuPlotstream $com ; flush $gnuPlotstream } set ii 0 while {$ii < $argc} { switch -exact "X[lindex $argv $ii]" { X-parametric3d { sendgnu "set parametric\n" sendgnu "set data style lines\n" sendgnu "set hidden\n" set ii [expr {$ii + 1}] sendgnu "splot '[lindex $argv $ii]'\n" } X-plot2d { set ii [expr {$ii + 1}] sendgnu "set data style lines" sendgnu "plot '[lindex $argv $ii]'\n" } X-title { set ii [expr {$ii + 1}] sendgnu "set title '[lindex $argv $ii]'\n" } } set ii [expr {$ii +1}] } set xrot 60 set zrot 30 text .text .text configure -height 4 -width 40 proc getoptions {} { # unlink gnu-optionsxx set tmp gnu-optionsxx file delete -force $tmp sendgnu "save '$tmp'\n" # 50 ms delay in loop is arbitrary, was "exec sleep 0" while {[file exists $tmp] <= 0} {after 50} set at [.fra.options nearest 0] set f [ open gnu-optionsxx ] .fra.options delete 0 end while { [gets $f line] >= 0 } { .fra.options insert end [lrange $line 0 end ]} .fra.options yview $at } frame .fra -bd 2 label .fra.label -text "Current Set Options" scrollbar .fra.scroll -command ".fra.options yview" listbox .fra.options -yscrollcommand ".fra.scroll set" -relief sunken -bd 2 pack .fra.label pack .fra.options -side left pack .fra.scroll -side right -fill y bind .fra.options "set selected_option \[lindex \[selection get\] 0\]" frame .option_edit proc msg a {global $a sendgnu [format "%s\n\nreplot\n" [expr $$a]] ; set $a "" getoptions} proc mkOption_edit {a b} { global $b label $a.label -text "Edit: " entry $a.entry -width 20 -relief sunken -bd 2 -textvariable $b bind $a.entry "msg $b" pack $a.label $a.entry -side left -padx 1m -pady 2m } mkOption_edit .option_edit selected_option getoptions button .exit -text "Exit" -command { sendgnu "exit\n" destroy . } button .save -text "save gnuplot.out" -command { sendgnu "save 'gnuplot.out'\n" } scale .rotxscale -label "xrotation" \ -orient horizontal -length 200 -from 0 -to 180 \ -command gnuPlotsetview -tickinterval 60 scale .rotzscale -label "zrotation" \ -orient horizontal -length 200 -from 0 -to 360 \ -command gnuPlotsetview -tickinterval 120 set initted 0 .rotxscale set $xrot .rotzscale set $zrot proc gnuPlotsetview value { global initted if { $initted < 2 } { set initted [expr {$initted + 1}]} \ else \ {sendgnu [format "set view %d,%d\nreplot\n" [.rotxscale get] [.rotzscale get]]}} pack .exit .rotxscale .rotzscale .fra .option_edit .save