# $Source: /usr/local/SimSoft/Sfx3D/src/gts/gts08.tcl,v $
# $Revision: 1.2 $
# $Author: baum $
# $Date: 2001/11/29 15:18:10 $
#
# Login name of the user who locked the revision
# $Locker:  $
# Tag name used to checkout the file
# $Name: Release-14 $
# State assigned to revision
# $State: Exp $
#
#
# $Log: gts08.tcl,v $
# Revision 1.2  2001/11/29 15:18:10  baum
# -Realzeitsteuerung eingebaut
# -Handsteuerung eingebaut
#

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# ++++++++++++  I N I T : Bezeichner Bausteintypen ++++++++++++++++++++++++++
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

proc InitBasisNamen { } {
  global GTS 
  set GTS(0,Name)  "Layout"
  set GTS(1,Name)  "Quelle"
  set GTS(2,Name)  "Senke"
  set GTS(3,Name)  "Stauförderer"
  set GTS(4,Name)  "Weiche"
  set GTS(5,Name)  "VWagen"
  set GTS(6,Name)  "Gasse"
  set GTS(7,Name)  "Maschine"
  set GTS(8,Name)  "Drehpuffer"
  set GTS(9,Name)  "MehrfachLader"
  set GTS(10,Name) "Laufkran"
  set GTS(12,Name) "Abstr.Regaleinheit"
  set GTS(14,Name) "Stauf. Kurve Rechts"
  set GTS(15,Name) "Stauf. Kurve Links"
  set GTS(16,Name) "Sammler"
  set GTS(17,Name) "Regaleinheit"
  set GTS(18,Name) "Regalverwalter"
  set GTS(19,Name) "NcPoolverwalter"
  set GTS(20,Name) "Vereinzeler"
  set GTS(23,Name) "Kettenförderer"
  set GTS(24,Name) "Querförderer"
  set GTS(25,Name) "Kommissionierer"
  set GTS(26,Name) "KomVerwalter"
  set GTS(28,Name) "FtsLadepool"
  set GTS(29,Name) "FtsLadeplatz"
  set GTS(30,Name) "FtsVerwalter"
  set GTS(31,Name) "FtsWagen"
  set GTS(32,Name) "FtsEinbahnstrecke"
  set GTS(33,Name) "FtsZweibahnstrecke"
  set GTS(34,Name) "FtsKurve"
  set GTS(35,Name) "FtsAbzweigung"
  set GTS(36,Name) "FtsKreuzung"
  set GTS(37,Name) "FtsEinbahnMitInhalt"
  set GTS(38,Name) "FtsZweibahnMitInhalt"
  set GTS(39,Name) "FtsEndstrecke"
}
#  ENDE InitBasisNamen


# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# ++++++++++++  D I A L O G :  Baustein Parameter  ++++++++++++++++++++++++++
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

