Рефакторинг. Табуляцию в пробелы

This commit is contained in:
sasha80
2023-08-10 13:25:09 +03:00
parent 42b6fe466b
commit 58b98be426
9 changed files with 347 additions and 349 deletions

View File

@@ -9,30 +9,30 @@ var FILES_ROWS_ALIGNMENT = [ HORIZONTAL_ALIGNMENT_LEFT, HORIZONTAL_ALIGNM
func fill_files_table(tbl: Table, folder: String, rows_types: Array):
var dir: = DirAccess.open(folder)
if dir == null:
return
var files: = []
var exclude_names: = ['.', '..']
dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547
while true:
var file: = dir.get_next()
if file == '':
break
if file in exclude_names:
continue
var file_name = folder + '/' + file
var fd = FileAccess.open(file_name, FileAccess.READ)
if not fd:
continue
var glob_path = ProjectSettings.globalize_path(file_name)
var sz = fd.get_length()
var ut = fd.get_modified_time(file_name)
fd.close()
var mt = Time.get_datetime_dict_from_unix_time(ut)
var file_row = [file, '%d' % sz, '%d-%02d-%02d %02d:%02d' % [mt.year, mt.month, mt.day, mt.hour, mt.minute]]
tbl.add_row(rows_types)
var i_row = tbl.get_rows_count() - 1
tbl.set_row_text(i_row, file_row)
tbl.set_node_meta(0, i_row, 'file_path', glob_path)
dir.list_dir_end()
var dir: = DirAccess.open(folder)
if dir == null:
return
var files: = []
var exclude_names: = ['.', '..']
dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547
while true:
var file: = dir.get_next()
if file == '':
break
if file in exclude_names:
continue
var file_name = folder + '/' + file
var fd = FileAccess.open(file_name, FileAccess.READ)
if not fd:
continue
var glob_path = ProjectSettings.globalize_path(file_name)
var sz = fd.get_length()
var ut = fd.get_modified_time(file_name)
fd.close()
var mt = Time.get_datetime_dict_from_unix_time(ut)
var file_row = [file, '%d' % sz, '%d-%02d-%02d %02d:%02d' % [mt.year, mt.month, mt.day, mt.hour, mt.minute]]
tbl.add_row(rows_types)
var i_row = tbl.get_rows_count() - 1
tbl.set_row_text(i_row, file_row)
tbl.set_node_meta(0, i_row, 'file_path', glob_path)
dir.list_dir_end()

View File

@@ -6,28 +6,28 @@ extends PanelContainer
@export var texture_state0: Texture2D = preload('res://data/кнопка-квадрат-0.png'):
set(val): $state.set_texture(val)
set(val): $state.set_texture(val)
@export var texture_state1: Texture2D = preload('res://data/кнопка-квадрат-1.png'):
set(val): $state.set_texture(val)
set(val): $state.set_texture(val)
@export var text: String = '':
set(val): $button.set_text(val)
get: return $button.get_text()
set(val): $button.set_text(val)
get: return $button.get_text()
@export var pressed: bool = false:
set(val): $button.set_pressed(val)
get: return $button.is_pressed()
set(val): $button.set_pressed(val)
get: return $button.is_pressed()
@export var toggle_mode: bool = false:
set(val):
if is_inside_tree():
$button.set_toggle_mode(val)
get: return $button.is_toggle_mode()
set(val):
if is_inside_tree():
$button.set_toggle_mode(val)
get: return $button.is_toggle_mode()
func set_text (val: String): $button.set_text(val)
@@ -35,8 +35,8 @@ func set_pressed (val: bool): $button.set_pressed(val)
func set_toggle_mode (val: bool):
if is_inside_tree():
$button.set_toggle_mode(val)
if is_inside_tree():
$button.set_toggle_mode(val)
func get_text(): return $button.get_text()
@@ -45,9 +45,9 @@ func is_toggle_mode(): return $button.is_toggle_mode()
func _on_button_toggled(val: bool):
if val: $state.set_texture(texture_state1)
else: $state.set_texture(texture_state0)
if val: $state.set_texture(texture_state1)
else: $state.set_texture(texture_state0)
func button_connect(button_signal: String, proc: Callable):
$button.connect(button_signal, proc)
$button.connect(button_signal, proc)

View File

@@ -21,252 +21,252 @@ var posx: int = 35 # Позиция элементов по x
var posy: int = 60 # Позиция элементов по y
func _ready() -> void:
call_deferred('init_boards')
call_deferred('init_boards')
func init_boards():
$scrollin.set_position(Vector2(posx,posy))
$scrollout.set_position(Vector2(posx+650,posy))
$scrl_in_set.set_position(Vector2(posx,posy + 700))
$scrl_out_set.set_position(Vector2(posx+650,posy + 700))
#$tbl_files.set_position(Vector2(posx + 890,len(INPUT_ROWS)*33+posy+300))
#$btn_new.set_position(Vector2(posx + 1270,len(INPUT_ROWS)*33+posy+294))
#$btn_save.set_position(Vector2(posx + 1270,len(INPUT_ROWS)*33+posy+344))
#$btn_copy.set_position(Vector2(posx + 1270,len(INPUT_ROWS)*33+posy+394))
$lbl_online.set_position(Vector2(posx,posy-60))
$btn_flash_read.set_position(Vector2(posx+1400,posy))
$btn_flash_write.set_position(Vector2(posx+1400,posy+35))
$btn_connect.set_position(Vector2(posx+590,posy-25))
g_boards['КЭМС'] = Yemsboards.EmsBoard.new('КЭМС', 0x130, YemsConsts.INPUT_ROWS0, YemsConsts.OUTPUT_ROWS0)
g_boards['П5-28'] = Yemsboards.EmsBoard.new('П5-28', 0x140, YemsConsts.INPUT_ROWS1, YemsConsts.OUTPUT_ROWS1)
init_tbls_in()
$scrollin/tbl_in.pin_header($scrollin, self)
init_tbls_out()
$scrollout/tbl_out.pin_header($scrollout, self)
$scrl_in_set/tbl_in_set.pin_header($scrl_in_set, self)
$scrl_out_set/tbl_out_set.pin_header($scrl_out_set, self)
$btn_connect.connect('pressed', Callable(self, 'on_btn_connect'))
$scrollin.set_position(Vector2(posx,posy))
$scrollout.set_position(Vector2(posx+650,posy))
$scrl_in_set.set_position(Vector2(posx,posy + 700))
$scrl_out_set.set_position(Vector2(posx+650,posy + 700))
#$tbl_files.set_position(Vector2(posx + 890,len(INPUT_ROWS)*33+posy+300))
#$btn_new.set_position(Vector2(posx + 1270,len(INPUT_ROWS)*33+posy+294))
#$btn_save.set_position(Vector2(posx + 1270,len(INPUT_ROWS)*33+posy+344))
#$btn_copy.set_position(Vector2(posx + 1270,len(INPUT_ROWS)*33+posy+394))
$lbl_online.set_position(Vector2(posx,posy-60))
$btn_flash_read.set_position(Vector2(posx+1400,posy))
$btn_flash_write.set_position(Vector2(posx+1400,posy+35))
$btn_connect.set_position(Vector2(posx+590,posy-25))
g_boards['КЭМС'] = Yemsboards.EmsBoard.new('КЭМС', 0x130, YemsConsts.INPUT_ROWS0, YemsConsts.OUTPUT_ROWS0)
g_boards['П5-28'] = Yemsboards.EmsBoard.new('П5-28', 0x140, YemsConsts.INPUT_ROWS1, YemsConsts.OUTPUT_ROWS1)
init_tbls_in()
$scrollin/tbl_in.pin_header($scrollin, self)
init_tbls_out()
$scrollout/tbl_out.pin_header($scrollout, self)
$scrl_in_set/tbl_in_set.pin_header($scrl_in_set, self)
$scrl_out_set/tbl_out_set.pin_header($scrl_out_set, self)
$btn_connect.connect('pressed', Callable(self, 'on_btn_connect'))
func init_tbls_in():
var header_type: Array = [TableHeader, TableHeader, TableHeader, TableHeader, TableHeader]
var header_text: Array = ['Входы', 'Соединитель', 'мкс', 'мкс', 'Состояние']
var row_type: Array = [CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, CellState]
var yams_alligment_in: Array = [ HORIZONTAL_ALIGNMENT_LEFT, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER]
var column_size: Array = [250, 100, 70, 70, 50]
$scrollin/tbl_in.set_header(header_type)
$scrollin/tbl_in.set_header_text(header_text)
$scrollin/tbl_in.set_columns_alignments(yams_alligment_in)
for board in g_boards:
for item in g_boards[board].in_tbl:
$scrollin/tbl_in.add_row(row_type)
var row_index : int = $scrollin/tbl_in.get_rows_count() - 1
var params : Array = item[1]
var in_dev: YemsDevs.InDev = YemsDevs.InDev.new(item[0], params, row_index)
in_dev.board = board
for i in range(len(row_type)):
if i < len(params):
var node = $scrollin/tbl_in.get_node2(i, row_index)
node.text = params[i]
node.editable = false
$scrollin/tbl_in.set_node_user_data(i, row_index, [in_dev, board])
$scrollin/tbl_in.set_columns_min_size(column_size)
$scrollin/tbl_in.connect('row_pressed', Callable(self, 'on_row_pressed_in'))
$scrollin/tbl_in.connect('selected_changed', Callable(self, 'on_selected_changed_in'))
var header_type: Array = [TableHeader, TableHeader, TableHeader, TableHeader, TableHeader]
var header_text: Array = ['Входы', 'Соединитель', 'мкс', 'мкс', 'Состояние']
var row_type: Array = [CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, CellState]
var yams_alligment_in: Array = [ HORIZONTAL_ALIGNMENT_LEFT, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER]
var column_size: Array = [250, 100, 70, 70, 50]
$scrollin/tbl_in.set_header(header_type)
$scrollin/tbl_in.set_header_text(header_text)
$scrollin/tbl_in.set_columns_alignments(yams_alligment_in)
for board in g_boards:
for item in g_boards[board].in_tbl:
$scrollin/tbl_in.add_row(row_type)
var row_index : int = $scrollin/tbl_in.get_rows_count() - 1
var params : Array = item[1]
var in_dev: YemsDevs.InDev = YemsDevs.InDev.new(item[0], params, row_index)
in_dev.board = board
for i in range(len(row_type)):
if i < len(params):
var node = $scrollin/tbl_in.get_node2(i, row_index)
node.text = params[i]
node.editable = false
$scrollin/tbl_in.set_node_user_data(i, row_index, [in_dev, board])
$scrollin/tbl_in.set_columns_min_size(column_size)
$scrollin/tbl_in.connect('row_pressed', Callable(self, 'on_row_pressed_in'))
$scrollin/tbl_in.connect('selected_changed', Callable(self, 'on_selected_changed_in'))
header_text[0] = 'Вход'
$scrl_in_set/tbl_in_set.set_header(header_type)
$scrl_in_set/tbl_in_set.set_header_text(header_text)
$scrl_in_set/tbl_in_set.set_columns_alignments(yams_alligment_in)
$scrl_in_set/tbl_in_set.set_columns_min_size(column_size)
header_text[0] = 'Вход'
$scrl_in_set/tbl_in_set.set_header(header_type)
$scrl_in_set/tbl_in_set.set_header_text(header_text)
$scrl_in_set/tbl_in_set.set_columns_alignments(yams_alligment_in)
$scrl_in_set/tbl_in_set.set_columns_min_size(column_size)
$scrl_in_set/tbl_in_set.connect('row_pressed', Callable(self, 'on_row_pressed_si'))
$scrl_in_set/tbl_in_set.connect('selected_changed', Callable(self, 'on_selected_changed_si'))
$scrl_in_set/tbl_in_set.connect('row_pressed', Callable(self, 'on_row_pressed_si'))
$scrl_in_set/tbl_in_set.connect('selected_changed', Callable(self, 'on_selected_changed_si'))
func on_selected_changed_in(i_row: int):
var selecter_rows: Array = []
$scrollin/tbl_in.get_selected_rows(selecter_rows)
var user_data = $scrollin/tbl_in.get_node_user_data(0, i_row)
var dev = user_data[0]
var board = user_data[1]
set_in_dev(board, dev)
var selecter_rows: Array = []
$scrollin/tbl_in.get_selected_rows(selecter_rows)
var user_data = $scrollin/tbl_in.get_node_user_data(0, i_row)
var dev = user_data[0]
var board = user_data[1]
set_in_dev(board, dev)
func on_row_pressed_in(i_row: int):
on_row_pressed(i_row, $scrollin/tbl_in)
on_selected_changed_in(i_row)
on_row_pressed(i_row, $scrollin/tbl_in)
on_selected_changed_in(i_row)
func set_in_dev(_board, dev):
var row_type: Array = [CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, CellState]
set_dev($scrl_in_set/tbl_in_set, dev, row_type, IN_SET_ROW, 'Список соединённых выходов :')
var row_type: Array = [CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, CellState]
set_dev($scrl_in_set/tbl_in_set, dev, row_type, IN_SET_ROW, 'Список соединённых выходов :')
func on_selected_changed_si(i_row: int):
if i_row < 2:
return
var out_user_data = $scrl_in_set/tbl_in_set.get_node_user_data(0, i_row)
var dev = out_user_data[0]
var dev_name = dev.dev_name
for i in range($scrollout/tbl_out.get_rows_count()):
var node = $scrollout/tbl_out.get_node2(0, i)
if dev_name == node.text:
on_row_pressed_out(i)
if i_row < 2:
return
var out_user_data = $scrl_in_set/tbl_in_set.get_node_user_data(0, i_row)
var dev = out_user_data[0]
var dev_name = dev.dev_name
for i in range($scrollout/tbl_out.get_rows_count()):
var node = $scrollout/tbl_out.get_node2(0, i)
if dev_name == node.text:
on_row_pressed_out(i)
func on_row_pressed_si(i_row: int):
if i_row < 2:
return
on_row_pressed(i_row, $scrl_in_set/tbl_in_set)
on_selected_changed_si(i_row)
if i_row < 2:
return
on_row_pressed(i_row, $scrl_in_set/tbl_in_set)
on_selected_changed_si(i_row)
func init_tbls_out():
var header_text = ['Выходы', 'Соединитель', 'мкс', 'мкс', 'Состояние', 'Режим']
$scrollout/tbl_out.set_header([TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader])
$scrollout/tbl_out.set_header_text(header_text)
for board in g_boards:
for item in g_boards[board].out_tbl:
$scrollout/tbl_out.add_row([CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, CellState, CellLineEdit])
var row_index : int = $scrollout/tbl_out.get_rows_count() - 1
var params : Array = item[1]
var out_dev = YemsDevs.OutDev.new(item[0], params, row_index)
out_dev.board = board
for i in range(len(header_text)):
var cell = $scrollout/tbl_out.get_node2(i, row_index)
if i < len(params):
cell.text = params[i]
cell.editable = false
$scrollout/tbl_out.set_node_user_data(i, row_index, [out_dev, board])
if i in COLUMN_OPTS_BTN:
cell.text = out_dev.mode
$scrollout/tbl_out.set_columns_min_size([250, 100, 70, 70, 70, 100])
$scrollout/tbl_out.connect('row_pressed', Callable(self, 'on_row_pressed_out'))
$scrollout/tbl_out.connect('selected_changed', Callable(self, 'on_selected_changed_out'))
var header_text = ['Выходы', 'Соединитель', 'мкс', 'мкс', 'Состояние', 'Режим']
$scrollout/tbl_out.set_header([TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader])
$scrollout/tbl_out.set_header_text(header_text)
for board in g_boards:
for item in g_boards[board].out_tbl:
$scrollout/tbl_out.add_row([CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, CellState, CellLineEdit])
var row_index : int = $scrollout/tbl_out.get_rows_count() - 1
var params : Array = item[1]
var out_dev = YemsDevs.OutDev.new(item[0], params, row_index)
out_dev.board = board
for i in range(len(header_text)):
var cell = $scrollout/tbl_out.get_node2(i, row_index)
if i < len(params):
cell.text = params[i]
cell.editable = false
$scrollout/tbl_out.set_node_user_data(i, row_index, [out_dev, board])
if i in COLUMN_OPTS_BTN:
cell.text = out_dev.mode
$scrollout/tbl_out.set_columns_min_size([250, 100, 70, 70, 70, 100])
$scrollout/tbl_out.connect('row_pressed', Callable(self, 'on_row_pressed_out'))
$scrollout/tbl_out.connect('selected_changed', Callable(self, 'on_selected_changed_out'))
header_text[0] = 'Выход'
$scrl_out_set/tbl_out_set.set_header([TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader])
$scrl_out_set/tbl_out_set.set_header_text(header_text)
$scrl_out_set/tbl_out_set.set_columns_min_size([250, 100, 70, 70, 70, 100])
$scrl_out_set/tbl_out_set.connect('row_pressed', Callable(self, 'on_row_pressed_so'))
$scrl_out_set/tbl_out_set.connect('selected_changed', Callable(self, 'on_selected_changed_so'))
header_text[0] = 'Выход'
$scrl_out_set/tbl_out_set.set_header([TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader])
$scrl_out_set/tbl_out_set.set_header_text(header_text)
$scrl_out_set/tbl_out_set.set_columns_min_size([250, 100, 70, 70, 70, 100])
$scrl_out_set/tbl_out_set.connect('row_pressed', Callable(self, 'on_row_pressed_so'))
$scrl_out_set/tbl_out_set.connect('selected_changed', Callable(self, 'on_selected_changed_so'))
func on_selected_changed_so(i_row: int):
if i_row < 2:
return
var in_user_data = $scrl_out_set/tbl_out_set.get_node_user_data(0, i_row)
var dev = in_user_data[0]
var dev_name = dev.dev_name
for i in range($scrollin/tbl_in.get_rows_count()):
var node = $scrollin/tbl_in.get_node2(0, i)
if dev_name == node.text:
on_row_pressed_in(i)
if i_row < 2:
return
var in_user_data = $scrl_out_set/tbl_out_set.get_node_user_data(0, i_row)
var dev = in_user_data[0]
var dev_name = dev.dev_name
for i in range($scrollin/tbl_in.get_rows_count()):
var node = $scrollin/tbl_in.get_node2(0, i)
if dev_name == node.text:
on_row_pressed_in(i)
func on_row_pressed_so(i_row: int):
if i_row < 2:
return
on_row_pressed(i_row, $scrl_out_set/tbl_out_set)
on_selected_changed_so(i_row)
if i_row < 2:
return
on_row_pressed(i_row, $scrl_out_set/tbl_out_set)
on_selected_changed_so(i_row)
func on_selected_changed_out(i_row: int):
var selecter_rows: Array = []
$scrollout/tbl_out.get_selected_rows(selecter_rows)
var user_data = $scrollout/tbl_out.get_node_user_data(0, i_row)
var dev = user_data[0]
var board = user_data[1]
set_out_dev(board, dev)
var selecter_rows: Array = []
$scrollout/tbl_out.get_selected_rows(selecter_rows)
var user_data = $scrollout/tbl_out.get_node_user_data(0, i_row)
var dev = user_data[0]
var board = user_data[1]
set_out_dev(board, dev)
func on_row_pressed_out(i_row: int):
on_row_pressed(i_row, $scrollout/tbl_out)
on_selected_changed_out(i_row)
on_row_pressed(i_row, $scrollout/tbl_out)
on_selected_changed_out(i_row)
func set_out_dev(_board, dev):
var row_type: Array = [CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, CellState, CellOptBtn]
set_dev($scrl_out_set/tbl_out_set, dev, row_type, OUT_SET_ROW, 'Список соединённых входов :')
var mode = $scrl_out_set/tbl_out_set.get_node2(5, 0)
for opt in OUT_MODE:
mode.add_item(opt)
var mode_index: int = OUT_MODE.find(dev.mode)
if mode_index != -1:
mode.select(mode_index)
var row_type: Array = [CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, CellState, CellOptBtn]
set_dev($scrl_out_set/tbl_out_set, dev, row_type, OUT_SET_ROW, 'Список соединённых входов :')
var mode = $scrl_out_set/tbl_out_set.get_node2(5, 0)
for opt in OUT_MODE:
mode.add_item(opt)
var mode_index: int = OUT_MODE.find(dev.mode)
if mode_index != -1:
mode.select(mode_index)
func set_dev(tbl, dev, row_type, row_type_conn, lbl_text):
tbl.clear_rows()
tbl.add_row(row_type)
var le_name: LineEdit = tbl.get_node2(0, 0)
le_name.editable = false
le_name.text = dev.dev_name
var connector: LineEdit = tbl.get_node2(1, 0)
connector.editable = false
connector.text = dev.connector
var delay: LineEdit = tbl.get_node2(2, 0)
delay.text = '%4.2f'%dev.delay
var offset: LineEdit = tbl.get_node2(3, 0)
offset.text = '%4.2f'%dev.offset
var state = tbl.get_node2(4, 0)
state.set_frame(dev.state)
tbl.clear_rows()
tbl.add_row(row_type)
var le_name: LineEdit = tbl.get_node2(0, 0)
le_name.editable = false
le_name.text = dev.dev_name
var connector: LineEdit = tbl.get_node2(1, 0)
connector.editable = false
connector.text = dev.connector
var delay: LineEdit = tbl.get_node2(2, 0)
delay.text = '%4.2f'%dev.delay
var offset: LineEdit = tbl.get_node2(3, 0)
offset.text = '%4.2f'%dev.offset
var state = tbl.get_node2(4, 0)
state.set_frame(dev.state)
tbl.add_row(row_type_conn)
var lbl: LineEdit = tbl.get_node2(0, 1)
lbl.text = lbl_text
for i in len(row_type_conn):
var le: LineEdit = tbl.get_node2(i, 1)
le.editable = false
tbl.add_row(row_type_conn)
var lbl: LineEdit = tbl.get_node2(0, 1)
lbl.text = lbl_text
for i in len(row_type_conn):
var le: LineEdit = tbl.get_node2(i, 1)
le.editable = false
for i in dev.connect_devs:
var dev_con = dev.connect_devs[i][0]
tbl.add_row(row_type_conn)
var node_index: Array = [0, tbl.get_rows_count() -1]
var le_name_out: LineEdit = tbl.get_node2(node_index[0], node_index[1])
disable_edit(tbl, len(row_type_conn), node_index[1])
le_name_out.text = dev_con.dev_name
tbl.set_node_user_data(node_index[0], node_index[1], dev.connect_devs[i])
for i in dev.connect_devs:
var dev_con = dev.connect_devs[i][0]
tbl.add_row(row_type_conn)
var node_index: Array = [0, tbl.get_rows_count() -1]
var le_name_out: LineEdit = tbl.get_node2(node_index[0], node_index[1])
disable_edit(tbl, len(row_type_conn), node_index[1])
le_name_out.text = dev_con.dev_name
tbl.set_node_user_data(node_index[0], node_index[1], dev.connect_devs[i])
func on_btn_connect():
var in_row_index: Array = []
var out_row_index: Array = []
$scrollin/tbl_in.get_selected_rows(in_row_index)
$scrollout/tbl_out.get_selected_rows(out_row_index)
if len(in_row_index) and len(out_row_index):
var in_user_data = $scrollin/tbl_in.get_node_user_data(0, in_row_index[0])
var out_user_data = $scrollout/tbl_out.get_node_user_data(0, out_row_index[0])
var in_dev = in_user_data[0]
var out_dev = out_user_data[0]
add_connection_dev($scrl_out_set/tbl_out_set, in_dev, out_dev, OUT_SET_ROW, in_user_data)
add_connection_dev($scrl_in_set/tbl_in_set, out_dev, in_dev, IN_SET_ROW, out_user_data)
var in_row_index: Array = []
var out_row_index: Array = []
$scrollin/tbl_in.get_selected_rows(in_row_index)
$scrollout/tbl_out.get_selected_rows(out_row_index)
if len(in_row_index) and len(out_row_index):
var in_user_data = $scrollin/tbl_in.get_node_user_data(0, in_row_index[0])
var out_user_data = $scrollout/tbl_out.get_node_user_data(0, out_row_index[0])
var in_dev = in_user_data[0]
var out_dev = out_user_data[0]
add_connection_dev($scrl_out_set/tbl_out_set, in_dev, out_dev, OUT_SET_ROW, in_user_data)
add_connection_dev($scrl_in_set/tbl_in_set, out_dev, in_dev, IN_SET_ROW, out_user_data)
func add_connection_dev(tbl, dev1, dev2, set_row, user_data):
if not dev1.dev_name in dev2.connect_devs:
tbl.add_row(set_row)
var node_index: Array = [0, tbl.get_rows_count() -1]
var le_name: LineEdit = tbl.get_node2(node_index[0], node_index[1])
le_name.text = dev1.dev_name
disable_edit(tbl, len(set_row), node_index[1])
tbl.set_node_user_data(node_index[0], node_index[1], user_data)
dev2.connect_devs[dev1.dev_name] = user_data
if not dev1.dev_name in dev2.connect_devs:
tbl.add_row(set_row)
var node_index: Array = [0, tbl.get_rows_count() -1]
var le_name: LineEdit = tbl.get_node2(node_index[0], node_index[1])
le_name.text = dev1.dev_name
disable_edit(tbl, len(set_row), node_index[1])
tbl.set_node_user_data(node_index[0], node_index[1], user_data)
dev2.connect_devs[dev1.dev_name] = user_data
func disable_edit(tbl, num_col: int, i_row: int):
for col in range(num_col):
var node: LineEdit = tbl.get_node2(col, i_row)
node.editable = false
for col in range(num_col):
var node: LineEdit = tbl.get_node2(col, i_row)
node.editable = false
func on_row_pressed(i_row: int, tbl):
tbl.clear_rows_selected()
var is_row_selected = tbl.is_row_selected(i_row)
tbl.set_row_selected(i_row, not is_row_selected)
tbl.clear_rows_selected()
var is_row_selected = tbl.is_row_selected(i_row)
tbl.set_row_selected(i_row, not is_row_selected)
func _process(_delta):
pass
pass

View File

@@ -1,7 +1,6 @@
extends Control
func on_line_changed(unit, addr): Log.message(Logger.INFO, 'Состояние связи: %s %s' % [unit, addr])
func on_command_fail(unit, addr): Log.message(Logger.ERROR, 'Ошибка: команда не выполнена: %s %s' % [unit, addr])

View File

@@ -2,41 +2,41 @@ extends Panel
const PRIBORS_RES = \
[['pribor_uf', 'res://scenes/pribor_uf.tscn'],
['pribor_rtr', 'res://scenes/pribor_rtr.tscn'],
['pribor_afsp_l', 'res://scenes/pribor_afsp_l.tscn'],
['pribor_afsp_r', 'res://scenes/pribor_afsp_r.tscn'],
['pribor_sch3', 'res://scenes/pribor_sch3.tscn'],
['pribor_spt_l', 'res://scenes/pribor_spt_l.tscn'],
['pribor_spt_r', 'res://scenes/pribor_spt_r.tscn'],
['pribor_prd_v_1', 'res://scenes/pribor_prd_v_1.tscn'],
['pribor_prd_n_1', 'res://scenes/pribor_prd_n_1.tscn'],
['pribor_prd_k_1', 'res://scenes/pribor_prd_k_1.tscn'],
['pribor_prd_v_2', 'res://scenes/pribor_prd_v_2.tscn'],
['pribor_prd_n_2', 'res://scenes/pribor_prd_n_2.tscn'],
['pribor_prd_k_2', 'res://scenes/pribor_prd_k_2.tscn'],
['pribor_prd_v_3', 'res://scenes/pribor_prd_v_3.tscn'],
['pribor_prd_n_3', 'res://scenes/pribor_prd_n_3.tscn'],
['pribor_prd_k_3', 'res://scenes/pribor_prd_k_3.tscn'],
['pribor_prd_v_4', 'res://scenes/pribor_prd_v_4.tscn'],
['pribor_prd_n_4', 'res://scenes/pribor_prd_n_4.tscn'],
['pribor_prd_k_4', 'res://scenes/pribor_prd_k_4.tscn']]
['pribor_rtr', 'res://scenes/pribor_rtr.tscn'],
['pribor_afsp_l', 'res://scenes/pribor_afsp_l.tscn'],
['pribor_afsp_r', 'res://scenes/pribor_afsp_r.tscn'],
['pribor_sch3', 'res://scenes/pribor_sch3.tscn'],
['pribor_spt_l', 'res://scenes/pribor_spt_l.tscn'],
['pribor_spt_r', 'res://scenes/pribor_spt_r.tscn'],
['pribor_prd_v_1', 'res://scenes/pribor_prd_v_1.tscn'],
['pribor_prd_n_1', 'res://scenes/pribor_prd_n_1.tscn'],
['pribor_prd_k_1', 'res://scenes/pribor_prd_k_1.tscn'],
['pribor_prd_v_2', 'res://scenes/pribor_prd_v_2.tscn'],
['pribor_prd_n_2', 'res://scenes/pribor_prd_n_2.tscn'],
['pribor_prd_k_2', 'res://scenes/pribor_prd_k_2.tscn'],
['pribor_prd_v_3', 'res://scenes/pribor_prd_v_3.tscn'],
['pribor_prd_n_3', 'res://scenes/pribor_prd_n_3.tscn'],
['pribor_prd_k_3', 'res://scenes/pribor_prd_k_3.tscn'],
['pribor_prd_v_4', 'res://scenes/pribor_prd_v_4.tscn'],
['pribor_prd_n_4', 'res://scenes/pribor_prd_n_4.tscn'],
['pribor_prd_k_4', 'res://scenes/pribor_prd_k_4.tscn']]
func _ready():
for item in PRIBORS_RES:
var pribor_node = get_node(item[0])
var pribor_sch_path = item[1]
pribor_node.connect('button_up', Callable(self, 'on_pribor_press').bind(pribor_sch_path))
for item in PRIBORS_RES:
var pribor_node = get_node(item[0])
var pribor_sch_path = item[1]
pribor_node.connect('button_up', Callable(self, 'on_pribor_press').bind(pribor_sch_path))
func on_pribor_press(pribor_sch_path):
clear_obj($pribor_sch)
var pribor_sch = load(pribor_sch_path).instantiate()
$pribor_sch.add_child(pribor_sch)
clear_obj($pribor_sch)
var pribor_sch = load(pribor_sch_path).instantiate()
$pribor_sch.add_child(pribor_sch)
func clear_obj(obj: Object):
var items = obj.get_children()
for item in items:
obj.remove_child(item)
item.free()
var items = obj.get_children()
for item in items:
obj.remove_child(item)
item.free()

