Рефактор.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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 ## Вызывается при смене режима окна полный экран - оконный
|
||||
|
||||
|
||||
## Состояние перетаскивания
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user