# $Source: /usr/local/SimSoft/Sfx3D/src/gts/gts00.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: gts00.tcl,v $
# Revision 1.2  2001/11/29 15:18:10  baum
# -Realzeitsteuerung eingebaut
# -Handsteuerung eingebaut
#

proc DeleteFloatMenue { } {
  catch { destroy .m }
}
#  // ENDE DeleteFloatMenue

# ===========  SelectVerkettungsMenu  =========================================
proc SelectVerkettungsMenu { mausX mausY } {
  catch {destroy .m}
  menu .m -tearoff 0 -background gray
  .m add checkbutton -label "Erzeuge Bausteinverknüpfung" -variable GTS(TBVErzeugen) -underline 0 \
              -command { DlgLogik TBVERZEUGEN 0 0 0 0
                         SetzAktMenueStatus TBVErzeugen
                       } 
                       
  .m add checkbutton -label "Lösche Bausteinverknüpfung" -variable GTS(TBVLoeschen) -underline 0 \
              -command { DlgLogik TBVLOESCHEN 0 0 0 0
                         SetzAktMenueStatus TBVLoeschen
                       } 

  .m add checkbutton -label "Info Bausteinverknüpfung" -variable GTS(TBVInfo) -underline 0 \
              -command { DlgLogik TBVINFO 0 0 0 0
                         SetzAktMenueStatus TBVInfo
                       } 
  .m add separator
   menu .m.tfk -tearoff 0 -background gray
  .m add cascade -label "Transportroute" -menu .m.tfk -underline 0
  .m.tfk add checkbutton -label "Erzeugen" -variable GTS(TFKErzeugen) -underline 0 \
              -command { DlgLogik TFKERZEUGEN 0 0 0 0
                         SetzAktMenueStatus TFKErzeugen
                       } 
  .m.tfk add checkbutton -label "Löschen" -variable GTS(TFKLoeschen) -underline 0 \
              -command { DlgLogik TFKLOESCHEN 0 0 0 0
                         SetzAktMenueStatus TFKLoeschen 
                       } 
  .m.tfk add checkbutton -label "Info" -variable GTS(TFKInfo) -underline 0 \
              -command { DlgLogik TFKINFO 0 0 0 0
                         SetzAktMenueStatus TFKInfo
                       } 
  .m post [expr [winfo rootx .action.draw.drawZ.togl] + $mausX] \
          [expr [winfo rooty .action.draw.drawZ.togl] + $mausY]
}
# ===========  ENDE SelectVerkettungsMenu  ====================================

# ===========  SelectFahrkursMenu  =========================================
proc SelectFahrkursMenu { mausX mausY } {
  catch {destroy .m}
  menu .m -tearoff 0 -background gray
  .m add checkbutton -label "Erzeuge Transportroute" -variable GTS(TFKErzeugen) -underline 0 \
              -command { DlgLogik TFKERZEUGEN 0 0 0 0
                         SetzAktMenueStatus TFKErzeugen
                       } 
                       
  .m add checkbutton -label "Lösche Transportroute" -variable GTS(TFKLoeschen) -underline 0 \
              -command { DlgLogik TFKLOESCHEN 0 0 0 0
                         SetzAktMenueStatus TFKLoeschen
                       } 

  .m add checkbutton -label "Info Transportroute" -variable GTS(TFKInfo) -underline 0 \
              -command { DlgLogik TFKINFO 0 0 0 0
                         SetzAktMenueStatus TFKInfo
                       } 
  .m add separator
   menu .m.tbv -tearoff 0 -background gray
  .m add cascade -label "Bausteinverknüpfung" -menu .m.tbv -underline 0
  .m.tbv add checkbutton -label "Erzeugen" -variable GTS(TBVErzeugen) -underline 0 \
              -command { DlgLogik TBVERZEUGEN 0 0 0 0
                         SetzAktMenueStatus TBVErzeugen
                       } 
  .m.tbv add checkbutton -label "Löschen" -variable GTS(TBVLoeschen) -underline 0 \
              -command { DlgLogik TBVLOESCHEN 0 0 0 0
                         SetzAktMenueStatus TBVLoeschen 
                       } 
  .m.tbv add checkbutton -label "Info" -variable GTS(TBVInfo) -underline 0 \
              -command { DlgLogik TBVINFO 0 0 0 0
                         SetzAktMenueStatus TBVInfo
                         } 
 .m post [expr [winfo rootx .action.draw.drawZ.togl] + $mausX] \
         [expr [winfo rooty .action.draw.drawZ.togl] + $mausY]
}
# ===========  ENDE SelectFahrkursMenu  ====================================

