Исправление. Обращение к несуществующему полю 'name'
This commit is contained in:
@@ -10,7 +10,6 @@ extends GridContainer
|
||||
@export_file var selector_type_file: = 'res://table/selector.tscn': set = load_selector_scene ## Сцена индикатора для выбранного ряда
|
||||
|
||||
const CONN_PREFIX = 'CONN_' ## Префикс ключа обработчиков событий ячейки таблицы
|
||||
const DATA_PREFIX = 'DATA_' ## Префикс ключа данных ячейки таблицы
|
||||
const HEAD_PREFIX = 'HEAD_' ## Префикс ключа заголовка таблицы
|
||||
const INDEX_FORMAT = '%02d_%02d' ## Формат индекса ключа
|
||||
const MAX_INDEX = 99 ## Максимальное значение индекса для колонки и строки. Связано с форматом индекса ключа
|
||||
@@ -18,10 +17,10 @@ const NODE_PREFIX = 'NODE_' ## Префикс ключа ячейки та
|
||||
const SLCT_PREFIX = 'SLCT_' ## Префикс ключа индикатора выбранного ряда таблицы
|
||||
|
||||
const CONNECTED_KEY_FORMAT = CONN_PREFIX + INDEX_FORMAT ## Формат ключа подключенных обработчиков сигналов
|
||||
const DATA_KEY_FORMAT = DATA_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'
|
||||
|
||||
var header: GridContainer ## Заголовок таблицы
|
||||
var in_focus: = false ## Фокус пользовательского ввода
|
||||
@@ -40,6 +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)
|
||||
|
||||
|
||||
## Закрепляет заголовок таблицы. [param scrl] - Прокрутка,
|
||||
@@ -237,7 +238,7 @@ func set_selector_size_proc(instance: Object, function: String) -> void:
|
||||
assert(selector_size_proc.is_valid())
|
||||
|
||||
|
||||
## [param i_row] - индекс ряда
|
||||
## [param i_row] - Индекс ряда
|
||||
func default_selector_size_proc(i_row: int, rect: Array) -> void:
|
||||
get_row_rect(i_row, rect)
|
||||
rect[0] += position.x - node_gap.x / 2.0
|
||||
@@ -253,7 +254,7 @@ func clear_rows_selected():
|
||||
set_row_selected(i_row, false)
|
||||
|
||||
|
||||
## [param i_row] - индекс ряда.
|
||||
## [param i_row] - Индекс ряда.
|
||||
func set_row_selected(i_row: int, selected: bool = true) -> void:
|
||||
var key: = ROW_SELECTOR_KEY_FORMAT % [i_row, 0]
|
||||
var node = nodes[NODE_KEY_FORMAT % [i_row, 0]]
|
||||
@@ -274,13 +275,13 @@ func set_row_selected(i_row: int, selected: bool = true) -> void:
|
||||
node.add_child(selector)
|
||||
|
||||
|
||||
## [param i_row] - индекс ряда.
|
||||
## [param i_row] - Индекс ряда.
|
||||
func is_row_selected(i_row: int) -> bool:
|
||||
var key: = ROW_SELECTOR_KEY_FORMAT % [i_row, 0]
|
||||
return nodes.has(key)
|
||||
|
||||
|
||||
## [param i_row] - индексы рядов.
|
||||
## [param i_row] - Индексы рядов.
|
||||
func get_selected_rows(i_rows: Array) -> void:
|
||||
for key in nodes.keys():
|
||||
if SLCT_PREFIX in key:
|
||||
@@ -302,12 +303,6 @@ func get_node2(i_col: int, i_row: int) -> Node:
|
||||
return nodes[key]
|
||||
|
||||
|
||||
## [param i_row] - индекс ряда.
|
||||
func set_node_user_data(i_col: int, i_row: int, user_data) -> void:
|
||||
var key: = DATA_KEY_FORMAT % [i_row, i_col]
|
||||
nodes[key] = user_data
|
||||
|
||||
|
||||
##
|
||||
func add_row(row_types: Array) -> void:
|
||||
assert(row_types.size() < MAX_INDEX, 'ошибка: слишком много колонок, больше %d' % (MAX_INDEX + 1))
|
||||
@@ -318,7 +313,9 @@ func add_row(row_types: Array) -> void:
|
||||
var i_row: int = get_rows_count()
|
||||
assert(i_row < MAX_INDEX, 'ошибка: слишком много рядов, больше %d' % (MAX_INDEX + 1))
|
||||
for i_col in columns:
|
||||
var node = row_types[i_col].instantiate()
|
||||
var node_type = row_types[i_col]
|
||||
var node = node_type.instantiate()
|
||||
assert(node.name == node.name, 'ошибка: экземпляр не имеет поля \"name\"')
|
||||
var head = nodes[HEAD_KEY_FORMAT % [0, i_col]]
|
||||
node.custom_minimum_size.x = head.custom_minimum_size.x
|
||||
node.set_deferred('size.x', head.size.x)
|
||||
@@ -377,12 +374,6 @@ func set_header_text(headers: Array):
|
||||
set_row_text(0, headers, 0, HEAD_KEY_FORMAT)
|
||||
|
||||
|
||||
##
|
||||
func get_node_user_data(i_col: int, i_row: int):
|
||||
var key: = get_node_key(DATA_KEY_FORMAT, i_col, i_row)
|
||||
return nodes[key]
|
||||
|
||||
|
||||
##
|
||||
func remove_row(i_row: int):
|
||||
var sel_key: String = ROW_SELECTOR_KEY_FORMAT % [i_row, 0]
|
||||
@@ -403,10 +394,6 @@ func remove_row(i_row: int):
|
||||
var conn = get_node_meta(i_col, i_row, 'callable_focus_entered')
|
||||
node.disconnect('focus_entered', conn)
|
||||
|
||||
var data_key: String = DATA_KEY_FORMAT % [i_row, i_col]
|
||||
if nodes.has(data_key):
|
||||
nodes.erase(data_key)
|
||||
|
||||
if nodes.has(conn_key):
|
||||
conn = nodes[conn_key]
|
||||
node.disconnect('pressed', conn)
|
||||
@@ -440,7 +427,6 @@ func rehash():
|
||||
var i_hdr: = [Vector2i()]
|
||||
var i_slct: = [Vector2i()]
|
||||
var i_conn: = [Vector2i()]
|
||||
var i_data: = [Vector2i()]
|
||||
var nodes_copy = {}
|
||||
for key in nodes:
|
||||
var iv = get_key_indexes(key)
|
||||
@@ -457,9 +443,6 @@ func rehash():
|
||||
elif CONN_PREFIX in key:
|
||||
swap_nodes(nodes_copy, CONNECTED_KEY_FORMAT, i0, i_conn[0])
|
||||
next_index(i_conn)
|
||||
elif DATA_PREFIX in key:
|
||||
swap_nodes(nodes_copy, DATA_KEY_FORMAT, i0, i_data[0])
|
||||
next_index(i_data)
|
||||
nodes.clear()
|
||||
nodes.merge(nodes_copy)
|
||||
|
||||
@@ -467,8 +450,7 @@ func rehash():
|
||||
## Удаляет все строки таблицы
|
||||
func clear_rows() -> void:
|
||||
var rows_count: int = get_rows_count()
|
||||
print_debug(rows_count)
|
||||
for i_row in rows_count:
|
||||
for i_row in range(rows_count - 1, -1, -1):
|
||||
remove_row(i_row)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user