extends Panel


func on_line_changed(unit_inst): log.message(Logger.INFO, '\"%s\" изменение состояния: %s' % [unit_inst.name, 'на связи' if unit_inst.online else 'отключен'])
func on_command_fail(unit_inst): log.message(Logger.ERROR, '\"%s\" команда не выполнена' % unit_inst.name)
func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, th.to_string()])
func on_parse_error(unit_inst, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit_inst.name, msg])
func on_interfer_off(ecm, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()])
func on_set_program_mode(msg: String): log.message(Logger.INFO, msg)
func on_mode_trenazh(val: bool): log.message(Logger.INFO, 'Режим \"Тренаж\" %s' % ['отменён', 'задейсвован'][int(val)])

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('Аргументы коммандной строки: \"%s\"' % OS.get_cmdline_args())
    log.info('Операционная система: \"%s\"' % OS.get_distribution_name())
    log.info('Текущая версия ПО УАРЭП: \"%s\"' % commit.VCS_HEAD)
    threats.connect('threat_new',  Callable(self, 'on_threats_changed').bind('Цель обнаружена'))
    threats.connect('threat_lost', Callable(self, 'on_threats_changed').bind('Цель потеряна'))
    signaller.conn(signaller.interfer_new,    Callable(self, 'on_interfer_new').bind('Создан сеанс помехи'))
    signaller.conn(signaller.interfer_off,    Callable(self, 'on_interfer_off').bind('Сеанс помехи отключен'))
    signaller.conn(signaller.режим_работа,    Callable(log, 'info').bind('Программа в режиме \"Работа\"'))
    signaller.conn(signaller.режим_настройки, Callable(log, 'info').bind('Программа в режиме \"Настройки\"'))
    signaller.conn(signaller.режим_эмс,       Callable(log, 'info').bind('Программа в режиме \"ЭМС\"'))
    signaller.conn(signaller.режим_журнал,    Callable(log, 'info').bind('Программа в режиме \"Журнал\"'))
    signaller.conn(signaller.режим_контроль,  Callable(log, 'info').bind('Программа в режиме \"Контроль\"'))
    signaller.conn(signaller.режим_тренаж,    Callable(self, 'on_mode_trenazh'))


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()
