Пример #1
0
static void fm_tab_page_chdir_without_history(FmTabPage* page, FmPath* path)
{
    FmFolderView* folder_view = FM_FOLDER_VIEW(page->folder_view);
    FmFolder* folder = fm_folder_view_get_folder(folder_view);

    char * disp_path = fm_path_display_name(path, FALSE);
    fm_tab_label_set_tooltip_text(FM_TAB_LABEL(page->tab_label), disp_path);
    g_free(disp_path);

    char* disp_name = fm_path_display_basename(path);
    fm_tab_label_set_text(FM_TAB_LABEL(page->tab_label), disp_name);
    g_free(disp_name);

    /* disconnect from previous folder */
    disconnect_folder(page, folder);

    /* chdir to a new folder */
    fm_folder_view_chdir(folder_view, path);
    folder = fm_folder_view_get_folder(folder_view);
    if(folder)
    {
        g_signal_connect(folder, "fs-info", G_CALLBACK(on_folder_fs_info), page);
//        on_folder_fs_info(folder, win);
        fm_folder_query_filesystem_info(folder);
    }

    fm_side_pane_chdir(FM_SIDE_PANE(page->side_pane), path);

    /* destroy the page when the folder is unmounted or deleted. */
    g_signal_connect_swapped(folder, "unmount", G_CALLBACK(gtk_widget_destroy), page);
    g_signal_connect_swapped(folder, "removed", G_CALLBACK(gtk_widget_destroy), page);

    g_signal_connect(folder, "content-changed", G_CALLBACK(on_folder_content_changed), page);
    g_signal_connect(folder, "fs-info", G_CALLBACK(on_folder_fs_info), page);

    /* tell the world that our current working directory is changed */
    g_signal_emit(page, signals[CHDIR], 0, path);
}
Пример #2
0
static void fm_tab_page_chdir_without_history(FmTabPage* page, FmPath* path, FmPath* select_path)
{
    if (select_path)
        select_path = fm_path_ref(select_path);
    if (page->select_path_after_chdir)
        fm_path_unref(page->select_path_after_chdir);
    page->select_path_after_chdir = select_path;

    fm_tab_page_update_label(page, path);

    free_folder(page);

    page->folder = fm_folder_from_path(path);
    g_signal_connect(page->folder, "start-loading", G_CALLBACK(on_folder_start_loading), page);
    g_signal_connect(page->folder, "finish-loading", G_CALLBACK(on_folder_finish_loading), page);
    g_signal_connect(page->folder, "error", G_CALLBACK(on_folder_error), page);
    g_signal_connect(page->folder, "fs-info", G_CALLBACK(on_folder_fs_info), page);
    /* destroy the page when the folder is unmounted or deleted. */
    g_signal_connect(page->folder, "removed", G_CALLBACK(on_folder_removed), page);
    g_signal_connect(page->folder, "unmount", G_CALLBACK(on_folder_unmount), page);
    g_signal_connect(page->folder, "content-changed", G_CALLBACK(on_folder_content_changed), page);

    if(fm_folder_is_loaded(page->folder))
    {
        on_folder_start_loading(page->folder, page);
        on_folder_finish_loading(page->folder, page);
        on_folder_fs_info(page->folder, page);
    }
    else
        on_folder_start_loading(page->folder, page);

    fm_side_pane_chdir(page->side_pane, path);

    /* tell the world that our current working directory is changed */
    g_signal_emit(page, signals[CHDIR], 0, path);
}