📄 main-window.c
字号:
*/ return FALSE;}gbooleanon_forward_btn_popup_menu ( GtkWidget *widget, gpointer user_data ){ /* GtkWidget* file_browser = fm_main_window_get_current_file_browser( widget ); */ return FALSE;}void fm_main_window_add_new_window( FMMainWindow* main_window, const char* path, gboolean open_side_pane, PtkFileBrowserSidePaneMode side_pane_mode ){ GtkWidget * new_win = fm_main_window_new(); FM_MAIN_WINDOW( new_win ) ->splitter_pos = main_window->splitter_pos; gtk_window_set_default_size( GTK_WINDOW( new_win ), GTK_WIDGET( main_window ) ->allocation.width, GTK_WIDGET( main_window ) ->allocation.height ); gtk_widget_show( new_win ); fm_main_window_add_new_tab( FM_MAIN_WINDOW( new_win ), path, open_side_pane, side_pane_mode );}voidon_new_window_activate ( GtkMenuItem *menuitem, gpointer user_data ){ /* * FIXME: There sould be an option to let the users choose wether * home dir or current dir should be opened in new windows and new tabs. */ PtkFileBrowser * file_browser; const char* path; FMMainWindow* main_window = FM_MAIN_WINDOW( user_data ); file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) ); path = file_browser ? ptk_file_browser_get_cwd( file_browser ) : g_get_home_dir(); fm_main_window_add_new_window( main_window, path, appSettings.showSidePane, file_browser->side_pane_mode );}voidon_new_tab_activate ( GtkMenuItem *menuitem, gpointer user_data ){ /* * FIXME: There sould be an option to let the users choose wether * home dir or current dir should be opened in new windows and new tabs. */ PtkFileBrowser * file_browser; const char* path; gboolean show_side_pane; PtkFileBrowserSidePaneMode side_pane_mode; FMMainWindow* main_window = FM_MAIN_WINDOW( user_data ); file_browser = PTK_FILE_BROWSER( fm_main_window_get_current_file_browser( main_window ) ); if ( file_browser ) { path = ptk_file_browser_get_cwd( file_browser ); show_side_pane = ptk_file_browser_is_side_pane_visible( file_browser ); side_pane_mode = ptk_file_browser_get_side_pane_mode( file_browser ); } else { path = g_get_home_dir(); show_side_pane = appSettings.showSidePane; side_pane_mode = appSettings.sidePaneMode; } fm_main_window_add_new_tab( main_window, path, show_side_pane, side_pane_mode );}static gboolean delayed_focus( GtkWidget* widget ){ gdk_threads_enter(); gtk_widget_grab_focus( widget ); gdk_threads_leave(); return FALSE;}voidon_folder_notebook_switch_pape ( GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data ){ FMMainWindow * main_window = FM_MAIN_WINDOW( user_data ); PtkFileBrowser* file_browser; const char* path; char* disp_path; file_browser = ( PtkFileBrowser* ) gtk_notebook_get_nth_page( notebook, page_num ); fm_main_window_update_command_ui( main_window, file_browser ); fm_main_window_update_status_bar( main_window, file_browser ); gtk_paned_set_position ( GTK_PANED ( file_browser ), main_window->splitter_pos ); if( file_browser->dir && (disp_path = file_browser->dir->disp_path) ) { gtk_entry_set_text( main_window->address_bar, disp_path ); gtk_window_set_title( GTK_WINDOW( main_window ), disp_path ); } else { path = ptk_file_browser_get_cwd( file_browser ); if ( path ) { disp_path = g_filename_display_name( path ); gtk_entry_set_text( main_window->address_bar, disp_path ); gtk_window_set_title( GTK_WINDOW( main_window ), disp_path ); g_free( disp_path ); } } g_idle_add( ( GSourceFunc ) delayed_focus, file_browser->folder_view );}voidon_cut_activate ( GtkMenuItem *menuitem, gpointer user_data ){ FMMainWindow * main_window = FM_MAIN_WINDOW( user_data ); GtkWidget* file_browser; file_browser = fm_main_window_get_current_file_browser( main_window ); ptk_file_browser_cut( PTK_FILE_BROWSER( file_browser ) );}voidon_copy_activate ( GtkMenuItem *menuitem, gpointer user_data ){ FMMainWindow * main_window = FM_MAIN_WINDOW( user_data ); GtkWidget* file_browser; file_browser = fm_main_window_get_current_file_browser( main_window ); ptk_file_browser_copy( PTK_FILE_BROWSER( file_browser ) );}voidon_paste_activate ( GtkMenuItem *menuitem, gpointer user_data ){ FMMainWindow * main_window = FM_MAIN_WINDOW( user_data ); GtkWidget* file_browser; file_browser = fm_main_window_get_current_file_browser( main_window ); ptk_file_browser_paste( PTK_FILE_BROWSER( file_browser ) );}voidon_delete_activate ( GtkMenuItem *menuitem, gpointer user_data ){ FMMainWindow * main_window = FM_MAIN_WINDOW( user_data ); GtkWidget* file_browser; file_browser = fm_main_window_get_current_file_browser( main_window ); ptk_file_browser_delete( PTK_FILE_BROWSER( file_browser ) );}voidon_select_all_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_select_all( PTK_FILE_BROWSER( file_browser ) );}voidon_edit_bookmark_activate ( GtkMenuItem *menuitem, gpointer user_data ){ FMMainWindow * main_window = FM_MAIN_WINDOW( user_data ); GtkWidget* bookmark; GtkWidget* bookmark_menu; edit_bookmarks( GTK_WINDOW( main_window ) );}int bookmark_item_comp( const char* item, const char* path ){ return strcmp( ptk_bookmarks_item_get_path( item ), path );}voidon_add_to_bookmark_activate ( GtkMenuItem *menuitem, gpointer user_data ){ GList * l; FMMainWindow* main_window = FM_MAIN_WINDOW( user_data ); GtkWidget* bookmark; GtkWidget* bookmark_menu; GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window ); const char* path = ptk_file_browser_get_cwd( PTK_FILE_BROWSER( file_browser ) ); gchar* name; if ( ! g_list_find_custom( appSettings.bookmarks->list, path, ( GCompareFunc ) bookmark_item_comp ) ) { name = g_path_get_basename( path ); ptk_bookmarks_append( name, path ); g_free( name ); }}voidon_invert_selection_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_invert_selection( PTK_FILE_BROWSER( file_browser ) );}voidon_close_tab_activate ( GtkMenuItem *menuitem, gpointer user_data ){ FMMainWindow * main_window = FM_MAIN_WINDOW( user_data ); GtkNotebook* notebook = main_window->notebook; GtkWidget* file_browser = fm_main_window_get_current_file_browser( main_window ); gint idx; if ( gtk_notebook_get_n_pages ( notebook ) <= 1 ) { fm_main_window_close( GTK_WIDGET( main_window ) ); return ; } idx = gtk_notebook_page_num ( GTK_NOTEBOOK( notebook ), file_browser ); gtk_notebook_remove_page( notebook, idx ); if ( gtk_notebook_get_n_pages ( notebook ) == 1 ) gtk_notebook_set_show_tabs( notebook, FALSE );}voidon_rename_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_rename_selected_file( PTK_FILE_BROWSER( file_browser ) );}voidon_open_side_pane_activate ( GtkMenuItem *menuitem, gpointer user_data ){ FMMainWindow * main_window = FM_MAIN_WINDOW( user_data ); GtkCheckMenuItem* check = GTK_CHECK_MENU_ITEM( menuitem ); PtkFileBrowser* file_browser; GtkNotebook* nb = main_window->notebook; GtkToggleToolButton* btn = main_window->open_side_pane_btn; int i; int n = gtk_notebook_get_n_pages( nb ); appSettings.showSidePane = gtk_check_menu_item_get_active( check ); g_signal_handlers_block_matched ( btn, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, on_side_pane_toggled, NULL ); gtk_toggle_tool_button_set_active( btn, appSettings.showSidePane ); g_signal_handlers_unblock_matched ( btn, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, on_side_pane_toggled, NULL ); for ( i = 0; i < n; ++i ) { file_browser = PTK_FILE_BROWSER( gtk_notebook_get_nth_page( nb, i ) ); if ( appSettings.showSidePane ) { ptk_file_browser_show_side_pane( file_browser, file_browser->side_pane_mode ); } else { ptk_file_browser_hide_side_pane( file_browser ); } }}void on_show_dir_tree ( GtkMenuItem *menuitem, gpointer user_data ){ FMMainWindow * main_window = FM_MAIN_WINDOW( user_data ); PtkFileBrowser* file_browser; int i, n; if ( ! GTK_CHECK_MENU_ITEM( menuitem ) ->active ) return ; appSettings.sidePaneMode = FB_SIDE_PANE_DIR_TREE; 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_set_side_pane_mode( file_browser, FB_SIDE_PANE_DIR_TREE ); }}void on_show_loation_pane ( GtkMenuItem *menuitem, gpointer user_data ){ FMMainWindow * main_window = FM_MAIN_WINDOW( user_data ); PtkFileBrowser* file_browser; int i, n; if ( ! GTK_CHECK_MENU_ITEM( menuitem ) ->active ) return ; appSettings.sidePaneMode = FB_SIDE_PANE_BOOKMARKS; n = gtk_notebook_get_n_pages( main_window->notebook ); for ( i = 0; i < n; ++i )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -