#!/usr/X11R6/bin/wish8.0
#===========================================================
#
# Application: TKTUR
#
#===========================================================
#--------------------------------------------------------
# Changed: 27-MAY-1997
# Name: G.Niklaus
# Reason: Aufruf der Mannschaftsmeldung bei Doppelklick auf
#         Mannschafts-Listbox.
#         berarbeiten der Hilfsfunktionen
#
#-------------------------------------------------------
#--------------------------------------------------------
# Changed: 29-SEP-1997
# Name: G.Niklaus
# Reason: Anzeigen des Turnierverzeichnisses bei den allgemeinen
#         Turnierdaten
#
#-------------------------------------------------------
#--------------------------------------------------------
# Changed:  1-OCT-1997
# Name: G.Niklaus
# Reason: Einfuegen von Separatoren in die Pulldown Menues
#
#-------------------------------------------------------
#--------------------------------------------------------
# Changed: 14-FEB-1999
# Name: G.Niklaus
# Reason: 3-Punkte-Wertung
#
#-------------------------------------------------------
#--------------------------------------------------------
# Changed: 28-FEB-1999
# Name: G.Niklaus          
# Reason: Nutzung der Ressourcen-DB
#
#-------------------------------------------------------
#--------------------------------------------------------
# Changed:  4-MAR-1999
# Name: G.Niklaus
# Reason: Einbau des Setups
#
#-------------------------------------------------------


# Lesen der Ressourcen-DB
if [file exists tv.rdb]  { option readfile tv.rdb }

# Lesen der Konfigurationsdatei
if [file exists tvconfig.all] {  source tvconfig.all }
if [file exists tvconfig.] {  source tvconfig. }
                                                    
# Startprozedur!
#===========================================================
# Startprozedur
#===========================================================

