Tom, I looked up the dataset we hurriedly tried to access last Friday, and it is not set up for remote access. Spur of the moment ideas are not always good ideas. I'll have to think about changing the setup; it might be the right thing to do. Anyway, I thought I would share the latest version of model.gui to show you how I am taking advantage of adde as a backup source of model data. It is pretty simple, but I thought a visual couldn't hurt. I told you about the radial buttons near the bottom of the widget; and there are several DATALOC ADD's in the script. Bill #!/bin/sh -f # the next line restarts using mcwish \ exec mcwish "$0" "$@" #--------------------------------------------------------------------------- # # Name: model.gui version 1.1 # # Purpose: fancy display of model forecasts # # Written by: Bill Fingerhut # # Modifications: # 03/02/00 WAF upgrade to 7.6 & data stream # 06/27/00 WAF clean up model selection # 09/27/00 WAF up map mag w/wind params # 09/28/00 WAF add server option # 10/19/00 WAF field1 level1 defaults # set home $env(HOME) set mcgui $env(MCGUI) set mcpath $env(MCPATH) set auto_path "$mcgui $auto_path" # Global variables global term global mcgui global mcdatadir global mcpath global loaded global parameter global env # Set widget options option add {*font} {-adobe-helvetica-bold-r-normal--*-120*} option add *activeBackground bisque2 option add *activeForeground green3 option add *background bisque2 # option add *disabledForeground red option add *foreground black option add *highlightBackground bisque option add *highlightColor green3 option add *insertBackground black option add *selectBackground bisque2 option add *selectForeground white option add *Text.Foreground white option add *Text.Background black #Defaults for variables set model "NGM" set day "LAST" set hour "LAST" set parameter $model set fld1 "PCP" set lev1 "SFC" set fld2 "WINSFC" set lev2 MSL set stat "ALB" set mag 4 set dserv "lsc" upcRunCommand "DATALOC ADD RTGRIDS CIRRUS.LSC.VSC.EDU" set loaded "FALSE" # Retrieve station information set file_info [fileToList FOUS14.DAT] foreach line $file_info { if { [string length $line] != 0 } { set i [expr [string first " " $line] + 1] set j [expr $i + 2] lappend state_value [string range $line $i $j] lappend state_name [string range $line 0 end] } } # Retrieve model information set i [exec grdlist.k RTGRIDS/ALL FORM=FILE > WMODEL.TXT] set file_info [fileToList WMODEL.TXT] foreach line $file_info { if { [string length $line] != 0 } { set i [expr [string first " " $line] + 18] set j [expr $i + 34] set k [expr $j + 2] set o [expr $i + 4] set l [expr $o + 6] set m [expr $i + 30] set n [expr $m + 1] lappend model_info [string range $line $i end] lappend model_name [string range $line $j $k] lappend model_day [string range $line $o $l] lappend model_hour [string range $line $m $n] } } # Create an input widget wm title . "LSC Model Display" wm iconname . "model gui" wm geometry . +150+150 wm maxsize . 650 700 # Describe the graphical widget frame .frame frame .frame.top frame .frame.mid1 frame .frame.mid2 frame .frame.mid3 frame .frame.mid4 frame .frame.mid5 frame .frame.mid6 frame .frame.mid7 frame .frame.mid8 frame .frame.bot message .msg1 -aspect 1200 -justify center -text "LSC Model Display" label .lab1 -text "Model ->" entry .ent_mod -width 5 -relief sunken -textvariable model entry .ent_day -width 7 -relief sunken -textvariable day entry .ent_hr -width 5 -relief sunken -textvariable hour set helpmsg.ent_mod "Button to left opens a menu, or enter model name" set helpmsg.ent_day "Button to left opens a menu, or enter model run day" set helpmsg.ent_hr "Button to left opens a menu, or enter model run hour" label .lab2 -text "Parameter to color fill ->" entry .ent_fld1 -width 10 -relief sunken -textvariable fld1 set helpmsg.ent_fld1 "Button to left opens a menu" set helpmsg.mbut1 "Click left button for a parameter menu" menubutton .mbut1 -menu .mbut1.menu -relief raised -bitmap @${mcgui}/downarr.xbm \ -activeforeground green3 -cursor {hand2} menu .mbut1.menu .mbut1.menu add radiobutton -label "Height" -variable fld1 -value Z .mbut1.menu add radiobutton -label "Precipitation" -variable fld1 -value PCP .mbut1.menu add radiobutton -label "Pressure @ MSL" -variable fld1 -value P .mbut1.menu add radiobutton -label "Relative Humidity" -variable fld1 -value RH .mbut1.menu add radiobutton -label "Temperature" -variable fld1 -value T .mbut1.menu add radiobutton -label "T @ surface" -variable fld1 -value TF .mbut1.menu add radiobutton -label "Vorticity" -variable fld1 -value VOR .mbut1.menu add radiobutton -label "Vorticity Advection" -variable fld1 -value VADV .mbut1.menu add radiobutton -label "Wind Speed" -variable fld1 -value SPD label .lab3 -text "Pressure Level of Parameter ->" entry .lev1 -width 10 -relief sunken -textvariable lev1 set helpmsg.lev1 "Click left button and enter: 1000 to 100 by 50 mb, SFC, 2, 10, or ..." label .lab4 -text "Parameter to overlay with contours ->" entry .ent_fld2 -width 10 -relief sunken -textvariable fld2 set helpmsg.ent_fld2 "Button to left opens a menu" set helpmsg.mbut2 "Click left button for a parameter menu" menubutton .mbut2 -menu .mbut2.menu -relief raised -bitmap @${mcgui}/downarr.xbm \ -activeforeground green3 -cursor {hand2} menu .mbut2.menu .mbut2.menu add radiobutton -label "NONE" -variable fld2 -value NONE .mbut2.menu add radiobutton -label "CAPE (ETA)" -variable fld2 -value CAPE .mbut2.menu add radiobutton -label "Height" -variable fld2 -value Z .mbut2.menu add radiobutton -label "Lifted Index" -variable fld2 -value LI .mbut2.menu add radiobutton -label "Precipitation" -variable fld2 -value PCP .mbut2.menu add radiobutton -label "Pressure @sea level" -variable fld2 -value PSL .mbut2.menu add radiobutton -label "Thickness: 500 - 1000 mb" -variable fld2 -value DZ5 .mbut2.menu add radiobutton -label "Thickness: 850 - 1000 mb" -variable fld2 -value DZ8 .mbut2.menu add radiobutton -label "Vertical Velocity" -variable fld2 -value W .mbut2.menu add radiobutton -label "Wind speed @surface" -variable fld2 -value WINSFC .mbut2.menu add radiobutton -label "Wind speed" -variable fld2 -value WIN set helpmsg.mbut3 "Click left button for model information" menubutton .mbut3 -menu .mbut3.menu -relief raised -bitmap @${mcgui}/help.xbm \ -activeforeground green3 -cursor {hand2} menu .mbut3.menu .mbut3.menu add radiobutton -label "NGM - Regional forecasts, 0 to 48 hours, \ every 6 hours" -variable dum -value N .mbut3.menu add radiobutton -label "ETA - Regional forecasts, 0 to 48 hours, \ every 6 hours" -variable dum -value N .mbut3.menu add radiobutton -label "MAPS (RUC) - Regional forecasts, 0 to 12 hours, \ every 3 hours" -variable dum -value N .mbut3.menu add radiobutton -label "AVN - Global forecasts, 0 to 72 hours, \ every 12 hours" -variable dum -value N .mbut3.menu add radiobutton -label "MRF - Global forecasts, 84 to 144 hours, \ every 12 hours, 0Z run" -variable dum -value N label .lab5 -text "Pressure Level of Parameter ->" entry .lev2 -width 10 -relief sunken -textvariable lev2 set helpmsg.lev2 "Click left button and enter: 1000 to 100 by 50 mb, SFC, 2, 10, or ..." label .lab6 -text "Center of Map ->" entry .stat -width 10 -relief sunken -textvariable stat -xscroll ".scrl set" set helpmsg.stat "Button to left opens a menu, or enter: station ID " label .lab7 -text "Map Magnification Factor ->" entry .ent_mag -width 10 -relief sunken -textvariable mag scale .magscal -relief groove -from -10 -to 10 -orient horizontal -tickinterval 0 \ -showvalue 0 -length 35m -cursor {hand2} -command { setScale mag "by1"} set helpmsg.ent_mag "Click left button and enter map magnification factor" set helpmsg.magscal "Hold left button down and drag slider to set map magnification factor" # used by .but1 button .but0 -command { update idletasks set i [lsearch $state_name $parameter] set stat [lindex $state_value $i] } set helpmsg.but1 "Click left button for Station ID list" button .but1 -bitmap @${mcgui}/downarr.xbm -activeforeground green3 \ -cursor {hand2} # used by .but3 button .but2 -command { update idletasks set i [lsearch $model_info $parameter] set model [lindex $model_name $i] set day [lindex $model_day $i] set hour [lindex $model_hour $i] if { $model == "MRF" } { set fld1 "Z" set lev1 "500" set fld2 "P" set lev2 "MSL" set mag "3" } if { $model == "AVN" } { set fld1 "T" set lev1 "SFC" set fld2 "Z" set lev2 "500" set mag "2" } } set helpmsg.but3 "Click left button for available model list" button .but3 -bitmap @${mcgui}/downarr.xbm -activeforeground green3 \ -cursor {hand2} scrollbar .scrl -command ".ent6 view" -orient horiz -relief sunken set helpmsg.scrl "Click left button and drag mouse to scroll command" label .lab8 -text "Data Server ->" set helpmsg.dslsc "LSC data server" set helpmsg.dsucar "UCAR data server" radiobutton .dslsc -text "LSC" -variable dserv -value lsc -relief flat \ -anchor w -width 5 -command { upcRunCommand "DATALOC ADD RTGRIDS CIRRUS.LSC.VSC.EDU" } radiobutton .dsucar -text "UCAR" -variable dserv -value ucar -relief flat \ -anchor w -width 5 -command { upcRunCommand "DATALOC ADD RTGRIDS ADDE.UCAR.EDU" } set helpmsg.ok "Click left mouse button" button .ok -text "Create Image Loop" -activeforeground green3 -cursor {hand2} set helpmsg.exit "Click left mouse button" button .exit -text "Exit" -activeforeground red -cursor {pirate} \ -command { upcRunCommand "TD PREFIX QN" upcRunCommand "DATALOC ADD RTGRIDS CIRRUS.LSC.VSC.EDU" exit } label .help -textvariable helptxt -width 55 -foreground blue # Pack the widget pack .frame -expand 1 -fill both pack .frame.top -in .frame -side top -expand 1 -fill both -padx 0 pack .frame.mid1 -in .frame -side top -expand 1 -fill both -padx 0 pack .frame.mid2 -in .frame -side top -expand 1 -fill both -padx 0 pack .frame.mid3 -in .frame -side top -expand 1 -fill both -padx 0 pack .frame.mid4 -in .frame -side top -expand 1 -fill both -padx 0 pack .frame.mid5 -in .frame -side top -expand 1 -fill both -padx 0 pack .frame.mid6 -in .frame -side top -expand 1 -fill both -padx 0 pack .frame.mid7 -in .frame -side top -expand 1 -fill both -padx 0 pack .frame.mid8 -in .frame -side top -expand 1 -fill both -padx 0 pack .frame.bot -in .frame -side bottom -expand 1 -fill x -pady 2m -padx 0 pack .msg1 -in .frame.top -fill x pack .lab1 -in .frame.mid1 -side left # pack .modruc -in .frame.mid1 -side right -padx 0 # pack .modngm -in .frame.mid1 -side right -padx 0 # pack .modmrf -in .frame.mid1 -side right -padx 0 # pack .modeta -in .frame.mid1 -side right -padx 0 # pack .modavn -in .frame.mid1 -side right -padx 0 pack .ent_hr -in .frame.mid1 -side right -padx 0 pack .ent_day -in .frame.mid1 -side right -padx 0 pack .ent_mod -in .frame.mid1 -side right -padx 0 pack .but3 -in .frame.mid1 -side right -padx 0 pack .mbut3 -in .frame.mid1 -side right -padx 2 pack .lab2 -in .frame.mid2 -side left pack .ent_fld1 -in .frame.mid2 -side right -padx 0 pack .mbut1 -in .frame.mid2 -side right -padx 2 pack .lab3 -in .frame.mid3 -side left pack .lev1 -in .frame.mid3 -side right -padx 0 pack .lab4 -in .frame.mid4 -side left pack .ent_fld2 -in .frame.mid4 -side right -padx 0 pack .mbut2 -in .frame.mid4 -side right -padx 2 pack .lab5 -in .frame.mid5 -side left pack .lev2 -in .frame.mid5 -side right -padx 0 pack .lab6 -in .frame.mid6 -side left pack .stat -in .frame.mid6 -side right -padx 0 pack .but1 -in .frame.mid6 -side right -padx 2 pack .lab7 -in .frame.mid7 -side left pack .ent_mag -in .frame.mid7 -side right pack .magscal -in .frame.mid7 -side right -padx 2 .magscal set $mag pack .lab8 -in .frame.mid8 -side left pack .dsucar -in .frame.mid8 -side right pack .dslsc -in .frame.mid8 -side right -padx 2 pack .ok -in .frame.bot -side right -expand 1 -fill both pack .exit -in .frame.bot -side left -expand 1 -fill both pack append . .help {fillx bottom} bind .but1 <Button-1> { set i [lsearch $state_value $stat] set parameter [lindex $state_name $i] runBusy busy listSelect state_name [expr %X-%x] [expr %Y-%y] ".but0"\ "Station ID Selection" runBusy normal } bind .but1 <Button-3> { Help [expr %X-%x] [expr %Y-%y] "Select a station ID by clicking the left mouse button in the ENTRY and entering a three-letter ID (highlight the text to overwrite) or by selecting an ID from the list that is accessed by clicking the left mouse button on the down arrow." } bind .but3 <Button-1> { set i [lsearch $model_name $model] set parameter [lindex $model_info $i] runBusy busy listSelect model_info [expr %X-%x] [expr %Y-%y] ".but2"\ "Model Selection" runBusy normal } bind .stat <Button-3> { Help [expr %X-%x] [expr %Y-%y] "Select a station ID by clicking the left mouse button in the ENTRY and entering a three-letter ID (highlight the text to overwrite) or by selecting an ID from the list that is accessed by clicking the left mouse button on the down arrow." } bind .stat <Leave> { set helptxt "" string trim $stat " " } bind .stat <Return> { string trim $stat " " set i [lsearch $state_value $stat] if {$i != -1} { update idletasks } else { Notify [expr %X-%x] [expr %Y-%y] $stat "Invalid Selection" } } bind .ok <Button-1> { runBusy busy upcRunCommand "TE QNRUND DEV=NNN \\\"$day" upcRunCommand "TE QNRUNH DEV=NNN \\\"$hour" upcRunCommand "BATCH $model $fld1 $lev1 $fld2 $lev2 $stat $mag CONTINUE=YES \ \\\"/usr/network/mcidas/labstuff/WAFMODX.BAT" runBusy normal } bind Entry <Any-KeyPress> { if {"%A" != ""} { set a [string compare %A "A"] set b [string compare %A "Z"] set c [string compare %A "a"] set d [string compare %A "z"] if { ($a >= 0 && $b <= 0) || ($c >=0 && $d <=0 ) } { if [%W selection present] { %W delete sel.first sel.last } %W insert insert [caseFlip %A] break } set a [string first %A "0123456789 .:-+/\""] if { $a != -1 } { if [%W selection present] { %W delete sel.first sel.last } %W insert insert %A break } } } bind all <Enter> { catch {set helptxt ${helpmsg%W}} } bind .mbut1.menu <Leave> { if { $fld1 == "P" } { set lev1 "MSL" } if { $fld1 == "PCP" } {set lev1 "SFC" } if { $fld1 == "TF" } {set lev1 "SFC" } } bind .mbut2.menu <Leave> { if { ($mag <= "2") && ($fld2 == "WIN" || $fld2 == "WINSFC") } { set mag "3" } } bind all <Leave> { set helptxt "" } proc setScale {name step value} { set name2 " " set i [string first " " $name] if { $i != -1 } { scan $name "%s %s" name1 name2 set scale2 ".${name2}scal" upvar $name1 nam1 upvar $name2 nam2 } else { upvar $name nam1 } if { [string range $step 0 1] == "by" } { set factor [string range $step 2 end] set value [expr $factor * int($value/$factor)] } else { set value [expr int(pow(2,int(log($value)/log(2))))] } if { $value == 0 || $value == -1 } { set value -2 } if { $name2 != " " } { set nam1 $value set nam2 $value $scale2 set $value } else { set nam1 $value } if { $value == 0 || $value == -1 } { set value -2 } } ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ < Bill Fingerhut, Professor PHONE: 802-626-6257 > < Meteorology Dept FAX: 802-626-9770 > < Lyndon State College > < Lyndonville, Vt 05851 > < > < EMAIL: address@hidden > < address@hidden > < WWW: http://apollo.lsc.vsc.edu/ > < > < disclaimer: I know nothing - I only work here. > vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
NOTE: All email exchanges with Unidata User Support are recorded in the Unidata inquiry tracking system and then made publicly available through the web. If you do not want to have your interactions made available in this way, you must let us know in each email you send to us.