Рефактор.
This commit is contained in:
@@ -28,7 +28,7 @@ var nodes: = {} ## Все ячейки таблицы и до
|
||||
var ScnNode: PackedScene ## Прототип ячейки таблицы
|
||||
var ScnSelector: PackedScene ## Прототип индикатора выбранного ряда
|
||||
var selector_color_proc: Callable ## Ссылка на процедуру генератора цвета индикатора выбранного ряда
|
||||
var selector_size_proc: Callable ## Ссылка на процедуру генератора размера индикатора выбранного ряда
|
||||
var selector_size_proc: Callable ## Ссылка на процедуру генератора размера индикатора выбранного ряда
|
||||
|
||||
signal row_pressed(i_row: int) ## Вызывается при нажатии кнопкой мыши на строку
|
||||
signal selected_changed(i_row: int) ## Вызывается при изменении выбранного ряда. i_row - текущий выбранный ряд
|
||||
@@ -48,7 +48,6 @@ func set_node_user_data(i_col: int, i_row: int, val) -> void: set_node_meta(i_co
|
||||
func pin_header(scrl: ScrollContainer, prnt: Control):
|
||||
scrl.remove_child(header)
|
||||
prnt.add_child(header)
|
||||
## TODO: Это значение следует получить из темы
|
||||
var v_separation = get_theme_constant('v_separation')
|
||||
header.position = scrl.position - Vector2(0, header.size.y + v_separation)
|
||||
scroll = scrl
|
||||
@@ -129,14 +128,14 @@ func align_to_left_bottompos(hdr: Control, gap: = Vector2(0, 0)):
|
||||
position.y = hdr.position.y + hdr.size.y + gap.y
|
||||
|
||||
|
||||
## [param i_col] - индекс колонки. [param i_row] - индекс ряда.
|
||||
## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда.
|
||||
func set_node_meta(i_col: int, i_row: int, pname: String, val) -> void:
|
||||
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
|
||||
var node = nodes[key]
|
||||
node.set_meta(pname, val)
|
||||
|
||||
|
||||
## [param i_col] - индекс колонки. [param i_row] - индекс ряда.
|
||||
## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда.
|
||||
func get_node_meta(i_col: int, i_row: int, pname: String):
|
||||
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
|
||||
var node = nodes[key]
|
||||
@@ -144,21 +143,21 @@ func get_node_meta(i_col: int, i_row: int, pname: String):
|
||||
return node.get_meta(pname)
|
||||
|
||||
|
||||
## [param i_col] - индекс колонки. [param i_row] - индекс ряда.
|
||||
## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда.
|
||||
func set_node_property(i_col: int, i_row: int, pname: String, val) -> void:
|
||||
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
|
||||
var node = nodes[key]
|
||||
node.set(pname, val)
|
||||
|
||||
|
||||
## [param i_col] - индекс колонки. [param i_row] - индекс ряда.
|
||||
## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда.
|
||||
func get_node_property(i_col: int, i_row: int, pname: String):
|
||||
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
|
||||
var node = nodes[key]
|
||||
return node.get(pname)
|
||||
|
||||
|
||||
## [param i_col] - индекс колонки. [param i_row] - индекс ряда
|
||||
## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда
|
||||
func get_node_key(format: String, i_col: int, i_row: int) -> String:
|
||||
var key: String = format % [i_row, i_col]
|
||||
assert(nodes.has(key), 'ошибка: нет такой ячейки - колонка:%d ряд:%d' % [i_col, i_row])
|
||||
@@ -303,13 +302,13 @@ func get_rows_count() -> int:
|
||||
return nodes_count / columns
|
||||
|
||||
|
||||
##
|
||||
## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда.
|
||||
func get_node2(i_col: int, i_row: int) -> Node:
|
||||
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
|
||||
return nodes[key]
|
||||
|
||||
|
||||
##
|
||||
## Добавляет ряд. [param row_types] - Массив типов ячеек ряда
|
||||
func add_row(row_types: Array) -> void:
|
||||
assert(row_types.size() < MAX_INDEX, 'ошибка: слишком много колонок, больше %d' % (MAX_INDEX + 1))
|
||||
if columns == 1:
|
||||
@@ -323,7 +322,7 @@ func add_row(row_types: Array) -> void:
|
||||
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('custom_minimum_size.x', head.custom_minimum_size.x)
|
||||
node.set_deferred('size.x', head.size.x)
|
||||
var node_key: String = NODE_KEY_FORMAT % [i_row, i_col]
|
||||
node.name = node_key
|
||||
@@ -380,7 +379,7 @@ func set_header_text(headers: Array):
|
||||
set_row_text(0, headers, 0, HEAD_KEY_FORMAT)
|
||||
|
||||
|
||||
##
|
||||
## [param i_row] - индекс ряда.
|
||||
func remove_row(i_row: int):
|
||||
var sel_key: String = ROW_SELECTOR_KEY_FORMAT % [i_row, 0]
|
||||
|
||||
@@ -485,7 +484,7 @@ func set_rows_text(rows: Array) -> void:
|
||||
node.text = rows[i_row][i_col]
|
||||
|
||||
|
||||
##
|
||||
## [param i_row] - индекс ряда.
|
||||
func set_nodes_min_size(i_row: int, sizes: Array, key_format: String = NODE_KEY_FORMAT) -> void:
|
||||
for i_col in columns:
|
||||
var key: = get_node_key(key_format, i_col, i_row)
|
||||
@@ -494,7 +493,7 @@ func set_nodes_min_size(i_row: int, sizes: Array, key_format: String = NODE_KEY_
|
||||
node.set_deferred('size.x', sizes[i_col])
|
||||
|
||||
|
||||
##
|
||||
## [param i_col] - индекс колонки. [param i_row] - индекс ряда.
|
||||
func set_node_text(i_col: int, i_row: int, val: String) -> void:
|
||||
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
|
||||
nodes[key].text = val
|
||||
@@ -508,7 +507,7 @@ func set_rows_state(rows: Array) -> void:
|
||||
nodes[key].button_pressed = rows[i_row][i_col]
|
||||
|
||||
|
||||
##
|
||||
## [param i_col] - индекс колонки. [param i_row] - индекс ряда.
|
||||
func set_node_state(i_col: int, i_row: int, val: bool) -> void:
|
||||
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
|
||||
nodes[key].button_pressed = val
|
||||
|
||||
Reference in New Issue
Block a user