proc tvmain {} {
   # Globals
   global geom33
   global geom52

   wm minsize . 200 100
   wm title . {Turnierverwaltung - Mannschaftsturniere}
   bind all <Meta-q> {exit}

   frame .f -relief raised

   #--------------------------
   # Frame fuer Menuleiste
   #                 
     
   frame .menuleiste -relief raised
   pack .menuleiste -side top -fill x
                  
   menubutton .menuleiste.turnier      -menu .menuleiste.turnier.m      \
              -text {Turnier}  -relief groove
   pack .menuleiste.turnier -side left -ipadx 2m
   
   menubutton .menuleiste.mannschaften -menu .menuleiste.mannschaften.m \
              -text {Mannschaften}  -relief groove
   pack .menuleiste.mannschaften -side left -ipadx 2m
   
   menubutton .menuleiste.runden       -menu .menuleiste.runden.m       \
              -text {Runden}     -relief groove
   pack .menuleiste.runden -side left -ipadx 2m
   
   menubutton .menuleiste.spielbetrieb -menu .menuleiste.spielbetrieb.m \
              -text {Spielbetrieb}  -relief groove
   pack .menuleiste.spielbetrieb -side left -ipadx 2m
   
   menubutton .menuleiste.senden -menu .menuleiste.senden.m \
              -text {Weitergabe}  -relief groove
   pack .menuleiste.senden -side left -ipadx 2m

#   menubutton .menuleiste.extras -menu .menuleiste.extras.m \
#              -text {Extras} -relief groove
#   pack .menuleiste.extras -side left -ipadx 2m
     
   menubutton .menuleiste.hilfe        -menu .menuleiste.hilfe.m        \
              -text {Hilfe}  -relief groove
   pack .menuleiste.hilfe -side right -ipadx 2m
                                                    
   menu .menuleiste.turnier.m                             
        .menuleiste.turnier.m add command -label {Neu} \
            -command "cn_turnier_add"
        .menuleiste.turnier.m add command -label {Lschen...} \
         -command "cn_turnier_delete"
        .menuleiste.turnier.m add separator
        .menuleiste.turnier.m add command -label {ffnen...} \
            -command " busy { cn_turnier_open } "
        .menuleiste.turnier.m add command -label {ndern...} \
            -command "cn_turnier_modify"
        .menuleiste.turnier.m add command -label {Schlieen} \
            -command "cn_turnier_close"
        .menuleiste.turnier.m add separator
        .menuleiste.turnier.m add command -label {Anzeigen...} \
            -command "cn_turnier_overview"
        .menuleiste.turnier.m add separator
        .menuleiste.turnier.m add command -label {Exportieren...} \
            -command "cn_turnier_export"
        .menuleiste.turnier.m add command -label {Importieren...} \
            -command "cn_turnier_import"
        .menuleiste.turnier.m add separator
#        .menuleiste.turnier.m add command -label {Voreinstellungen...} -command "cn_setup"
        .menuleiste.turnier.m add command -label {Ende} \
         -command "cn_turnier_exit"
                         
   menu .menuleiste.mannschaften.m 
     .menuleiste.mannschaften.m add command -label {Neue Mannschaft...} \
         -command "cn_mannschaft_add"
     .menuleiste.mannschaften.m add command -label {Mannschaft ndern ...} \
         -command "cn_mannschaft_modify"
     .menuleiste.mannschaften.m add command -label {Mannschaft lschen ...} \
         -command "cn_mannschaft_delete"
     .menuleiste.mannschaften.m add separator
     .menuleiste.mannschaften.m add command -label {Reihenfolge tauschen ...} \
         -command "cn_mannschaft_exchange"
     .menuleiste.mannschaften.m add command -label {Mannschaftsmeldung ...} \
         -command "cn_mannschaft_meldung"

   menu .menuleiste.runden.m 
     .menuleiste.runden.m add command -label {Neue Runde...} \
         -command "cn_runde_add"
     .menuleiste.runden.m add command -label {Spieltermin ndern...} \
         -command "cn_runde_modify"
     .menuleiste.runden.m add command -label {Runde lschen...} \
         -command "cn_runde_del"
                                 
   menu .menuleiste.spielbetrieb.m 

     .menuleiste.spielbetrieb.m add command -label {Spielplan} \
         -command "cn_spielplan_display"
     .menuleiste.spielbetrieb.m add command -label {Spielplan-Anhang} \
         -command "cn_spielplan_anhang_display"
     .menuleiste.spielbetrieb.m add separator

     .menuleiste.spielbetrieb.m add command -label {Rundeneingabe} \
         -command "cn_runde_eingabe"
     .menuleiste.spielbetrieb.m add command -label {Kreuztabelle(Test)} \
         -command "cn_kreuztabelle_display"
     .menuleiste.spielbetrieb.m add command -label {Rundenbericht} \
         -command "busy { cn_rundenbericht } "
     .menuleiste.spielbetrieb.m add command -label {Rundenbericht-Anhang} \
         -command "busy { cn_rundenbericht_anhang } "
     .menuleiste.spielbetrieb.m add separator

     .menuleiste.spielbetrieb.m add command -label {Tabelle} \
         -command "cn_tabelle"
     .menuleiste.spielbetrieb.m add command -label {Top Ten Wertung} \
         -command "cn_rangliste"
     .menuleiste.spielbetrieb.m add separator

     .menuleiste.spielbetrieb.m add command -label {Auslosung} \
         -command "cn_spiel_auslosung"
     .menuleiste.spielbetrieb.m add command -label {Auslosung stornieren} \
         -command "cn_spiel_auslosung_storno"                    
                      
   menu .menuleiste.senden.m 
     .menuleiste.senden.m add command -label {Per eMail} \
         -command "cn_senden_email"
#     .menuleiste.senden.m add command -label {Kommando} \
#         -command "cn_exec"

#   menu .menuleiste.extras.m 
#     .menuleiste.extras.m add command -label {Kreuztabelle} \
#         -command "cn_kreuztabelle_display"

   menu .menuleiste.hilfe.m   
     .menuleiste.hilfe.m  add command -label {Info} -command "cn_info"
     .menuleiste.hilfe.m  add command -label {Release Notes} \
      -command "cn_releasenotes"
     .menuleiste.hilfe.m  add command -label {Users Guide} \
      -command "cn_usersguide"

   #---------------------------
   # Frame fuer allg. Turnierdaten
   #
       
   frame .turnierdaten -relief raised 
   pack .turnierdaten -side top -anchor nw -fill x
     
   frame .turnierdaten.turnier -relief raised -bd 2 
   pack .turnierdaten.turnier -side left -anchor n 
   
   frame .turnierdaten.turnier.beschreibung -relief raised -bd 1
   frame .turnierdaten.turnier.tid   -relief raised -bd 1
   frame .turnierdaten.turnier.anzahlspieler 
   frame .turnierdaten.turnier.siegpunkte 
   frame .turnierdaten.turnier.globaltid 

   pack  .turnierdaten.turnier.beschreibung  -side top -anchor nw -fill x
   pack  .turnierdaten.turnier.anzahlspieler -side top -anchor e
   pack  .turnierdaten.turnier.siegpunkte    -side top -anchor e
   pack  .turnierdaten.turnier.globaltid     -side top -anchor e
   pack  .turnierdaten.turnier.tid           -side top -anchor nw -fill x

   label .turnierdaten.turnier.beschreibung.text   -text {Turnierbezeichnung:}
   label .turnierdaten.turnier.anzahlspieler.text  -text {Spieler/Mannschaft:}
   label .turnierdaten.turnier.siegpunkte.text     -text {Punkte/Sieg:}
   label .turnierdaten.turnier.globaltid.text      -text {Identifikation:}
   label .turnierdaten.turnier.tid.text            -text {Verzeichnis:}

   label .turnierdaten.turnier.beschreibung.val  -relief groove -width 40 -text {}
   label .turnierdaten.turnier.anzahlspieler.val -relief groove -width 30 -text {}
   label .turnierdaten.turnier.siegpunkte.val    -relief groove -width 30 -text {}
   label .turnierdaten.turnier.globaltid.val     -relief groove -width 30 -text {}
   label .turnierdaten.turnier.tid.val           -relief groove -width 40 -text {}
                                                  
   pack  .turnierdaten.turnier.beschreibung.text  -side top -anchor w
   pack  .turnierdaten.turnier.beschreibung.val   -side top -anchor e -fill x
   pack  .turnierdaten.turnier.tid.text           -side top -anchor w 
   pack  .turnierdaten.turnier.tid.val            -side top -anchor e -fill x 
   pack  .turnierdaten.turnier.anzahlspieler.val  -side right 
   pack  .turnierdaten.turnier.anzahlspieler.text -side right -fill x
   pack  .turnierdaten.turnier.siegpunkte.val     -side right
   pack  .turnierdaten.turnier.siegpunkte.text    -side right -fill x
   pack  .turnierdaten.turnier.globaltid.val      -side right
   pack  .turnierdaten.turnier.globaltid.text     -side right -fill x


   frame .turnierdaten.spielleiter -relief raised -bd 3 
   pack .turnierdaten.spielleiter -side left -fill x
   
   frame .turnierdaten.spielleiter.titel -relief ridge  -bd 2 
   frame .turnierdaten.spielleiter.name
   frame .turnierdaten.spielleiter.strasse
   frame .turnierdaten.spielleiter.wohnort
   frame .turnierdaten.spielleiter.telefon
   frame .turnierdaten.spielleiter.fax
   frame .turnierdaten.spielleiter.mail  
   
   pack .turnierdaten.spielleiter.titel -side top -anchor center -fill x
   pack .turnierdaten.spielleiter.name -side top   -anchor e
   pack .turnierdaten.spielleiter.strasse -side top  -anchor e
   pack .turnierdaten.spielleiter.wohnort -side top  -anchor e
   pack .turnierdaten.spielleiter.telefon -side top  -anchor e
   pack .turnierdaten.spielleiter.fax -side top  -anchor e
   pack .turnierdaten.spielleiter.mail -side top  -anchor e
   
   label .turnierdaten.spielleiter.titel.text   -text {Turnierleiter}
   label .turnierdaten.spielleiter.name.text    -text {Name:}
   label .turnierdaten.spielleiter.strasse.text -text {Strae:}
   label .turnierdaten.spielleiter.wohnort.text -text {Wohnort:}
   label .turnierdaten.spielleiter.telefon.text -text {Telefon:}
   label .turnierdaten.spielleiter.fax.text     -text {FAX:}
   label .turnierdaten.spielleiter.mail.text    -text {Mail:}
   
   label .turnierdaten.spielleiter.name.val    -relief groove -width 30 -text {}
   label .turnierdaten.spielleiter.strasse.val -relief groove -width 30 -text {}
   label .turnierdaten.spielleiter.wohnort.val -relief groove -width 30 -text {}
   label .turnierdaten.spielleiter.telefon.val -relief groove -width 30 -text {}
   label .turnierdaten.spielleiter.fax.val     -relief groove -width 30 -text {}
   label .turnierdaten.spielleiter.mail.val    -relief groove -width 30 -text {}
   
   pack .turnierdaten.spielleiter.titel.text   -side left 
   pack .turnierdaten.spielleiter.name.val     -side right -anchor e
   pack .turnierdaten.spielleiter.name.text -side right  -anchor e
   pack .turnierdaten.spielleiter.strasse.val  -side right -anchor e
   pack .turnierdaten.spielleiter.strasse.text  -side right -anchor e
   pack .turnierdaten.spielleiter.wohnort.val  -side right -anchor e
   pack .turnierdaten.spielleiter.wohnort.text  -side right -anchor e
   pack .turnierdaten.spielleiter.telefon.val  -side right -anchor e
   pack .turnierdaten.spielleiter.telefon.text  -side right -anchor e
   pack .turnierdaten.spielleiter.fax.val      -side right -anchor e
   pack .turnierdaten.spielleiter.fax.text      -side right -anchor e
   pack .turnierdaten.spielleiter.mail.val     -side right -anchor e
   pack .turnierdaten.spielleiter.mail.text     -side left -fill x -anchor e
   
   #---------------------------
   # Frame fuer Teilnehmer und Runden 
   #
   
   frame .mannschaftundrunden -relief raised 
   pack .mannschaftundrunden -side top -anchor nw -expand yes -fill both
        
   frame .mannschaftundrunden.mannschaft -relief raised -bd 2
   pack .mannschaftundrunden.mannschaft -side left -fill both -expand yes
   
   label   .mannschaftundrunden.mannschaft.text  -text {Teilnehmende Mannschaften}
   scrollbar .mannschaftundrunden.mannschaft.scrollbar -orient vertical \
            -command ".mannschaftundrunden.mannschaft.mannschaft yview"
   
   set befehl1 "listbox .mannschaftundrunden.mannschaft.mannschaft -relief groove"
   set befehl2 "$geom33"
   set befehl3 "-yscrollcommand {.mannschaftundrunden.mannschaft.scrollbar set}"

   eval [concat $befehl1 $befehl2 $befehl3]
                                          
   pack .mannschaftundrunden.mannschaft.text  -side top -fill x
   pack .mannschaftundrunden.mannschaft.scrollbar -side left -fill y
   pack .mannschaftundrunden.mannschaft.mannschaft -side left -fill both -expand yes
   
   bind .mannschaftundrunden.mannschaft.mannschaft <Double-Button-1> "cn_mannschaft_meldung"
   bind .mannschaftundrunden.mannschaft.mannschaft <Button-3> "cn_mannschaft_modify"

   frame .mannschaftundrunden.runden -relief raised -bd 2
   pack .mannschaftundrunden.runden -side left -fill both -expand yes
   
   label     .mannschaftundrunden.runden.text -text {Runden & Termine}
   scrollbar .mannschaftundrunden.runden.scrollbar -orient vertical \
            -command ".mannschaftundrunden.runden.runden yview"

   set befehl1 "listbox .mannschaftundrunden.runden.runden -relief groove"
   set befehl2 "$geom33"
   set befehl3 "-yscrollcommand {.mannschaftundrunden.runden.scrollbar set}"
                              
   eval [concat $befehl1 $befehl2 $befehl3]

   pack      .mannschaftundrunden.runden.text -side top -fill x
   pack      .mannschaftundrunden.runden.scrollbar -side left -fill y
   pack      .mannschaftundrunden.runden.runden -side left -expand yes -fill both
   bind .mannschaftundrunden.runden.runden <Double-Button-1> "cn_runde_eingabe"
   bind .mannschaftundrunden.runden.runden <Button-3> "cn_runde_modify"
}

