Доработка. Таблица без заголовка

This commit is contained in:
sasha80
2023-09-26 09:58:30 +03:00
parent 31444f6d0f
commit 52c16b0624

View File

@@ -25,6 +25,7 @@ const META_EVENT_NAME = 'event_name' ## Имя свойс
var header: GridContainer ## Заголовок таблицы
var in_focus: = false ## Фокус пользовательского ввода
var nodes: = {} ## Все ячейки таблицы и дополнительные элементы
var columns_min_size = [] ## Ширина каждой колонки
var ScnNode: PackedScene ## Прототип ячейки таблицы
var ScnSelector: PackedScene ## Прототип индикатора выбранного ряда
var selector_color_proc: Callable ## Ссылка на процедуру генератора цвета индикатора выбранного ряда
@@ -179,7 +180,11 @@ func set_columns_min_size(sizes: Array) -> void:
assert((columns == 1) or (columns == sizes.size()))
columns = sizes.size()
var rows_count: = get_rows_count()
for i_row in rows_count: set_nodes_min_size(i_row, sizes)
columns_min_size.clear()
for sz in sizes:
columns_min_size.append(sz)
for i_row in rows_count:
set_nodes_min_size(i_row, sizes, NODE_KEY_FORMAT)
if nodes.has(HEAD_KEY_FORMAT % [0, 0]):
set_nodes_min_size(0, sizes, HEAD_KEY_FORMAT)
@@ -318,6 +323,7 @@ func add_row(row_types: Array) -> void:
assert(columns == row_types.size(), 'ошибка: %s количество колонок установлено ранее - %d, но требуется %d' % [self, columns, row_types.size()])
var i_row: int = get_rows_count()
assert(i_row < MAX_INDEX, 'ошибка: слишком много рядов, больше %d' % (MAX_INDEX + 1))
var allow_set_size = columns_min_size.size() >= row_types.size()
for i_col in columns:
var node_type = row_types[i_col]
var node = node_type.instantiate()
@@ -325,6 +331,9 @@ func add_row(row_types: Array) -> void:
var node_key: String = NODE_KEY_FORMAT % [i_row, i_col]
node.name = node_key
add_child(node)
if allow_set_size:
node.custom_minimum_size.x = columns_min_size[i_col]
node.set_deferred('size.x', columns_min_size[i_col])
nodes[node_key] = node
var conn = Callable(self, '_on_focus_entered').bind(node)
node.connect('focus_entered', conn)