Рефактор.

This commit is contained in:
sasha80
2023-08-21 13:29:50 +03:00
parent b7c523c65f
commit 0811cb0c1b
3 changed files with 31 additions and 31 deletions

View File

@@ -15,31 +15,31 @@ const TABLE_COLUMN_SIZE = [ 60, 140, 140, 90 ]
func on_row_pressed(i_row: int):
$tbl_threats.clear_rows_selected()
$tbl_threats.set_row_selected(i_row, true)
$table.clear_rows_selected()
$table.set_row_selected(i_row, true)
func init_table():
$tbl_threats.set_header(TABLE_HEADER)
$tbl_threats.set_header_text(TABLE_HEADERS_TEXT)
$tbl_threats.set_columns_min_size(TABLE_COLUMN_SIZE)
$tbl_threats.pin_header(self, get_parent())
$tbl_threats.connect('row_pressed', Callable(self, 'on_row_pressed'))
$table.set_header(TABLE_HEADER)
$table.set_header_text(TABLE_HEADERS_TEXT)
$table.set_columns_min_size(TABLE_COLUMN_SIZE)
$table.pin_header(self, get_parent())
$table.connect('row_pressed', Callable(self, 'on_row_pressed'))
func _ready() -> void:
var th_table_id: = Dictionary()
Threats.connect('threat_new', Callable(self, 'on_threat_new').bind(th_table_id))
Threats.connect('threat_lost', Callable(self, 'on_threat_lost').bind(th_table_id))
Threats.connect('threat_new', Callable(self, 'on_threat_new').bind(th_table_id))
Threats.connect('threat_lost', Callable(self, 'on_threat_lost').bind(th_table_id))
Threats.connect('threat_update', Callable(self, 'on_threat_update').bind(th_table_id))
call_deferred('init_table')
## Перестраивает индекс таблицы
func rehash(th_table_id: Dictionary):
var rows_count = $tbl_threats.get_rows_count()
var rows_count = $table.get_rows_count()
for i_row in rows_count:
var item = $tbl_threats.get_node2(0, i_row)
var item = $table.get_node2(0, i_row)
th_table_id[int(item.text)] = i_row
@@ -47,23 +47,23 @@ func rehash(th_table_id: Dictionary):
func on_threat_update(_threats, th, th_table_id: Dictionary):
var row = map_th_to_row(th)
var i_row = th_table_id[th.id]
$tbl_threats.set_row_text(i_row, row)
$table.set_row_text(i_row, row)
## Обрабатывает сигнал [b]threat_lost[/b]
func on_threat_lost(_threats, th, th_table_id: Dictionary):
$tbl_threats.remove_row(th_table_id[th.id])
$table.remove_row(th_table_id[th.id])
th_table_id.clear()
rehash(th_table_id)
## Обрабатывает сигнал [b]threat_new[/b]
func on_threat_new(_threats, th, th_table_id):
var i_row = $tbl_threats.get_rows_count()
$tbl_threats.add_row(TABLE_ROW)
var i_row = $table.get_rows_count()
$table.add_row(TABLE_ROW)
var row = map_th_to_row(th)
$tbl_threats.set_row_text(i_row, row)
$tbl_threats.set_row_editable(i_row, false)
$table.set_row_text(i_row, row)
$table.set_row_editable(i_row, false)
th_table_id[th.id] = i_row

View File

@@ -26,10 +26,10 @@ var strob_dir_begin: float ## Направление антенны
var strob_width_begin: float ## Ширина строба по углу в момент начала перетаскивания
signal drag_begin ## Вызывается в момент начала перетаскивания
signal drag_continue ## Вызывается во время продолжения перетаскивания
signal drag_end ## Вызывается в момент завершения перетаскивания
signal full_screen ## Вызывается при смене режима окна полный экран - оконный
signal drag_begin ## Вызывается в момент начала перетаскивания
signal drag_continue ## Вызывается во время продолжения перетаскивания
signal drag_end ## Вызывается в момент завершения перетаскивания
signal full_screen ## Вызывается при смене режима окна полный экран - оконный
## Состояние перетаскивания

