All pastes #36025 Raw Edit

app text to braille

public text v1 · immutable
#36025 ·published 2006-01-06 19:29 UTC
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