set version "beta 3"
#Fotokuckiphon Version beta 3
# TCL/TK Skript
# linke Maustaste lädt ein Bild, rechte Maustaste spielt den dazu passenden Ton
# ab. Die Daten müssen im gleichen Verzeichnis liegen und die Tondatei muss den # gleichen Namen haben wie das Bild außer der Endung natürlich.
# dies ist freie Software jeder ist aufgefordert sich an dem Projekt zu 
# beteiligen solange das Ergebnis frei bleibt
# Stefan Hamann [Lea-Papi]
# leapapi@aol.com

wm title . "Fotokuckiphon $version"
menu .m
. configure -menu .m
.m add cascade -menu .m.datei -label Datei -underline 0
menu .m.datei -tearoff 0
.m.datei add command -label "Verzeichnis wählen" \
-underline 0 \
-command {set liste [listebilden]}

.m.datei add command -label "Schließen" \
-command exit

menu .m.einstellungen -tearoff 0
.m add cascade -menu .m.einstellungen -label Einstellungen
.m.einstellungen add checkbutton -label "Ton stoppen" \
-variable tonaus

#.m.einstellungen add command -label "Sortieren umkehren" \
#-command sortiere

menu .m.hilfe -tearoff 0
.m add cascade -menu .m.hilfe -label Hilfe
.m.hilfe add command -label "Hilfe" \
-underline 0 \
-command {zeige_hilfe}

#Rahmen für Button und Label
frame .rahmen 
pack .rahmen 

#Prozedur um eine Liste mit Bildern zu bilden
proc listebilden {} {
	verzeichnis
	global verz 
	set liste [ glob -nocomplain -- *.jpg ]
	
	if {[llength $liste] < 1} then \
	{.rahmen.l configure -text "keine Bilder" -fg red
	bindtags .bild {keinebilder}}
	
	if {[llength $liste] > 1} then \
	{.rahmen.l configure -text "gut" -fg green
	bindtags .bild {bilderda}}
	return $liste
}

#Prozedur für den Verzeichnisdialog:
proc verzeichnis {} {
	set verz [tk_chooseDirectory \
	-title "Ordner mit Bildern und\nTönen auswählen:" \
	-initialdir "C:\\" \
	-mustexist 1 \
	-parent .]
	if {$verz !=""} then \
	{cd $verz
	.rahmen.v configure -text $verz
	}
return $verz
}


# Label zeigt Bildnamen an
label .rahmen.l -text "nichts gewählt "
pack .rahmen.l -side left
#aktuelles Verzeichnis 
label .rahmen.v -text "Bitte Verzeichnis mit Bildern und Musik auswählen"
pack .rahmen.v -side left

# variable für das erste bild setzen
set nummer 0
#größe für das Bild
set breite 1012
set hoehe 708

label .bild -width $breite -height $hoehe -relief sunken -bd 1
pack .bild

# Zusatz holen
package require Tk
package require img::jpeg 1.3
package require -exact snack 2.2
package require snackogg

#Puffer für Ton Wiedergabe
snack::audio playLatency 500

#bindung an Maustaste 1
proc binden {} {
	bind bilderda <1> {set bild [lindex $liste $nummer]
	image create photo foto -file $bild
	.rahmen.l configure -text $bild -fg black
	.bild configure -image foto
	if {[expr $nummer+1] < [llength $liste]} then \
	{incr nummer 1} else \
	{set nummer 0}
	if {$tonaus==1} then {snack::audio stop}
}

#bindung an Maustaste 3 rechte Taste
	bind bilderda <3> {set ton [string trimright $bild jpg]
	foreach ext {wav mp3 ogg} {if {[file exists $ton$ext]} then \
	{snack::sound s -file $ton$ext
	s play}}
}
bind keinebilder <1> {set liste [listebilden]}
bind keinebilder <3> {}
} 

proc zeige_hilfe {} {
toplevel .hilfe
label .hilfe.l -text "Fotokuckiphon beta 3\n\
mit diesem Programm wird nach Druck auf die linke Maustaste ein Bild angezeigt.\n\
nach Druck auf die rechte Taste wird der dazu passende Ton abgespielt\n\
Ich habe es ursprünglich für meine Tochter geschrieben die damit selbst\n\
entscheiden kann welche Musik sie hören will\n
Dieses Programm ist Freeware und wird ohne Garantie und unter Ausschluß jeglicher Haftung veröffentlicht\n\
Ebenso kann keine 100 prozentige Fehlerfreiheit garantiert werden\n\
alle sind aufgerufen sich an diesem Projekt zu beteiligen\n\
für Fragen und Anregungen E-Mail an leapapi@aol.com\n\
für die vollständige Anleitung bitte Fotokuckiphon-readme.txt lesen\n\nKlick!"

pack .hilfe.l
bind .hilfe <1> {destroy .hilfe}
}
set liste [listebilden]
binden
set bild " "