proc TTP.AllgemeinParameter { W was } {
   global BSTNR ENTRYS BSTATUS   
   set Werte  $W.rahmen  
   catch {destroy $W.rahmen}
   frame $Werte -relief solid  -borderwidth 1
   pack  $Werte -expand yes -fill both  -padx 5 -pady 5        
   set inputs [DlgLogik BSTPARAMETER GETALGWERTE 0 0 $BSTNR]
   set inp [lindex $inputs 0]

   set f [dialog_lframe $Werte "Benennung"]
   set e [dialog_entry $f "" 0 "" -20 [lindex $inputs 0] "String" $was]
   lappend ENTRYS(ALGWERTE) $e
   
   frame $Werte.lage 
   pack  $Werte.lage -expand yes -fill both 
   
   set f [dialog_lframe $Werte.lage "Position" "left"]
   set e [dialog_entry $f "X:" 2 "m" 10 [lindex $inputs 1] "Float" $was]
   lappend ENTRYS(ALGWERTE) $e
   set e [dialog_entry $f "Y:" 2 "m" 10 [lindex $inputs 2] "Float" $was]
   lappend ENTRYS(ALGWERTE) $e
   set e [dialog_entry $f "Z:" 2 "m" 10 [lindex $inputs 3] "Float" $was]
   lappend ENTRYS(ALGWERTE) $e
   
   set f [dialog_lframe $Werte.lage "Lage" "top"]
   set e [dialog_entry $f "X-Winkel:" 10 "Grad" 10 [lindex $inputs 4] "Int" $was top]
   lappend ENTRYS(ALGWERTE) $e
   set e [dialog_entry $f "Y-Winkel:" 10 "Grad" 10 [lindex $inputs 5] "Int" $was top]
   lappend ENTRYS(ALGWERTE) $e
	set e [dialog_entry $f "Z-Winkel:" 10 "Grad" 10 [lindex $inputs 6] "Int" $was top]
   lappend ENTRYS(ALGWERTE) $e


#----------------------------------------------------------------------------   
   #set ENTRYS(BST)  [lindex $inputs 5]
   # rudi: 09-05-03
   set ENTRYS(BST)  [lindex $inputs 7]
   set ff [dialog_lframe $Werte.lage "Grafik" "top"]
   checkbutton $ff.cb -text "Baustein auswählen" -variable ENTRYS(BST) -anchor w \
                -command { list [TTP.setButtonActiv ALG] }
   pack $ff.cb -side top -fill x -padx 5 -pady 5
#----------------------------------------------------------------------------   
   
   set button [MachButton $Werte "Übernehmen" 10]
   $button.1 config -state disabled 
   set BSTATUS($was) $button.1
   bind $button.1 <ButtonRelease-1> {
      if {[%W cget -state] == "active" } {
        global ENTRYS GTS
        set werte {}
        foreach i $ENTRYS(ALGWERTE) { lappend werte [$i get] }
        lappend werte $ENTRYS(BST)
        DlgLogik BSTPARAMETER SETALGWERTE $werte [llength $werte] $BSTNR
        after idle %W config -state disabled 
      }
   }
}
#  ENDE TTP.AllgemeinParameter

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TTP.BausteinParameter { W labels lbreite was } {
   global BSTNR ENTRYS BSTATUS
   set Werte  $W.rahmen  
   catch {destroy $W.rahmen}
   frame $Werte -relief solid  -borderwidth 1
   pack  $Werte -expand yes -fill both  -padx 5 -pady 5        

   set tmp [split $W .]
   set aktfenster [lindex $tmp  [lsearch -glob $tmp *Werte]]
   set inputs [DlgLogik BSTPARAMETER GET[string toupper $aktfenster] 0 0 $BSTNR]
   
   set index 0
   set ENTRYS($aktfenster) {}
   
   foreach i $labels {
     set inp     [lindex $inputs $index]
     set tt      [lindex $i 1]
     set einheit [lindex $i 2]

     if {[lindex $i 0] == "S"} { 
        set e [dialog_entry $Werte "$tt:" $lbreite $einheit 10 $inp "String" $was]
     } elseif {[lindex $i 0] == "F"} {  
       set str $inp
       if {[regexp {(.)+$} $inp] } { set str [string trimright $inp 0] }
       if {([string index $str [expr [string length $str] - 1]] == ".") } {
           append str "0" 
       }
       set e [dialog_entry $Werte "$tt:" $lbreite $einheit 10 $str "Float" $was]
     } elseif {[lindex $i 0] == "I"} {  
       set e [dialog_entry $Werte "$tt:" $lbreite $einheit 10 $inp "Int" $was]
     } else {
       put_win "Fehler im String = $inp\n"
     }
     lappend ENTRYS($aktfenster) $e
     incr index
   }
   
   set button [MachButton $Werte "Übernehmen" 10]
   set BSTATUS($was) $button.1
   $button.1 config -state disabled 
   set BSTATUS($was) $button.1   
   bind $button.1 <ButtonRelease-1> {
     if {[%W cget -state] == "active" } {
       global ENTRYS 
       set tmp [split %W .]
       set aktfenster [lindex $tmp  [lsearch -glob $tmp *Werte]]
       set werte {}
       foreach i $ENTRYS($aktfenster) { lappend werte [$i get] }
       DlgLogik BSTPARAMETER SET[string toupper $aktfenster] $werte [llength $werte] $BSTNR
       after idle %W config -state disabled 
     }
   }
}
#  ENDE TTP.BausteinParameter

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TTP.setButtonActiv { was } {
  global BSTATUS   
  $BSTATUS($was) config -state normal 
}
#  ENDE TTP.setButtonActiv

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TTP.DlgMesswerte {  W labels lbreite was} {
   global BSTNR ENTRYS BSTATUS
   set Werte  $W.rahmen  
   catch {destroy $W.rahmen}
   frame $Werte -relief solid  -borderwidth 1 -width 30
   pack  $Werte -expand yes -fill both  -padx 5 -pady 5        
   
   set f [dialog_lframe $Werte "Erfassungsarten"]
   
   set tmp [split $W .]
   set aktfenster [lindex $tmp  [lsearch -glob $tmp *Werte]]
   set inputs [DlgLogik BSTPARAMETER GET[string toupper $aktfenster] 0 0 $BSTNR]
   
   set index 0
   set ENTRYS($aktfenster) {}

   foreach i $labels {
     set inp     [lindex $inputs $index]
     set tt      [lindex $i 1]
     set einheit [lindex $i 2]

     if {[lindex $i 0] == "C"} { 
       set e $f.label$index   
       set ENTRYS(DLZ$e) $inp
       checkbutton $f.label$index -text $tt -variable ENTRYS(DLZ$e) -anchor w \
                   -command { TTP.setButtonActiv TMW }
     }
     lappend ENTRYS($aktfenster) $e
     pack $f.label$index -side top -fill x -padx 5 -pady 5
     incr index
   }
   
   set button [MachButton $Werte "Übernehmen" 10]
   $button.1 config -state disabled 
   set BSTATUS(TMW) $button.1   
   bind $button.1 <ButtonRelease-1> {
     if {[%W cget -state] == "active" } {
       global ENTRYS 
       set tmp [split %W .]
       set aktfenster [lindex $tmp  [lsearch -glob $tmp *Werte]]
       set werte {}
       foreach i $ENTRYS($aktfenster) { lappend werte $ENTRYS(DLZ$i) }
       DlgLogik BSTPARAMETER SET[string toupper $aktfenster] $werte [llength $werte] $BSTNR
       after idle %W config -state disabled 
     }
   }
}
#  ENDE TTP.DlgMesswerte

