2018-05-28 16:48:02 +00:00
|
|
|
extends Object
|
|
|
|
|
2019-09-02 12:04:45 +00:00
|
|
|
var tts
|
|
|
|
|
2018-05-28 16:48:02 +00:00
|
|
|
var node
|
|
|
|
|
2018-07-19 20:12:01 +00:00
|
|
|
var position_in_children = 0
|
|
|
|
|
2019-09-03 20:57:32 +00:00
|
|
|
var column_in_row = 0
|
|
|
|
|
2019-09-04 01:27:31 +00:00
|
|
|
func get_siblings():
|
|
|
|
var parent = node.get_parent()
|
|
|
|
if parent:
|
|
|
|
return parent.get_children()
|
|
|
|
return null
|
|
|
|
|
2019-09-04 16:32:41 +00:00
|
|
|
func singular_or_plural(count, singular, plural):
|
2018-06-10 21:14:43 +00:00
|
|
|
if count == 1:
|
2019-09-04 16:32:41 +00:00
|
|
|
return singular
|
2018-06-10 21:14:43 +00:00
|
|
|
else:
|
2019-09-04 16:32:41 +00:00
|
|
|
return plural
|
|
|
|
|
|
|
|
func left_click(item := node):
|
|
|
|
var click = InputEventMouseButton.new()
|
|
|
|
click.button_index = BUTTON_LEFT
|
|
|
|
click.pressed = true
|
|
|
|
if item is Node:
|
|
|
|
click.position = item.rect_global_position
|
|
|
|
node.get_tree().input_event(click)
|
|
|
|
click.pressed = false
|
|
|
|
node.get_tree().input_event(click)
|
2018-06-10 21:14:43 +00:00
|
|
|
|
2019-09-09 19:44:10 +00:00
|
|
|
func guess_label():
|
|
|
|
var parent = node.get_parent()
|
|
|
|
while parent:
|
|
|
|
if parent is EditorProperty and parent.label:
|
|
|
|
return parent.label
|
|
|
|
parent = parent.get_parent()
|
|
|
|
|
2019-09-05 14:01:20 +00:00
|
|
|
func close_key_event_dialog():
|
|
|
|
node.get_ok().emit_signal("pressed")
|
|
|
|
|
|
|
|
var dialog_close_timer = Timer.new()
|
|
|
|
|
|
|
|
func accept_dialog_focus():
|
|
|
|
if not dialog_close_timer.is_connected("timeout", self, "close_key_event_dialog"):
|
|
|
|
dialog_close_timer.connect("timeout", self, "close_key_event_dialog")
|
|
|
|
dialog_close_timer.one_shot = true
|
|
|
|
dialog_close_timer.start(5)
|
|
|
|
if dialog_close_timer.get_parent() == null:
|
|
|
|
node.add_child(dialog_close_timer)
|
|
|
|
|
2019-09-09 13:35:05 +00:00
|
|
|
func checkbox_focus():
|
2019-09-09 19:45:44 +00:00
|
|
|
var text
|
2019-09-09 13:35:05 +00:00
|
|
|
if node.pressed:
|
2019-09-09 19:45:44 +00:00
|
|
|
text = "checked"
|
2019-09-09 13:35:05 +00:00
|
|
|
else:
|
2019-09-09 19:45:44 +00:00
|
|
|
text = "unchecked"
|
2019-09-09 13:35:05 +00:00
|
|
|
text += " checkbox"
|
|
|
|
tts.speak(text, false)
|
|
|
|
|
|
|
|
func checkbox_toggled(checked):
|
|
|
|
if checked:
|
|
|
|
tts.speak("checked", true)
|
|
|
|
else:
|
|
|
|
tts.speak("unchecked", true)
|
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func button_focus():
|
2019-09-02 12:04:45 +00:00
|
|
|
var text
|
2018-06-10 20:32:27 +00:00
|
|
|
if node.text:
|
|
|
|
text = node.text
|
2018-07-19 15:15:49 +00:00
|
|
|
if text:
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.speak("%s: button" % text, false)
|
2018-07-19 15:15:49 +00:00
|
|
|
else:
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.speak("button", false)
|
2018-06-10 20:32:27 +00:00
|
|
|
|
2019-09-04 16:32:41 +00:00
|
|
|
func texturebutton_focus():
|
|
|
|
tts.speak("button", false)
|
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func item_list_focus():
|
2018-07-03 17:01:00 +00:00
|
|
|
var count = node.get_item_count()
|
|
|
|
var selected = node.get_selected_items()
|
2019-09-04 16:32:41 +00:00
|
|
|
tts.speak("list, %s %s" % [count, singular_or_plural(count, "item", "items")], false)
|
2019-09-02 12:04:45 +00:00
|
|
|
tts.speak(selected, false)
|
2018-07-03 17:01:00 +00:00
|
|
|
|
2019-09-02 12:04:45 +00:00
|
|
|
func item_list_item_selected(index):
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.speak("Selected", false)
|
2018-07-03 17:01:00 +00:00
|
|
|
|
2019-09-02 12:04:45 +00:00
|
|
|
func item_list_multi_selected(index, selected):
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.speak("Multiselect", false)
|
2018-07-03 17:01:00 +00:00
|
|
|
|
2019-09-02 12:04:45 +00:00
|
|
|
func item_list_nothing_selected():
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.speak("Nothing selected", false)
|
2018-07-03 17:01:00 +00:00
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func item_list_input(event):
|
2019-09-03 20:57:32 +00:00
|
|
|
var old_pos = position_in_children
|
2019-09-05 14:01:20 +00:00
|
|
|
if event.is_action_pressed("ui_up"):
|
|
|
|
node.accept_event()
|
2018-07-19 20:12:01 +00:00
|
|
|
if position_in_children == 0:
|
2018-07-03 16:39:43 +00:00
|
|
|
return
|
2018-07-19 20:12:01 +00:00
|
|
|
position_in_children -= 1
|
2019-09-05 14:01:20 +00:00
|
|
|
elif event.is_action_pressed("ui_down"):
|
|
|
|
node.accept_event()
|
2018-07-19 20:12:01 +00:00
|
|
|
if position_in_children >= node.get_item_count()-1:
|
2018-07-03 16:39:43 +00:00
|
|
|
return
|
2018-07-19 20:12:01 +00:00
|
|
|
position_in_children += 1
|
2019-09-05 14:01:20 +00:00
|
|
|
elif event.is_action_pressed("ui_home"):
|
|
|
|
node.accept_event()
|
2018-07-19 20:12:01 +00:00
|
|
|
position_in_children = 0
|
2019-09-05 14:01:20 +00:00
|
|
|
elif event.is_action_pressed("ui_end"):
|
|
|
|
node.accept_event()
|
2018-07-19 20:12:01 +00:00
|
|
|
position_in_children = node.get_item_count()-1
|
|
|
|
if old_pos != position_in_children:
|
|
|
|
var text = node.get_item_text(position_in_children)
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.speak("%s: %s of %s" % [text, position_in_children+1, node.get_item_count()], false)
|
2018-06-10 21:14:43 +00:00
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func label_focus():
|
2019-09-02 12:04:45 +00:00
|
|
|
var text = node.text
|
|
|
|
if text == "":
|
|
|
|
text = "blank"
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.speak(text, false)
|
2018-07-19 20:20:48 +00:00
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func line_edit_focus():
|
2018-06-10 20:32:27 +00:00
|
|
|
var text = "blank"
|
|
|
|
if node.secret:
|
|
|
|
text = "password"
|
|
|
|
elif node.text != "":
|
|
|
|
text = node.text
|
|
|
|
elif node.placeholder_text != "":
|
|
|
|
text = node.placeholder_text
|
|
|
|
var type = "editable text"
|
|
|
|
if not node.editable:
|
|
|
|
type = "text"
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.speak("%s: %s" % [text, type], false)
|
2018-06-10 20:32:27 +00:00
|
|
|
|
2018-07-03 15:45:31 +00:00
|
|
|
func text_deleted(text):
|
2019-09-02 12:04:45 +00:00
|
|
|
tts.speak("%s deleted" % text, true)
|
2018-07-03 15:45:31 +00:00
|
|
|
|
|
|
|
func text_inserted(text):
|
2019-09-02 12:04:45 +00:00
|
|
|
tts.speak(text, true)
|
2018-07-03 15:45:31 +00:00
|
|
|
|
2018-06-18 20:33:03 +00:00
|
|
|
var old_pos
|
|
|
|
|
|
|
|
func check_caret_moved():
|
2018-06-12 12:32:09 +00:00
|
|
|
var pos = node.caret_position
|
2019-09-02 12:48:50 +00:00
|
|
|
if old_pos != null and old_pos != pos:
|
2018-06-18 20:33:03 +00:00
|
|
|
var text = node.text
|
|
|
|
if pos > len(text)-1:
|
2019-09-02 12:04:45 +00:00
|
|
|
tts.speak("blank", true)
|
2018-06-18 20:33:03 +00:00
|
|
|
else:
|
2019-09-02 12:04:45 +00:00
|
|
|
tts.speak(text[pos], true)
|
2018-06-18 20:33:03 +00:00
|
|
|
old_pos = pos
|
2019-09-02 12:48:50 +00:00
|
|
|
elif old_pos == null:
|
|
|
|
old_pos = pos
|
2018-06-12 12:32:09 +00:00
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func menu_button_focus():
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.speak(node.text + ": menu", false)
|
2019-09-02 12:04:45 +00:00
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func popup_menu_focus():
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.speak("menu", false)
|
2018-07-19 20:12:01 +00:00
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func popup_menu_item_id_focus(id):
|
2019-09-02 12:04:45 +00:00
|
|
|
print("id: %s" % id)
|
|
|
|
print("count: %s" % node.get_item_count())
|
2018-07-19 20:12:01 +00:00
|
|
|
var item = node.get_item_text(id)
|
2019-09-02 12:04:45 +00:00
|
|
|
var submenu = node.get_item_submenu(id)
|
2018-07-19 20:12:01 +00:00
|
|
|
var tooltip = node.get_item_tooltip(position_in_children)
|
2019-09-02 12:04:45 +00:00
|
|
|
var disabled = node.is_item_disabled(id)
|
2018-07-19 20:12:01 +00:00
|
|
|
if item and tooltip:
|
|
|
|
item += ": "
|
|
|
|
item += tooltip
|
|
|
|
elif tooltip:
|
|
|
|
item = tooltip
|
|
|
|
var shortcut = node.get_item_shortcut(position_in_children)
|
2019-09-02 12:04:45 +00:00
|
|
|
if shortcut != null and shortcut.get_as_text() != "None":
|
2018-07-19 20:12:01 +00:00
|
|
|
item += ": "+shortcut.get_as_text()
|
2019-09-02 12:04:45 +00:00
|
|
|
if item == "":
|
|
|
|
item = "Unlabelled"
|
|
|
|
if submenu:
|
|
|
|
item += ": menu"
|
|
|
|
if disabled:
|
|
|
|
item += ": disabled"
|
|
|
|
item += ": " + str(id + 1) + " of " + str(node.get_item_count())
|
|
|
|
tts.speak(item, true)
|
2018-07-19 20:12:01 +00:00
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func tree_item_render():
|
2019-09-03 21:33:02 +00:00
|
|
|
var focused_tree_item = node.get_selected()
|
2019-09-03 17:54:19 +00:00
|
|
|
var result = ""
|
|
|
|
for i in range(node.columns):
|
2019-09-03 20:57:32 +00:00
|
|
|
result += focused_tree_item.get_text(i) + ": "
|
|
|
|
if focused_tree_item.get_children():
|
|
|
|
if focused_tree_item.collapsed:
|
|
|
|
result += "collapsed "
|
|
|
|
else:
|
|
|
|
result += "expanded "
|
2019-09-03 17:54:19 +00:00
|
|
|
result += "tree item"
|
2019-09-03 20:57:32 +00:00
|
|
|
if focused_tree_item.is_selected(0):
|
2019-09-03 17:54:19 +00:00
|
|
|
result += ": selected"
|
2019-09-03 20:57:32 +00:00
|
|
|
tts.speak(result, true)
|
2018-07-19 17:02:40 +00:00
|
|
|
|
2019-09-03 22:22:02 +00:00
|
|
|
var prev_selected_cell
|
|
|
|
|
2019-09-04 16:32:41 +00:00
|
|
|
var button_index
|
|
|
|
|
2019-09-03 22:22:02 +00:00
|
|
|
func tree_item_selected():
|
2019-09-04 16:32:41 +00:00
|
|
|
button_index = null
|
2019-09-03 22:22:02 +00:00
|
|
|
var cell = node.get_selected()
|
|
|
|
if cell != prev_selected_cell:
|
|
|
|
tree_item_render()
|
|
|
|
prev_selected_cell = cell
|
|
|
|
else:
|
|
|
|
var text = ""
|
|
|
|
for i in range(node.columns):
|
|
|
|
if cell.is_selected(i):
|
|
|
|
var title = node.get_column_title(i)
|
|
|
|
if title:
|
|
|
|
text += title + ": "
|
2019-09-04 16:32:41 +00:00
|
|
|
var column_text = cell.get_text(i)
|
|
|
|
if column_text:
|
|
|
|
text += column_text + ", "
|
|
|
|
var button_count = cell.get_button_count(i)
|
|
|
|
if button_count != 0:
|
|
|
|
button_index = 0
|
|
|
|
text += str(button_count) + " " + singular_or_plural(button_count, "button", "buttons") + ", "
|
|
|
|
var button_tooltip = cell.get_button_tooltip(i, button_index)
|
|
|
|
if button_tooltip:
|
|
|
|
text += button_tooltip + ": button, "
|
|
|
|
if button_count > 1:
|
|
|
|
text += "Use Home and End to switch focus, "
|
|
|
|
if text != "":
|
|
|
|
tts.speak(text, true)
|
|
|
|
else:
|
|
|
|
tts.speak("blank", true)
|
2019-09-03 22:22:02 +00:00
|
|
|
|
|
|
|
func tree_item_multi_select(item, column, selected):
|
|
|
|
if selected:
|
|
|
|
tts.speak("selected", true)
|
|
|
|
else:
|
|
|
|
tts.speak("unselected", true)
|
2019-09-03 21:33:02 +00:00
|
|
|
|
2019-09-04 16:32:41 +00:00
|
|
|
func tree_input(event):
|
|
|
|
var item = node.get_selected()
|
|
|
|
var column
|
|
|
|
if item:
|
|
|
|
for i in range(node.columns):
|
|
|
|
if item.is_selected(i):
|
|
|
|
column = i
|
2019-09-05 14:01:20 +00:00
|
|
|
break
|
2019-09-04 16:32:41 +00:00
|
|
|
if item and column and button_index != null:
|
2019-09-05 14:01:20 +00:00
|
|
|
if event.is_action_pressed("ui_accept"):
|
2019-09-04 16:32:41 +00:00
|
|
|
node.accept_event()
|
|
|
|
return node.emit_signal("button_pressed", item, column, button_index + 1)
|
|
|
|
var new_button_index = button_index
|
2019-09-05 14:01:20 +00:00
|
|
|
if event.is_action_pressed("ui_home"):
|
2019-09-04 16:32:41 +00:00
|
|
|
node.accept_event()
|
|
|
|
new_button_index += 1
|
|
|
|
if new_button_index >= item.get_button_count(column):
|
|
|
|
new_button_index = 0
|
2019-09-05 14:01:20 +00:00
|
|
|
elif event.is_action_pressed("ui_end"):
|
2019-09-04 16:32:41 +00:00
|
|
|
node.accept_event()
|
|
|
|
new_button_index -= 1
|
|
|
|
if new_button_index < 0:
|
|
|
|
new_button_index = item.get_button_count(column) - 1
|
|
|
|
if new_button_index != button_index:
|
|
|
|
button_index = new_button_index
|
|
|
|
var tooltip = item.get_button_tooltip(column, button_index)
|
|
|
|
var text = ""
|
|
|
|
if tooltip:
|
|
|
|
text += tooltip + ": "
|
|
|
|
text += "button"
|
|
|
|
tts.speak(text, true)
|
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func tree_focus():
|
|
|
|
if node.get_selected():
|
|
|
|
tree_item_render()
|
|
|
|
else:
|
|
|
|
tts.speak("tree", true)
|
|
|
|
|
|
|
|
func tree_item_collapse(item):
|
|
|
|
if node.has_focus():
|
|
|
|
if item.collapsed:
|
|
|
|
tts.speak("collapsed", true)
|
|
|
|
else:
|
|
|
|
tts.speak("expanded", true)
|
|
|
|
|
|
|
|
func tab_container_focus():
|
2019-09-02 14:55:51 +00:00
|
|
|
var text = node.get_tab_title(node.current_tab)
|
|
|
|
text += ": tab: " + str(node.current_tab + 1) + " of " + str(node.get_tab_count())
|
|
|
|
tts.speak(text, false)
|
|
|
|
|
2019-09-05 14:16:25 +00:00
|
|
|
func tab_container_tab_changed(tab):
|
|
|
|
tts.stop()
|
|
|
|
tab_container_focus()
|
|
|
|
|
2019-09-03 21:45:46 +00:00
|
|
|
func tab_container_input(event):
|
2019-09-02 16:08:10 +00:00
|
|
|
var new_tab = node.current_tab
|
2019-09-05 14:01:20 +00:00
|
|
|
if event.is_action_pressed("ui_right"):
|
|
|
|
node.accept_event()
|
2019-09-02 14:55:51 +00:00
|
|
|
new_tab += 1
|
2019-09-05 14:01:20 +00:00
|
|
|
elif event.is_action_pressed("ui_left"):
|
|
|
|
node.accept_event()
|
2019-09-02 14:55:51 +00:00
|
|
|
new_tab -= 1
|
|
|
|
if new_tab < 0:
|
|
|
|
new_tab = node.get_tab_count() - 1
|
|
|
|
elif new_tab >= node.get_tab_count():
|
|
|
|
new_tab = 0
|
2019-09-03 17:58:47 +00:00
|
|
|
if node.current_tab != new_tab:
|
|
|
|
node.current_tab = new_tab
|
2018-06-10 21:02:45 +00:00
|
|
|
|
2018-05-28 21:45:13 +00:00
|
|
|
func focused():
|
2019-09-02 12:04:45 +00:00
|
|
|
print("Focus: %s" % node)
|
2019-09-02 12:41:16 +00:00
|
|
|
tts.stop()
|
2019-09-09 19:44:10 +00:00
|
|
|
var label = guess_label()
|
|
|
|
if label:
|
|
|
|
tts.speak(label, false)
|
2018-07-19 20:12:01 +00:00
|
|
|
if node is MenuButton:
|
2019-09-03 21:45:46 +00:00
|
|
|
menu_button_focus()
|
2019-09-05 14:01:20 +00:00
|
|
|
elif node is AcceptDialog:
|
|
|
|
accept_dialog_focus()
|
2019-09-09 13:35:05 +00:00
|
|
|
elif node is CheckBox:
|
|
|
|
checkbox_focus()
|
2018-07-19 20:12:01 +00:00
|
|
|
elif node is Button:
|
2019-09-03 21:45:46 +00:00
|
|
|
button_focus()
|
2019-09-04 16:32:41 +00:00
|
|
|
elif node.get_class() == "EditorInspectorSection":
|
|
|
|
editor_inspector_section_focus()
|
2018-06-10 21:14:43 +00:00
|
|
|
elif node is ItemList:
|
2019-09-03 21:45:46 +00:00
|
|
|
item_list_focus()
|
2018-07-19 20:20:48 +00:00
|
|
|
elif node is Label:
|
2019-09-03 21:45:46 +00:00
|
|
|
label_focus()
|
2018-06-10 20:32:27 +00:00
|
|
|
elif node is LineEdit:
|
2019-09-03 21:45:46 +00:00
|
|
|
line_edit_focus()
|
2018-07-19 20:12:01 +00:00
|
|
|
elif node is PopupMenu:
|
2019-09-03 21:45:46 +00:00
|
|
|
popup_menu_focus()
|
2019-09-02 14:55:51 +00:00
|
|
|
elif node is TabContainer:
|
2019-09-03 21:45:46 +00:00
|
|
|
tab_container_focus()
|
2019-09-04 16:32:41 +00:00
|
|
|
elif node is TextureButton:
|
|
|
|
texturebutton_focus()
|
2018-06-10 21:02:45 +00:00
|
|
|
elif node is Tree:
|
2019-09-03 21:45:46 +00:00
|
|
|
tree_focus()
|
2018-06-10 20:18:00 +00:00
|
|
|
else:
|
2019-09-02 12:04:45 +00:00
|
|
|
print("No handler")
|
2018-07-19 15:15:49 +00:00
|
|
|
if node.hint_tooltip:
|
2019-09-02 12:04:45 +00:00
|
|
|
tts.speak(node.hint_tooltip, false)
|
2018-05-28 16:48:02 +00:00
|
|
|
|
2018-05-28 21:45:13 +00:00
|
|
|
func unfocused():
|
2019-09-07 17:26:50 +00:00
|
|
|
print("Unfocused")
|
2018-07-19 20:12:01 +00:00
|
|
|
position_in_children = 0
|
2018-05-28 21:09:29 +00:00
|
|
|
|
2018-06-10 19:42:58 +00:00
|
|
|
func gui_input(event):
|
2019-09-02 14:55:51 +00:00
|
|
|
if node is TabContainer:
|
2019-09-03 21:45:46 +00:00
|
|
|
return tab_container_input(event)
|
2019-09-03 17:54:19 +00:00
|
|
|
elif node is ItemList:
|
2019-09-03 21:45:46 +00:00
|
|
|
return item_list_input(event)
|
2018-07-19 20:12:01 +00:00
|
|
|
elif node is LineEdit:
|
2018-07-03 16:39:43 +00:00
|
|
|
return check_caret_moved()
|
2019-09-04 16:32:41 +00:00
|
|
|
elif node is Tree:
|
|
|
|
return tree_input(event)
|
|
|
|
elif node.get_class() == "EditorInspectorSection":
|
|
|
|
return editor_inspector_section_input(event)
|
2019-09-04 01:27:31 +00:00
|
|
|
elif event.is_action_pressed("ui_left"):
|
|
|
|
return node.accept_event()
|
|
|
|
elif event.is_action_pressed("ui_right"):
|
|
|
|
return node.accept_event()
|
|
|
|
elif event.is_action_pressed("ui_up"):
|
|
|
|
return node.accept_event()
|
|
|
|
elif event.is_action_pressed("ui_down"):
|
|
|
|
return node.accept_event()
|
|
|
|
|
|
|
|
func is_in_bar():
|
|
|
|
var parent = node.get_parent()
|
|
|
|
if parent and parent is Container:
|
|
|
|
for child in parent.get_children():
|
|
|
|
if child and not is_focusable(child):
|
|
|
|
return false
|
|
|
|
return true
|
|
|
|
return false
|
2018-05-28 16:48:02 +00:00
|
|
|
|
2019-09-04 01:27:31 +00:00
|
|
|
func is_focusable(node):
|
2019-09-03 22:43:20 +00:00
|
|
|
if node is TabContainer:
|
|
|
|
return true
|
2019-09-04 16:32:41 +00:00
|
|
|
if node.get_class() == "EditorInspectorSection":
|
|
|
|
return true
|
2019-09-03 22:43:20 +00:00
|
|
|
if node is Container or node is Panel or node is Separator or node is ScrollBar or node is Popup or node.get_class() == "Control":
|
|
|
|
return false
|
|
|
|
return true
|
|
|
|
|
2019-09-04 16:32:41 +00:00
|
|
|
func editor_inspector_section_focus():
|
2019-09-07 17:50:01 +00:00
|
|
|
var child = node.get_children()[0]
|
|
|
|
var expanded = child.is_visible_in_tree()
|
|
|
|
tts.speak("editor inspector section:", true)
|
|
|
|
if expanded:
|
|
|
|
tts.speak("expanded", false)
|
|
|
|
else:
|
|
|
|
tts.speak("collapsed", false)
|
2019-09-04 16:32:41 +00:00
|
|
|
|
|
|
|
func editor_inspector_section_input(event):
|
2019-09-05 14:01:20 +00:00
|
|
|
if event.is_action_pressed("ui_accept"):
|
2019-09-04 16:32:41 +00:00
|
|
|
left_click()
|
2019-09-07 17:50:01 +00:00
|
|
|
var child = node.get_children()[0]
|
|
|
|
var expanded = child.is_visible_in_tree()
|
|
|
|
if expanded:
|
|
|
|
tts.speak("expanded", true)
|
|
|
|
else:
|
|
|
|
tts.speak("collapsed", true)
|
2019-09-04 16:32:41 +00:00
|
|
|
|
2019-09-02 12:04:45 +00:00
|
|
|
func _init(tts, node):
|
2018-06-07 21:18:36 +00:00
|
|
|
if node.is_in_group("accessible"):
|
|
|
|
return
|
|
|
|
node.add_to_group("accessible")
|
2019-09-02 12:04:45 +00:00
|
|
|
self.tts = tts
|
2018-05-28 16:48:02 +00:00
|
|
|
self.node = node
|
2019-09-04 01:27:31 +00:00
|
|
|
if is_focusable(node):
|
2019-09-02 14:55:51 +00:00
|
|
|
node.set_focus_mode(Control.FOCUS_ALL)
|
2018-07-03 16:42:00 +00:00
|
|
|
node.connect("focus_entered", self, "focused")
|
|
|
|
node.connect("mouse_entered", self, "focused")
|
|
|
|
node.connect("focus_exited", self, "unfocused")
|
|
|
|
node.connect("mouse_exited", self, "unfocused")
|
|
|
|
node.connect("gui_input", self, "gui_input")
|
2019-09-09 13:35:05 +00:00
|
|
|
if node is CheckBox:
|
|
|
|
node.connect("toggled", self, "checkbox_toggled")
|
|
|
|
elif node is ItemList:
|
2019-09-02 12:04:45 +00:00
|
|
|
node.connect("item_selected", self, "item_list_item_selected")
|
|
|
|
node.connect("multi_selected", self, "item_list_multi_selected")
|
|
|
|
node.connect("nothing_selected", self, "item_list_nothing_selected")
|
|
|
|
# elif node is LineEdit:
|
|
|
|
# node.connect("text_deleted", self, "text_deleted")
|
|
|
|
# node.connect("text_inserted", self, "text_inserted")
|
2018-07-19 20:12:01 +00:00
|
|
|
elif node is PopupMenu:
|
2019-09-03 21:45:46 +00:00
|
|
|
node.connect("id_focused", self, "popup_menu_item_id_focus")
|
2019-09-05 14:16:25 +00:00
|
|
|
elif node is TabContainer:
|
|
|
|
node.connect("tab_changed", self, "tab_container_tab_changed")
|
2018-07-19 17:02:40 +00:00
|
|
|
elif node is Tree:
|
2019-09-03 21:45:46 +00:00
|
|
|
node.connect("item_collapsed", self, "tree_item_collapse")
|
|
|
|
node.connect("multi_selected", self, "tree_item_multi_select")
|
2019-09-03 22:22:02 +00:00
|
|
|
if node.select_mode == Tree.SELECT_MULTI:
|
|
|
|
node.connect("cell_selected", self, "tree_item_selected")
|
|
|
|
else:
|
|
|
|
node.connect("item_selected", self, "tree_item_selected")
|
2018-07-03 16:42:00 +00:00
|
|
|
node.connect("tree_exiting", self, "free")
|