# ===========    Edit-Menue    =====================================================
proc MenueBearbeiten { MenueName } {
  $MenueName add command -label "Erzeugen..." -command { BausteinErzeugen } -underline 2

  $MenueName add command -label "Löschen" -underline 0 -state disabled \
                         -command { DlgGrafik BSTLOESCHEN 0 0 0
                                    SetzAktMenueStatus .knoeppe.pfeil
                                    DlgGrafik ObjectMoving
                                  } 

  $MenueName add command -label "Duplizieren" -underline 2 -state disabled \
                         -command { DlgGrafik BSTDUPLIZIEREN 0 0 0
                                    SetzAktMenueStatus .knoeppe.pfeil
                                    DlgGrafik ObjectMoving
                                  } 

  $MenueName add command -label "Ersetzen" -underline 0 -state disabled \
                         -command { 
                            set erg [DlgLogik BSTPARAMETER SELECTBST 0 0 0]
                            set BSTNR  [lindex $erg 0]
                            set BSTTYP [lindex $erg 1]
                            set vartyp [lindex $erg 2]
                            if { !($BSTTYP == "") } { 
                              BausteinErsetzen $BSTNR $BSTTYP $vartyp
                            }
                          }

  $MenueName add separator

  $MenueName add command -label "Verschieben"  -underline 0 -state disabled \
                         -command { DlgGrafik ObjectMoving
                                    SetzAktMenueStatus .knoeppe.pfeil 
                                  }

  $MenueName add command -label "Drehen" -underline 0 -state disabled \
                         -command { DlgGrafik ObjectRotating 
                                    SetzAktMenueStatus .knoeppe.drehen
                                    }

  $MenueName add command -label "Horizontal ausrichten" -command { } -underline 0 -state disabled 
  
  $MenueName add command -label "Vertikal ausrichten" -command { } -underline 0 -state disabled 

  $MenueName add separator
  
  $MenueName add command -label "Alles auswählen                Strg+A" -underline 1 \
                         -state disabled \
                         -command { DlgGrafik ObjectMoving 
                                    DlgGrafik ALLESAUSWAEHLEN 
                                    SetzAktMenueStatus .knoeppe.pfeil
                                   }

  $MenueName add command -label "Neu numerieren" -state disabled  -underline 2 \
                         -command { DlgGrafik BSTNUMERIEREN 0 0 0 }

  $MenueName add separator

  $MenueName add command -label "Bausteinparameter"  -underline 1 -state disabled \
                         -command { 
                            set erg [DlgLogik BSTPARAMETER SELECTBST 0 0 0]
                            set BSTNR  [lindex $erg 0]
                            set BSTTYP [lindex $erg 1]
                            if { !($BSTTYP == "") } { TTP.Dialog $BSTTYP 
                            } else {
                              set BSTNR [DlgEineEingabe "Parameter" "Baustein:" 0 "Int"]
                              if { $BSTNR > 0 } {
                               set BSTTYP [DlgLogik BSTPARAMETER BSTNR 0 0 $BSTNR]
                                if { !($BSTTYP == "") } { TTP.Dialog $BSTTYP } 
                              }
                            }  
                          }
                          
  $MenueName add command -label "Poolverwaltung" -state disabled\
                         -command { 
                            set erg [DlgLogik POOLVERWALTUNG SELECTBST 0 0 0]
                            set BSTNR  [lindex $erg 0]
                            set BSTTYP [lindex $erg 1]
                            if { !($BSTTYP == "") } { TPV.Dialog $BSTTYP 
                            } else {
                              set BSTNR [DlgEineEingabe "Poolverwaltung" "Baustein:" 0 "Int"]
                              if { $BSTNR > 0 } {
                                 set BSTTYP [DlgLogik POOLVERWALTUNG BSTNR 0 0 $BSTNR]
                                 if { !($BSTTYP == "") } { TPV.Dialog $BSTTYP } 
                              }
                            }  
                          }
 }
