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

📄 main-window.c

📁 台湾人开发的Linux下的文件管理器
💻 C
📖 第 1 页 / 共 5 页
字号:
                                 gboolean open_side_pane,                                 PtkFileBrowserSidePaneMode side_pane_mode ){    GtkWidget * tab_label;    gint idx;    GtkNotebook* notebook = GTK_NOTEBOOK( main_window->notebook );    PtkFileBrowser* file_browser = PTK_FILE_BROWSER( ptk_file_browser_new ( GTK_WIDGET( main_window ),                                                                            appSettings.viewMode ) );    gtk_paned_set_position ( GTK_PANED ( file_browser ), main_window->splitter_pos );    ptk_file_browser_show_hidden_files( file_browser,                                        appSettings.showHiddenFiles );    ptk_file_browser_show_thumbnails( file_browser,                                      appSettings.showThumbnail ? appSettings.maxThumbSize : 0 );    if ( open_side_pane )    {        ptk_file_browser_show_side_pane( file_browser, side_pane_mode );    }    else    {        ptk_file_browser_hide_side_pane( file_browser );    }    ptk_file_browser_set_sort_order( file_browser, appSettings.sortOrder );    ptk_file_browser_set_sort_type( file_browser, appSettings.sortType );    gtk_widget_show( GTK_WIDGET( file_browser ) );    g_signal_connect( file_browser, "before-chdir",                      G_CALLBACK( on_file_browser_before_chdir ), main_window );    g_signal_connect( file_browser, "after-chdir",                      G_CALLBACK( on_file_browser_after_chdir ), main_window );    g_signal_connect( file_browser, "open-item",                      G_CALLBACK( on_file_browser_open_item ), main_window );    g_signal_connect( file_browser, "content-change",                      G_CALLBACK( on_file_browser_content_change ), main_window );    g_signal_connect( file_browser, "sel-change",                      G_CALLBACK( on_file_browser_sel_change ), main_window );    g_signal_connect( file_browser, "pane-mode-change",                      G_CALLBACK( on_file_browser_pane_mode_change ), main_window );    g_signal_connect( file_browser, "notify::position",                      G_CALLBACK( on_file_browser_splitter_pos_change ), main_window );    tab_label = fm_main_window_create_tab_label( main_window, file_browser );    idx = gtk_notebook_append_page( notebook, GTK_WIDGET( file_browser ), tab_label );    gtk_notebook_set_current_page ( notebook, idx );    if ( gtk_notebook_get_n_pages ( notebook ) > 1 )        gtk_notebook_set_show_tabs( notebook, TRUE );    else        gtk_notebook_set_show_tabs( notebook, FALSE );    ptk_file_browser_chdir( file_browser, folder_path, TRUE );    gtk_widget_grab_focus( GTK_WIDGET( file_browser->folder_view ) );}GtkWidget* fm_main_window_new(){    return ( GtkWidget* ) g_object_new ( FM_TYPE_MAIN_WINDOW, NULL );}GtkWidget* fm_main_window_get_current_file_browser ( FMMainWindow* main_window ){    GtkNotebook * notebook = main_window->notebook;    gint idx = gtk_notebook_get_current_page( notebook );    return gtk_notebook_get_nth_page( notebook, idx );}void on_back_activate( GtkToolButton *toolbutton, FMMainWindow *main_window ){    PtkFileBrowser * file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );    if ( file_browser && ptk_file_browser_can_back( file_browser ) )        ptk_file_browser_go_back( file_browser );}void on_forward_activate( GtkToolButton *toolbutton, FMMainWindow *main_window ){    PtkFileBrowser * file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );    if ( file_browser && ptk_file_browser_can_forward( file_browser ) )        ptk_file_browser_go_forward( file_browser );}void on_up_activate( GtkToolButton *toolbutton, FMMainWindow *main_window ){    char * parent_dir;    PtkFileBrowser* file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );    parent_dir = g_path_get_dirname( ptk_file_browser_get_cwd( file_browser ) );    ptk_file_browser_chdir( file_browser, parent_dir, TRUE );    g_free( parent_dir );}void on_home_activate( GtkToolButton *toolbutton, FMMainWindow *main_window ){    GtkWidget * file_browser = fm_main_window_get_current_file_browser( main_window );    ptk_file_browser_chdir( PTK_FILE_BROWSER( file_browser ), g_get_home_dir(), TRUE );}void on_address_bar_activate ( GtkWidget *entry,                               gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    gchar *dir_path, *final_path;    PtkFileBrowser* file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) );    /* Convert to on-disk encoding */    dir_path = g_filename_from_utf8( gtk_entry_get_text( GTK_ENTRY( entry ) ), -1,                                     NULL, NULL, NULL );    final_path = vfs_file_resolve_path( ptk_file_browser_get_cwd(file_browser), dir_path );    g_free( dir_path );    ptk_file_browser_chdir( file_browser, final_path, TRUE );    g_free( final_path );    gtk_widget_grab_focus( GTK_WIDGET( file_browser->folder_view ) );}#if 0 /* This is not needed by a file manager *//* Patched by <cantona@cantona.net> */void on_fullscreen_activate ( GtkMenuItem *menuitem,                              gpointer user_data ){    GtkWindow * window;    int is_fullscreen;    window = GTK_WINDOW( user_data );    is_fullscreen = gtk_check_menu_item_get_active( GTK_CHECK_MENU_ITEM( menuitem ) );    if ( is_fullscreen )    {        gtk_window_fullscreen( GTK_WINDOW( window ) );    }    else    {        gtk_window_unfullscreen( GTK_WINDOW( window ) );    }}#endifvoid on_refresh_activate ( GtkToolButton *toolbutton,                           gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window );    ptk_file_browser_refresh( PTK_FILE_BROWSER( file_browser ) );}voidon_quit_activate ( GtkMenuItem *menuitem,                   gpointer user_data ){    fm_main_window_close( GTK_WIDGET( user_data ) );}voidon_new_folder_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 );    ptk_file_browser_create_new_file( PTK_FILE_BROWSER( file_browser ), TRUE );}voidon_new_text_file_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 );    ptk_file_browser_create_new_file( PTK_FILE_BROWSER( file_browser ), FALSE );}voidon_preference_activate ( GtkMenuItem *menuitem,                         gpointer user_data ){    FMMainWindow * main_window = FM_MAIN_WINDOW( user_data );    fm_main_window_preference( main_window );}void fm_main_window_preference( FMMainWindow* main_window ){    int max_thumb = appSettings.maxThumbSize;    gboolean show_thumbnails = appSettings.showThumbnail;    int big_icon = appSettings.bigIconSize;    int small_icon = appSettings.smallIconSize;    gboolean show_desktop = appSettings.showDesktop;    gboolean show_wallaper = appSettings.showWallpaper;    GdkColor bg1 = appSettings.desktopBg1;    GdkColor bg2 = appSettings.desktopBg2;    GdkColor text = appSettings.desktopText;    char* wallpaper;    int i, n;    GList* l;    PtkFileBrowser* file_browser;    if ( appSettings.wallpaper )        wallpaper = g_strdup( appSettings.wallpaper );    else        wallpaper = g_strdup( "" );    show_preference_dialog( GTK_WINDOW( main_window ) );    if ( show_thumbnails != appSettings.showThumbnail            || max_thumb != appSettings.maxThumbSize )    {        for ( l = all_windows; l; l = l->next )        {            main_window = FM_MAIN_WINDOW( l->data );            n = gtk_notebook_get_n_pages( main_window->notebook );            for ( i = 0; i < n; ++i )            {                file_browser = PTK_FILE_BROWSER( gtk_notebook_get_nth_page(                                                     main_window->notebook, i ) );                ptk_file_browser_show_thumbnails( file_browser,                                                  appSettings.showThumbnail ? appSettings.maxThumbSize : 0 );            }        }        if ( appSettings.showDesktop )            fm_desktop_update_thumbnails();    }    if ( big_icon != appSettings.bigIconSize            || small_icon != appSettings.smallIconSize )    {        vfs_mime_type_set_icon_size( appSettings.bigIconSize, appSettings.smallIconSize );        vfs_file_info_set_thumbnail_size( appSettings.bigIconSize, appSettings.smallIconSize );        for ( l = all_windows; l; l = l->next )        {            main_window = FM_MAIN_WINDOW( l->data );            n = gtk_notebook_get_n_pages( main_window->notebook );            for ( i = 0; i < n; ++i )            {                file_browser = PTK_FILE_BROWSER( gtk_notebook_get_nth_page(                                                     main_window->notebook, i ) );                ptk_file_browser_update_display( file_browser );            }        }        if ( appSettings.showDesktop )            fm_desktop_update_view();    }    if ( show_desktop != appSettings.showDesktop )    {        if ( appSettings.showDesktop )            fm_desktop_init();        else            fm_desktop_cleanup();    }    else if ( appSettings.showDesktop )    {        if ( show_wallaper != appSettings.showWallpaper ||                ( appSettings.wallpaper &&                  strcmp( wallpaper, appSettings.wallpaper ) ) )        {            fm_desktop_update_wallpaper();        }        if ( !gdk_color_equal( &bg1, &appSettings.desktopBg1 ) ||                !gdk_color_equal( &bg2, &appSettings.desktopBg2 ) ||                !gdk_color_equal( &text, &appSettings.desktopText ) )        {            fm_desktop_update_colors();        }    }    g_free( wallpaper );    save_settings();}voidon_file_assoc_activate ( GtkMenuItem *menuitem,                         gpointer user_data ){    GtkWindow * main_window = GTK_WINDOW( user_data );    edit_file_associations( main_window );}voidon_about_activate ( GtkMenuItem *menuitem,                    gpointer user_data ){    GtkWidget * aboutDialog;    const gchar *authors[] =        {            "洪任諭 Hong Jen Yee <pcman.tw@gmail.com>\n",            _("Source code taken from other projects:"),            _(" * xdgmime: Red Hat, Inc & Jonathan Blandford"),            _(" * libmd5-rfc: Aladdin Enterprises"),            _(" * Working area detection: Gary Kramlich"),            _(" * ExoIconView: os-cillation e.K, Anders Carlsson, & Benedikt Meurer"),            _(" * Text and icon renderer uese code from Jonathan Blandford"),            _(" * Desktop icons use code from Brian Tarricone"),            NULL        };    /* TRANSLATORS: Replace this string with your names, one name per line. */    gchar *translators = _( "translator-credits" );    aboutDialog = gtk_about_dialog_new ();    gtk_container_set_border_width ( GTK_CONTAINER ( aboutDialog ), 2 );    gtk_about_dialog_set_version ( GTK_ABOUT_DIALOG ( aboutDialog ), VERSION );    gtk_about_dialog_set_name ( GTK_ABOUT_DIALOG ( aboutDialog ), _( "PCMan File Manager" ) );    gtk_about_dialog_set_copyright ( GTK_ABOUT_DIALOG ( aboutDialog ), _( "Copyright (C) 2005 - 2006" ) );    gtk_about_dialog_set_comments ( GTK_ABOUT_DIALOG ( aboutDialog ), _( "Lightweight file manager\n\nDeveloped by Hon Jen Yee (PCMan)" ) );    gtk_about_dialog_set_license ( GTK_ABOUT_DIALOG ( aboutDialog ), "PCMan File Manager\n\nCopyright (C) 2005 - 2006 Hong Jen Yee (PCMan)\n\nThis program is free software; you can redistribute it and/or\nmodify it under the terms of the GNU General Public License\nas published by the Free Software Foundation; either version 2\nof the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA." );    gtk_about_dialog_set_website ( GTK_ABOUT_DIALOG ( aboutDialog ), "http://pcmanfm.sourceforge.net/" );    gtk_about_dialog_set_authors ( GTK_ABOUT_DIALOG ( aboutDialog ), authors );    gtk_about_dialog_set_translator_credits ( GTK_ABOUT_DIALOG ( aboutDialog ), translators );    gtk_window_set_transient_for( GTK_WINDOW( aboutDialog ), GTK_WINDOW( user_data ) );    gtk_dialog_run( GTK_DIALOG( aboutDialog ) );    gtk_widget_destroy( aboutDialog );}gbooleanon_back_btn_popup_menu ( GtkWidget *widget,                         gpointer user_data ){    /*    GtkWidget* file_browser = fm_main_window_get_current_file_browser( widget );

⌨️ 快捷键说明

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