extends Panel


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])
func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, th.to_string()])
func on_parse_error(unit, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit.to_string(), msg])
func on_interfer_off(ecm, _ecms, _thrs,msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()])

func on_interfer_new(ecm, msg: String):
    if ecm.krp != interfer.INTERFER_OFF:
        log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()])


func _enter_tree():
    var flts: Array = []
    for item in $filtrs.get_children():
        flts.append(item)
    log.set_filtrs(flts)


func _ready() -> void:
    log.info('Модуль журнала работы готов')
    log.info('Аргументы коммандной строки: \"%s\"' % OS.get_cmdline_args())
    log.info('Операционная система: %s' % [OS.get_distribution_name()])
    threats.connect('threat_new',  Callable(self, 'on_threats_changed').bind('Цель обнаружена'))
    threats.connect('threat_lost', Callable(self, 'on_threats_changed').bind('Цель потеряна'))
    signaller.connect('interfer_new', Callable(self, 'on_interfer_new').bind('Создан сеанс помехи'))
    signaller.connect('interfer_off', Callable(self, 'on_interfer_off').bind('Сеанс помехи отключен'))

func _on_clear_button_down() -> void:
    $content.clear()
    log.info('Cодержание журнала очищено оператором')


func _on_btn_save_button_down() -> void:
    $content.hide()
    $btn_clear.hide()
    $btn_save.hide()
    $filtrs.hide()
    $dlg_file.show()


func _on_dlg_file_confirmed() -> void:
    $content.show()
    $btn_clear.show()
    $btn_save.show()
    $filtrs.show()
    $dlg_file.hide()


func _on_dlg_file_file_selected(path):
    log.save_file(path)


func _on_check_box_pressed():
    $content.clear()
    log.add_msgs()