### ENDE MenueBearbeiten

#===========    SelectMenu-Menue     ==============================================
proc SelectMenu {  mausX mausY } {
  catch {destroy .m}
  BalloonInfo_cancel  
  menu .m -tearoff 0 -background gray
  MenueBearbeiten .m
  foreach i { 1 2 3 5 6 7 8 10 11 13 14 } {
     .m entryconfigure $i -state [.menu.edit entrycget $i -state]
  }
  .m add separator
  menu .m.look -tearoff 0  -background gray
  .m add cascade -label "Ansicht" -menu .m.look -underline 0
  TgvAddToMenu .action.draw.drawZ.togl .m.look
  .m post [expr [winfo rootx .action.draw.drawZ.togl] + $mausX] \
          [expr [winfo rooty .action.draw.drawZ.togl] + $mausY]
  .m add separator
  .m add command -label "Beenden"
}
### ENDE SelectMenu
# ===========    ENDE  SelectMenu    =========================================


# ===========    Menue    =====================================================

menu .menu -tearoff 0 -background gray

set mfile .menu.file
menu $mfile -tearoff 0   -background gray
.menu add cascade -label "Datei" -menu $mfile -underline 0

set medit .menu.edit
menu $medit -tearoff 0 -background gray
.menu add cascade -label "Bearbeiten" -menu $medit -underline 0

set mlogik .menu.logik
menu $mlogik -tearoff 0  -background gray
.menu add cascade -label "Logik" -menu $mlogik -underline 0

set mexperiment .menu.experiment
menu $mexperiment -tearoff 0  -background gray
.menu add cascade -label "Experiment" -menu $mexperiment -underline 1

set mextra .menu.extra
menu $mextra -tearoff 0  -background gray
.menu add cascade -label "Extras" -menu $mextra -underline 0

set mh .menu.help
menu $mh -tearoff 0  -background gray
.menu add cascade -label "Hilfe" -menu $mh -underline 0

# ===========    File-Menue    =====================================================
$mfile add command -label "Neu" -underline 0 \
          -command  { global $DateiName
                      DlgGrafik MODELLLOESCHEN 0 0 0 
                      set DateiName "Modell1"
                      wm title . "SIMFLEX/3 - GTS - ($DateiName)"
                      SetzMenueStatus "disabled"
                    } 

$mfile add command -label "Öffnen..."  -underline 1 -command {
      set datei [FileDialog .menu 2gs lesen]
      if {$datei != ""} {
          global $DateiName
          .menu configure -cursor watch
          update
          set DateiName [file rootname $datei]
          set ret [DlgDatei ModellLesen $DateiName 0 0 ];
          SetzMenueStatus "active"
          wm title . "SIMFLEX/3 - GTS - ([file tail $DateiName])"
        }
      }

$mfile add command -label "Schliessen"  -underline 1 -command  {
        global $DateiName
        DlgGrafik MODELLLOESCHEN 0 0 0 
        set DateiName "Modell1"
        wm title . "SIMFLEX/3 - GTS - ($DateiName)"
        SetzMenueStatus "disabled"
      }

$mfile add separator

$mfile add command -label "Speichern"  -underline 0 -state disabled \
       -command  { ModellSpeichern }

$mfile add command -label "Speichern unter..."  -underline 10 -state disabled \
       -command  {
          set datei [FileDialog .menu exl speichernunter]
          if {$datei != ""} {
            global $DateiName
            set DateiName [file rootname $datei]
            set ret [DlgDatei ModellSpeichern $DateiName 0 0 ];
            wm title . "SIMFLEX/3 - GTS - ([file tail $DateiName])"
          }
        }  

