static void open_window (NemoApplication *application, GFile *location, GdkScreen *screen, const char *geometry) { NemoWindow *window; gchar *uri; uri = g_file_get_uri (location); DEBUG ("Opening new window at uri %s", uri); window = nemo_application_create_window (application, screen); nemo_window_go_to (window, location); if (geometry != NULL && !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); }
static GtkNotebook * notebook_create_window_cb (GtkNotebook *notebook, GtkWidget *page, gint x, gint y, gpointer user_data) { NemoApplication *app; NemoWindow *new_window; NemoWindowPane *new_pane; NemoWindowSlot *slot; if (!NEMO_IS_WINDOW_SLOT (page)) { return NULL; } app = NEMO_APPLICATION (g_application_get_default ()); new_window = nemo_application_create_window (app, gtk_widget_get_screen (GTK_WIDGET (notebook))); slot = NEMO_WINDOW_SLOT (page); g_object_set_data (G_OBJECT (slot), "dnd-window-slot", GINT_TO_POINTER (TRUE)); gtk_window_set_position (GTK_WINDOW (new_window), GTK_WIN_POS_MOUSE); new_pane = nemo_window_get_active_pane (new_window); return GTK_NOTEBOOK (new_pane->notebook); }
void nemo_application_open_location (NemoApplication *application, GFile *location, GFile *selection, const char *startup_id) { NemoWindow *window; GList *sel_list = NULL; window = nemo_application_create_window (application, gdk_screen_get_default ()); gtk_window_set_startup_id (GTK_WINDOW (window), startup_id); if (selection != NULL) { sel_list = g_list_prepend (sel_list, nemo_file_get (selection)); } nemo_window_slot_open_location (nemo_window_get_active_slot (window), location, 0, sel_list); if (sel_list != NULL) { nemo_file_list_free (sel_list); } }
static void action_new_window_callback (GtkAction *action, gpointer user_data) { NemoApplication *application; NemoWindow *current_window, *new_window; current_window = NEMO_WINDOW (user_data); application = nemo_application_get_singleton (); new_window = nemo_application_create_window ( application, gtk_window_get_screen (GTK_WINDOW (current_window))); nemo_window_slot_go_home (nemo_window_get_active_slot (new_window), FALSE); }
static void activate_bookmark_by_quicklist (DbusmenuMenuitem *menu, guint timestamp, NemoBookmark *bookmark) { g_assert (NEMO_IS_BOOKMARK (bookmark)); GFile *location; NemoApplication *application; NemoWindow *new_window; location = nemo_bookmark_get_location (bookmark); application = nemo_application_get_singleton (); new_window = nemo_application_create_window (application, gdk_screen_get_default ()); nemo_window_slot_go_to (nemo_window_get_active_slot (new_window), location, FALSE); 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); }