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

📄 main-window.c

📁 台湾人开发的Linux下的文件管理器
💻 C
📖 第 1 页 / 共 5 页
字号:
#ifdef HAVE_CONFIG_H#  include <config.h>#endif#include <gtk/gtk.h>#include <glib.h>#include <glib/gstdio.h>#include <gdk/gdkkeysyms.h>#include <string.h>#include <sys/types.h>#include <fcntl.h>#include "ptk-file-browser.h"#include "main-window.h"#include "ptk-utils.h"#include "glade-support.h"#include "pref-dialog.h"#include "ptk-bookmarks.h"#include "edit-bookmarks.h"#include "file-properties.h"#include "file-assoc-dlg.h"#include "ptk-path-entry.h"#include "settings.h"#include "fm-desktop.h"#ifdef HAVE_STATVFS/* FIXME: statvfs support should be moved to src/vfs */#include <sys/statvfs.h>#endif#include "vfs-app-desktop.h"#include "vfs-execute.h"static void fm_main_window_class_init( FMMainWindowClass* klass );static void fm_main_window_init( FMMainWindow* main_window );static void fm_main_window_finalize( GObject *obj );static void fm_main_window_get_property ( GObject *obj,                                          guint prop_id,                                          GValue *value,                                          GParamSpec *pspec );static void fm_main_window_set_property ( GObject *obj,                                          guint prop_id,                                          const GValue *value,                                          GParamSpec *pspec );static GtkWidget* create_bookmarks_menu ( FMMainWindow* main_window );static GtkWidget* create_bookmarks_menu_item ( FMMainWindow* main_window,                                               const char* item );static gboolean fm_main_window_delete_event ( GtkWidget *widget,                                              GdkEvent *event );static void fm_main_window_destroy ( GtkObject *object );static gboolean fm_main_window_key_press_event ( GtkWidget *widget,                                                 GdkEventKey *event );/* Signal handlers */static void on_back_activate ( GtkToolButton *toolbutton,                               FMMainWindow *main_window );static void on_forward_activate ( GtkToolButton *toolbutton,                                  FMMainWindow *main_window );static void on_up_activate ( GtkToolButton *toolbutton,                             FMMainWindow *main_window );static void on_home_activate( GtkToolButton *toolbutton,                              FMMainWindow *main_window );static void on_refresh_activate ( GtkToolButton *toolbutton,                                  gpointer user_data );static void on_quit_activate ( GtkMenuItem *menuitem,                               gpointer user_data );static void on_new_folder_activate ( GtkMenuItem *menuitem,                                     gpointer user_data );static void on_new_text_file_activate ( GtkMenuItem *menuitem,                                        gpointer user_data );static void on_preference_activate ( GtkMenuItem *menuitem,                                     gpointer user_data );static void on_file_assoc_activate ( GtkMenuItem *menuitem,                                     gpointer user_data );static void on_about_activate ( GtkMenuItem *menuitem,                                gpointer user_data );static gboolean on_back_btn_popup_menu ( GtkWidget *widget,                                         gpointer user_data );static gboolean on_forward_btn_popup_menu ( GtkWidget *widget,                                            gpointer user_data );static void on_address_bar_activate ( GtkWidget *entry,                                      gpointer user_data );static void on_new_window_activate ( GtkMenuItem *menuitem,                                     gpointer user_data );static void on_new_tab_activate ( GtkMenuItem *menuitem,                                  gpointer user_data );static void on_folder_notebook_switch_pape ( GtkNotebook *notebook,                                             GtkNotebookPage *page,                                             guint page_num,                                             gpointer user_data );static void on_cut_activate ( GtkMenuItem *menuitem,                              gpointer user_data );static void on_copy_activate ( GtkMenuItem *menuitem,                               gpointer user_data );static void on_paste_activate ( GtkMenuItem *menuitem,                                gpointer user_data );static void on_delete_activate ( GtkMenuItem *menuitem,                                 gpointer user_data );static void on_select_all_activate ( GtkMenuItem *menuitem,                                     gpointer user_data );static void on_add_to_bookmark_activate ( GtkMenuItem *menuitem,                                          gpointer user_data );static void on_invert_selection_activate ( GtkMenuItem *menuitem,                                           gpointer user_data );static void on_close_tab_activate ( GtkMenuItem *menuitem,                                    gpointer user_data );static void on_rename_activate ( GtkMenuItem *menuitem,                                 gpointer user_data );#if 0static void on_fullscreen_activate ( GtkMenuItem *menuitem,                                     gpointer user_data );#endifstatic void on_show_hidden_activate ( GtkMenuItem *menuitem,                                      gpointer user_data );static void on_sort_by_name_activate ( GtkMenuItem *menuitem,                                       gpointer user_data );static void on_sort_by_size_activate ( GtkMenuItem *menuitem,                                       gpointer user_data );static void on_sort_by_mtime_activate ( GtkMenuItem *menuitem,                                        gpointer user_data );static void on_sort_by_type_activate ( GtkMenuItem *menuitem,                                       gpointer user_data );static void on_sort_by_perm_activate ( GtkMenuItem *menuitem,                                       gpointer user_data );static void on_sort_by_owner_activate ( GtkMenuItem *menuitem,                                        gpointer user_data );static void on_sort_ascending_activate ( GtkMenuItem *menuitem,                                         gpointer user_data );static void on_sort_descending_activate ( GtkMenuItem *menuitem,                                          gpointer user_data );static void on_view_as_icon_activate ( GtkMenuItem *menuitem,                                       gpointer user_data );static void on_view_as_list_activate ( GtkMenuItem *menuitem,                                       gpointer user_data );static void on_open_side_pane_activate ( GtkMenuItem *menuitem,                                         gpointer user_data );static void on_show_dir_tree ( GtkMenuItem *menuitem,                               gpointer user_data );static void on_show_loation_pane ( GtkMenuItem *menuitem,                                   gpointer user_data );static void on_side_pane_toggled ( GtkToggleToolButton *toggletoolbutton,                                   gpointer user_data );static void on_go_btn_clicked ( GtkToolButton *toolbutton,                                gpointer user_data );static void on_open_terminal_activate ( GtkMenuItem *menuitem,                                        gpointer user_data );static void on_open_current_folder_as_root ( GtkMenuItem *menuitem,                                             gpointer user_data );static void on_file_properties_activate ( GtkMenuItem *menuitem,                                          gpointer user_data );static void on_bookmark_item_activate ( GtkMenuItem* menu, gpointer user_data );static void on_file_browser_before_chdir( PtkFileBrowser* file_browser,                                          const char* path, gboolean* cancel,                                          FMMainWindow* main_window );static void on_file_browser_open_item( PtkFileBrowser* file_browser,                                       const char* path, PtkOpenAction action,                                       FMMainWindow* main_window );static void on_file_browser_after_chdir( PtkFileBrowser* file_browser,                                         FMMainWindow* main_window );static void on_file_browser_content_change( PtkFileBrowser* file_browser,                                            FMMainWindow* main_window );static void on_file_browser_sel_change( PtkFileBrowser* file_browser,                                        FMMainWindow* main_window );static void on_file_browser_pane_mode_change( PtkFileBrowser* file_browser,                                              FMMainWindow* main_window );static void on_file_browser_splitter_pos_change( PtkFileBrowser* file_browser,                                                 GParamSpec *param,                                                 FMMainWindow* main_window );static gboolean on_tab_drag_motion ( GtkWidget *widget,                                     GdkDragContext *drag_context,                                     gint x,                                     gint y,                                     guint time,                                     PtkFileBrowser* file_browser );static void on_view_menu_popup( GtkMenuItem* item,                                FMMainWindow* main_window );/* Callback called when the bookmarks change */static void on_bookmarks_change( PtkBookmarks* bookmarks,                                 FMMainWindow* main_window );static gboolean on_main_window_focus( GtkWidget* main_window,                                      GdkEventFocus *event,                                      gpointer user_data );/* Utilities */static void fm_main_window_update_status_bar( FMMainWindow* main_window,                                              PtkFileBrowser* file_browser );static void fm_main_window_update_command_ui( FMMainWindow* main_window,                                              PtkFileBrowser* file_browser );/* Automatically process busy cursor */static void fm_main_window_start_busy_task( FMMainWindow* main_window );static gboolean fm_main_window_stop_busy_task( FMMainWindow* main_window );static GtkWindowClass *parent_class = NULL;static int n_windows = 0;static GList* all_windows = NULL;/*  Drag & Drop/Clipboard targets  */static GtkTargetEntry drag_targets[] = {                                           {"text/uri-list", 0 , 0 }                                       };GType fm_main_window_get_type(){    static GType type = G_TYPE_INVALID;    if ( G_UNLIKELY ( type == G_TYPE_INVALID ) )    {        static const GTypeInfo info =            {                sizeof ( FMMainWindowClass ),                NULL,                NULL,                ( GClassInitFunc ) fm_main_window_class_init,                NULL,                NULL,                sizeof ( FMMainWindow ),                0,                ( GInstanceInitFunc ) fm_main_window_init,                NULL,            };        type = g_type_register_static ( GTK_TYPE_WINDOW, "FMMainWindow", &info, 0 );    }    return type;}void fm_main_window_class_init( FMMainWindowClass* klass ){    GObjectClass * object_class;    GtkWidgetClass *widget_class;    object_class = ( GObjectClass * ) klass;    parent_class = g_type_class_peek_parent ( klass );    object_class->set_property = fm_main_window_set_property;    object_class->get_property = fm_main_window_get_property;    object_class->finalize = fm_main_window_finalize;    widget_class = GTK_WIDGET_CLASS ( klass );    widget_class->delete_event = fm_main_window_delete_event;    widget_class->key_press_event = fm_main_window_key_press_event;}/* Main menu definition */static PtkMenuItemEntry fm_file_create_new_manu[] =    {        PTK_IMG_MENU_ITEM( N_( "_Folder" ), "gtk-directory", on_new_folder_activate, 0, 0 ),        PTK_IMG_MENU_ITEM( N_( "_Text File" ), "gtk-edit", on_new_text_file_activate, 0, 0 ),        PTK_MENU_END    };static PtkMenuItemEntry fm_file_menu[] =    {        PTK_IMG_MENU_ITEM( N_( "New _Window" ), "gtk-add", on_new_window_activate, GDK_N, GDK_CONTROL_MASK ),        PTK_IMG_MENU_ITEM( N_( "New _Tab" ), "gtk-add", on_new_tab_activate, GDK_T, GDK_CONTROL_MASK ),        PTK_IMG_MENU_ITEM( N_( "Close Tab" ), "gtk-close", on_close_tab_activate, GDK_W, GDK_CONTROL_MASK ),        PTK_SEPARATOR_MENU_ITEM,        PTK_POPUP_IMG_MENU( N_( "_Create New" ), "gtk-new", fm_file_create_new_manu ),        PTK_IMG_MENU_ITEM( N_( "File _Properties" ), "gtk-info", on_file_properties_activate, GDK_Return, GDK_MOD1_MASK ),        PTK_SEPARATOR_MENU_ITEM,        PTK_STOCK_MENU_ITEM( "gtk-quit", on_quit_activate ),        PTK_MENU_END    };static PtkMenuItemEntry fm_edit_menu[] =    {        PTK_STOCK_MENU_ITEM( "gtk-cut", on_cut_activate ),        PTK_STOCK_MENU_ITEM( "gtk-copy", on_copy_activate ),        PTK_STOCK_MENU_ITEM( "gtk-paste", on_paste_activate ),        PTK_IMG_MENU_ITEM( N_( "_Delete" ), "gtk-delete", on_delete_activate, GDK_Delete, 0 ),        PTK_IMG_MENU_ITEM( N_( "_Rename" ), "gtk-edit", on_rename_activate, GDK_F2, 0 ),        PTK_SEPARATOR_MENU_ITEM,        PTK_MENU_ITEM( N_( "Select _All" ), on_select_all_activate, GDK_A, GDK_CONTROL_MASK ),        PTK_MENU_ITEM( N_( "_Invert Selection" ), on_invert_selection_activate, GDK_I, GDK_CONTROL_MASK ),        PTK_SEPARATOR_MENU_ITEM,        // PTK_IMG_MENU_ITEM( N_( "_File Associations" ), "gtk-execute", on_file_assoc_activate , 0, 0 ),        PTK_STOCK_MENU_ITEM( "gtk-preferences", on_preference_activate ),        PTK_MENU_END    };static PtkMenuItemEntry fm_go_menu[] =    {        PTK_IMG_MENU_ITEM( N_( "Go _Back" ), "gtk-go-back", on_back_activate, GDK_Left, GDK_MOD1_MASK ),        PTK_IMG_MENU_ITEM( N_( "Go _Forward" ), "gtk-go-forward", on_forward_activate, GDK_Right, GDK_MOD1_MASK ),        PTK_IMG_MENU_ITEM( N_( "Go to _Parent Folder" ), "gtk-go-up", on_up_activate, GDK_Up, GDK_MOD1_MASK ),        PTK_IMG_MENU_ITEM( N_( "Go _Home" ), "gtk-home", on_home_activate, GDK_Home, GDK_MOD1_MASK ),        PTK_MENU_END    };static PtkMenuItemEntry fm_help_menu[] =    {        PTK_STOCK_MENU_ITEM( "gtk-about", on_about_activate ),        PTK_MENU_END    };static PtkMenuItemEntry fm_sort_menu[] =    {        PTK_RADIO_MENU_ITEM( N_( "Sort by _Name" ), on_sort_by_name_activate, 0, 0 ),        PTK_RADIO_MENU_ITEM( N_( "Sort by _Size" ), on_sort_by_size_activate, 0, 0 ),        PTK_RADIO_MENU_ITEM( N_( "Sort by _Modification Time" ), on_sort_by_mtime_activate, 0, 0 ),        PTK_RADIO_MENU_ITEM( N_( "Sort by _Type" ), on_sort_by_type_activate, 0, 0 ),        PTK_RADIO_MENU_ITEM( N_( "Sort by _Permission" ), on_sort_by_perm_activate, 0, 0 ),

⌨️ 快捷键说明

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