$mfile add separator

$mfile add command -label "Beenden"  -underline 1 -command {GTSBeenden}


# ===========    Edit-Menue    =====================================================
MenueBearbeiten $medit

# ===========    Logik-Menue    =====================================================

$mlogik add command -label "Poolverwaltung" -underline 0 -state disabled \
                         -command { 
                            set erg [DlgLogik POOLVERWALTUNG SELECTBST 0 0 0]
                            set BSTNR  [lindex $erg 0]
                            set BSTTYP [lindex $erg 1]
                            if { !($BSTTYP == "") } { TPV.Dialog $BSTTYP 
                            } else {
                              set BSTNR [DlgEineEingabe "Parameter" "Baustein:" 0 "Int"]
                              if { $BSTNR > 0 } {
                                 set BSTTYP [DlgLogik POOLVERWALTUNG BSTNR 0 0 $BSTNR]
                                 if { !($BSTTYP == "") } { TPV.Dialog $BSTTYP } 
                              }  
                            }  
                          }
                          
# ===========    Logik-Verknuepfung-Cascade    =====================================================

set mlink .menu.logik.link
menu $mlink -tearoff 0 -background gray
.menu.logik add cascade -label "Bausteinverknüpfung" -state disabled \
                        -menu $mlink -underline 0

#$mlink add command -label "Erzeugen" -command { } -underline 2
$mlink add checkbutton -label "Erzeugen" -variable GTS(TBVErzeugen) -underline 0 \
              -command { DlgLogik TBVERZEUGEN 0 0 0 0
                         SetzAktMenueStatus TBVErzeugen
                         SetzBstButton disabled
                       } 

$mlink add checkbutton -label "Löschen" -variable GTS(TBVLoeschen) -underline 0 \
              -command { DlgLogik TBVLOESCHEN 0 0 0 0
                         SetzAktMenueStatus TBVLoeschen
                         SetzBstButton disabled
                      } 

$mlink add checkbutton -label "Info" -variable GTS(TBVInfo) -underline 0 \
              -command { DlgLogik TBVINFO 0 0 0 0
                        SetzAktMenueStatus TBVInfo
                        SetzBstButton disabled
                       } 

# ===========    Logik-Fahrroute-Cascade    =====================================================

set mroute .menu.logik.route
menu $mroute -tearoff 0 -background gray
.menu.logik add cascade -label "Transportroute" -state disabled \
                        -menu $mroute -underline 0

$mroute add checkbutton -label "Erzeugen" -variable GTS(TFKErzeugen) -underline 0 \
              -command { DlgLogik TFKERZEUGEN 0 0 0 0
                         SetzAktMenueStatus TFKErzeugen
                         SetzBstButton disabled
                       }

$mroute add checkbutton -label "Löschen" -variable GTS(TFKLoeschen) -underline 0 \
              -command { DlgLogik TFKLOESCHEN 0 0 0 0
                         SetzAktMenueStatus TFKLoeschen
                         SetzBstButton disabled
                       }

$mroute add checkbutton -label "Info" -variable GTS(TFKInfo) -underline 0 \
              -command { DlgLogik TFKINFO 0 0 0 0
                         SetzAktMenueStatus TFKInfo
                         SetzBstButton disabled
                       }

$mroute add separator

$mroute add command -label "Automatisch Erzeugen" -underline 0 \
                    -command { DlgLogik TFKAUTOMATISCHERZEUGEN 0 0 0 0 } 

$mlogik add command -label "Arbeitsplan..." -underline 0 -state disabled \
                    -command { TAS.Dialog } 

$mlogik add separator

$mlogik add command -label "Logik Prüfen" -underline 0 -state disabled \
                    -command { DlgLogik LOGIKPRUEFEN 0 0 0 0 } 

# ===========    Experiment-Menue    =====================================================

$mexperiment add command -label "Ereignis..."  -underline 0 -state disabled \
                         -command { TZT.Dialog }

