⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main-window.c

📁 台湾人开发的Linux下的文件管理器
💻 C
📖 第 1 页 / 共 5 页
字号:
    {        file_browser = PTK_FILE_BROWSER( gtk_notebook_get_nth_page(                                             main_window->notebook, i ) );        ptk_file_browser_set_side_pane_mode( file_browser, FB_SIDE_PANE_BOOKMARKS );    }}voidon_show_hidden_activate ( GtkMenuItem *menuitem,                          gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    PtkFileBrowser* file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );    appSettings.showHiddenFiles = gtk_check_menu_item_get_active( GTK_CHECK_MENU_ITEM( menuitem ) );    if ( file_browser )        ptk_file_browser_show_hidden_files( file_browser,                                            appSettings.showHiddenFiles );}voidon_sort_by_name_activate ( GtkMenuItem *menuitem,                           gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window );    appSettings.sortOrder = FB_SORT_BY_NAME;    if ( file_browser )        ptk_file_browser_set_sort_order( PTK_FILE_BROWSER( file_browser ), appSettings.sortOrder );}voidon_sort_by_size_activate ( GtkMenuItem *menuitem,                           gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window );    appSettings.sortOrder = FB_SORT_BY_SIZE;    if ( file_browser )        ptk_file_browser_set_sort_order( PTK_FILE_BROWSER( file_browser ), appSettings.sortOrder );}voidon_sort_by_mtime_activate ( GtkMenuItem *menuitem,                            gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window );    appSettings.sortOrder = FB_SORT_BY_MTIME;    if ( file_browser )        ptk_file_browser_set_sort_order( PTK_FILE_BROWSER( file_browser ), appSettings.sortOrder );}void on_sort_by_type_activate ( GtkMenuItem *menuitem,                                gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window );    appSettings.sortOrder = FB_SORT_BY_TYPE;    if ( file_browser )        ptk_file_browser_set_sort_order( PTK_FILE_BROWSER( file_browser ), appSettings.sortOrder );}void on_sort_by_perm_activate ( GtkMenuItem *menuitem,                                gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window );    appSettings.sortOrder = FB_SORT_BY_PERM;    if ( file_browser )        ptk_file_browser_set_sort_order( PTK_FILE_BROWSER( file_browser ), appSettings.sortOrder );}void on_sort_by_owner_activate ( GtkMenuItem *menuitem,                                 gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window );    appSettings.sortOrder = FB_SORT_BY_OWNER;    if ( file_browser )        ptk_file_browser_set_sort_order( PTK_FILE_BROWSER( file_browser ), appSettings.sortOrder );}voidon_sort_ascending_activate ( GtkMenuItem *menuitem,                             gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window );    appSettings.sortType = GTK_SORT_ASCENDING;    if ( file_browser )        ptk_file_browser_set_sort_type( PTK_FILE_BROWSER( file_browser ), appSettings.sortType );}voidon_sort_descending_activate ( GtkMenuItem *menuitem,                              gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window );    appSettings.sortType = GTK_SORT_DESCENDING;    if ( file_browser )        ptk_file_browser_set_sort_type( PTK_FILE_BROWSER( file_browser ), appSettings.sortType );}voidon_view_as_icon_activate ( GtkMenuItem *menuitem,                           gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    PtkFileBrowser* file_browser;    GtkCheckMenuItem* check_menu = GTK_CHECK_MENU_ITEM( menuitem );    if ( ! check_menu->active )        return ;    file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );    appSettings.viewMode = FBVM_ICON_VIEW;    if ( file_browser && GTK_CHECK_MENU_ITEM( menuitem ) ->active )        ptk_file_browser_view_as_icons( file_browser );}voidon_view_as_list_activate ( GtkMenuItem *menuitem,                           gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    PtkFileBrowser* file_browser;    GtkCheckMenuItem* check_menu = GTK_CHECK_MENU_ITEM( menuitem );    if ( ! check_menu->active )        return ;    file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );    appSettings.viewMode = FBVM_LIST_VIEW;    if ( file_browser )        ptk_file_browser_view_as_list( file_browser );}voidon_side_pane_toggled ( GtkToggleToolButton *toggletoolbutton,                       gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    gtk_check_menu_item_set_active( main_window->open_side_pane_menu,                                    !appSettings.showSidePane );}void on_file_browser_open_item( PtkFileBrowser* file_browser,                                const char* path, PtkOpenAction action,                                FMMainWindow* main_window ){    if ( G_LIKELY( path ) )    {        switch ( action )        {        case PTK_OPEN_DIR:            ptk_file_browser_chdir( file_browser, path, TRUE );            break;        case PTK_OPEN_NEW_TAB:            file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );            fm_main_window_add_new_tab( main_window, path,                                        file_browser->show_side_pane,                                        file_browser->side_pane_mode );            break;        case PTK_OPEN_NEW_WINDOW:            file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );            fm_main_window_add_new_window( main_window, path,                                           file_browser->show_side_pane,                                           file_browser->side_pane_mode );            break;        case PTK_OPEN_TERMINAL:            fm_main_window_open_terminal( GTK_WINDOW(main_window), path );            break;        case PTK_OPEN_FILE:            fm_main_window_start_busy_task( main_window );            g_timeout_add( 1000, ( GSourceFunc ) fm_main_window_stop_busy_task, main_window );            break;        }    }}/* FIXME: Dirty hack for fm-desktop.c. *        This should be fixed someday. */void fm_main_window_open_terminal( GtkWindow* parent,                                   const char* path ){    char** argv = NULL;    int argc = 0;    if ( !appSettings.terminal )    {        ptk_show_error( parent,                        _( "Terminal program has not been set" ) );        fm_main_window_preference( (FMMainWindow*)parent );    }    if ( appSettings.terminal )    {#if 0        /* FIXME: This should be support in the future once                  vfs_app_desktop_open_files can accept working dir.                  This requires API change, and shouldn't be added now.        */        VFSAppDesktop* app = vfs_app_deaktop_new( NULL );        app->exec = appSettings.terminal;        vfs_app_desktop_execute( app, NULL );        app->exec = NULL;        vfs_app_desktop_unref( app );#endif        if ( g_shell_parse_argv( appSettings.terminal,             &argc, &argv, NULL ) )        {            vfs_exec_on_screen( gtk_widget_get_screen(parent),                                path, argv, NULL, path,                                VFS_EXEC_DEFAULT_FLAGS, NULL );            g_strfreev( argv );        }    }}void on_open_terminal_activate ( GtkMenuItem *menuitem,                                 gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    PtkFileBrowser* file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );    ptk_file_browser_open_terminal( file_browser );}void on_open_current_folder_as_root ( GtkMenuItem *menuitem,                                      gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    PtkFileBrowser* file_browser;    const char* cwd;    char* argv[ 4 ];    char* su = g_find_program_in_path( "gksu" );    if ( ! su )        su = g_find_program_in_path( "kdesu" );    if ( ! su )    {        ptk_show_error( GTK_WINDOW( main_window ), _( "gksu or kdesu is not found" ) );        return ;    }    file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );    cwd = ptk_file_browser_get_cwd( file_browser );    argv[ 0 ] = su;    argv[ 1 ] = g_get_prgname();    argv[ 2 ] = cwd;    argv[ 3 ] = NULL;    g_spawn_async( NULL, argv, NULL,                   G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,                   NULL, NULL, NULL, NULL );    g_free( su );}void on_file_properties_activate ( GtkMenuItem *menuitem,                                   gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    PtkFileBrowser* file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );    ptk_file_browser_file_properties( file_browser );}void on_bookmark_item_activate ( GtkMenuItem* menu, gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window );    char* path = ( char* ) g_object_get_data( G_OBJECT( menu ), "path" );    if ( !path )        return ;    switch ( appSettings.openBookmarkMethod )    {    case 1:                /* current tab */        ptk_file_browser_chdir( PTK_FILE_BROWSER( file_browser ), path, TRUE );        break;    case 3:                /* new window */        fm_main_window_add_new_window( main_window, path,                                       appSettings.showSidePane,                                       appSettings.sidePaneMode );        break;    case 2:                /* new tab */        fm_main_window_add_new_tab( main_window, path,                                    appSettings.showSidePane,                                    appSettings.sidePaneMode );        break;    }}void on_bookmarks_change( PtkBookmarks* bookmarks, FMMainWindow* main_window ){    GtkWidget * bookmarks_menu = create_bookmarks_menu( main_window );    gtk_menu_item_set_submenu ( GTK_MENU_ITEM ( main_window->bookmarks ),                                bookmarks_menu );}GtkWidget* create_bookmarks_menu_item ( FMMainWindow* main_window,                                        const char* item ){    GtkWidget * folder_image;    GtkWidget* menu_item;    const char* path;    menu_item = gtk_image_menu_item_new_with_label( item );    path = ptk_bookmarks_item_get_path( item );    g_object_set_data( G_OBJECT( menu_item ), "path", path );    folder_image = gtk_image_new_from_icon_name( "gnome-fs-directory",                                                 GTK_ICON_SIZE_MENU );    gtk_image_menu_item_set_image ( GTK_IMAGE_MENU_ITEM ( menu_item ),                                    folder_image );    g_signal_connect( menu_item, "activate",                      G_CALLBACK( on_bookmark_item_activate ), main_window );    return menu_item;}static PtkMenuItemEntry fm_bookmarks_menu[] = {                                   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -