def remove_inf():
    """
        Автор: 
        \nЦель: удаляет строку из таблицы
        \nВход: корневое окно tkinter для создания окна редактирования, список активных столбцов таблицы
        \nВыход: нет
    """
    # открыта ли база?
    if not glob.is_db_open():
        return "break"
    # пуста ли база?
    if glob.current_base.empty:
        err.error("База пуста")
        return "break"
    ans = err.yes_no(
        "Вы точно хотите удалить данные?\n Это повлечёт полное удаление данных по выбранному вулкану."
    )
    if ans:
        # todo: можно ли оптимизировать?
        index = glob.table4base.index(glob.table4base.selection())
        glob.table4base.delete(list(glob.current_base.index)[-1])
        glob.current_base = glob.current_base.drop(index=index)
        glob.current_base.reset_index(inplace=True, drop=True)
        glob.mark_changes()
        glob.update_workspace()
        glob.update_list()
def accept(root, list4values):

    """
    Автор: Баканов Г., Подкопаева П.
    Цель: Проверка правильности введённых данных в окно
    Вход: Значение переменной любого типа
    Выход: нет
    """

    flag = True
    if (list4values['Day'].get() > 29) and (list4values['Month'].get() == 2):
        flag = False
    elif list4values['Day'].get() > 31 or list4values['Day'].get() < 1:
        flag = False
    if list4values['Elevation'].get() > 6887:
        flag = False
    if (list4values['Latitude'].get() > 180) or (list4values['Latitude'].get() < -180):
        flag = False
    if (list4values['Longitude'].get() > 180) or (list4values['Longitude'].get() < -180):
        flag = False
    if flag:

        glob.current_base = glob.current_base.append({k: v.get() for k,
                                                      v in list4values.items()}, ignore_index=True)
        glob.current_base = glob.correct_base_values(glob.current_base)
        glob.work_list[glob.current_base_name] = glob.current_base
        new_item = glob.table4base.insert('', 'end', iid=len(glob.current_base.index) - 1)
        for i in glob.columns:
            glob.table4base.set(new_item, column=i, value=list4values[i].get())
        mb.showinfo("Сообщение", "Занесено в базу")
        glob.mark_changes()
        glob.update_list()
        root.destroy()
    else:
        err.error("Данные введены некорректно, повторите попытку")
def save_event(*args):
    """
    Автор:  
    Цель:
    Вход:
    Выход:
    """
    # открыта ли база?
    if not glob.is_db_open():
        return "break"
    # сохранена ли база?
    if not glob.is_saved():
        glob.unmark_changes()
        glob.work_list[glob.current_base_name] = glob.current_base
        glob.update_list()
        # сохраняем в файл
        hand_base.save_base()
def save_event(*args):
    """
    Автор: Баканов Г. 
    Цель: Сохранение текущей базы в файл
    Вход: Нет
    Выход: Нет (файл)
    """
    # открыта ли база?
    if not glob.is_db_open():
        return "break"
    # сохранена ли база?
    if not glob.is_saved():
        glob.unmark_changes()
        glob.work_list[glob.current_base_name] = glob.current_base
        glob.update_list()
        # сохраняем в файл
        hand_base.save_base()
def make_changes_event(win: tk.Toplevel, index: int, new_values: dict):
    """
    Автор:  
    Цель:   обработчик события кнопки сохранения в окне редактирования поля таблицы
    Вход:   объект окна редактирования tkinter для его закрытия после нажатия кнопки сохранить,
            текущий индекс выбранного поля таблицы,
            новые значения для записи в поле таблицы.
    Выход:  нет
    """
    # приводим все числа к числовому типу
    glob.current_base.iloc[index, :] = [x.get() for x in new_values.values()]
    # заменяем пустые строчки на nan и приводим тип всех столбцов таблицы к нужному типу
    glob.current_base = glob.correct_base_values(glob.current_base)
    glob.work_list[glob.current_base_name] = glob.current_base
    item = glob.table4base.selection()
    for key, value in new_values.items():
        glob.table4base.set(item, column=key, value=value.get())
    glob.mark_changes()
    glob.update_list()
    glob.update_workspace()
    win.destroy()