$mexperiment add command -label "Prozess..."  -underline 0 -state disabled \
                         -command { TLM.Dialog }

#$mexperiment add command -label "Zufallsverteilung..." -state disabled \
                          -command { } -underline 0

$mexperiment add separator

$mexperiment add command -label "Zeitmodell..." -command { ModellZeitBearbeiten } -underline 0

$mexperiment add separator

set mbde .menu.experiment.bde
menu $mbde -tearoff 0 -background gray


.menu.experiment add cascade -label "BDE" -state disabled \
                             -menu $mbde -underline 0

$mbde add command -label "Baustein"       -command { } -underline 0 -state disabled
$mbde add command -label "Transportroute" -command { } -underline 0 -state disabled
$mbde add command -label "Arbeitsplan"    -command { } -underline 0 -state disabled

# ===========    Extras-Menue    =====================================================

set adjustGrid     0
set GTS(AktAnsicht)     AnsichtDefault
set GTS(AnsichtDefault) 1
set GTS(AnsichtLinks)   0
set GTS(AnsichtRechts)  0
set GTS(AnsichtOben)    0
set GTS(AnsichtUnten)   0


$mextra add command -label "Bausteinraster" -underline 0 \
     -command {
                set inp [DlgGrafik GETBAUSTEINRASTER]
                set erg [DlgEineEingabe "Bausteinraster" "Rasterweite:" $inp "Float"]
                if { $erg > 0 } { DlgGrafik SETBAUSTEINRASTER $erg }
              }

$mextra add checkbutton -label "Raster anzeigen" -variable tgvGrid(.action.draw.drawZ.togl) \
             -command { DlgGrafik ShowGrid $tgvGrid(.action.draw.drawZ.togl) } -underline 0

### $mextra add checkbutton -label "Am Raster ausrichten" -variable adjustGrid -command { } -underline 0

$mextra add separator
set mansicht .menu.extra.ansicht
$mextra add cascade -label "Modellansicht" -menu $mansicht -underline 0

menu $mextra.ansichtseinstell -tearoff 0  -background gray
$mextra add cascade -label "Ansichtseinstellungen" -menu $mextra.ansichtseinstell -underline 0

menu $mansicht -tearoff 0  -background gray
$mansicht add checkbutton -label "von oben" -variable GTS(AnsichtDefault)\
              -command { setAnsicht AnsichtDefault }
$mansicht add checkbutton -label "in x-Richtung"  -variable GTS(AnsichtLinks)\
              -command { setAnsicht AnsichtLinks }
$mansicht add checkbutton -label "in (-x)-Richtung" -variable GTS(AnsichtRechts)\
              -command { setAnsicht AnsichtRechts }
$mansicht add checkbutton -label "in y-Richtung" -variable GTS(AnsichtUnten)\
              -command { setAnsicht AnsichtUnten }
$mansicht add checkbutton -label "in (-y)-Richtung" -variable GTS(AnsichtOben)\
              -command { setAnsicht AnsichtOben }

proc setAnsicht { richtung } {
  global GTS
  set GTS($GTS(AktAnsicht)) 0
  DlgGrafik setAnsicht $richtung 
  set GTS(AktAnsicht) $richtung
  set GTS($GTS(AktAnsicht)) 1
}
# ENDE setAnsicht
              
              
# ===========    Hilfe-Menue    =====================================================

$mh add command -label "Hilfethemen" -command { } -underline 0
$mh add separator
$mh add command -label "About" -underline 0 -command { DlgDatei ABOUTWINDOW 0 0 0 }

# ===========    Pack-Menue    =====================================================

. configure -menu .menu

# ===========  Ende Menue =====================================================


#======== BUTTONBAR ==========================================================