View File

@@ -186,4 +186,3 @@ func toggle_full_screen(id: int):
else:
mode = DisplayServer.WINDOW_MODE_FULLSCREEN
DisplayServer.window_set_mode(mode, id)

View File

@@ -3,63 +3,63 @@ extends Node
# Таблица с данными для входов, первое значение - индекс устройства в ячейке КЭМС
const INPUT_ROWS0 = [
[1,['1111 МР-231S, УИЗП', 'X31', '0.00', '0.00']],
[2,['2222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
[3,['3НРЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
[4,['4НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
[5,['5ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
[8,['64302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
[11,['7НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']],
[22,['8222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
[23,['9РЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
[24,['10НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
[25,['11ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
[28,['124302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
[21,['13НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']]]
[1,['1111 МР-231S, УИЗП', 'X31', '0.00', '0.00']],
[2,['2222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
[3,['3НРЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
[4,['4НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
[5,['5ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
[8,['64302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
[11,['7НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']],
[22,['8222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
[23,['9РЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
[24,['10НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
[25,['11ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
[28,['124302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
[21,['13НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']]]
# Таблица с данными для выходов, первое значение - индекс устройства в ячейке КЭМС
const OUTPUT_ROWS0 = [
[41,['15НРЛС МР-231S, БИ', 'X61', '0.00', '0.00']],
[42,['16НРЛС МР-231S', 'X62', '0.00', '0.00']],
[43,['17НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[44,['18НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[45,['19ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[46,['204302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[48,['21НРЛС 11111111', 'X69', '0.00', '0.00']],
[52,['22НРЛС МР-231S', 'X62', '0.00', '0.00']],
[53,['23НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[54,['24НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[55,['25ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[56,['264302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[58,['27НРЛС 11111111', 'X69', '0.00', '0.00']]]
[41,['15НРЛС МР-231S, БИ', 'X61', '0.00', '0.00']],
[42,['16НРЛС МР-231S', 'X62', '0.00', '0.00']],
[43,['17НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[44,['18НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[45,['19ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[46,['204302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[48,['21НРЛС 11111111', 'X69', '0.00', '0.00']],
[52,['22НРЛС МР-231S', 'X62', '0.00', '0.00']],
[53,['23НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[54,['24НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[55,['25ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[56,['264302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[58,['27НРЛС 11111111', 'X69', '0.00', '0.00']]]
const INPUT_ROWS1 = [
[12,['283333 МР-231S, Строб ЭМС', 'X52', '0.00', '0.00']],
[13,['29НРЛС МР-231-3, УИЗП', 'X54', '0.00', '0.00']],
[14,['30НРЛС МР-231-3, Строб ЭМС', 'X55', '0.00', '0.00']],
[15,['31ЦИСВС-1010, УИЗП', 'X23', '0.00', '0.00']],
[21,['32НРЛС МР-231S, УИЗП', 'X21', '0.00', '0.00']],
[22,['33НРЛС МР-231S, Строб ЭМС', 'X22', '0.00', '0.00']],
[23,['34НРЛС МР-231-3, УИЗП', 'X24', '0.00', '0.00']],
[32,['352222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
[33,['36НРЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
[34,['37НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
[35,['38ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
[38,['394302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
[31,['40НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']]]
[12,['283333 МР-231S, Строб ЭМС', 'X52', '0.00', '0.00']],
[13,['29НРЛС МР-231-3, УИЗП', 'X54', '0.00', '0.00']],
[14,['30НРЛС МР-231-3, Строб ЭМС', 'X55', '0.00', '0.00']],
[15,['31ЦИСВС-1010, УИЗП', 'X23', '0.00', '0.00']],
[21,['32НРЛС МР-231S, УИЗП', 'X21', '0.00', '0.00']],
[22,['33НРЛС МР-231S, Строб ЭМС', 'X22', '0.00', '0.00']],
[23,['34НРЛС МР-231-3, УИЗП', 'X24', '0.00', '0.00']],
[32,['352222 МР-231S, Строб ЭМС', 'X32', '0.00', '0.00']],
[33,['36НРЛС МР-231-3, УИЗП', 'X34', '0.00', '0.00']],
[34,['37НРЛС МР-231-3, Строб ЭМС', 'X35', '0.00', '0.00']],
[35,['38ЦИСВС-1010, УИЗП', 'X43', '0.00', '0.00']],
[38,['394302-01, 4302-04, УИЗП', 'X46', '0.00', '0.00']],
[31,['40НРЛС МР-231S, УИЗП', 'X51', '0.00', '0.00']]]
# Таблица с данными для выходов, первое значение - индекс устройства в ячейке КЭМС
const OUTPUT_ROWS1 = [
[41,['41НРЛС МР-231S, БИ', 'X61', '0.00', '0.00']],
[42,['42НРЛС МР-231S', 'X62', '0.00', '0.00']],
[43,['43НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[44,['44НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[45,['45ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[46,['464302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[48,['47НРЛС 11111111', 'X69', '0.00', '0.00']],
[62,['48НРЛС МР-231S', 'X62', '0.00', '0.00']],
[63,['49НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[64,['50НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[65,['51ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[66,['524302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[68,['53НРЛС 11111111', 'X69', '0.00', '0.00']]]
[41,['41НРЛС МР-231S, БИ', 'X61', '0.00', '0.00']],
[42,['42НРЛС МР-231S', 'X62', '0.00', '0.00']],
[43,['43НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[44,['44НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[45,['45ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[46,['464302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[48,['47НРЛС 11111111', 'X69', '0.00', '0.00']],
[62,['48НРЛС МР-231S', 'X62', '0.00', '0.00']],
[63,['49НРЛС МР-231-3, БИ', 'X64', '0.00', '0.00']],
[64,['50НРЛС МР-231-3', 'X65', '0.00', '0.00']],
[65,['51ЦИСВС-1010, БИ', 'X63', '0.00', '0.00']],
[66,['524302-01, 4302-04, БИ', 'X66', '0.00', '0.00']],
[68,['53НРЛС 11111111', 'X69', '0.00', '0.00']]]

View File

@@ -2,36 +2,36 @@ extends Node
class InDev:
var id: int # Идентификатор индекс устройства
var dev_name: String # Имя подключаемого комплекса
var connector: String # Номер разъёма в приборе
var delay: float # Задержка фронта импульса
var offset: float # Смещение фронта импульса
var state: int # Состояние входа
var freq: int # Предполагаемая частота на которой работает комплекс
var ports_data: Dictionary # Словарь состояния портов устройства
var tbl_row_id: int # Индекс устройства в таблице выходов
var out_dots: Array # Список выходных устройств в порядке, как в таблице и точки матрицы
var connect_devs: Dictionary # Список присоединённых устройств
var board: String # Плата в которой находится устройство
var id: int # Идентификатор индекс устройства
var dev_name: String # Имя подключаемого комплекса
var connector: String # Номер разъёма в приборе
var delay: float # Задержка фронта импульса
var offset: float # Смещение фронта импульса
var state: int # Состояние входа
var freq: int # Предполагаемая частота на которой работает комплекс
var ports_data: Dictionary # Словарь состояния портов устройства
var tbl_row_id: int # Индекс устройства в таблице выходов
var out_dots: Array # Список выходных устройств в порядке, как в таблице и точки матрицы
var connect_devs: Dictionary # Список присоединённых устройств
var board: String # Плата в которой находится устройство
func _init(dev_id : int, params : Array, row_id : int):
id = dev_id
dev_name = String(params[0])
connector = String(params[1])
delay = float(params[2])
offset = float(params[3])
tbl_row_id = row_id
func _init(dev_id : int, params : Array, row_id : int):
id = dev_id
dev_name = String(params[0])
connector = String(params[1])
delay = float(params[2])
offset = float(params[3])
tbl_row_id = row_id
class OutDev extends InDev:
var mode: String # Режим работы выхода
var mode: String # Режим работы выхода
func _init(dev_id : int, params : Array, row_id : int):
id = dev_id
dev_name = String(params[0])
connector = String(params[1])
delay = float(params[2])
offset = float(params[3])
tbl_row_id = row_id
mode = 'Работа'
func _init(dev_id : int, params : Array, row_id : int):
id = dev_id
dev_name = String(params[0])
connector = String(params[1])
delay = float(params[2])
offset = float(params[3])
tbl_row_id = row_id
mode = 'Работа'

View File

@@ -1,15 +1,15 @@
extends Node
class EmsBoard:
var id_board: String
var in_devs: Dictionary # Словарь с входными устройствами
var out_devs: Dictionary # Словарь с выходными устройствами
var base_addr_isa: int # Базовый адрес ячейки isa
var in_tbl: Array
var out_tbl: Array
var id_board: String
var in_devs: Dictionary # Словарь с входными устройствами
var out_devs: Dictionary # Словарь с выходными устройствами
var base_addr_isa: int # Базовый адрес ячейки isa
var in_tbl: Array
var out_tbl: Array
func _init(id, base_addr, in_table, out_table):
id_board = id
in_tbl = in_table
out_tbl = out_table
base_addr_isa = base_addr
id_board = id
in_tbl = in_table
out_tbl = out_table
base_addr_isa = base_addr