📄 main-window.c
字号:
{ 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 + -