diff --git a/table/table.gd b/table/table.gd index 8a3c8cb9..68001e55 100644 --- a/table/table.gd +++ b/table/table.gd @@ -9,18 +9,17 @@ extends GridContainer @export_file var node_type_file: = 'res://table/node.tscn': get = get_node_scene, set = load_node_scene ## Сцена ячейки устанавливаемая по умолчанию @export_file var selector_type_file: = 'res://table/selector.tscn': set = load_selector_scene ## Сцена индикатора для выбранного ряда -const CONN_PREFIX = 'CONN_' ## Префикс ключа обработчиков событий ячейки таблицы const HEAD_PREFIX = 'HEAD_' ## Префикс ключа заголовка таблицы const INDEX_FORMAT = '%02d_%02d' ## Формат индекса ключа const MAX_INDEX = 99 ## Максимальное значение индекса для колонки и строки. Связано с форматом индекса ключа const NODE_PREFIX = 'NODE_' ## Префикс ключа ячейки таблицы const SLCT_PREFIX = 'SLCT_' ## Префикс ключа индикатора выбранного ряда таблицы -const CONNECTED_KEY_FORMAT = CONN_PREFIX + INDEX_FORMAT ## Формат ключа подключенных обработчиков сигналов const HEAD_KEY_FORMAT = HEAD_PREFIX + INDEX_FORMAT ## Формат ключа заголовка const NODE_KEY_FORMAT = NODE_PREFIX + INDEX_FORMAT ## Формат ключа ячейки const ROW_SELECTOR_KEY_FORMAT = SLCT_PREFIX + INDEX_FORMAT ## Формат ключа индикаторов выбранного ряда const META_NAME_USER_DATA = 'user_data' +const META_NAME_CALLEBLE = 'calleble' var header: GridContainer ## Заголовок таблицы var in_focus: = false ## Фокус пользовательского ввода @@ -390,14 +389,12 @@ func remove_row(i_row: int): var node_key: String = NODE_KEY_FORMAT % [i_row, i_col] var node = nodes[node_key] - var conn_key: String = CONNECTED_KEY_FORMAT % [i_row, i_col] var conn = get_node_meta(i_col, i_row, 'callable_focus_entered') node.disconnect('focus_entered', conn) - if nodes.has(conn_key): - conn = nodes[conn_key] + if node.has_meta(META_NAME_CALLEBLE): + conn = node.get_meta(META_NAME_CALLEBLE) node.disconnect('pressed', conn) - nodes.erase(conn_key) remove_child(node) nodes.erase(node_key) @@ -426,7 +423,6 @@ func rehash(): var i_node: = [Vector2i()] var i_hdr: = [Vector2i()] var i_slct: = [Vector2i()] - var i_conn: = [Vector2i()] var nodes_copy = {} for key in nodes: var iv = get_key_indexes(key) @@ -440,9 +436,6 @@ func rehash(): elif SLCT_PREFIX in key: swap_nodes(nodes_copy, ROW_SELECTOR_KEY_FORMAT, i0, i_slct[0]) next_index(i_slct) - elif CONN_PREFIX in key: - swap_nodes(nodes_copy, CONNECTED_KEY_FORMAT, i0, i_conn[0]) - next_index(i_conn) nodes.clear() nodes.merge(nodes_copy) @@ -465,15 +458,13 @@ func connect_columns(dest_node: Node, event_name: String, callback: String, clmn for i_row in rows_count: for i_col in clmns: assert(i_col >= 0 and i_col < columns, 'ошибка: нет такой колонки: %d' % i_col) - var node_key: String = NODE_KEY_FORMAT % [i_row, i_col] - var conn_key: String = CONNECTED_KEY_FORMAT % [i_row, i_col] - var node = nodes[node_key] - if nodes.has(conn_key): - var conn = nodes[conn_key] + var node = get_node2(i_col, i_row) + if node.has_meta(META_NAME_CALLEBLE): + var conn = node.get_meta(META_NAME_CALLEBLE) node.disconnect(event_name, conn) var conn = Callable(dest_node, callback).bind([node] + user_data) assert (OK == node.connect(event_name, conn)) - nodes[conn_key] = conn + node.set_meta(META_NAME_CALLEBLE, conn) ## func set_rows_text(rows: Array) -> void: