rendered paste body#Übersetzungs- und Trainingstool für Blindensprache(Braille)
#Version 0.8, geschrieben von robtop am 5. Jan '06
#im moment werden nur kleinbuchstaben und space erkannt.
#unter debian benötigte packete: ruby, ruby-gnome2
require 'gtk2'
include Gtk
def getzeichen(nr)
#zeichen in braille umwandeln
# umgekehrt, da binär
zeichen = {
'a' => 0b000001,
'b' => 0b000011,
'c' => 0b001001,
'd' => 0b011001,
'e' => 0b010001,
'f' => 0b001011,
'g' => 0b011011,
'h' => 0b010011,
'i' => 0b001010,
'j' => 0b010110,
'k' => 0b000101,
'l' => 0b000111,
'm' => 0b001101,
'n' => 0b011101,
'o' => 0b010101,
'p' => 0b001111,
'q' => 0b011111,
'r' => 0b010111,
's' => 0b001110,
't' => 0b011110,
'u' => 0b100101,
'v' => 0b100111,
'w' => 0b111010,
'x' => 0b101101,
'y' => 0b111101,
'z' => 0b110101,
' ' => 0b000000,
}
return zeichen[nr]
end
class Fenster < Window
class Brailletab #tabelle mit 6 felder für brailleschirft
def initialize #bei inizialize wird 000000 angewendet
@image = []
@image[0] = []
@image[1] = []
@eb = []
@tab = Table.new(2, 3, true)
@tab.set_size_request(60, 60)
6.times do
|i|
@image[0][i] = Image.new("0.gif")
@image[1][i] = Image.new("1.gif")
@eb[i] = EventBox.new
@eb[i].add(@image[0][i])
if i <= 2
@tab.attach(@eb[i], 0, 1, i, i+1)
else
@tab.attach(@eb[i], 1, 2, i-3, i-2)
end
end
@stat= 0b000000
end
def gettab
return @tab
end
def settab(newstat) #alte bilder werden empfernt, neue hinzugefügt
@newstat = newstat
6.times do
|i|
@eb[i].remove(@image[@stat[i]][i])
@eb[i].add(@image[@newstat[i]][i])
end
@stat = @newstat
end
def show
@tab.show_all
end
def hide
@tab.hide_all
end
end
def initialize
q = 0
x=10
super
self.set_border_width(3)
self.set_title("transbraille V0.8")
self.set_size_request(190, 180)
layout = Layout.new
entry = Entry.new
entry.set_size_request(100, 30)
layout.put( entry, 10, 10)
button = Button.new("translate")
button.set_size_request(100, 30)
layout.put(button, 10, 50)
brailletab = []
button.signal_connect( "clicked" ) do
onec = " " # 1. buffer für entry.text[izeich]
txtlength = entry.text.length
for i in 0...txtlength do
onec[0] = entry.text[i] # 2. füllen
if q < txtlength
brailletab[q] = Brailletab.new
layout.put(brailletab[q].gettab, x, 100)
x=x+50
q = q+1 #zähler, wie viele tabs existieren
end
brailletab[i].settab(getzeichen(onec))
brailletab[i].show
end
if txtlength < q #falls zu schreibende zeichen kleiner ist als tabs
#werden restliche tabs ausgeblendet
for a in 1..q-txtlength
puts "hide wird ausgelöst, txtlength: " + txtlength.to_s
puts "q: " +q.to_s + "a: " +a.to_s
brailletab[q-a].hide
end
end
end
self.signal_connect( "destroy") do
main_quit
end
self.add(layout)
self.show_all
end
end
init
Fenster.new
main