#!/usr/bin/wish
# tkbabel version 0.59
# by Chris Danis <screechco@home.com>

if {[catch source /usr/share/Babelfish.tcl]} {
        source /usr/share/Babelfish.tcl
}

proc setStatus {state} {
	switch -- $state {
		green	{ .lang.r.light configure -foreground forestgreen -text "Ready."}
		yellow	{ .lang.r.light configure -foreground yellow -text "Connected."}
		red	{ .lang.r.light configure -foreground red -text "Connecting..."}
	}
}
proc parseLang {lang} {
	regsub -all -- {->} $lang "2" newlang
	regsub -all -- "Eng" $newlang "e" lang
	regsub -all -- "Fr" $lang "f" newlang
	regsub -all -- "Ger" $newlang "g" lang
	regsub -all -- "It" $lang "i" newlang
	regsub -all -- "Por" $newlang "p" lang
	regsub -all -- "Spn" $lang "s" newlang
	return $newlang
}
set isGUI true
wm title . {tkbabel}
frame .lang
frame .lang.b
frame .lang.c
frame .lang.r 
button .lang.b.translate -text "Translate" -command {
	.text.dest.text delete 0.0 end
	set translateit "[.text.src.text get 0.0 end]"
	setStatus {red}
	set newlang [parseLang $Language]
	.text.dest.text insert 0.0 "[Trans $newlang $translateit]"
	setStatus {green}
}

button .lang.b.swap -text "Translated->Source" -command {
	.text.src.text delete 0.0 end
	set translateit "[.text.dest.text get 0.0 end]"
	.text.src.text insert 0.0 "$translateit"
}

tk_optionMenu .lang.c.lang Language Eng->Fr Eng->Ger Eng->It Eng->Por Eng->Spn Fr->Eng Ger->Eng It->Eng Por->Eng Spn->Eng Ger->Fr Fr->Ger
label .lang.c.label -text "Language:"
label .lang.r.light -justify left
pack .lang.b.translate -side top
pack .lang.b.swap -side bottom
pack .lang.c.label .lang.c.lang 
pack .lang.r.light -side right -fill x
setStatus {green}
pack .lang.r -side right -padx 20
pack .lang.b -side left -padx 20
pack .lang.c -side left 
frame .text
frame .text.src
frame .text.dest

text .text.src.text -width 55 -height 6 -wrap word -yscrollcommand {.text.src.scroll set}
text .text.dest.text -width 55 -height 6 -wrap word -yscrollcommand {.text.dest.scroll set}
scrollbar .text.src.scroll -command {.text.src.text yview}
scrollbar .text.dest.scroll -command {.text.dest.text yview}

#bind .text.src.text <Control-Return> { .lang.b.translate flash ; .lang.b.translate invoke }
#bind .text.dest.text <Control-Return> { .lang.b.translate flash ; .lang.b.translate invoke }
#bind .text.src.text <Alt-Return> { .lang.b.swap flash ; .lang.b.translate invoke }
#bind .text.dest.text <Alt-Return> { .lang.b.swap flash ; .lang.b.translate invoke }
bind . <Alt-t> { .lang.b.translate flash ; .lang.b.translate invoke }
bind . <Alt-s> { .lang.b.swap flash ; .lang.b.swap invoke }

pack .text.src.scroll .text.dest.scroll -side right -fill y
pack .text.src.text .text.dest.text -fill both -expand true
pack .text.src .text.dest .text -fill both -expand true
pack .lang -side bottom -fill both

Init
focus .text.src.text

