From 58b98be426f84a5b2c810508b13e9aba32f666cc Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 10 Aug 2023 13:25:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3.=20=D0=A2=D0=B0=D0=B1=D1=83=D0=BB?= =?UTF-8?q?=D1=8F=D1=86=D0=B8=D1=8E=20=D0=B2=20=D0=BF=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D0=B5=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/file_table.gd | 54 +++--- scenes/nine-patch-button.gd | 30 +-- scenes/ЭМС.gd | 372 ++++++++++++++++++------------------ scenes/журнал.gd | 1 - scenes/контроль.gd | 58 +++--- scenes/работа.gd | 1 - scripts/yems_consts.gd | 104 +++++----- scripts/yems_devs.gd | 56 +++--- scripts/yemsboards.gd | 20 +- 9 files changed, 347 insertions(+), 349 deletions(-) diff --git a/scenes/file_table.gd b/scenes/file_table.gd index a3b6a0d..c6c2536 100644 --- a/scenes/file_table.gd +++ b/scenes/file_table.gd @@ -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() diff --git a/scenes/nine-patch-button.gd b/scenes/nine-patch-button.gd index 09a921a..102d69b 100644 --- a/scenes/nine-patch-button.gd +++ b/scenes/nine-patch-button.gd @@ -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) diff --git a/scenes/ЭМС.gd b/scenes/ЭМС.gd index 279a554..ada4b55 100644 --- a/scenes/ЭМС.gd +++ b/scenes/ЭМС.gd @@ -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 diff --git a/scenes/журнал.gd b/scenes/журнал.gd index 7e5141e..15cb9a8 100644 --- a/scenes/журнал.gd +++ b/scenes/журнал.gd @@ -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]) diff --git a/scenes/контроль.gd b/scenes/контроль.gd index a2aee48..776bcb1 100644 --- a/scenes/контроль.gd +++ b/scenes/контроль.gd @@ -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() diff --git a/scenes/работа.gd b/scenes/работа.gd index 43246b3..5f99bb2 100644 --- a/scenes/работа.gd +++ b/scenes/работа.gd @@ -186,4 +186,3 @@ func toggle_full_screen(id: int): else: mode = DisplayServer.WINDOW_MODE_FULLSCREEN DisplayServer.window_set_mode(mode, id) - diff --git a/scripts/yems_consts.gd b/scripts/yems_consts.gd index daf8298..5183809 100644 --- a/scripts/yems_consts.gd +++ b/scripts/yems_consts.gd @@ -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']]] diff --git a/scripts/yems_devs.gd b/scripts/yems_devs.gd index 6b621b9..c093700 100644 --- a/scripts/yems_devs.gd +++ b/scripts/yems_devs.gd @@ -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 = 'Работа' diff --git a/scripts/yemsboards.gd b/scripts/yemsboards.gd index cd0c60b..ebd3f86 100644 --- a/scripts/yemsboards.gd +++ b/scripts/yemsboards.gd @@ -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