proc TTP.NeueBausteinParameter { } {
   global GTS ENTRYS BSTTYP
   set ENTRYS(algWerte) {}
   TTP.AllgemeinParameter $GTS(nb1) ALG
       
   set ENTRYS(ttpWerte) {}
   TTP.BausteinParameter $GTS(nb2) $GTS($BSTTYP,TTP) 20 TTP
   TTP.SeiteAktivieren $GTS(NBook) ttpWerte $BSTTYP TTP
     
   set ENTRYS(tstWerte) {}
   TTP.BausteinParameter $GTS(nb3) $GTS($BSTTYP,TST) 20 TST
   TTP.SeiteAktivieren $GTS(NBook) tstWerte $BSTTYP TST 
        
   set ENTRYS(tmwWerte) {}
   TTP.DlgMesswerte $GTS(nb4) $GTS($BSTTYP,TMW) 20 TMW
   TTP.SeiteAktivieren $GTS(NBook) tmwWerte $BSTTYP TMW
        
   set ENTRYS(vbrWerte) {}
   TTP.BausteinParameter $GTS(nb5) $GTS($BSTTYP,VBR) 20 VBR
   TTP.SeiteAktivieren $GTS(NBook) vbrWerte $BSTTYP VBR
}
##  TTP.NeueBausteinParameter 

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TTP.SeiteAktivieren {f seite typ art } {
   global GTS
    if {($GTS($typ,$art) == "")} { 
       $f pageconfigure $seite -state disabled 
    } else {
       $f pageconfigure $seite -state normal 
    }
}
#  ENDE TTP.SeiteAktivieren

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TTP.Dialog { bsttyp } {
   global GTS BSTNR Confirm 
   TTP.Init
   set dlg [dialog_create $GTS($bsttyp,Name) Dialog "Info" "Schliessen"]
   set GTS(EF1) [dialog_entry $dlg "Baustein:" 14 "" 10 $BSTNR "Int"]
   dialog_focus $GTS(EF1)
   
   set GTS(NBook) [dialog_nbook $dlg]
   set GTS(nb1) [dialog_add_nbook $GTS(NBook) algWerte "Allgemein"]
   set GTS(nb2) [dialog_add_nbook $GTS(NBook) ttpWerte "Technik"]
   set GTS(nb3) [dialog_add_nbook $GTS(NBook) tstWerte "Steuerung"]
   set GTS(nb4) [dialog_add_nbook $GTS(NBook) tmwWerte "Messwerte"]
   set GTS(nb5) [dialog_add_nbook $GTS(NBook) vbrWerte "Verbrauch"]
   
   TTP.NeueBausteinParameter
   
   dialog_wait $dlg
   while {$Confirm($dlg) == "1"} { 
     global GTS BSTNR BSTTYP
     set lbstnr [$GTS(EF1) get]
     set lbsttyp [DlgLogik BSTPARAMETER BSTNR 0 0 $lbstnr];
     if { !($lbsttyp == "") } {
       set BSTTYP $lbsttyp
       set BSTNR  $lbstnr
       wm title $dlg $GTS($BSTTYP,Name)
       TTP.NeueBausteinParameter
      } else {
       $GTS(EF1) delete 0 end
       $GTS(EF1) insert 0 $BSTNR
      }
      dialog_wait $dlg
   }
   dialog_destroy $dlg   
   
   TTP.Exit
}
#  ENDE TTP.Dialog

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TTP.Init { } {
  global GTS 
   
  set GTS(0,TTP)  ""
  set GTS(1,TTP)  {{F Übernahmezeit min}}
  set GTS(2,TTP)  {{F Übernahmezeit min}}
  set GTS(3,TTP)  {{F Übernahmezeit min}
                   {F Rollgeschw.    m/min}
                   {F Länge         m}
                   {I Kapazität    Stck}
                  }
  set GTS(4,TTP)  {{F Übernahmezeit min}
                   {F Drehgeschw.    Grd/min}
                  }
  set GTS(5,TTP)  {{F Übernahmezeit min}
                   {F Fahrgeschw.    m/min}
                  }
  set GTS(6,TTP)  {{F Übernahmezeit min}
                   {I Belegung      Stck}
                   {I Kapazität    Stck}
                  }
  set GTS(7,TTP)  {{F Übernahmezeit min}}
  set GTS(8,TTP)  {{F Übernahmezeit min}
                   {F Drehgeschw.    Grd/min}
                   {I Kapazität     Stck}
                  }
  set GTS(9,TTP) {{F Übernahmezeit  min}
                   {F X.Fahrgeschw.    m/min}
                   {F X.Fahrbeschl.    m/s²}
                   {F X.Fahrverzög.    m/s²}
                   {F Y.Fahrgeschw.    m/min}
                   {F Y.Fahrbeschl.    m/s²}
                   {F Y.Fahrverzög.    m/s²}
                   {F Hubgeschw.       m/min}
                   {F Hubbeschl.       m/s²}
                   {F Hubverzög.       m/s²}
                   {I Querrichtung     1=sperren}
                  }
  set GTS(10,TTP) {{F Übernahmezeit  min}
                   {F X.Fahrgeschw.    m/min}
                   {F X.Fahrbeschl.    m/s²}
                   {F X.Fahrverzög.    m/s²}
                   {F Y.Fahrgeschw.    m/min}
                   {F Y.Fahrbeschl.    m/s²}
                   {F Y.Fahrverzög.    m/s²}
                   {F Hubgeschw.       m/min}
                   {F Hubbeschl.       m/s²}
                   {F Hubverzög.       m/s²}
                  }
  set GTS(12,TTP) {{F Übernahmezeit  min}
                   {I Kapazität      Stck}
                  }
  set GTS(14,TTP) {{F Übernahmezeit min}
                   {F Rollgeschw.    m/min}
                   {F Länge         m}
                   {I Kapazität    Stck}
                  }
  set GTS(15,TTP) {{F Übernahmezeit min}
                   {F Rollgeschw.    m/min}
                   {F Länge         m}
                   {I Kapazität    Stck}
                  }
  set GTS(16,TTP) {{F Übernahmezeit  min}}
  set GTS(17,TTP) {{F Übernahmezeit  min}
                   {I Kapazität      Stck}
                  }
  set GTS(18,TTP) ""
  set GTS(19,TTP) ""
  set GTS(20,TTP) {{F Übernahmezeit  min}}
  set GTS(23,TTP) {{F Kettengeschwindigkeit m/min}
                   {F Länge                 m}
                   {I Kapazität             Stck}
                   {I Sicherheitsabstand    Stck}
                  }
  set GTS(24,TTP) {{F Übernahmezeit        min}
                   {F "Hub- bzw. Senkzeit" min}
                   {I Sicherheitsabstand   Stck}
                  }
  set GTS(25,TTP) {{F Übernahmezeit    min}
                   {I Eingangsplätze  Stck}
                   {I Ausgangsplätze  Stck}
                  }
  set GTS(26,TTP) ""
  set GTS(28,TTP) ""
  set GTS(29,TTP) ""
  set GTS(30,TTP) ""
  set GTS(31,TTP) {{F Übernahmezeit  min}
                   {F Fahrgeschw.    m/min}
                  }
  set GTS(32,TTP) {{F "max. Geschw." m/min}}
  set GTS(33,TTP) {{F "max. Geschw." m/min}}
  set GTS(34,TTP) {{F "max. Geschw." m/min}}
  set GTS(35,TTP) {{F "max. Geschw." m/min}}
  set GTS(36,TTP) {{F "max. Geschw." m/min}}
  set GTS(37,TTP) {{F "max. Geschw." m/min}}
  set GTS(38,TTP) {{F "max. Geschw." m/min}}
  set GTS(39,TTP) {{F "max. Geschw." m/min}}
  
  set GTS(0,TST)  ""
  set GTS(1,TST)  {{I Strategie          ""}
                   {I Priorität         ""}
                   {F Wartezeitschwelle min}
                   {I Direktavis         ""}
                   {I Indirektavis       ""}
                  } 
  set GTS(2,TST)  {{I Strategie          ""}
                   {I Priorität         ""}
                   {F Wartezeitschwelle min}
                   {I Direktavis         ""}
                   {I Indirektavis       ""}
                  } 
  set GTS(3,TST)  {{I Strategie          ""}
                   {I Priorität         ""}
                   {F Wartezeitschwelle min}
                  } 
  set GTS(4,TST)  {{I Strategie          ""}
                   {I Priorität         ""}
                   {F Wartezeitschwelle min}
                  } 
  set GTS(5,TST)  {{I Strategie          ""}
                   {I Priorität         ""}
                   {F Wartezeitschwelle min}
                  } 
  set GTS(6,TST)  {{I Strategie          ""}
                   {I Priorität         ""}
                   {F Wartezeitschwelle min}
                  } 
  set GTS(7,TST)  {{I Strategie          ""}
                   {I Priorität         ""}
                   {F Wartezeitschwelle min}
                   {I Direktavis         ""}
                   {I Indirektavis       ""}
                  } 
  set GTS(8,TST)  {{I Strategie          ""}
                   {I Priorität         ""}
                   {F Wartezeitschwelle min}
                  } 
  set GTS(9,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                  }  
  set GTS(10,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                  } 
  set GTS(12,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(14,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(15,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(16,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                    {I Direktavis         ""}
                    {I Indirektavis       ""}
                   } 
  set GTS(17,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(18,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                    {I Direktavis         ""}
                    {I Indirektavis       ""}
                   } 
  set GTS(19,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                    {I Direktavis         ""}
                    {I Indirektavis       ""}
                   } 
  set GTS(20,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                    {I Direktavis         ""}
                    {I Indirektavis       ""}
                   } 
  set GTS(23,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(24,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(25,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                    {I Direktavis         ""}
                    {I Indirektavis       ""}
                   } 
  set GTS(26,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(28,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(29,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(30,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(31,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(32,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(33,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(34,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(35,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(36,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(37,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(38,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  set GTS(39,TST)  {{I Strategie          ""}
                    {I Priorität         ""}
                    {F Wartezeitschwelle min}
                   } 
  
  set GTS(0,TMW)  ""
  set GTS(1,TMW)  {{C "Auslastung"    ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(2,TMW)  {{C "Auslastung"    ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(3,TMW)  {{C "Auslastung"    ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(4,TMW)  {{C "Auslastung"    ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(5,TMW)  {{C "Auslastung"    ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(6,TMW)  {{C "Auslastung"    ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(7,TMW)  {{C "Auslastung"    ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(8,TMW)  {{C "Auslastung"    ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(9,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(10,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(12,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(14,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(15,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(16,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(17,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(18,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(19,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(20,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }                
  set GTS(23,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(24,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(25,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(26,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(28,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(29,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(30,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(31,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(32,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(33,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(34,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(35,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(36,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(37,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(38,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  set GTS(39,TMW)  {{C "Auslastung"   ""}
                   {C "Belegung"      ""}
                   {C "Störung"       ""}
                  }
  
  set GTS(0,VBR)  ""
  set GTS(1,VBR)  ""
  set GTS(2,VBR)  ""
  set GTS(3,VBR)  ""
  set GTS(4,VBR)  ""
  set GTS(5,VBR)  ""
  set GTS(6,VBR)  ""
  set GTS(7,VBR)  ""
  set GTS(8,VBR)  ""
  set GTS(9,VBR)  ""
  set GTS(10,VBR) ""
  set GTS(12,VBR) ""
  set GTS(14,VBR) ""
  set GTS(15,VBR) ""
  set GTS(16,VBR) ""
  set GTS(17,VBR) ""
  set GTS(18,VBR) ""
  set GTS(19,VBR) ""
  set GTS(20,VBR) ""
  set GTS(23,VBR) ""
  set GTS(24,VBR) ""
  set GTS(25,VBR) ""
  set GTS(26,VBR) ""
  set GTS(28,VBR) {{F Gesamtladestärke KW}}
  set GTS(29,VBR) {{F Ladestärke       KW}}
  set GTS(30,VBR) ""
  set GTS(31,VBR) {{F Leistung          KW}
                   {F "min. Kapazität" KWmin}
                   {F "akt. Kapazität" KWmin}
                   {F "max. Kapazität" KWmin}
                   {F Sollkapazität    KWmin}
                  }
  set GTS(32,VBR) ""
  set GTS(33,VBR) ""
  set GTS(34,VBR) ""
  set GTS(35,VBR) ""
  set GTS(36,VBR) ""
  set GTS(37,VBR) ""
  set GTS(38,VBR) ""
  set GTS(39,VBR) ""
  set GTS(EF1) ""
}
#  ENDE TTP.Init

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TTP.Exit { } {
  global GTS ENTRYS BSTATUS
  foreach i { 0 1 2 3 4 5 6 7 8 9 10 12 14 15 16 17 18 19 20 23 24 25 26 
              28 29 30 31 32 33 34 35 36 37 38 39 } {
    unset GTS($i,TTP)
    unset GTS($i,TST)
    unset GTS($i,TMW)
    unset GTS($i,VBR)
  }  
  unset GTS(EF1)
  unset ENTRYS
  unset BSTATUS
}
#  ENDE TTP.Exit

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# ++++++++++++  D I A L O G :  Pool Verwaltung  +++++++++++++++++++++++++++++
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

proc TPV.ButtonLeiste { W } {
   frame $W
   set breite 2
   frame $W.space -height 2m
   button $W.links -width $breite -text ">" 
   button $W.kpllinks -width $breite -text ">>"
   button $W.rechts -width $breite -text "<"
   button $W.kplrechts -width $breite -text "<<"
   pack   $W.space $W.links $W.kpllinks $W.rechts $W.kplrechts -padx 1m -pady 1m    
}
# ENDE TPV.ButtonLeiste

# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TPV.Liste { W Label } {
   frame $W 
   frame $W.f -relief sunken -borderwidth 2          
   label $W.label -text $Label -anchor sw 
   set ListBox [dialog_lbox $W.f]
   pack $W.label -fill both -expand yes -padx 10
   pack $W.f     -fill both -expand yes -padx 10 
   return $ListBox
}
# ENDE TPV.Liste

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TPV.kplVerschieben { button von nach } {
     set zeile [ $von get 0 ]
     $button config -state normal   
     while {!($zeile == "")} {     
       $nach insert end $zeile
       $von delete 0
       set zeile [ $von get 0 ]
     }
}
# ENDE TPV.kplVerschieben

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TPV.Verschieben { button von nach } {
     if {!([$von curselection] == "")} {     
       $button config -state normal   
       $nach insert end [$von get [$von curselection]]
       $von delete [$von curselection]
     }
}
# ENDE TPV.Verschieben

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TPV.UpDown { button seite richtung } {
  if {!([$seite curselection] == "")} { 
      $button config -state normal   
      set index [$seite index [$seite curselection]]
      set speicher [$seite get [$seite curselection]]
      $seite delete [$seite curselection]
      $seite insert [expr $index + $richtung] $speicher
      $seite selection set [expr $index + $richtung]
  }
}
# ENDE TPV.UpDown

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TPV.DlgPoolListe { W } {
   global BSTNR GTS BSTATUS
 
   set PoolListe  $W.rahmen  
   frame $PoolListe -relief solid  -borderwidth 1
   pack  $PoolListe -expand yes -fill both  -padx 5 -pady 5 -ipadx 5 -ipady 5       

   TPV.ButtonLeiste $PoolListe.buttonLeiste
   set GTS(PLL) [TPV.Liste $PoolListe.l "Mögliche Bausteine"]
   set GTS(PLR) [TPV.Liste $PoolListe.r "Aktuelle Liste"]
   UpDownLeiste $PoolListe.updownLeiste 2m
                   
   foreach i [DlgLogik POOLVERWALTUNG PV_POOLBAUSTEINE 0 0 $BSTNR] {
      $GTS(PLL) insert end $i
   }
   foreach i [DlgLogik POOLVERWALTUNG PV_POOLLISTE 0 0 $BSTNR] {
      $GTS(PLR) insert end $i
   }
                                 
   pack $PoolListe -expand no -fill both  -padx 5 -pady 5        

   set button [MachButton $PoolListe "Übernehmen" 10]
   $button.1 config -state disabled 
   set BSTATUS(PL) $button.1   
   bind $button.1 <ButtonRelease-1> {
     if {[%W cget -state] == "active" } {
           set erg [$GTS(PLR) get 0 end]
           set anz [$GTS(PLR) size]
           set erg [DlgLogik POOLVERWALTUNG PV_AENDEREPOOLBST $erg $anz $BSTNR]
           after idle $BSTATUS(PL) config -state disabled
        }
     }
   
   pack $PoolListe.l   -side left  -expand no -fill both
   pack $PoolListe.buttonLeiste -side left  -expand no -fill y
   pack $PoolListe.r   -side left -expand no -fill both
   pack $PoolListe.updownLeiste   -side right -expand no -fill both

   bind $PoolListe.buttonLeiste.links <ButtonRelease-1> {
      TPV.Verschieben $BSTATUS(PL) $GTS(PLL) $GTS(PLR) 
   }
   
   bind $PoolListe.buttonLeiste.kpllinks <ButtonRelease-1> {
      TPV.kplVerschieben $BSTATUS(PL) $GTS(PLL) $GTS(PLR)
   }
   
   bind $PoolListe.buttonLeiste.rechts <ButtonRelease-1> {
      TPV.Verschieben $BSTATUS(PL) $GTS(PLR) $GTS(PLL)
   }
   
   bind $PoolListe.buttonLeiste.kplrechts <ButtonRelease-1> {
      TPV.kplVerschieben $BSTATUS(PL) $GTS(PLR) $GTS(PLL)
   }

   bind $PoolListe.updownLeiste.up <ButtonRelease-1> {
     TPV.UpDown $BSTATUS(PL) $GTS(PLR) -1
   }
      
   bind $PoolListe.updownLeiste.down <ButtonRelease-1> {
     TPV.UpDown $BSTATUS(PL) $GTS(PLR) +1
   }
}
#  ENDE TPV.DlgPoolListe


# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TPV.DlgBetreuteListe { W } {
   global BSTNR GTS BSTATUS
 
   set PoolListe  $W.rahmen  
   frame $PoolListe -relief solid  -borderwidth 1
   pack  $PoolListe -expand yes -fill both  -padx 5 -pady 5 -ipadx 5 -ipady 5       

   TPV.ButtonLeiste $PoolListe.buttonLeiste
   set GTS(BLL) [TPV.Liste $PoolListe.l "Mögliche Bausteine"]
   set GTS(BLR) [TPV.Liste $PoolListe.r "Aktuelle Liste"]
   UpDownLeiste $PoolListe.updownLeiste 2m
                   
   foreach i [DlgLogik POOLVERWALTUNG PV_BETREUTEBAUSTEINE 0 0 $BSTNR] {
      $GTS(BLL) insert end $i
   }
   foreach i [DlgLogik POOLVERWALTUNG PV_BETREUTELISTE 0 0 $BSTNR] {
      $GTS(BLR) insert end $i
   }
                                 
   pack $PoolListe -expand no -fill both  -padx 5 -pady 5        

   set button [MachButton $PoolListe "Übernehmen" 10]
   $button.1 config -state disabled 
   set BSTATUS(BL) $button.1   
   bind $button.1 <ButtonRelease-1> {
     if {[%W cget -state] == "active" } {
         set erg [$GTS(BLR) get 0 end]
         set anz [$GTS(BLR) size]
         set erg [DlgLogik POOLVERWALTUNG PV_AENDEREBETREUTEBST $erg $anz $BSTNR]
         after idle $BSTATUS(BL) config -state disabled
        }
     }

   pack $PoolListe.l   -side left  -expand no -fill both
   pack $PoolListe.buttonLeiste -side left  -expand no -fill y
   pack $PoolListe.r   -side left -expand no -fill both
   pack $PoolListe.updownLeiste   -side right -expand no -fill both

   bind $PoolListe.buttonLeiste.links <ButtonRelease-1> {
      TPV.Verschieben $BSTATUS(BL) $GTS(BLL) $GTS(BLR) 
   }
   
   bind $PoolListe.buttonLeiste.kpllinks <ButtonRelease-1> {
      TPV.kplVerschieben $BSTATUS(BL) $GTS(BLL) $GTS(BLR)
   }

   bind $PoolListe.buttonLeiste.rechts <ButtonRelease-1> {
      TPV.Verschieben $BSTATUS(BL) $GTS(BLR) $GTS(BLL)
   }
   
   bind $PoolListe.buttonLeiste.kplrechts <ButtonRelease-1> {
      TPV.kplVerschieben $BSTATUS(BL) $GTS(BLR) $GTS(BLL)
   }

   bind $PoolListe.updownLeiste.up <ButtonRelease-1> {
     TPV.UpDown $BSTATUS(BL) $GTS(BLR) -1
   }
      
   bind $PoolListe.updownLeiste.down <ButtonRelease-1> {
     TPV.UpDown $BSTATUS(BL) $GTS(BLR) +1
   }
}
#  ENDE TPV.DlgBetreuteListe

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TPV.Page { bsttyp } {
   global GTS
   $GTS(NBook) pageconfigure betrliste -state normal
   if {($bsttyp == 19)} { $GTS(NBook) pageconfigure betrliste -state disabled }
   if {($bsttyp == 30)} { $GTS(NBook) pageconfigure betrliste -state disabled }
}
# ENDE TPV.Page

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
proc TPV.Dialog { bsttyp } {
   global GTS BSTNR Confirm BSTATUS 

   set dlg [dialog_create $GTS($bsttyp,Name) Dialog "Info" "Schliessen"]
   set GTS(EF1) [dialog_entry $dlg "Baustein:" 14 "" 10 $BSTNR "Int"]
   dialog_focus $GTS(EF1)
   
   set GTS(NBook) [dialog_nbook $dlg]
   set GTS(nb1) [dialog_add_nbook $GTS(NBook) poolliste "Poolliste"]
   set GTS(nb2) [dialog_add_nbook $GTS(NBook) betrliste "Betreute Liste"]

   TPV.Page $bsttyp
   TPV.DlgPoolListe     $GTS(nb1)
   TPV.DlgBetreuteListe $GTS(nb2)
   
   dialog_wait $dlg
   while {$Confirm($dlg) == "1"} { 
     set lbstnr [string trimleft [$GTS(EF1) get] 0]
     $GTS(EF1) delete 0 end
     $GTS(EF1) insert 0 $lbstnr
     set lbsttyp [DlgLogik POOLVERWALTUNG BSTNR 0 0 $lbstnr];
     if { !($lbsttyp == "") } {
       set BSTTYP $lbsttyp
       set BSTNR  $lbstnr
       wm title $dlg $GTS($lbsttyp,Name)

       TPV.Page $lbsttyp
       $BSTATUS(PL) config -state disabled
       $GTS(PLL) delete 0 end
       foreach i [DlgLogik POOLVERWALTUNG PV_POOLBAUSTEINE 0 0 $BSTNR] {
          $GTS(PLL) insert end $i
       }
       $GTS(PLR) delete 0 end
       foreach i [DlgLogik POOLVERWALTUNG PV_POOLLISTE 0 0 $BSTNR] {
          $GTS(PLR) insert end $i
       }
       
       $BSTATUS(BL) config -state disabled
       $GTS(BLL) delete 0 end
       foreach i [DlgLogik POOLVERWALTUNG PV_BETREUTEBAUSTEINE 0 0 $BSTNR] {
          $GTS(BLL) insert end $i
       }
       $GTS(BLR) delete 0 end
       foreach i [DlgLogik POOLVERWALTUNG PV_BETREUTELISTE 0 0 $BSTNR] {
          $GTS(BLR) insert end $i
       }
     } else {
      $GTS(EF1) delete 0 end
      $GTS(EF1) insert 0 $BSTNR
     }
     dialog_wait $dlg 
   }
   dialog_destroy $dlg   
   unset GTS(PLL)
   unset GTS(PLR)
   unset GTS(BLL)
   unset GTS(BLR)
   unset GTS(EF1)
   unset GTS(nb1)
   unset GTS(nb2)
   unset GTS(NBook)
   unset BSTATUS
}
#  ENDE TPV.Dialog

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# +++++++ ENDE  D I A L O G :  Poolverwaltung   +++++++++++++++++++++++++++++
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

