From 85a63f1d47e851b4a0bae2912df0b5ad6144772c Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 16 Aug 2023 08:58:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BD=D0=B5=D1=8F=D0=B2=D0=BD=D0=BE=20=D1=83?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7=D0=B0=D0=BD=D0=BD=D0=BE=D0=B5=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B1=D1=8B=D1=82=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- table/table.gd | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/table/table.gd b/table/table.gd index 661a65f7..00fcb639 100644 --- a/table/table.gd +++ b/table/table.gd @@ -18,8 +18,9 @@ const SLCT_PREFIX = 'SLCT_' ## Префикс ключа индикато 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' +const META_USER_DATA = 'user_data' ## Имя свойства для сохранения данных пользователя +const META_CALLABLE = 'callable' ## Имя свойства для сохранения вызываемого +const META_EVENT_NAME = 'event_name' ## Имя свойства для сохранения названия события var header: GridContainer ## Заголовок таблицы var in_focus: = false ## Фокус пользовательского ввода @@ -38,9 +39,8 @@ var scroll_adj: = Vector2(0, 0) func get_node_scene(): return node_type_file func _assert_meta(i_col: int, i_row: int, pname: String, node): assert(node.has_meta(pname), 'ошибка: нет мета-свойства \"%s\" у ячейки колонка:%d ряд:%d' % [pname, i_col, i_row]) -func get_node_user_data(i_col: int, i_row: int): return get_node_meta(i_col, i_row, META_NAME_USER_DATA) -func set_node_user_data(i_col: int, i_row: int, val) -> void: set_node_meta(i_col, i_row, META_NAME_USER_DATA, val) -func _unhandled_key_input(event: InputEvent) -> void: _gui_input(event) +func get_node_user_data(i_col: int, i_row: int): return get_node_meta(i_col, i_row, META_USER_DATA) +func set_node_user_data(i_col: int, i_row: int, val) -> void: set_node_meta(i_col, i_row, META_USER_DATA, val) ## Закрепляет заголовок таблицы. [param scrl] - Прокрутка, @@ -393,9 +393,10 @@ func remove_row(i_row: int): var conn = get_node_meta(i_col, i_row, 'callable_focus_entered') node.disconnect('focus_entered', conn) - if node.has_meta(META_NAME_CALLEBLE): - conn = node.get_meta(META_NAME_CALLEBLE) - node.disconnect('pressed', conn) + if node.has_meta(META_CALLABLE): + conn = node.get_meta(META_CALLABLE) + var event_name = node.get_meta(META_EVENT_NAME) + node.disconnect(event_name, conn) remove_child(node) nodes.erase(node_key) @@ -460,12 +461,13 @@ func connect_columns(dest_node: Node, event_name: String, callback: String, clmn for i_col in clmns: assert(i_col >= 0 and i_col < columns, 'ошибка: нет такой колонки: %d' % i_col) var node = get_node2(i_col, i_row) - if node.has_meta(META_NAME_CALLEBLE): - var conn = node.get_meta(META_NAME_CALLEBLE) + if node.has_meta(META_CALLABLE): + var conn = node.get_meta(META_CALLABLE) node.disconnect(event_name, conn) var conn = Callable(dest_node, callback).bind([node] + user_data) assert (OK == node.connect(event_name, conn)) - node.set_meta(META_NAME_CALLEBLE, conn) + node.set_meta(META_CALLABLE, conn) + node.set_meta(META_EVENT_NAME, event_name) ##