#!/usr/bin/perl use Tk; require Tk::FileSelect; $prod = "FPUS5."; $site = ""; $ident = ""; $nhour = -6; $allhdr = 1; sub RunList { if( $prod eq "+METAR" ){ $data = `${binpath}sa_parse -df=$default -cu=la -nh=$nhour -id=$ident`; $text->insert( 'end', $data ); } elsif( $prod eq "+METARC" ){ $data = `${binpath}sa_parse -df=$default -if=cvt -cu=la -nh=$nhour -id=$ident`; $text->insert( 'end', $data ); } elsif( $prod eq "+SYNOP" ){ $data = `${binpath}parse -df=$default -ph=S[IMNS] -cu=la -nh=$nhour -id=$ident -pa=equal`; $text->insert( 'end', $data ); } elsif( $prod eq "+SYNOPC" ){ $data = `${binpath}sa_parse -df=$default -pa=cvt -if=syn_cvt -cu=la -nh=$nhour -id=$ident`; $text->insert( 'end', $data ); } elsif( $prod eq "+UPPER" ){ $data = `${binpath}parse -df=$default -cu=la -nh=$nhour -ph=U -id=$ident -pa=equal`; $text->insert( 'end', $data ); } elsif( $prod eq "+UPPERC" ){ $data = `${binpath}ua_parse -df=$default -cu=la -id=$ident -me=nopage`; $text->insert( 'end', $data ); } elsif( $prod eq "+NGMMOS" ){ $data = `${binpath}parse -df=$default -cu=la -nh=$nhour -ph=FOUS14 -id=$ident -pa=blank`; $text->insert( 'end', $data ); } elsif( $prod eq "+NGMMOSC" ){ $data = `${binpath}fo_parse -df=$default -cu=la -id=$ident`; $text->insert( 'end', $data ); } elsif( $prod eq "+MRFMOSC" ){ $data = `${binpath}fo_parse -df=$default -mo=mrfx -cu=la -ho=0 -id=$ident`; $text->insert( 'end', $data ); } elsif( $prod eq "FT" ){ $data = `${binpath}parse -df=$default -ph=FT -cu=la -nh=$nhour -id=$ident -pa=equal`; $text->insert( 'end', $data ); } elsif( !$allhdr ){ $lprod = $prod; $lprod = "${prod}_${site}" if $site ne ""; $cmd = "${binpath}parse -df=$default -cu=la -ph=\"$lprod\" -nh=$nhour"; $cmd = "$cmd -id=$ident" if $ident ne ""; $dollar = 2 if $ident =~ /^\%/; $param = ""; $param = $param . ",dollar" if $pdollar; $param = $param . ",blank" if $pblank; $param = $param . ",3blank" if $p3blank; $param = $param . ",equal" if $pequal; $param = $param . ",first" if $pfirst; $param = $param . ",last" if $plast; $param =~ s/^,//; $cmd = "$cmd -pa=$param" if $param ne ""; $dollar = 0 if $dollar = 2; print "$cmd\n"; $data = `$cmd`; $text->insert( 'end', $data ); } else { $hdr = $prod; $hdr = "${prod}_${site}" if $site ne ""; $cmd = "${binpath}parse -df=$default -cu=la \"-ph=$hdr\" -nh=$nhour -pa=hdr"; print "$cmd\n"; $data = `$cmd`; @items = split "\n", $data; foreach ( @items ){ s/^\*\* //; s/ \*\*\*$//; s/ $//g; } $list->insert( 'end', @items ); } } sub Run { $i = $list->curselection(); return if( $i eq "" ); $lprod = $list->get( $list->curselection()); $lprod =~ s/ /_/g; if( !$allhdr ){ $lprod = $prod; $lprod = "${prod}_${site}" if $site ne ""; } $cmd = "${binpath}parse -df=$default -cu=la -ph=\"$lprod\" -nh=$nhour"; $cmd = "$cmd -id=$ident" if $ident ne ""; $dollar = 2 if $ident =~ /^\%/; $param = ""; $param = $param . ",dollar" if $pdollar; $param = $param . ",blank" if $pblank; $param = $param . ",3blank" if $p3blank; $param = $param . ",equal" if $pequal; $param = $param . ",first" if $pfirst; $param = $param . ",last" if $plast; $param =~ s/^,//; $cmd = "$cmd -pa=$param" if $param ne ""; $dollar = 0 if $dollar = 2; print "$cmd\n"; $data = `$cmd`; $text->insert( 'end', $data ); } sub Clear { $i = $text->index( "end" ); if( $i eq "2.0" ){ $list->delete( 0, "end" ); } $text->delete( "1.0", "end" ); $i = $text->index( "end" ); } sub AddDropMenu { my( $menub ) = @_; $wmenu = $menub->menu->Menu( -tearoff => 0 ); return $wmenu; } sub AddCascade { my( $menu, $text, $cmenu ) = @_; $menu->cascade( -label => $text ); $menu->entryconfigure( $text, -menu => $cmenu ); } sub AddCommand { my ($menu, $lab, $command ) = @_; $menu->command( -label => $lab, -command => $command ); } sub AddNHRadio { my ($menu, $lab, $command ) = @_; $menu->radiobutton( -label => $lab, -variable => $command ); } sub AddProdCommand { my ($menu, $lab, $rprod, $rsite ) = @_; $menu->command( -label => $lab, -command => [ \&SetProd, $lab, $rprod, $rsite ] ); } sub SetProd { my( $name, $rprod, $rsite ) = @_; $mw->title( "ptkParse (v1.0): $name" ); $prod = $rprod; $site = $rsite; } sub Save { $file = $wfilesel->Show(); $data = $text->get( "1.0", "end" ); open( FILE, ">$file" ); print FILE $data; close FILE; } sub Print { $data = $text->get( "1.0", "end" ); open( FILE, "|lpr" ); print FILE $data; close FILE; } ############################ # Main Program ############################ $os = "Win" if $^O eq "MSWin32"; if( $os eq "Win" ){ if( -e "c:/wxp/bin" ){ $binpath = "c:\\WXP\\bin\\"; $default="c:/wxp/etc"; } if( -e "d:/wxp/bin" ){ $binpath = "d:\\WXP\\bin\\"; $default="d:/wxp/etc"; } if( -e "e:/wxp/bin" ){ $binpath = "e:\\WXP\\bin\\"; $default="e:/wxp/etc"; } } else { $binpath="/home/wxp/bin/"; $default="/home/wxp/etc"; } $mw = MainWindow->new; $mw->title( "ptkParse (v1.0)" ); $mw->geometry( "+10+10" ); $bar = $mw->Frame->pack( -side => "top", -fill => "x" ); $bquit = $bar->Button( -text => "Quit", -command => sub { exit } ) ->pack( -side => "right" ); $bquit = $bar->Button( -text => "Clear", -command => \&Clear ) ->pack( -side => "right" ); $bquit = $bar->Button( -text => "Run", -command => \&RunList ) ->pack( -side => "right" ); $fmenu = $bar->Menubutton( -text => "File", -tearoff => 0 ) ->pack( -side => "left" ); $fmenu->command( -label => "Save", -command => \&Save ); $fmenu->command( -label => "Print", -command => \&Print ); $fmenu->command( -label => "Quit", -command => sub { exit } ); $wfilesel = $mw->FileSelect(); $pmenu = $bar->Menubutton( -text => "Product", -tearoff => 0 ) ->pack( -side => "left" ); $bar->Entry( -textvariable => \$prod, -relief => "sunken", -width => 10 ) ->pack( -side => "left" ); $wmenu = AddDropMenu( $pmenu ); AddProdCommand( $wmenu, "State", "FPUS6." ); AddProdCommand( $wmenu, "State Discussion", "FXUS7." ); AddProdCommand( $wmenu, "State Details", "FPUS4." ); AddProdCommand( $wmenu, "State Zones", "FPUS5." ); AddProdCommand( $wmenu, "Nowcast", "FPUS7." ); AddProdCommand( $wmenu, "Metro/Local", "FLUS8." ); AddProdCommand( $wmenu, "Area Discussion", "FXUS6." ); $wmenu->separator(); AddProdCommand( $wmenu, "Travelers", "FPUS1[0123]" ); AddProdCommand( $wmenu, "Recreational", "FWUS" ); AddCascade( $pmenu, "Forecast 1", $wmenu ); $wmenu = AddDropMenu( $pmenu ); AddProdCommand( $wmenu, "Terminal", "FT" ); AddProdCommand( $wmenu, "Fire", "F(NUS|XUS07)" ); AddProdCommand( $wmenu, "Marine", "FZUS5" ); AddProdCommand( $wmenu, "Lake/Offshore", "FZUS6" ); $wmenu->separator(); AddProdCommand( $wmenu, "2-10 Day State", "FEUS40" ); AddProdCommand( $wmenu, "30/90 Day State", "FEUS30" ); $wmenu->separator(); AddProdCommand( $wmenu, "NGM MOS", "+NGMMOS" ); AddProdCommand( $wmenu, "NGM MOS/Cvt", "+NGMMOSC" ); AddProdCommand( $wmenu, "MRF MOS/Cvt", "+MRFMOSC" ); AddProdCommand( $wmenu, "Fronts", "FSUS2", "KWBC" ); AddCascade( $pmenu, "Forecast 2", $wmenu ); $wmenu = AddDropMenu( $pmenu ); AddProdCommand( $wmenu, "Convective Outlook", "ACUS.", "KMKC" ); AddProdCommand( $wmenu, "Convective Sigmet", "WSUS" ); # AddProdCommand( $wmenu, "Flash Flood Guidance", "RGUM1." ); AddProdCommand( $wmenu, "Airmets", "WAUS1" ); # AddProdCommand( $wmenu, "Air Convective", "WCUS(1|21)" ); $wmenu->separator(); AddProdCommand( $wmenu, "Special Wx Statemt", "WWUS35" ); AddProdCommand( $wmenu, "Severe Wx Statemt", "WWUS34" ); AddProdCommand( $wmenu, "Local Storm Reports", "WWUS30" ); AddProdCommand( $wmenu, "Daily Storm Summaries", "WWUS60", "KMKC" ); $wmenu->separator(); AddProdCommand( $wmenu, "Flood Watch", "RWUS32" ); AddProdCommand( $wmenu, "Winter Advisory", "WWUS4" ); AddProdCommand( $wmenu, "Urgent Weather Message", "WWUS7" ); AddCascade( $pmenu, "Severe 1", $wmenu ); $wmenu = AddDropMenu( $pmenu ); AddProdCommand( $wmenu, "Storm Watches", "WWUS[89]" ); AddProdCommand( $wmenu, "Storm Watch Details", "WWUS40" ); AddProdCommand( $wmenu, "State Watch Outlines", "WWUS32" ); AddProdCommand( $wmenu, "Watch Status", "WWUS8", "KMKC" ); $wmenu->separator(); AddProdCommand( $wmenu, "Tornado Warnings", "WFUS5." ); AddProdCommand( $wmenu, "Sev TStorm Warnings", "WUUS5." ); AddProdCommand( $wmenu, "Flood Warnings", "WRUS5." ); AddProdCommand( $wmenu, "Marine Warnings", "WMUS5." ); $wmenu->separator(); AddProdCommand( $wmenu, "Hurricane Forecasts", "WT..2." ); AddProdCommand( $wmenu, "Hurricane Advisory", "WT..3." ); AddProdCommand( $wmenu, "Hurricane Discussion", "WT..4." ); AddProdCommand( $wmenu, "Hurricane Strike Probabilities", "WT..7." ); AddCascade( $pmenu, "Severe 2", $wmenu ); $wmenu = AddDropMenu( $pmenu ); AddProdCommand( $wmenu, "State Summaries", "ABUS30" ); AddProdCommand( $wmenu, "US Temp/Wx", "ABUS2[345]", "KWBC" ); AddProdCommand( $wmenu, "Public Information", "ABUS34" ); AddProdCommand( $wmenu, "Hourly State Roundups", "ASUS4" ); AddProdCommand( $wmenu, "Road Conditions", "SXUS90" ); AddProdCommand( $wmenu, "Agricultural", "SXUS04" ); $wmenu->separator(); AddProdCommand( $wmenu, "Daily Temp and Precip", "ABUS21" ); AddProdCommand( $wmenu, "Climatic Summary", "CSUS" ); AddProdCommand( $wmenu, "Canadian Temp and Precip", "ABCN01" ); AddProdCommand( $wmenu, "Foreign Temp and Precip", "ABXX06" ); AddProdCommand( $wmenu, "Latin America Temp and Precip", "ABXX07" ); AddProdCommand( $wmenu, "Record Event", "SXUS99" ); AddCascade( $pmenu, "Summaries", $wmenu ); $wmenu = AddDropMenu( $pmenu ); AddProdCommand( $wmenu, "Metar", "+METAR" ); AddProdCommand( $wmenu, "Metar/Cvt", "+METARC" ); AddProdCommand( $wmenu, "Synop", "+SYNOP" ); AddProdCommand( $wmenu, "Synop/Cvt", "+SYNOPC" ); AddProdCommand( $wmenu, "Upper", "+UPPER" ); AddProdCommand( $wmenu, "Upper/Cvt", "+UPPERC" ); AddProdCommand( $wmenu, "PiReps", "UA" ); AddProdCommand( $wmenu, "Fronts", "ASUS1", "KWBC" ); AddCascade( $pmenu, "Data", $wmenu ); $smenu = $bar->Menubutton( -text => "Site", -tearoff => 0 ) ->pack( -side => "left" ); $bar->Entry( -textvariable => \$site, -relief => "sunken", -width => 5 ) ->pack( -side => "left" ); $wmenu = AddDropMenu( $smenu ); AddCommand( $wmenu, "Albany NY", sub { $site="KALY" } ); AddCommand( $wmenu, "Binghamton NY", sub { $site="KBGM" } ); AddCommand( $wmenu, "Boston MA", sub { $site="KBOX" } ); AddCommand( $wmenu, "Buffalo NY", sub { $site="KBUF" } ); AddCommand( $wmenu, "Burlington VT", sub { $site="KBTV" } ); AddCommand( $wmenu, "Caribou ME", sub { $site="KCAR" } ); AddCommand( $wmenu, "New York NY", sub { $site="KOKX" } ); AddCommand( $wmenu, "Philadelphia PA", sub { $site="KPHI" } ); AddCommand( $wmenu, "Pittsburgh PA", sub { $site="KPBZ" } ); AddCommand( $wmenu, "Portland ME", sub { $site="KGYX" } ); AddCommand( $wmenu, "State College PA", sub { $site="KCTP" } ); AddCascade( $smenu, "Northeast", $wmenu ); $wmenu = AddDropMenu( $smenu ); AddCommand( $wmenu, "Charleston SC", sub { $site="KCHS" } ); AddCommand( $wmenu, "Charleston WV", sub { $site="KRLX" } ); AddCommand( $wmenu, "Columbia SC", sub { $site="KCAE" } ); AddCommand( $wmenu, "Greenville SC", sub { $site="KGSP" } ); AddCommand( $wmenu, "Morehead City NC", sub { $site="KMHX" } ); AddCommand( $wmenu, "Norfolk VA", sub { $site="KAKQ" } ); AddCommand( $wmenu, "Raleigh NC", sub { $site="KRAH" } ); AddCommand( $wmenu, "Roanoke VA", sub { $site="KRNK" } ); AddCommand( $wmenu, "Sterling VA", sub { $site="KLWX" } ); AddCommand( $wmenu, "Washington DC", sub { $site="KWBC" } ); AddCommand( $wmenu, "Wilmington NC", sub { $site="KILM" } ); AddCascade( $smenu, "Mid Atlantic", $wmenu ); $wmenu = AddDropMenu( $smenu ); AddCommand( $wmenu, "Atlanta GA", sub { $site="KFFC" } ); AddCommand( $wmenu, "Birmingham AL", sub { $site="KBMX" } ); AddCommand( $wmenu, "Jackson MS", sub { $site="KJAN" } ); AddCommand( $wmenu, "Jacksonville FL", sub { $site="KJAX" } ); AddCommand( $wmenu, "Key West FL", sub { $site="KEYW" } ); AddCommand( $wmenu, "Knoxville TN", sub { $site="KMRX" } ); AddCommand( $wmenu, "Lake Charles LA", sub { $site="KLCH" } ); AddCommand( $wmenu, "Melbourne FL", sub { $site="KMFL" } ); AddCommand( $wmenu, "Memphis TN", sub { $site="KMEG" } ); AddCommand( $wmenu, "Miami FL", sub { $site="KAMX" } ); AddCommand( $wmenu, "Mobile AL", sub { $site="KMOB" } ); AddCommand( $wmenu, "Nashville TN", sub { $site="KOHX" } ); AddCommand( $wmenu, "New Orleans LA", sub { $site="KLIX" } ); AddCommand( $wmenu, "Shreveport LA", sub { $site="KSHV" } ); AddCommand( $wmenu, "Tallahassee FL", sub { $site="KTAE" } ); AddCommand( $wmenu, "Tampa FL", sub { $site="KTBW" } ); AddCascade( $smenu, "Southeast", $wmenu ); $wmenu = AddDropMenu( $smenu ); AddCommand( $wmenu, "Alpena MI", sub { $site="KAPX" } ); AddCommand( $wmenu, "Chicago IL", sub { $site="KLOT" } ); AddCommand( $wmenu, "Cincinnati OH", sub { $site="KILN" } ); AddCommand( $wmenu, "Cleveland OH", sub { $site="KCLE" } ); AddCommand( $wmenu, "Detroit MI", sub { $site="KDTX" } ); AddCommand( $wmenu, "Grand Rapids MI", sub { $site="KGRR" } ); AddCommand( $wmenu, "Green Bay WI", sub { $site="KGRB" } ); AddCommand( $wmenu, "Indianapolis IN", sub { $site="KIND" } ); AddCommand( $wmenu, "Jackson KY", sub { $site="KJKL" } ); AddCommand( $wmenu, "LaCrosse WI", sub { $site="KARX" } ); AddCommand( $wmenu, "Lincoln IL", sub { $site="KILX" } ); AddCommand( $wmenu, "Louisville KY", sub { $site="KLMK" } ); AddCommand( $wmenu, "Marquette MI", sub { $site="KMQT" } ); AddCommand( $wmenu, "Milwaukee WI", sub { $site="KMKX" } ); AddCommand( $wmenu, "Fort Wayne IN", sub { $site="KIWX" } ); AddCommand( $wmenu, "Paducah KY", sub { $site="KPAH" } ); AddCommand( $wmenu, "Quad Cities IL", sub { $site="KDVN" } ); AddCascade( $smenu, "Ohio Valley", $wmenu ); $wmenu = AddDropMenu( $smenu ); AddCommand( $wmenu, "Aberdeen SD", sub { $site="KABR" } ); AddCommand( $wmenu, "Bismarck ND", sub { $site="KBIS" } ); AddCommand( $wmenu, "Des Moines IA", sub { $site="KDMX" } ); AddCommand( $wmenu, "Dodge City KS", sub { $site="KDDC" } ); AddCommand( $wmenu, "Duluth MN", sub { $site="KDLH" } ); AddCommand( $wmenu, "Fargo ND", sub { $site="KFGF" } ); AddCommand( $wmenu, "Goodland KS", sub { $site="KGLD" } ); AddCommand( $wmenu, "Hastings NE", sub { $site="KGID" } ); AddCommand( $wmenu, "Kansas City MO", sub { $site="KEAX" } ); AddCommand( $wmenu, "Minneapolis MN", sub { $site="KMPX" } ); AddCommand( $wmenu, "North Platte NE", sub { $site="KLBF" } ); AddCommand( $wmenu, "Omaha NE", sub { $site="KOAX" } ); AddCommand( $wmenu, "Rapid City SD", sub { $site="KUNR" } ); AddCommand( $wmenu, "St Louis MO", sub { $site="KLSX" } ); AddCommand( $wmenu, "Sioux Falls SD", sub { $site="KOAX" } ); AddCommand( $wmenu, "Springfield MO", sub { $site="KSGF" } ); AddCommand( $wmenu, "Topeka KS", sub { $site="KTOP" } ); AddCommand( $wmenu, "Wichita KS", sub { $site="KICT" } ); AddCascade( $smenu, "North Central", $wmenu ); $wmenu = AddDropMenu( $smenu ); AddCommand( $wmenu, "Albuquerque NM", sub { $site="KABQ" } ); AddCommand( $wmenu, "Abilene TX", sub { $site="KABI" } ); AddCommand( $wmenu, "Amarillo TX", sub { $site="KAMA" } ); AddCommand( $wmenu, "Austin TX", sub { $site="KEWX" } ); AddCommand( $wmenu, "Brownsville TX", sub { $site="KBRO" } ); AddCommand( $wmenu, "Corpus Christi TX", sub { $site="KCRP" } ); AddCommand( $wmenu, "Dallas TX", sub { $site="KFWD" } ); AddCommand( $wmenu, "Del Rio TX", sub { $site="KDRT" } ); AddCommand( $wmenu, "El Paso TX", sub { $site="KEPZ" } ); AddCommand( $wmenu, "Houston TX", sub { $site="KHGX" } ); AddCommand( $wmenu, "Little Rock AR", sub { $site="KLZK" } ); AddCommand( $wmenu, "Lubbock TX", sub { $site="KLUB" } ); AddCommand( $wmenu, "Midland TX", sub { $site="KMAF" } ); AddCommand( $wmenu, "Oklahoma City OK", sub { $site="KOUN" } ); AddCommand( $wmenu, "San Angelo TX", sub { $site="KSJT" } ); AddCommand( $wmenu, "Tulsa OK", sub { $site="KTSA" } ); AddCascade( $smenu, "South Central", $wmenu ); $wmenu = AddDropMenu( $smenu ); AddCommand( $wmenu, "Billings MT", sub { $site="KBYZ" } ); AddCommand( $wmenu, "Boise ID", sub { $site="KBOI" } ); AddCommand( $wmenu, "Cheyenne WY", sub { $site="KCYS" } ); AddCommand( $wmenu, "Glasgow MT", sub { $site="KGGW" } ); AddCommand( $wmenu, "Great Falls MT", sub { $site="KTFX" } ); AddCommand( $wmenu, "Medford OR", sub { $site="KMFR" } ); AddCommand( $wmenu, "Missoula MT", sub { $site="KMSO" } ); AddCommand( $wmenu, "Pendleton OR", sub { $site="KPDT" } ); AddCommand( $wmenu, "Portland OR", sub { $site="KPQR" } ); AddCommand( $wmenu, "Pocatello ID", sub { $site="KPIH" } ); AddCommand( $wmenu, "Riverton WY", sub { $site="KRIW" } ); AddCommand( $wmenu, "Seattle WA", sub { $site="KSEW" } ); AddCommand( $wmenu, "Spokane WA", sub { $site="KOTX" } ); AddCascade( $smenu, "Northwest", $wmenu ); $wmenu = AddDropMenu( $smenu ); AddCommand( $wmenu, "Denver CO", sub { $site="KBOU" } ); AddCommand( $wmenu, "Elko NV", sub { $site="KLKN" } ); AddCommand( $wmenu, "Eureka CA", sub { $site="KEKA" } ); AddCommand( $wmenu, "Flagstaff AZ", sub { $site="KFGZ" } ); AddCommand( $wmenu, "Grand Junction CO", sub { $site="KGJT" } ); AddCommand( $wmenu, "Hanford CA", sub { $site="KHNX" } ); AddCommand( $wmenu, "Las Vegas NV", sub { $site="KVEF" } ); AddCommand( $wmenu, "Los Angeles CA", sub { $site="KLOX" } ); AddCommand( $wmenu, "Monterrey CA", sub { $site="KMTR" } ); AddCommand( $wmenu, "Phoenix AZ", sub { $site="KPSR" } ); AddCommand( $wmenu, "Pueblo CO", sub { $site="KPUB" } ); AddCommand( $wmenu, "Reno NV", sub { $site="KREV" } ); AddCommand( $wmenu, "Sacramento CA", sub { $site="KSTO" } ); AddCommand( $wmenu, "Salt Lake City UT", sub { $site="KSLC" } ); AddCommand( $wmenu, "San Diego CA", sub { $site="KSGX" } ); AddCommand( $wmenu, "Tucson AZ", sub { $site="KTWC" } ); AddCascade( $smenu, "Southwest", $wmenu ); $bar->Label( -text => "Ident" ) ->pack( -side => "left" ); $bar->Entry( -textvariable => \$ident, -relief => "sunken", -width => 10 ) ->pack( -side => "left" ); $hmenu = $bar->Menubutton( -text => "Num Hours", -tearoff => 0 ) ->pack( -side => "left" ); $hmenu->radiobutton( -label => "-1", -variable => \$nhour, -value => -1 ); $hmenu->radiobutton( -label => "-2", -variable => \$nhour, -value => -2 ); $hmenu->radiobutton( -label => "-3", -variable => \$nhour, -value => -3 ); $hmenu->radiobutton( -label => "-6", -variable => \$nhour, -value => -6 ); $hmenu->radiobutton( -label => "-12", -variable => \$nhour, -value => -12 ); $hmenu->radiobutton( -label => "-18", -variable => \$nhour, -value => -18 ); $hmenu->radiobutton( -label => "-24", -variable => \$nhour, -value => -24 ); $hmenu->radiobutton( -label => "-48", -variable => \$nhour, -value => -48 ); $omenu = $bar->Menubutton( -text => "Options", -tearoff => 0 ) ->pack( -side => "left" ); $omenu->checkbutton( -label => "dollar", -variable => \$pdollar ); $omenu->checkbutton( -label => "blank", -variable => \$pblank ); $omenu->checkbutton( -label => "3blank", -variable => \$p3blank ); $omenu->checkbutton( -label => "equal", -variable => \$pequal ); $omenu->checkbutton( -label => "first", -variable => \$pfirst ); $omenu->checkbutton( -label => "last", -variable => \$plast ); $omenu->checkbutton( -label => "all hdr", -variable => \$allhdr ); $mainf = $mw->Frame->pack( -side => "top", -fill => "x" ); $list = $mainf->Scrolled( "Listbox", -scrollbars => "e", -width => 80, -height => 8 ) ->pack( -side => "top", -fill => "x" ); $list->packAdjust(); $list->bind( '', \&Run ); $text = $mainf->Scrolled( "Text", -scrollbars => "se", -width => 80, -height => 25 ) ->pack( -side => "top", -fill => "both", -expand => 1 ); MainLoop;