Доработка. Добавлена возможность сохранять состояние таблицы.
This commit is contained in:
58
threats.gd
58
threats.gd
@@ -265,12 +265,12 @@ class Threat:
|
||||
return value
|
||||
|
||||
|
||||
func init_treats(table, btn_add, btn_del): # Инициализация вкладки с целями
|
||||
func init_treats(table, btn_add, btn_del, btn_save): # Инициализация вкладки с целями
|
||||
for i in range(ID_ARRAY_LEN): # Заполняет массив ID целей
|
||||
id_array.append(i+1)
|
||||
table.set_header(TABLE_HEADER_TYPES)
|
||||
table.set_header_text(TABLE_HEADERS)
|
||||
on_btn_add(table)
|
||||
load_treats(table)
|
||||
init_table(table, TABLE_COLUMN_SIZES)
|
||||
g_table = table
|
||||
table.set_columns_min_size(TABLE_COLUMN_SIZES)
|
||||
@@ -279,22 +279,68 @@ func init_treats(table, btn_add, btn_del): # Инициализация в
|
||||
table.connect_columns(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, [])
|
||||
btn_add.connect('button_up', Callable(self, 'on_btn_add').bind(table))
|
||||
btn_del.connect('button_up', Callable(self, 'on_btn_del').bind(table))
|
||||
btn_save.connect('button_up', Callable(self, 'on_btn_save'))
|
||||
|
||||
|
||||
func load_treats(table):
|
||||
var file = FileAccess.open('res://save.json', FileAccess.READ)
|
||||
var read = file.get_as_text()
|
||||
file.close()
|
||||
var json_conv: = JSON.new()
|
||||
if Error.OK == json_conv.parse(read):
|
||||
var json_data = json_conv.get_data()
|
||||
for item in json_data:
|
||||
if item.has('id'):
|
||||
var id = item['id']
|
||||
id_array.erase(int(id))
|
||||
var threat : = Threat.new(id, table.get_rows_count())
|
||||
treats['%d' % id] = threat
|
||||
for key in item:
|
||||
threat.row[key] = [item[key], true]
|
||||
var row = threat.update_rows()
|
||||
table.add_row(TABLE_ROW_TYPES)
|
||||
table.set_row_text(table.get_rows_count()-1, row)
|
||||
table.set_node_user_data(0, table.get_rows_count()-1, threat)
|
||||
init_opt_btns(table.get_rows_count()-1, table, threat)
|
||||
table.connect_columns(self, 'text_submitted', 'on_edit_entry', TABLE_ENTRY_COLUMNS, [])
|
||||
table.connect_columns(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, [])
|
||||
|
||||
|
||||
func on_btn_save():
|
||||
var file = FileAccess.open('res://save.json', FileAccess.WRITE)
|
||||
var data_to_json : Array
|
||||
for key in treats:
|
||||
var treat = treats[key]
|
||||
var data = treat.get_data()
|
||||
data_to_json.append(data)
|
||||
var json = JSON.new().stringify(data_to_json)
|
||||
file.store_string(json)
|
||||
file.close()
|
||||
|
||||
|
||||
func init_table(table: Table, sizes: Array):
|
||||
for i_row in table.get_rows_count():
|
||||
#table.set_nodes_min_size(i_row, sizes)
|
||||
pass
|
||||
|
||||
|
||||
func init_opt_btns(row : int, table):
|
||||
func init_opt_btns(row : int, table, threat):
|
||||
for item in COLUMN_OPT:
|
||||
var i: int = 0
|
||||
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)
|
||||
if i_col == COLUMN_TMOD:
|
||||
var mode = threat.row['tmod'][0]
|
||||
i = MODE_TYPES.find(mode)
|
||||
if i_col == COLUMN_FREQM:
|
||||
var freqm = threat.row['freqm'][0]
|
||||
i = FREQM.find(freqm)
|
||||
if i_col == COLUMN_PROTO:
|
||||
var proto = threat.row['proto'][0]
|
||||
i = M_PROTO.find(proto)
|
||||
cell.select(i)
|
||||
|
||||
|
||||
func on_item_selected(item_num, node):
|
||||
@@ -363,7 +409,7 @@ func on_btn_add(table):
|
||||
table.add_row(TABLE_ROW_TYPES)
|
||||
table.set_row_text(table.get_rows_count()-1, row)
|
||||
table.set_node_user_data(0, table.get_rows_count()-1, threat)
|
||||
init_opt_btns(table.get_rows_count()-1, table)
|
||||
init_opt_btns(table.get_rows_count()-1, table, threat)
|
||||
table.connect_columns(self, 'text_submitted', 'on_edit_entry', TABLE_ENTRY_COLUMNS, [])
|
||||
table.connect_columns(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, [])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user