static void action_go_to_computer_callback (GtkAction *action, gpointer user_data) { CajaWindow *window; CajaWindowSlot *slot; GFile *computer; window = CAJA_WINDOW (user_data); slot = caja_window_get_active_slot (window); computer = g_file_new_for_uri (COMPUTER_URI); caja_window_slot_go_to (slot, computer, should_open_in_new_tab ()); g_object_unref (computer); }
static void action_go_to_trash_callback (GtkAction *action, gpointer user_data) { CajaWindow *window; CajaWindowSlot *slot; GFile *trash; window = CAJA_WINDOW (user_data); slot = caja_window_get_active_slot (window); trash = g_file_new_for_uri ("trash:///"); caja_window_slot_go_to (slot, trash, should_open_in_new_tab ()); g_object_unref (trash); }
static void caja_window_slot_inactive (CajaWindowSlot *slot) { CajaWindow *window; CajaWindowPane *pane; g_assert (CAJA_IS_WINDOW_SLOT (slot)); pane = CAJA_WINDOW_PANE (slot->pane); window = CAJA_WINDOW (pane->window); g_assert (g_list_find (pane->slots, slot) != NULL); g_assert (slot == window->details->active_pane->active_slot); EEL_CALL_METHOD (CAJA_WINDOW_SLOT_CLASS, slot, inactive, (slot)); }
static void action_go_to_network_callback (GtkAction *action, gpointer user_data) { CajaWindow *window; CajaWindowSlot *slot; GFile *network; window = CAJA_WINDOW (user_data); slot = caja_window_get_active_slot (window); network = g_file_new_for_uri (NETWORK_URI); caja_window_slot_go_to (slot, network, should_open_in_new_tab ()); g_object_unref (network); }
static void side_panel_image_changed_callback (CajaSidebar *side_panel, gpointer callback_data) { CajaWindow *window; GdkPixbuf *icon; window = CAJA_WINDOW (callback_data); icon = caja_sidebar_get_tab_icon (side_panel); caja_side_pane_set_panel_image (CAJA_NAVIGATION_WINDOW (window)->sidebar, GTK_WIDGET (side_panel), icon); if (icon != NULL) { g_object_unref (icon); } }
void caja_navigation_window_show_search (CajaNavigationWindow *window) { CajaNavigationWindowPane *pane; pane = CAJA_NAVIGATION_WINDOW_PANE (CAJA_WINDOW (window)->details->active_pane); if (!caja_navigation_window_pane_search_bar_showing (pane)) { remember_focus_widget (window); caja_navigation_window_pane_show_location_bar_temporarily (pane); caja_navigation_window_pane_set_bar_mode (pane, CAJA_BAR_SEARCH); pane->temporary_search_bar = TRUE; caja_search_bar_clear (CAJA_SEARCH_BAR (pane->search_bar)); } caja_search_bar_grab_focus (CAJA_SEARCH_BAR (pane->search_bar)); }
static void action_connect_to_server_callback (GtkAction *action, gpointer user_data) { CajaWindow *window = CAJA_WINDOW (user_data); CajaWindowSlot *slot; GtkWidget *dialog; GFile *location; slot = caja_window_get_active_slot (window); location = caja_window_slot_get_location (slot); dialog = caja_connect_server_dialog_new (window, location); if (location) { g_object_unref (location); } gtk_widget_show (dialog); }
static void action_go_to_templates_callback (GtkAction *action, gpointer user_data) { CajaWindow *window; CajaWindowSlot *slot; char *path; GFile *location; window = CAJA_WINDOW (user_data); slot = caja_window_get_active_slot (window); path = caja_get_templates_directory (); location = g_file_new_for_path (path); g_free (path); caja_window_slot_go_to (slot, location, should_open_in_new_tab ()); g_object_unref (location); }
static void action_show_hidden_files_callback (GtkAction *action, gpointer callback_data) { CajaWindow *window; CajaWindowShowHiddenFilesMode mode; window = CAJA_WINDOW (callback_data); if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))) { mode = CAJA_WINDOW_SHOW_HIDDEN_FILES_ENABLE; } else { mode = CAJA_WINDOW_SHOW_HIDDEN_FILES_DISABLE; } caja_window_info_set_hidden_files_mode (window, mode); }
/** * caja_navigation_window_get_base_page_index: * @window: Window to get index from * * Returns the index of the base page in the history list. * Base page is not the currently displayed page, but the page * that acts as the base from which the back and forward commands * navigate from. */ gint caja_navigation_window_get_base_page_index (CajaNavigationWindow *window) { CajaNavigationWindowSlot *slot; gint forward_count; slot = CAJA_NAVIGATION_WINDOW_SLOT (CAJA_WINDOW (window)->details->active_pane->active_slot); forward_count = g_list_length (slot->forward_list); /* If forward is empty, the base it at the top of the list */ if (forward_count == 0) { return 0; } /* The forward count indicate the relative postion of the base page * in the history list */ return forward_count; }
/* FIXME remove when gtknotebook's func for this becomes public, bug #.... */ static CajaNotebook * find_notebook_at_pointer (gint abs_x, gint abs_y) { #if GTK_CHECK_VERSION(3, 0, 0) GdkDeviceManager *manager; GdkDevice *pointer; #endif GdkWindow *win_at_pointer, *toplevel_win; gpointer toplevel = NULL; gint x, y; /* FIXME multi-head */ #if GTK_CHECK_VERSION(3, 0, 0) manager = gdk_display_get_device_manager (gdk_display_get_default ()); pointer = gdk_device_manager_get_client_pointer (manager); win_at_pointer = gdk_device_get_window_at_position (pointer, &x, &y); #else win_at_pointer = gdk_window_at_pointer (&x, &y); #endif if (win_at_pointer == NULL) { /* We are outside all windows containing a notebook */ return NULL; } toplevel_win = gdk_window_get_toplevel (win_at_pointer); /* get the GtkWidget which owns the toplevel GdkWindow */ gdk_window_get_user_data (toplevel_win, &toplevel); /* toplevel should be an CajaWindow */ if (toplevel != NULL && CAJA_IS_NAVIGATION_WINDOW (toplevel)) { return CAJA_NOTEBOOK (CAJA_NAVIGATION_WINDOW_PANE (CAJA_WINDOW (toplevel)->details->active_pane)->notebook); } return NULL; }
static void sighup_handler (int sig) { caja_debug_log (TRUE, CAJA_DEBUG_LOG_DOMAIN_USER, "HUP signal received, reloading windows"); GList *list_copy; GList *l; list_copy = g_list_copy (caja_application_get_window_list()); for (l = list_copy; l != NULL; l = l->next) { CajaWindow *window; window = CAJA_WINDOW (l->data); if (CAJA_IS_NAVIGATION_WINDOW (window)) { caja_window_reload (window); } } }
static void show_hidden_files_preference_callback (gpointer callback_data) { CajaWindow *window; GtkAction *action; window = CAJA_WINDOW (callback_data); if (window->details->show_hidden_files_mode == CAJA_WINDOW_SHOW_HIDDEN_FILES_DEFAULT) { action = gtk_action_group_get_action (window->details->main_action_group, CAJA_ACTION_SHOW_HIDDEN_FILES); g_assert (GTK_IS_ACTION (action)); /* update button */ g_signal_handlers_block_by_func (action, action_show_hidden_files_callback, window); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), g_settings_get_boolean (caja_preferences, CAJA_PREFERENCES_SHOW_HIDDEN_FILES)); g_signal_handlers_unblock_by_func (action, action_show_hidden_files_callback, window); /* inform views */ caja_window_info_set_hidden_files_mode (window, CAJA_WINDOW_SHOW_HIDDEN_FILES_DEFAULT); } }
static void action_up_callback (GtkAction *action, gpointer user_data) { caja_window_go_up (CAJA_WINDOW (user_data), FALSE, should_open_in_new_tab ()); }
/** * caja_navigation_window_show: * @widget: a #GtkWidget. * * Call parent and then show/hide window items * base on user prefs. */ static void caja_navigation_window_show (GtkWidget *widget) { CajaNavigationWindow *window; gboolean show_location_bar; gboolean always_use_location_entry; GList *walk; window = CAJA_NAVIGATION_WINDOW (widget); /* Initially show or hide views based on preferences; once the window is displayed * these can be controlled on a per-window basis from View menu items. */ if (g_settings_get_boolean (caja_window_state, CAJA_WINDOW_STATE_START_WITH_TOOLBAR)) { caja_navigation_window_show_toolbar (window); } else { caja_navigation_window_hide_toolbar (window); } show_location_bar = g_settings_get_boolean (caja_window_state, CAJA_WINDOW_STATE_START_WITH_LOCATION_BAR); always_use_location_entry = g_settings_get_boolean (caja_preferences, CAJA_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY); for (walk = CAJA_WINDOW(window)->details->panes; walk; walk = walk->next) { CajaNavigationWindowPane *pane = walk->data; if (show_location_bar) { caja_navigation_window_pane_show_location_bar (pane, FALSE); } else { caja_navigation_window_pane_hide_location_bar (pane, FALSE); } if (always_use_location_entry) { caja_navigation_window_pane_set_bar_mode (pane, CAJA_BAR_NAVIGATION); } else { caja_navigation_window_pane_set_bar_mode (pane, CAJA_BAR_PATH); } } if (g_settings_get_boolean (caja_window_state, CAJA_WINDOW_STATE_START_WITH_SIDEBAR)) { caja_navigation_window_show_sidebar (window); } else { caja_navigation_window_hide_sidebar (window); } if (g_settings_get_boolean (caja_window_state, CAJA_WINDOW_STATE_START_WITH_STATUS_BAR)) { caja_navigation_window_show_status_bar (window); } else { caja_navigation_window_hide_status_bar (window); } GTK_WIDGET_CLASS (parent_class)->show (widget); }
static void action_zoom_normal_callback (GtkAction *action, gpointer user_data) { caja_window_zoom_to_default (CAJA_WINDOW (user_data)); }
static void action_zoom_out_callback (GtkAction *action, gpointer user_data) { caja_window_zoom_out (CAJA_WINDOW (user_data)); }
static void action_reload_callback (GtkAction *action, gpointer user_data) { caja_window_reload (CAJA_WINDOW (user_data)); }
static void caja_navigation_window_init (CajaNavigationWindow *window) { GtkUIManager *ui_manager; GtkWidget *toolbar; CajaWindow *win; CajaNavigationWindowPane *pane; GtkWidget *hpaned; GtkWidget *vbox; win = CAJA_WINDOW (window); window->details = G_TYPE_INSTANCE_GET_PRIVATE (window, CAJA_TYPE_NAVIGATION_WINDOW, CajaNavigationWindowDetails); pane = caja_navigation_window_pane_new (win); win->details->panes = g_list_prepend (win->details->panes, pane); window->details->header_size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL); gtk_size_group_set_ignore_hidden (window->details->header_size_group, FALSE); #if GTK_CHECK_VERSION(3, 0, 0) window->details->content_paned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); #else window->details->content_paned = gtk_hpaned_new (); #endif gtk_table_attach (GTK_TABLE (CAJA_WINDOW (window)->details->table), window->details->content_paned, /* X direction */ /* Y direction */ 0, 1, 3, 4, GTK_EXPAND | GTK_FILL | GTK_SHRINK, GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0); gtk_widget_show (window->details->content_paned); vbox = gtk_vbox_new (FALSE, 0); gtk_paned_pack2 (GTK_PANED (window->details->content_paned), vbox, TRUE, FALSE); gtk_widget_show (vbox); #if GTK_CHECK_VERSION(3, 0, 0) hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); #else hpaned = gtk_hpaned_new (); #endif gtk_box_pack_start (GTK_BOX (vbox), hpaned, TRUE, TRUE, 0); gtk_widget_show (hpaned); window->details->split_view_hpane = hpaned; gtk_box_pack_start (GTK_BOX (vbox), win->details->statusbar, FALSE, FALSE, 0); gtk_widget_show (win->details->statusbar); caja_navigation_window_pane_setup (pane); gtk_paned_pack1 (GTK_PANED(hpaned), pane->widget, TRUE, FALSE); gtk_widget_show (pane->widget); /* this has to be done after the location bar has been set up, * but before menu stuff is being called */ caja_window_set_active_pane (win, CAJA_WINDOW_PANE (pane)); caja_navigation_window_initialize_actions (window); caja_navigation_window_initialize_menus (window); ui_manager = caja_window_get_ui_manager (CAJA_WINDOW (window)); toolbar = gtk_ui_manager_get_widget (ui_manager, "/Toolbar"); #if GTK_CHECK_VERSION(3, 0, 0) gtk_style_context_add_class (gtk_widget_get_style_context (toolbar), GTK_STYLE_CLASS_PRIMARY_TOOLBAR); #endif window->details->toolbar = toolbar; gtk_table_attach (GTK_TABLE (CAJA_WINDOW (window)->details->table), toolbar, /* X direction */ /* Y direction */ 0, 1, 1, 2, GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0, 0); gtk_widget_show (toolbar); caja_navigation_window_initialize_toolbars (window); /* Set initial sensitivity of some buttons & menu items * now that they're all created. */ caja_navigation_window_allow_back (window, FALSE); caja_navigation_window_allow_forward (window, FALSE); g_signal_connect_swapped (caja_preferences, "changed::" CAJA_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY, G_CALLBACK(always_use_location_entry_changed), window); g_signal_connect_swapped (caja_preferences, "changed::" CAJA_PREFERENCES_ALWAYS_USE_BROWSER, G_CALLBACK(always_use_browser_changed), window); }
static void action_caja_manual_callback (GtkAction *action, gpointer user_data) { CajaWindow *window; GError *error; GtkWidget *dialog; error = NULL; window = CAJA_WINDOW (user_data); if (CAJA_IS_DESKTOP_WINDOW (window)) { #if GTK_CHECK_VERSION (3, 0, 0) GdkScreen *screen; GdkAppLaunchContext *launch_context; GAppInfo *app_info = NULL; app_info = g_app_info_create_from_commandline ("mate-help", NULL, G_APP_INFO_CREATE_NONE, &error); if (error == NULL) { screen = gtk_window_get_screen(GTK_WINDOW(window)); launch_context = gdk_app_launch_context_new (); gdk_app_launch_context_set_screen (launch_context, screen); g_app_info_launch (app_info, NULL, G_APP_LAUNCH_CONTEXT (launch_context), &error); g_object_unref (launch_context); } if (app_info != NULL) g_object_unref (app_info); #else #if GTK_CHECK_VERSION (2, 24, 0) gdk_spawn_command_line_on_screen(gtk_window_get_screen(GTK_WINDOW(window)), "mate-help", &error); #else g_spawn_command_line_async("mate-help", &error); #endif #endif } else { gtk_show_uri (gtk_window_get_screen (GTK_WINDOW (window)), "help:mate-user-guide/goscaja-1", gtk_get_current_event_time (), &error); } if (error) { dialog = gtk_message_dialog_new (GTK_WINDOW (window), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("There was an error displaying help: \n%s"), error->message); g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (gtk_widget_destroy), NULL); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_widget_show (dialog); g_error_free (error); } }