tvmain;

proc busy {cmds} {
    global errorInfo

    set busy { .app .root}
    set list [winfo children .]
    lappend list .
    while {$list != ""} {
        set next {}
        foreach w $list {
            set class [winfo class $w]
            set cursor [lindex [$w config -cursor] 4]
            if {[winfo toplevel $w] == $w || $cursor != ""} {
                lappend busy [list $w $cursor]
            }
            set next [concat $next [winfo children $w]]
        }
        set list $next
    }

    foreach w $busy {
        catch {[lindex $w 0] config -cursor watch}
    }

    update idletasks

    set error [catch {uplevel eval [list $cmds]} result]
    set ei $errorInfo

    foreach w $busy {
        catch {[lindex $w 0] config -cursor [lindex $w 1]}
    }

    if $error {
        error $result $ei
    } else {
        return $result
    }
}

proc cn_info { } {
   ui_warning "TKTUR Info" "Version 0.85 - 18.08.2000\
Gnter Niklaus, Adelsgasse 21,
91336 Heroldsbach\n
Mail: guenter.niklaus@fen-net.de"
}

proc cn_exec { } {

global kommando
global kommandoresult

 toplevel .execwindow
#  frame .execwindow
  wm title .execwindow "Ausfuehren eines Kommandos"
#  pack .execwindow 
  entry .execwindow.entry -textvariable kommando -relief sunken
  label .execwindow.result -textvariable kommandoresult -relief groove
  button .execwindow.do  -text "Do" -relief raised -command {set kommandoresult [eval $kommando] }
  button .execwindow.cancel -text "Cancel" -relief raised -command {destroy .execwindow }
  pack .execwindow.entry .execwindow.result .execwindow.do .execwindow.cancel

  return
}
