64 lines
1.2 KiB
GDScript
64 lines
1.2 KiB
GDScript
extends LineEdit
|
|
|
|
|
|
var available_characters: Array[String] = [
|
|
'A',
|
|
'B',
|
|
'C',
|
|
'D',
|
|
'E',
|
|
'F',
|
|
'G',
|
|
'H',
|
|
'I',
|
|
'J',
|
|
'K',
|
|
'L',
|
|
'M',
|
|
'N',
|
|
'O',
|
|
'P',
|
|
'Q',
|
|
'R',
|
|
'S',
|
|
'T',
|
|
'U',
|
|
'V',
|
|
'W',
|
|
'X',
|
|
'Y',
|
|
'Z',
|
|
' ',
|
|
]
|
|
|
|
|
|
func _ready() -> void:
|
|
connect("text_changed", _text_to_upper)
|
|
|
|
|
|
func _text_to_upper(new_text: String):
|
|
var ascii_map := {
|
|
"á":"a", "à":"a", "â":"a", "ä":"a", "ã":"a", "å":"a",
|
|
"é":"e", "è":"e", "ê":"e", "ë":"e",
|
|
"í":"i", "ì":"i", "î":"i", "ï":"i",
|
|
"ó":"o", "ò":"o", "ô":"o", "ö":"o", "õ":"o",
|
|
"ú":"u", "ù":"u", "û":"u", "ü":"u",
|
|
"ñ":"n", "ç":"c",
|
|
"Á":"A", "À":"A", "Â":"A", "Ä":"A", "Ã":"A", "Å":"A",
|
|
"É":"E", "È":"E", "Ê":"E", "Ë":"E",
|
|
"Í":"I", "Ì":"I", "Î":"I", "Ï":"I",
|
|
"Ó":"O", "Ò":"O", "Ô":"O", "Ö":"O", "Õ":"O",
|
|
"Ú":"U", "Ù":"U", "Û":"U", "Ü":"U",
|
|
"Ñ":"N", "Ç":"C"
|
|
}
|
|
|
|
var filtered_text := ""
|
|
for c in new_text.to_upper():
|
|
if ascii_map.has(c) and available_characters.has(ascii_map[c]):
|
|
filtered_text += ascii_map[c]
|
|
elif c.unicode_at(0) <= 127 and available_characters.has(c):
|
|
filtered_text += c
|
|
|
|
var last_caret_column = caret_column
|
|
text = filtered_text
|
|
caret_column = last_caret_column
|