#!/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

if {[wm geometry .] == "1x1+0+0"} {
wm geometry . +10+10
}
set args $argv
set buttonOrientation horizontal
set fontSize regular
set includeP0s 1
set includeIDs 1
set includeBMs 1
set initialConfig ""
set applicationList DCOrbitCorrection

set allowedApplications [list DCOrbitCorrection FastDCOrbitCorrection RTFeedback Steering]
if {[APSStrictParseArguments {buttonOrientation \
                                includeP0s includeIDs includeBMs \
                                initialConfig fontSize \
                                applicationList}] } {
    APSAlertBox [APSUniqueName .] \
      -errorMessage "Invalid arguments."
}

foreach application $applicationList {
    if {[lsearch -exact $allowedApplications $application]==-1} {
        APSAlertBox [APSUniqueName .] \
          -errorMessage "Application $application not allowed."
    }
}

set tabs(DCOrbitCorrection) {"Horizontal DC" "Vertical DC" "rf Frequency"}
set tabs(RTFeedback) {"Horizontal FB" "Vertical FB"}
set tabs(FastDCOrbitCorrection) {"Fast Horizontal DC" "Fast Vertical DC"}

# The widgets will be allocated in the same order as they appear in 
# the command line argument. Then we need to determine the 
# tab indexes for each application.
set iwidget 0
foreach application $applicationList {
    lappend tabList $tabs($application)
    # starting widget index for this group of tabs.
    set TabIndex($application) $iwidget
    # starting widget index for group of tabs of next application
    set iwidget [expr $iwidget + [llength $tabs($application)]]
}

if [info exists env(PRINTER)] {
    set printerName $env(PRINTER)
} else {
    set printerName mcr1
}

APSApplication . -name SRHVOrbitCorrectionConfig:$application -version 1 \
  -overview {This application allows configuration of SR $application.  You may choose the lattice, which monitors and correctors to use, and restrict your choices to only good components.}

set win .userFrame

set widgetList [APSTabFrame .tabs -parent $win -width 1100 -height 850 \
                  -labelList [join $tabList] -label ""]

if {-1<[lsearch $applicationList DCOrbitCorrection]} {
    set application DCOrbitCorrection
    set iwidget $TabIndex($application)
    APSSRConfigPlaneOrbitCorrection .hconfig -parent [lindex $widgetList $iwidget] \
      -rootname hconfig \
      -fileFrame 1 -buttonOrientation $buttonOrientation -includeP0s $includeP0s \
      -includeIDs $includeIDs -includeBMs 0 -plane h \
      -application $application
    incr iwidget

    APSSRConfigPlaneOrbitCorrection .vconfig -parent [lindex $widgetList $iwidget] \
      -rootname vconfig \
      -fileFrame 1 -buttonOrientation $buttonOrientation -includeP0s $includeP0s \
      -includeIDs $includeIDs -includeBMs $includeBMs -plane v \
      -application $application
    incr iwidget

    APSSRConfigPlaneOrbitCorrection .rfconfig -parent [lindex $widgetList $iwidget] \
      -rootname rfconfig \
      -fileFrame 1 -buttonOrientation $buttonOrientation -includeP0s $includeP0s \
      -includeIDs 0 -includeBMs 0 -plane rf \
      -application $application
    incr iwidget 
}

if {-1<[lsearch $applicationList RTFeedback]} {
    set application RTFeedback
    set iwidget $TabIndex($application)
    APSSRConfigPlaneOrbitCorrection .hfbconfig -parent [lindex $widgetList $iwidget] \
      -rootname hfbconfig \
      -fileFrame 1 -buttonOrientation $buttonOrientation -includeP0s 1 \
      -includeIDs 1 -includeBMs 1 -plane h \
      -application RTFeedback
    incr iwidget 

    APSSRConfigPlaneOrbitCorrection .vfbconfig -parent [lindex $widgetList $iwidget] \
      -rootname vfbconfig \
      -fileFrame 1 -buttonOrientation $buttonOrientation -includeP0s 1 \
      -includeIDs 1 -includeBMs 1 -plane v \
      -application RTFeedback
    incr iwidget 

}

if {-1<[lsearch $applicationList FastDCOrbitCorrection]} {
    set application FastDCOrbitCorrection
    set iwidget $TabIndex($application)
    APSSRConfigPlaneOrbitCorrection .hfdcconfig -parent [lindex $widgetList $iwidget] \
      -rootname hfdcconfig \
      -fileFrame 1 -buttonOrientation $buttonOrientation -includeP0s $includeP0s \
      -includeIDs $includeIDs -includeBMs $includeBMs -plane h \
      -application $application
    incr iwidget 

    APSSRConfigPlaneOrbitCorrection .vfdcconfig -parent [lindex $widgetList $iwidget] \
      -rootname vfdcconfig \
      -fileFrame 1 -buttonOrientation $buttonOrientation -includeP0s $includeP0s \
      -includeIDs $includeIDs -includeBMs $includeBMs -plane v \
      -application $application
    incr iwidget 

}

