static void open_window (NemoMainApplication *application, GFile *location, GdkScreen *screen, const char *geometry) { NemoWindow *window; gchar *uri; gboolean have_geometry; uri = g_file_get_uri (location); DEBUG ("Opening new window at uri %s", uri); window = nemo_main_application_create_window (application, screen); nemo_window_go_to (window, location); have_geometry = geometry != NULL && strcmp(geometry, "") != 0; if (have_geometry && !gtk_widget_get_visible (GTK_WIDGET (window))) { /* never maximize windows opened from shell if a * custom geometry has been requested. */ gtk_window_unmaximize (GTK_WINDOW (window)); eel_gtk_window_set_initial_geometry_from_string (GTK_WINDOW (window), geometry, APPLICATION_WINDOW_MIN_WIDTH, APPLICATION_WINDOW_MIN_HEIGHT, FALSE); } g_free (uri); }
void nemo_desktop_window_update_directory (NemoDesktopWindow *window) { GFile *location; g_assert (NEMO_IS_DESKTOP_WINDOW (window)); window->details->loaded = FALSE; location = g_file_new_for_uri (EEL_DESKTOP_URI); nemo_window_go_to (NEMO_WINDOW (window), location); window->details->loaded = TRUE; g_object_unref (location); }
static void action_show_hide_search_callback (GtkAction *action, gpointer user_data) { NemoWindowPane *pane = user_data; NemoWindow *window = pane->window; if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))) { nemo_window_pane_ensure_search_bar (pane); } else { NemoWindowSlot *slot; GFile *location = NULL; slot = pane->active_slot; nemo_window_pane_hide_search_bar (pane); /* Use the location bar as the return location */ if (slot->query_editor != NULL) { NemoQuery *query; char *uri; query = nemo_query_editor_get_query (slot->query_editor); if (query != NULL) { uri = nemo_query_get_location (query); if (uri != NULL) { location = g_file_new_for_uri (uri); g_free (uri); } g_object_unref (query); } /* Last try: use the home directory as the return location */ if (location == NULL) { location = g_file_new_for_path (g_get_home_dir ()); } nemo_window_go_to (window, location); g_object_unref (location); } } }
static void open_selected_bookmark (gpointer user_data, GdkScreen *screen) { NemoBookmark *selected; NemoWindow *window; GFile *location; selected = get_selected_bookmark (); if (!selected) { return; } location = nemo_bookmark_get_location (selected); if (location == NULL) { return; } window = user_data; nemo_window_go_to (window, location); g_object_unref (location); }
static void drag_data_received_callback (GtkWidget *widget, GdkDragContext *context, int x, int y, GtkSelectionData *data, guint info, guint32 time, gpointer callback_data) { char **names; NemoApplication *application; int name_count; NemoWindow *new_window, *window; GdkScreen *screen; gboolean new_windows_for_extras; char *prompt; char *detail; GFile *location; NemoLocationBar *self = NEMO_LOCATION_BAR (widget); g_assert (data != NULL); g_assert (callback_data == NULL); names = g_uri_list_extract_uris ((const gchar *) gtk_selection_data_get_data (data)); if (names == NULL || *names == NULL) { g_warning ("No D&D URI's"); g_strfreev (names); gtk_drag_finish (context, FALSE, FALSE, time); return; } window = nemo_location_bar_get_window (widget); new_windows_for_extras = FALSE; /* Ask user if they really want to open multiple windows * for multiple dropped URIs. This is likely to have been * a mistake. */ name_count = g_strv_length (names); if (name_count > 1) { prompt = g_strdup_printf (ngettext("Do you want to view %d location?", "Do you want to view %d locations?", name_count), name_count); detail = g_strdup_printf (ngettext("This will open %d separate window.", "This will open %d separate windows.", name_count), name_count); /* eel_run_simple_dialog should really take in pairs * like gtk_dialog_new_with_buttons() does. */ new_windows_for_extras = eel_run_simple_dialog (GTK_WIDGET (window), TRUE, GTK_MESSAGE_QUESTION, prompt, detail, GTK_STOCK_CANCEL, GTK_STOCK_OK, NULL) != 0 /* GNOME_OK */; g_free (prompt); g_free (detail); if (!new_windows_for_extras) { g_strfreev (names); gtk_drag_finish (context, FALSE, FALSE, time); return; } } nemo_location_bar_set_location (self, names[0]); emit_location_changed (self); if (new_windows_for_extras) { int i; application = nemo_application_get_singleton (); screen = gtk_window_get_screen (GTK_WINDOW (window)); for (i = 1; names[i] != NULL; ++i) { new_window = nemo_application_create_window (application, screen); location = g_file_new_for_uri (names[i]); nemo_window_go_to (new_window, location); g_object_unref (location); } } g_strfreev (names); gtk_drag_finish (context, TRUE, FALSE, time); }