#===========================================================
#
# 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
#
#-------------------------------------------------------

# Lesen der Konfigurationsdatei

source tvconfig.
                                                    
# Startprozedur!
#===========================================================
# Startprozedur
#===========================================================

proc tvmain {} {
   # Globals
   global geom33
   global geom52
   global listboxfont

   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 {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 {Ins WWW} \
#         -command "cn_senden_www"

#   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"
     .menuleiste.hilfe.m  add cascade -label {FAQ} \
      -command "cn_faq"
     .menuleiste.hilfe.m  add cascade -label {HOWTO} \
      -menu .menuleiste.hilfe.m.howto 

   set m .menuleiste.hilfe.m.howto 
   menu $m                                                    
   $m add command -label {Neues Turnier anlegen}               
   $m add command -label {Vorhandenes Turnier ffnen}               
   $m add command -label {Eingabe einer Runde}

   #---------------------------
   # Frame fuer allg. Turnierdaten
   #
       
   frame .turnierdaten -relief raised 
   pack .turnierdaten -side top -anchor nw
   
   frame .turnierdaten.turnier -relief raised -bd 2 
   pack .turnierdaten.turnier -side left -anchor n
   
   frame .turnierdaten.turnier.beschreibung -relief ridge -bd 2
   label .turnierdaten.turnier.beschreibung.text -text {Turnierbezeichnung:}
   label .turnierdaten.turnier.beschreibung.val  -relief sunken -width 50 \
          -font fixed -text {}
   pack  .turnierdaten.turnier.beschreibung -side top  -anchor nw 
   pack  .turnierdaten.turnier.beschreibung.text -side top -anchor w
   pack  .turnierdaten.turnier.beschreibung.val  -side top -anchor w
   
   frame .turnierdaten.turnier.anzahlspieler -relief flat
   label .turnierdaten.turnier.anzahlspieler.text -text {Spieler/Mannschaft:}
   label .turnierdaten.turnier.anzahlspieler.val  -relief sunken -width 2 \
         -text {}
   pack  .turnierdaten.turnier.anzahlspieler -side top -anchor w
   pack  .turnierdaten.turnier.anzahlspieler.text -side left -fill x
   pack  .turnierdaten.turnier.anzahlspieler.val  -side left
   
   frame .turnierdaten.turnier.globaltid -relief flat
   label .turnierdaten.turnier.globaltid.text -text {Identifikation:}
   label .turnierdaten.turnier.globaltid.val  -relief sunken -width 4 \
         -text {}
   pack  .turnierdaten.turnier.globaltid -side top -anchor w
   pack  .turnierdaten.turnier.globaltid.text -side left -fill x
   pack  .turnierdaten.turnier.globaltid.val  -side left
   
   frame .turnierdaten.turnier.tid -relief flat
   label .turnierdaten.turnier.tid.text -text {Verzeichnis:}
   label .turnierdaten.turnier.tid.val  -relief sunken -width 40 -text {}
   pack  .turnierdaten.turnier.tid -side top -anchor w
   pack  .turnierdaten.turnier.tid.text -side left -fill x
   pack  .turnierdaten.turnier.tid.val  -side left


   frame .turnierdaten.spielleiter -relief raised -bd 3 
   pack .turnierdaten.spielleiter -side left
   
   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 sunken -width 30 -text {}
   label .turnierdaten.spielleiter.strasse.val -relief sunken -width 30 -text {}
   label .turnierdaten.spielleiter.wohnort.val -relief sunken -width 30 -text {}
   label .turnierdaten.spielleiter.telefon.val -relief sunken -width 30 -text {}
   label .turnierdaten.spielleiter.fax.val     -relief sunken -width 30 -text {}
   label .turnierdaten.spielleiter.mail.val    -relief sunken -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 "-font $listboxfont $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 "-font $listboxfont $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.81 - 31.08.1998\
Gnter Niklaus, Adelsgasse 21,
91336 Heroldsbach\n
Mail: guenter.niklaus@fen.baynet.de"
}
