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