def search_call(root: tk.Tk, pane: ttk.Panedwindow, selector, option: str,
                search_data, save, create):
    if not glob.is_db_open():
        selector.current(0)
        return
    if not glob.is_saved():
        ans = err.yes_no("Сохранить изменения?")
        if ans:
            save()
    filter_option = ''
    if option == "Без фильтра":
        filter_option = 'all'
    elif option == "По названию":
        filter_option = 'Name'
    elif option == "По типу":
        filter_option = 'Type'
    elif option == "По стране":
        filter_option = 'Country'
    elif option == "По цунами":
        filter_option = 'TSU'
    elif option == "По землетрясению":
        filter_option = 'EQ'
    search_result = hand_base.searching(search_data, filter_option)
    # допилите сообщения)))
    if search_result.empty:
        err.warning('Ничего не найдено', True)
        return
    search_result.reset_index(inplace=True, drop=True)
    create()
    glob.work_list[glob.base_list.get(glob.base_list.size() -
                                      1)] = search_result
    open_base(root, pane, glob.base_list.size() - 1)
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 close_event(pane: ttk.Panedwindow, save):
    """
        Автор:  
        Цель:   закрывает открытую базу и показывает приглащение к открытию новой на правой стороне pane,
                save вызывается для сохранения базы, по решению пользователя
        Вход: pane - растягивающийся виджет, save - объект функции save_event из main
        Выход: нет
    """

    # открыта ли база?
    if not glob.is_db_open():
        return "break"
    # сохранена ли база?
    if not glob.is_saved():
        ans = err.yes_no("Сохранить изменения?")
        if ans:
            save()
    glob.delete_current_base()
    pane.forget(1)
    pls_select_frame = show_invitation(pane)
    pane.add(pls_select_frame, weight=9)
def search_call(root: tk.Tk, pane: ttk.Panedwindow, selector, option: str,
                search_data, save, create):

    """
    Автор: Подкопаева П.
    Цель: Поиск в базе данных по ключевому слову
    Вход: Ключевое слово типа строка
    Выход: dataframe
    """

    if not glob.is_db_open():
        selector.current(0)
        return
    if not glob.is_saved():
        ans = err.yes_no("Сохранить изменения?")
        if ans:
            save()
    filter_option = ''
    if option == "Без фильтра":
        filter_option = 'all'
    elif option == "По названию":
        filter_option = 'Name'
    elif option == "По типу":
        filter_option = 'Type'
    elif option == "По стране":
        filter_option = 'Country'
    elif option == "По цунами":
        filter_option = 'TSU'
    elif option == "По землетрясению":
        filter_option = 'EQ'
    search_result = hand_base.searching(search_data, filter_option)
    if search_result.empty:
        err.warning('Ничего не найдено', True)
        return
    search_result.reset_index(inplace=True, drop=True)
    create()
    glob.work_list[glob.base_list.get(glob.base_list.size() - 1)] = search_result
    open_base(root, pane, glob.base_list.size() - 1)
    glob.mark_changes()
    save()
def show_form(root, pane, selector, form: str, save):
    """
            Автор:  
            Цель:
            Вход:
            Выход:  нет
    """
    if not glob.is_db_open():
        selector.current(0)
        return
    if not glob.is_saved():
        ans = err.yes_no("Сохранить изменения?")
        if ans:
            save()
    if form == "Общий вид":
        glob.columns = constants.origin_columns
    elif form == "Вид первый":
        glob.columns = constants.first_form
    elif form == "Вид второй":
        glob.columns = constants.second_form
    elif form == "Вид третий":
        glob.columns = constants.third_form

    open_base(root, pane, glob.current_base_list_id)