frame .knoeppe
  frame .knoeppe.platzhalter1 -width 10 -height 5
  frame .knoeppe.platzhalter2 -width 10 -height 5
  
  global xpmPfeil
  button .knoeppe.pfeil -image $xpmPfeil \
                -relief sunken\
                -command { DlgGrafik ObjectMoving 0 0 0  
                           SetzAktMenueStatus .knoeppe.pfeil
                         }
               
  global xpmZoom
  button .knoeppe.zoom  -image $xpmZoom \
                 -command { DlgGrafik CameraHandling 0 0 0  
                            SetzAktMenueStatus .knoeppe.zoom
                          }
                          
  global xpmZoomBox
  button .knoeppe.zoombox  -image $xpmZoomBox \
                 -command { DlgGrafik ZoomHandling 0 0 0  
                            SetzAktMenueStatus .knoeppe.zoombox
                            }
                            
  global xpmBstErzeugen
  button .knoeppe.erzeugen -image $xpmBstErzeugen -command { BausteinErzeugen }
   
  global xpmBstDuplizieren
  button .knoeppe.duplizieren -image $xpmBstDuplizieren \
               -state disabled -disabledforeground white\
                         -command { DlgGrafik BSTDUPLIZIEREN 0 0 0
                                    SetzAktMenueStatus .knoeppe.pfeil
                                    DlgGrafik ObjectMoving
                                  } 
                                  
  global xpmBstLoeschen
  button .knoeppe.loeschen -image $xpmBstLoeschen \
               -state disabled -disabledforeground white\
               -command { DlgGrafik BSTLOESCHEN 0 0 0
                          SetzAktMenueStatus .knoeppe.pfeil
                          DlgGrafik ObjectMoving
                        }
                
  global xpmBstHorizontalAusrichten
  button .knoeppe.horizontalausrichten -image $xpmBstHorizontalAusrichten \
                 -state disabled -disabledforeground white\
                 -command { DlgGrafik AUSRICHTEN HORIZONTAL 0 0 }
                 
  global xpmBstVertikalAusrichten
  button .knoeppe.vertikalausrichten -image $xpmBstVertikalAusrichten \
                 -state disabled -disabledforeground white\
                 -command { DlgGrafik AUSRICHTEN VERTIKAL 0 0 }
                 
  global xpmBstDrehen
  button .knoeppe.drehen -image $xpmBstDrehen \
               -state disabled -disabledforeground white\
               -command { DlgGrafik ObjectRotating 0 0 0
                          SetzAktMenueStatus .knoeppe.drehen
                        }

  global xpmDefAnsicht
  button .knoeppe.ansicht  -image $xpmDefAnsicht \
                 -relief sunken\
                 -command { setAnsicht AnsichtDefault 
                            SetzAktAnsichtButton  AKTANSICHT .knoeppe.ansicht
                          }
  global xpmAnsichtLinks
  button .knoeppe.ansichtlinks  -image $xpmAnsichtLinks \
                 -command { setAnsicht AnsichtLinks 
                            SetzAktAnsichtButton  AKTANSICHT .knoeppe.ansichtlinks
                          }  
                          
  global xpmAnsichtUnten
  button .knoeppe.ansichtunten  -image $xpmAnsichtUnten \
                 -command { setAnsicht AnsichtUnten 
                            SetzAktAnsichtButton  AKTANSICHT .knoeppe.ansichtunten
                          }  
                 
  global xpmAnsichtRechts
  button .knoeppe.ansichtrechts  -image $xpmAnsichtRechts \
                 -command { setAnsicht AnsichtRechts 
                            SetzAktAnsichtButton  AKTANSICHT .knoeppe.ansichtrechts
                          }  
                          
  pack .knoeppe.pfeil        .knoeppe.zoom               .knoeppe.zoombox\
       .knoeppe.platzhalter1 .knoeppe.erzeugen           .knoeppe.loeschen\
       .knoeppe.duplizieren  .knoeppe.vertikalausrichten .knoeppe.horizontalausrichten\
       .knoeppe.drehen       .knoeppe.platzhalter2       .knoeppe.ansicht\
       .knoeppe.ansichtlinks .knoeppe.ansichtunten       .knoeppe.ansichtrechts\
       -side top  
#============  ENDE BUTTONBAR  ================================================
