#!/usr/bin/sh
# \
exec oagwish "$0" "$@"

set auto_path [linsert $auto_path 0 /usr/local/oag/apps/lib/$env(HOST_ARCH)]
set auto_path [linsert $auto_path 0  /usr/local/oag/lib_patch/$env(HOST_ARCH)]
APSDebugPath

set CVSRevisionAuthor "\$Revision: 1.4 $ \$Author: soliday $"

proc changeSelection {} {
    global w programNames programPages
    set name [$w.programs get [$w.programs curselection]]
    catch {[exec $name]} output
    $w.usage configure -state normal
    $w.usage delete 1.0 end
    $w.usage insert 1.0 $output
    $w.usage configure -state disabled
    $w.info configure -state normal
    $w.info delete 1.0 end
    $w.info tag delete webpage
    $w.info insert 1.0 "No manual on the Web\n"
    foreach program $programNames page $programPages {
	if {$name == $program} {
	    if {$page != "n"} {
		$w.info delete 1.0 end
		if {$page == "e"} {
		    $w.info insert 1.0 "ops.aps.anl.gov/manuals/EPICStoolkit/\n"
		} else {
		    $w.info insert 1.0 "ops.aps.anl.gov/manuals/SDDStoolkit/\n"
		}
		$w.info tag add webpage 1.0 1.end
		$w.info tag configure webpage -foreground blue -underline true
		$w.info tag bind webpage <Button-1> {
		    loadWebPage -url [$w.info get webpage.first webpage.last]
		}
		$w.info tag bind webpage <Enter> {
		    $w.info configure -cursor hand2
		}
		$w.info tag bind webpage <Leave> {
		    $w.info configure -cursor xterm
		}
	    }
	}
    }
    $w.info configure -state disabled
}

proc loadWebPage {args} {
    global env tcl_platform
    set url ""
    APSStrictParseArguments {url}
    if {[string range $tcl_platform(os) 0 6] == "Windows"} { return }
    if {![regexp -nocase netscape [exec ps -fed | grep $env(USER)]]} {
	exec netscape http://$url &
    } else {
	set openURL "openURL\(${url}\)"
	exec netscape -remote $openURL &
    }
}


APSApplication . -name "APS SDDS Epics Help" -version $CVSRevisionAuthor \
    -overview "This program displays help for the APS SDDS tools\
and APS SDDS Complient EPICS tools" 

set w .userFrame
grid [label $w.labelPrograms -text "Programs"] \
    -row 0 -column 0 -pady 2
grid [label $w.labelInfo -text "Info"] \
    -row 0 -column 3 -pady 2
grid [listbox $w.programs -width 25 -height 10 -yscrollcommand "$w.s1 set"] \
    -row 1 -column 0 -sticky nsew
grid [scrollbar $w.s1 -orient vertical -command "$w.programs yview"] \
    -row 1 -column 1 -sticky ns
grid [frame $w.spacer1 -width 4] \
    -row 1 -column 2 -sticky nsew
grid [text $w.info -width 60 -height 10 -state disabled -yscrollcommand "$w.s2 set"] \
    -row 1 -column 3 -sticky nsew
grid [scrollbar $w.s2 -orient vertical -command "$w.info yview"] \
    -row 1 -column 4 -sticky ns
grid [label $w.labelUsage -text "Usage"] \
    -row 2 -column 0 -columnspan 5 -pady 2
grid [text $w.usage -width 85 -height 20 -state disabled -wrap word \
	  -yscrollcommand "$w.s3 set" -xscrollcommand "$w.s4 set"] \
    -row 3 -column 0 -columnspan 4 -sticky nsew
grid [scrollbar $w.s3 -orient vertical -command "$w.usage yview"] \
    -row 3 -column 4 -sticky ns
grid [scrollbar $w.s4 -orient horizontal -command "$w.usage xview"] \
    -row 4 -column 0 -columnspan 4 -stick ew
foreach row "1 3" weight "1 3" {
    grid rowconfigure $w $row -weight $weight
}
foreach column "0 3" {
    grid columnconfigure $w $column -weight 1
}
bindtags $w.programs "Listbox . all $w.programs"
bind $w.programs <ButtonRelease-1> {changeSelection}
set programNamesAndWebPages {"BPS16monitor n" "burtrb e" "burtwb e" "citi2sdds n" "csv2sdds s" "hpif2sdds n" "hpwf2sdds n" "image2sdds n" "knobconfig e" "lba2sdds n" "mcs2sdds n" "mpl2sdds s" "MV20image2sdds n" "raw2sdds n" "sdds2math s" "sdds2mpl s" "sdds2spreadsheet s" "sdds2stream s" "sddsalarmlog e" "sddsbreak s" "sddscaramp n" "sddschanges s" "sddscheck s" "sddscollapse s" "sddscollect s" "sddscombine s" "sddscongen s" "sddscontour s" "sddscontrollaw e" "sddsconvert s" "sddsconvolve n" "sddscorrelate s" "sddsderef s" "sddsderiv s" "sddsdigfilter s" "sddsdistest n" "sddsendian s" "sddsenvelope s" "sddsexpand s" "sddsexperiment e" "sddsexpfit s" "sddsfdfilter s" "sddsfeedforward e" "sddsfft s" "sddsgfit s" "sddshist s" "sddshist2d s" "sddsinteg s" "sddsinterp s" "sddsmatrixmult n" "sddsminterp n" "sddsmonitor e" "sddsmselect n" "sddsmultihist s" "sddsmxref n" "sddsoutlier s" "sddspeakfind s" "sddspfit s" "sddsplot s" "sddsprintout s" "sddsprocess s" "sddspseudoinverse s" "sddsquery s" "sddsregroup s" "sddsrowstats s" "sddsrunstats s" "sddsselect s" "sddssequence s" "sddsshift n" "sddssinefit n" "sddsslopes s" "sddssmooth s" "sddssnapshot e" "sddssort s" "sddssplit s" "sddsstatmon e" "sddstimeconvert s" "sddstranspose s" "sddsvexperiment e" "sddsvmonitor e" "sddsvslopes s" "sddswmonitor e" "sddsxref s" "sddszerofind s" "squishPVs e" "tek2sdds n" "TFS2sdds n" "toggle e"}
foreach item $programNamesAndWebPages {
    lappend programNames [lindex $item 0]
    lappend programPages [lindex $item 1]
}
eval $w.programs insert end $programNames
