Доработка. Теперь только для Godot4

This commit is contained in:
sasha80
2023-06-13 14:14:17 +03:00
parent 196298d220
commit d57ddc2f63
27 changed files with 934 additions and 886 deletions

View File

@@ -1,7 +1,7 @@
extends Node
var id_array: Array # Массив id целей
var treats : Dictionary # Словарь целей
var treats : Dictionary # Словарь целей
var msg_counter : int = 0 # Счётчик отправленных пакетов
const TableCellType1 = preload('res://ячейка-1.tscn')
@@ -11,12 +11,12 @@ const TableCellType4 = preload('res://заголовок.tscn')
const TableCellType5 = preload('res://ячейка-2.tscn')
const TableCellType6 = preload('res://кнопка-5.tscn')
# Индекс колонки: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
const TABLE_HEADERS = ['ID Цели', 'Кур. уг.', 'Частота', 'Ш. диап.', 'Ампл.', 'T обнар.', 'Мод.', 'Реж. см. F', 'Ск. пер.', 'Протокол', 'Ст. дол.', 'Ст. шир.', 'Cт. выс.', 'Тек. дол.', 'Тек. шир.', 'Тек. выс.', ]
# Индекс колонки: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
const TABLE_HEADERS = ['ID Цели', 'Курc.град', 'Частота', 'Ш. диап.', 'Ампл.', 'T обнар.', 'Мод.', 'Реж. см. F', 'Ск. пер.', 'Протокол', 'Ст. дол.', 'Ст. шир.', 'Cт. выс.', 'Тек. дол.', 'Тек. шир.', 'Тек. выс.', ]
const TABLE_HEADER_TYPES = [ TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4, TableCellType4]
const TABLE_HEADER_ALIGNMENTS = [ HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER]
const TABLE_ROW_TYPES = [ TableCellType1, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType6, TableCellType6, TableCellType5, TableCellType6, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5]
const TABLE_ROW_ALIGNMENTS = [ HALIGN_CENTER, HALIGN_LEFT, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER, HALIGN_CENTER]
const TABLE_HEADER_ALIGNMENTS = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER]
const TABLE_ROW_TYPES = [ TableCellType1, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType6, TableCellType6, TableCellType5, TableCellType6, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5]
const TABLE_ROW_ALIGNMENTS = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_LEFT, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER]
const TABLE_COLUMN_SIZES = [ 82, 82, 82, 82, 82, 90, 150, 150, 80, 150, 82, 82, 82, 82, 82, 82]
const COLUMN_ID = 0 # Идентификатор цели
@@ -26,7 +26,7 @@ const COLUMN_WIDTH = 3 # Ширина занимаемого диапазо
const COLUMN_POW = 4 # Уровень принимаемого сигнала, дБ
const COLUMN_TICK = 5 # Относительное время обнаружения сигнала, мс.
const COLUMN_TMOD = 6 # Вид модуляции
const COLUMN_FREQM = 7 # Режим смены частоты.
const COLUMN_FREQM = 7 # Режим смены частоты.
const COLUMN_BAUD = 8 # Скорость передачи данных, бит/с
const COLUMN_PROTO = 9 # Тип протокола источника сигнала.
const COLUMN_SLON = 10 # Координаты старта, долгота в градусах
@@ -38,366 +38,366 @@ const COLUMN_ALT = 15 # Текущая высота, метры
# Индексы колонок, которым можно задавать выравнивание текста
const TABLE_ALLIGNED_COLUMNS = [
COLUMN_ID,
COLUMN_AOA,
COLUMN_FREQ,
COLUMN_WIDTH,
COLUMN_POW,
COLUMN_TICK,
COLUMN_BAUD,
COLUMN_SLON,
COLUMN_SLAT,
COLUMN_SALT,
COLUMN_LAT,
COLUMN_LON,
COLUMN_ALT ]
COLUMN_ID,
COLUMN_AOA,
COLUMN_FREQ,
COLUMN_WIDTH,
COLUMN_POW,
COLUMN_TICK,
COLUMN_BAUD,
COLUMN_SLON,
COLUMN_SLAT,
COLUMN_SALT,
COLUMN_LAT,
COLUMN_LON,
COLUMN_ALT ]
# Индексы колонок, в которых можно вводит текст
const TABLE_ENTRY_COLUMNS = [
COLUMN_AOA,
COLUMN_FREQ,
COLUMN_WIDTH,
COLUMN_POW,
COLUMN_TICK,
COLUMN_BAUD,
COLUMN_SLON,
COLUMN_SLAT,
COLUMN_SALT,
COLUMN_LAT,
COLUMN_LON,
COLUMN_ALT ]
COLUMN_AOA,
COLUMN_FREQ,
COLUMN_WIDTH,
COLUMN_POW,
COLUMN_TICK,
COLUMN_BAUD,
COLUMN_SLON,
COLUMN_SLAT,
COLUMN_SALT,
COLUMN_LAT,
COLUMN_LON,
COLUMN_ALT ]
# Типы модуляции
const MODE_TYPES = ['<неопр.>', 'am', 'ook', 'ask', 'fm', 'qpsk', 'oqpsk', 'pi4qpsk', 'qam16',
'qam32', 'qam64', 'qam128', 'qam256', 'qam512', 'fsk', 'cpfsk', 'psk','ofdm']
const MODE_TYPES = ['<неопр.>', 'am', 'ook', 'ask', 'fm', 'qpsk', 'oqpsk', 'pi4qpsk', 'qam16',
'qam32', 'qam64', 'qam128', 'qam256', 'qam512', 'fsk', 'cpfsk', 'psk','ofdm']
# Режим смены частоты
const FREQM = ['<неопр.>', 'fhss', 'lfm', 'const']
# Протоколы радиомодема
const M_PROTO = ['<неопр.>', '3dlink', 'skyhopperpro', 'picardiooem', 'solo7', 'j11',
'mavlink', 'ltm', 'hc12', 'df1', ]
'mavlink', 'ltm', 'hc12', 'df1', ]
# Номера колонок
const COLUMN_OPT = [[COLUMN_TMOD, MODE_TYPES], [COLUMN_FREQM, FREQM], [COLUMN_PROTO, M_PROTO]]
const COLUMN_OPT_BTN = [COLUMN_TMOD, COLUMN_FREQM, COLUMN_PROTO]
const ID_ARRAY_LEN = 100 # Размер пула номеров целей
# Цель
class Threat:
# параметры цели, второе значение, разрешение отправки.
var row : Dictionary = {
'id':[0,true],
'aoa':[10.0,true],
'freq':[2480.0,true],
'width':[20.0,true],
'power':[20.0,true],
'tick':[10,true],
'tmod':['',false],
'freqm':['',false],
'baud':[0.0,false],
'proto':['',false],
'slon':[0.0,false],
'slat':[0.0,false],
'salt':[0.0,false],
'lat':[0.0,false],
'lon':[0.0,false],
'alt':[0.0,false],
}
func _init(th_id : int):
row.id[0] = th_id
func get_data():
var data_to_send : Dictionary
for key in row.keys():
var value = row[key]
var data = value[0]
var need_send = value[1]
if need_send:
data_to_send[key] = data
return data_to_send
func update_rows():
var new_rows: Array = []
new_rows.append(_check_value(row.id))
new_rows.append(_check_value(row.aoa))
new_rows.append(_check_value(row.freq))
new_rows.append(_check_value(row.width))
new_rows.append(_check_value(row.power))
new_rows.append(_check_value(row.tick))
new_rows.append(_check_value(row.tmod))
new_rows.append(_check_value(row.freqm))
new_rows.append(_check_value(row.baud))
new_rows.append(_check_value(row.proto))
new_rows.append(_check_value(row.slon))
new_rows.append(_check_value(row.slat))
new_rows.append(_check_value(row.salt))
new_rows.append(_check_value(row.lat))
new_rows.append(_check_value(row.lon))
new_rows.append(_check_value(row.alt))
return new_rows
func _check_value(val):
if val[1]:
return String(val[0])
else:
return ''
func set_aoa(val):
var value = float(val)
value = Tools.check_low_high(value, 0, 360)
value = Tools.check_len(val, value)
row.aoa[0] = value
row.aoa[1] = Tools.check_empty(value)
return value
func set_freq(val):
var value = float(val)
value = Tools.check_negative(value)
value = Tools.check_len(val, value)
row.freq[0] = value
row.freq[1] = Tools.check_empty(value)
return value
func set_width(val):
var value = float(val)
value = Tools.check_negative(value)
value = Tools.check_len(val, value)
row.width[0] = value
row.width[1] = Tools.check_empty(value)
return value
func set_power(val):
var value = float(val)
value = Tools.check_negative(value)
value = Tools.check_len(val, value)
row.power[0] = value
row.power[1] = Tools.check_empty(value)
return value
func set_tick(val):
var value = int(val)
value = Tools.check_low_high(value, 0, 60000)
value = Tools.check_len(val, value)
row.tick[0] = value
row.tick[1] = Tools.check_empty(value)
return value
func set_baud(val):
var value = float(val)
value = Tools.check_negative(value)
value = Tools.check_len(val, value)
row.baud[0] = value
row.baud[1] = Tools.check_empty(value)
return value
func set_slon(val):
var value = float(val)
value = Tools.check_low_high(value, -90, 90)
value = Tools.check_len(val, value)
row.slon[0] = value
row.slon[1] = Tools.check_empty(value)
return value
func set_slat(val):
var value = float(val)
value = Tools.check_low_high(value, -180, 180)
value = Tools.check_len(val, value)
row.slat[0] = value
row.slat[1] = Tools.check_empty(value)
return value
# параметры цели, второе значение, разрешение отправки.
var row : Dictionary = {
'id':[0,true],
'aoa':[10.0,true],
'freq':[2480.0,true],
'width':[20.0,true],
'power':[20.0,true],
'tick':[10,true],
'tmod':['',false],
'freqm':['',false],
'baud':[0.0,false],
'proto':['',false],
'slon':[0.0,false],
'slat':[0.0,false],
'salt':[0.0,false],
'lat':[0.0,false],
'lon':[0.0,false],
'alt':[0.0,false],
}
func set_salt(val):
var value = float(val)
value = Tools.check_len(val, value)
row.salt[0] = value
row.salt[1] = Tools.check_empty(value)
return value
func _init(th_id : int):
row.id[0] = th_id
func set_lon(val):
var value = float(val)
value = Tools.check_low_high(value, -90, 90)
value = Tools.check_len(val, value)
row.lon[0] = value
row.lon[1] = Tools.check_empty(value)
return value
func set_lat(val):
var value = float(val)
value = Tools.check_low_high(value, -180, 180)
value = Tools.check_len(val, value)
row.lat[0] = value
row.lat[1] = Tools.check_empty(value)
return value
func set_alt(val):
var value = float(val)
value = Tools.check_len(val, value)
row.alt[0] = value
row.alt[1] = Tools.check_empty(value)
return value
func get_data():
var data_to_send : Dictionary
for key in row.keys():
var value = row[key]
var data = value[0]
var need_send = value[1]
if need_send:
data_to_send[key] = data
return data_to_send
func set_tmod(val):
var value = String(val)
row.tmod[0] = value
row.tmod[1] = false if value == '<неопр.>' else true
return value
func set_freqm(val):
var value = String(val)
row.freqm[0] = value
row.freqm[1] = false if value == '<неопр.>' else true
return value
func set_proto(val):
var value = String(val)
row.proto[0] = value
row.proto[1] = false if value == '<неопр.>' else true
return value
func update_rows():
var new_rows: Array = []
new_rows.append(_check_value(row.id))
new_rows.append(_check_value(row.aoa))
new_rows.append(_check_value(row.freq))
new_rows.append(_check_value(row.width))
new_rows.append(_check_value(row.power))
new_rows.append(_check_value(row.tick))
new_rows.append(_check_value(row.tmod))
new_rows.append(_check_value(row.freqm))
new_rows.append(_check_value(row.baud))
new_rows.append(_check_value(row.proto))
new_rows.append(_check_value(row.slon))
new_rows.append(_check_value(row.slat))
new_rows.append(_check_value(row.salt))
new_rows.append(_check_value(row.lat))
new_rows.append(_check_value(row.lon))
new_rows.append(_check_value(row.alt))
return new_rows
func _check_value(val):
if val[1]:
return '%s' % val[0]
else:
return ''
func set_aoa(val):
var value = float(val)
value = Tools.check_low_high(value, 0, 360)
value = Tools.check_len(val, value)
row.aoa[0] = value
row.aoa[1] = Tools.check_empty(value)
return value
func set_freq(val):
var value = float(val)
value = Tools.check_negative(value)
value = Tools.check_len(val, value)
row.freq[0] = value
row.freq[1] = Tools.check_empty(value)
return value
func set_width(val):
var value = float(val)
value = Tools.check_negative(value)
value = Tools.check_len(val, value)
row.width[0] = value
row.width[1] = Tools.check_empty(value)
return value
func set_power(val):
var value = float(val)
value = Tools.check_negative(value)
value = Tools.check_len(val, value)
row.power[0] = value
row.power[1] = Tools.check_empty(value)
return value
func set_tick(val):
var value = int(val)
value = Tools.check_low_high(value, 0, 60000)
value = Tools.check_len(val, value)
row.tick[0] = value
row.tick[1] = Tools.check_empty(value)
return value
func set_baud(val):
var value = float(val)
value = Tools.check_negative(value)
value = Tools.check_len(val, value)
row.baud[0] = value
row.baud[1] = Tools.check_empty(value)
return value
func set_slon(val):
var value = float(val)
value = Tools.check_low_high(value, -90, 90)
value = Tools.check_len(val, value)
row.slon[0] = value
row.slon[1] = Tools.check_empty(value)
return value
func set_slat(val):
var value = float(val)
value = Tools.check_low_high(value, -180, 180)
value = Tools.check_len(val, value)
row.slat[0] = value
row.slat[1] = Tools.check_empty(value)
return value
func set_salt(val):
var value = float(val)
value = Tools.check_len(val, value)
row.salt[0] = value
row.salt[1] = Tools.check_empty(value)
return value
func set_lon(val):
var value = float(val)
value = Tools.check_low_high(value, -90, 90)
value = Tools.check_len(val, value)
row.lon[0] = value
row.lon[1] = Tools.check_empty(value)
return value
func set_lat(val):
var value = float(val)
value = Tools.check_low_high(value, -180, 180)
value = Tools.check_len(val, value)
row.lat[0] = value
row.lat[1] = Tools.check_empty(value)
return value
func set_alt_pressed(val):
var value = float(val)
value = Tools.check_len(val, value)
row.alt[0] = value
row.alt[1] = Tools.check_empty(value)
return value
func set_tmod(val):
var value = String(val)
row.tmod[0] = value
row.tmod[1] = false if value == '<неопр.>' else true
return value
func set_freqm(val):
var value = String(val)
row.freqm[0] = value
row.freqm[1] = false if value == '<неопр.>' else true
return value
func set_proto(val):
var value = String(val)
row.proto[0] = value
row.proto[1] = false if value == '<неопр.>' else true
return value
func init_treats(header, table, btn_add, btn_del): # Инициализация вкладки с целями
for i in range(ID_ARRAY_LEN): # Заполняет массив ID целей
id_array.append(i+1)
header.add_row(TABLE_HEADER_TYPES)
header.set_rows_text([TABLE_HEADERS])
on_btn_add(table)
init_table(header, TABLE_COLUMN_SIZES)
init_table(table, TABLE_COLUMN_SIZES)
table.align_to_left_bottom(header, Vector2(0, 2))
table.connect('row_pressed', self, 'on_row_pressed', [table])
table.set_callbacks(self, 'text_entered', 'on_edit_entry', TABLE_ENTRY_COLUMNS, [table])
table.set_callbacks(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, [table])
btn_add.connect('button_up', self, 'on_btn_add', [table])
btn_del.connect('button_up', self, 'on_btn_del', [table])
for i in range(ID_ARRAY_LEN): # Заполняет массив ID целей
id_array.append(i+1)
header.add_row(TABLE_HEADER_TYPES)
header.set_rows_text([TABLE_HEADERS])
on_btn_add(table)
init_table(header, TABLE_COLUMN_SIZES)
init_table(table, TABLE_COLUMN_SIZES)
table.align_to_left_bottom(header, Vector2(0, 2))
table.connect('row_pressed', Callable(self, 'on_row_pressed').bind(table))
table.set_callbacks(self, 'text_submitted', 'on_edit_entry', TABLE_ENTRY_COLUMNS, [table])
table.set_callbacks(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, [table])
btn_add.connect('button_up', Callable(self, 'on_btn_add').bind(table))
btn_del.connect('button_up', Callable(self, 'on_btn_del').bind(table))
func selector_color_proc(_i_row: int):
return Consts.COLOR_ACCENT * Consts.COLOR_HALF_ALPHA
return Consts.COLOR_ACCENT * Consts.COLOR_HALF_ALPHA
func init_table(table: Table, sizes: Array):
for i_row in table.get_rows_count():
table.set_nodes_min_size(i_row, sizes)
table.set_selector_color_proc(self, 'selector_color_proc')
for i_row in table.get_rows_count():
table.set_nodes_min_size(i_row, sizes)
table.set_selector_color_proc(self, 'selector_color_proc')
func init_opt_btns(row : int, table):
for item in COLUMN_OPT:
var i_col = item[0]
var opt_arr = item[1]
var cell = table.get_node2(i_col, row)
for opt in opt_arr:
cell.add_item(opt)
cell.select(0)
for item in COLUMN_OPT:
var i_col = item[0]
var opt_arr = item[1]
var cell = table.get_node2(i_col, row)
for opt in opt_arr:
cell.add_item(opt)
cell.select(0)
func on_item_selected(item_num, node, table):
var optbtn_text = node.text
var indexis = table.get_key_indexes(node.name)
var row_i = indexis[1]
var col_i = indexis[0]
var cell = table.get_node2(0,row_i)
var value = set_value(optbtn_text, cell.text, col_i)
var optbtn_text = node.text
var indexis = table.get_key_indexes(node.name)
var row_i = indexis[1]
var col_i = indexis[0]
var cell = table.get_node2(0,row_i)
var value = set_value(optbtn_text, cell.text, col_i)
func on_edit_entry(text : String, entry, table):
var indexis = table.get_key_indexes(entry.name)
var row_i = indexis[1]
var col_i = indexis[0]
var cell = table.get_node2(0,row_i)
var value = set_value(text, cell.text, col_i)
entry.text = String(value)
var indexis = table.get_key_indexes(entry.name)
var row_i = indexis[1]
var col_i = indexis[0]
var cell = table.get_node2(0,row_i)
var value = set_value(text, cell.text, col_i)
entry.text = String(value)
func set_value(val : String, treat_id : String, column : int):
var treat = treats[treat_id]
match column:
COLUMN_AOA:
return treat.set_aoa(val)
COLUMN_FREQ:
return treat.set_freq(val)
COLUMN_WIDTH:
return treat.set_width(val)
COLUMN_POW:
return treat.set_power(val)
COLUMN_TICK:
return treat.set_tick(val)
COLUMN_TMOD:
return treat.set_tmod(val)
COLUMN_FREQM:
return treat.set_freqm(val)
COLUMN_BAUD:
return treat.set_baud(val)
COLUMN_PROTO:
return treat.set_proto(val)
COLUMN_SLON:
return treat.set_slon(val)
COLUMN_SLAT:
return treat.set_slat(val)
COLUMN_SALT:
return treat.set_salt(val)
COLUMN_LAT:
return treat.set_lon(val)
COLUMN_LON:
return treat.set_lat(val)
COLUMN_ALT:
return treat.set_alt(val)
var treat = treats[treat_id]
match column:
COLUMN_AOA:
return treat.set_aoa(val)
COLUMN_FREQ:
return treat.set_freq(val)
COLUMN_WIDTH:
return treat.set_width(val)
COLUMN_POW:
return treat.set_power(val)
COLUMN_TICK:
return treat.set_tick(val)
COLUMN_TMOD:
return treat.set_tmod(val)
COLUMN_FREQM:
return treat.set_freqm(val)
COLUMN_BAUD:
return treat.set_baud(val)
COLUMN_PROTO:
return treat.set_proto(val)
COLUMN_SLON:
return treat.set_slon(val)
COLUMN_SLAT:
return treat.set_slat(val)
COLUMN_SALT:
return treat.set_salt(val)
COLUMN_LAT:
return treat.set_lon(val)
COLUMN_LON:
return treat.set_lat(val)
COLUMN_ALT:
return treat.set_alt_pressed(val)
func on_row_pressed(i_row: int, table):
table.clear_rows_selected()
table.set_row_selected(i_row, true)
table.clear_rows_selected()
table.set_row_selected(i_row, true)
func on_btn_add(table):
var id = pop_id()
var threat : = Threat.new(id)
treats[String(id)] = threat
var row = threat.update_rows()
table.add_row(TABLE_ROW_TYPES)
table.set_row_text(table.get_rows_count()-1, row)
init_opt_btns(table.get_rows_count()-1, table)
table.set_callbacks(self, 'text_entered', 'on_edit_entry', TABLE_ENTRY_COLUMNS, [])
table.set_callbacks(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, [])
var id = pop_id()
var threat : = Threat.new(id)
treats['%d' % id] = threat
var row = threat.update_rows()
table.add_row(TABLE_ROW_TYPES)
table.set_row_text(table.get_rows_count()-1, row)
init_opt_btns(table.get_rows_count()-1, table)
table.set_callbacks(self, 'text_submitted', 'on_edit_entry', TABLE_ENTRY_COLUMNS, [])
table.set_callbacks(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, [])
func on_btn_del(table):
var row_i = []
table.get_selected_rows(row_i)
if len(row_i) > 0:
var cell = table.get_node2(0, row_i[0])
treats.erase(cell.text)
table.remove_row(row_i[0])
table.rehash([])
var row_i = []
table.get_selected_rows(row_i)
if len(row_i) > 0:
var cell = table.get_node2(0, row_i[0])
treats.erase(cell.text)
table.remove_row(row_i[0])
table.rehash([])
func pop_id():
var id = 0
if len(id_array):
id = id_array[0]
id_array.remove(0)
return id
var id = 0
if len(id_array):
id = id_array[0]
id_array.remove_at(0)
return id
func push_id(id : int):
id_array.append(id)
id_array.append(id)
func get_threats_data():
var data_to_json : Dictionary
data_to_json['ts'] = 5
msg_counter += 1
data_to_json['ss'] = msg_counter
data_to_json['msvk'] = []
data_to_json['mis'] = []
for key in treats:
var data = treats[key].get_data()
data_to_json['mis'].append(data)
var json = to_json(data_to_json)
var pac = json.to_utf8()
return pac
var data_to_json : Dictionary
data_to_json['ts'] = 5
msg_counter += 1
data_to_json['ss'] = msg_counter
data_to_json['msvk'] = []
data_to_json['mis'] = []
for key in treats:
var data = treats[key].get_data()
data_to_json['mis'].append(data)
var json = JSON.new().stringify(data_to_json)
var pac = json.to_utf8_buffer()
return pac