View File

@@ -1,13 +1,13 @@
extends GridContainer
class_name GDTable extends GridContainer
## Виджет "Таблица"
@export var node_gap: = Vector2(0.0, 0.0) ## Зазор между ячейками, который не возможно вычислить или получить
@export var selector_color: = Color(1.0, 1.0, 1.0, 1.0) ## Окрашивающий цвет для индикатора выбранного ряда
@export var selector_color: = Color(1.0, 1.0, 1.0, 1.0) ## Окрашивающий цвет для селектора выбранного ряда
@export var selector_key_down: Key = KEY_DOWN ## Клавиша увеличения индекса выбранного ряда
@export var selector_key_up: Key = KEY_UP ## Клавиша уменьшения индекса выбранного ряда
@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 ## Сцена индикатора для выбранного ряда
@export_file var selector_type_file: = 'res://table/selector.tscn': set = load_selector_scene ## Сцена селектора для выбранного ряда
const HEAD_PREFIX = 'HEAD_' ## Префикс ключа заголовка таблицы
const INDEX_FORMAT = '%02d_%02d' ## Формат индекса ключа
@@ -17,7 +17,7 @@ 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 SELECTOR_KEY_FORMAT = SLCT_PREFIX + INDEX_FORMAT ## Формат ключа индикаторов выбранного ряда
const META_USER_DATA = 'user_data' ## Имя свойства для сохранения данных пользователя
const META_CALLABLE = 'callable' ## Имя свойства для сохранения вызываемого
const META_EVENT_NAME = 'event_name' ## Имя свойства для сохранения названия события
@@ -44,8 +44,8 @@ func set_node_user_data(i_col: int, i_row: int, val) -> void: set_node_meta(i_co
func defaultselector_color_proc(_i_row: int): return selector_color
## Закрепляет заголовок таблицы. [param scrl] - Прокрутка,
## [param prnt] - Родитель прокрутки заданный в редакторе
## Закрепляет заголовок таблицы. [param scrl] - Прокрутка родитель таблицы.
## [param prnt] - Родитель прокрутки.
func pin_header(scrl: ScrollContainer, prnt: Control):
scrl.remove_child(header)
prnt.add_child(header)
@@ -258,7 +258,7 @@ func clear_rows_selected():
## [param i_row] - Индекс ряда.
func set_row_selected(i_row: int, selected: bool = true) -> void:
var key: = ROW_SELECTOR_KEY_FORMAT % [i_row, 0]
var key: = SELECTOR_KEY_FORMAT % [i_row, 0]
var node = nodes[NODE_KEY_FORMAT % [i_row, 0]]
if nodes.has(key) and (not selected):
var selector = nodes[key]
@@ -279,7 +279,7 @@ func set_row_selected(i_row: int, selected: bool = true) -> void:
## [param i_row] - Индекс ряда.
func is_row_selected(i_row: int) -> bool:
var key: = ROW_SELECTOR_KEY_FORMAT % [i_row, 0]
var key: = SELECTOR_KEY_FORMAT % [i_row, 0]
return nodes.has(key)
@@ -377,7 +377,7 @@ func set_header_text(headers: Array):
## [param i_row] - индекс ряда.
func remove_row(i_row: int):
var sel_key: String = ROW_SELECTOR_KEY_FORMAT % [i_row, 0]
var sel_key: String = SELECTOR_KEY_FORMAT % [i_row, 0]
if nodes.has(sel_key):
var selector = nodes[sel_key]
@@ -437,7 +437,7 @@ func rehash():
swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0])
next_index(i_node)
elif SLCT_PREFIX in key:
swap_nodes(nodes_copy, ROW_SELECTOR_KEY_FORMAT, i0, i_slct[0])
swap_nodes(nodes_copy, SELECTOR_KEY_FORMAT, i0, i_slct[0])
next_index(i_slct)
nodes.clear()
nodes.merge(nodes_copy)