static void finish_prepare_screenshot (GdkRectangle *rectangle) { GdkRectangle rect; GdkWindow *window; window = find_current_window (); screenshot = screenshot_get_pixbuf (window, rectangle); if (screenshot_config->take_window_shot) { switch (screenshot_config->border_effect[0]) { case 's': /* shadow */ screenshot_add_shadow (&screenshot); break; case 'b': /* border */ screenshot_add_border (&screenshot); break; case 'n': /* none */ default: break; } } /* release now the lock, it was acquired when we were finding the window */ screenshot_release_lock (); if (screenshot == NULL) { screenshot_show_error_dialog (NULL, _("Unable to take a screenshot of the current window"), NULL); exit (1); } flash = cheese_flash_new (); if (rectangle != NULL) rect = *rectangle; else screenshot_get_window_rect (window, &rect); cheese_flash_fire (flash, &rect); play_sound_effect (window); g_object_unref (flash); if (screenshot_config->copy_to_clipboard) { screenshot_save_to_clipboard (); gtk_main_quit (); return; } screenshot_ensure_icc_profile (window); screenshot_build_filename_async (screenshot_config->last_save_dir, build_filename_ready_cb, screenshot); }
static void screenshot_dialog_response_cb (GtkDialog *d, gint response_id, gpointer user_data) { ScreenshotApplication *self = user_data; switch (response_id) { case GTK_RESPONSE_HELP: screenshot_display_help (GTK_WINDOW (d)); break; case GTK_RESPONSE_OK: /* update to the new URI */ g_free (self->priv->save_uri); self->priv->save_uri = screenshot_dialog_get_uri (self->priv->dialog); screenshot_save_to_file (self); break; case SCREENSHOT_RESPONSE_COPY: screenshot_save_to_clipboard (self); break; default: gtk_widget_destroy (GTK_WIDGET (d)); break; } }
static void screenshot_dialog_response_cb (GtkDialog *d, gint response_id, ScreenshotDialog *dialog) { switch (response_id) { case GTK_RESPONSE_HELP: screenshot_display_help (GTK_WINDOW (d)); break; case GTK_RESPONSE_OK: try_to_save (dialog); break; case SCREENSHOT_RESPONSE_COPY: screenshot_save_to_clipboard (); break; default: gtk_widget_destroy (GTK_WIDGET (d)); gtk_main_quit (); break; } }
static void finish_prepare_screenshot (ScreenshotApplication *self, GdkRectangle *rectangle) { GdkPixbuf *screenshot; screenshot = screenshot_get_pixbuf (rectangle); if (screenshot == NULL) { g_critical ("Unable to capture a screenshot of any window"); if (screenshot_config->interactive) screenshot_show_dialog (NULL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Unable to capture a screenshot"), _("All possible methods failed")); else screenshot_play_sound_effect ("dialog-error", _("Unable to capture a screenshot")); g_application_release (G_APPLICATION (self)); if (screenshot_config->file != NULL) exit (EXIT_FAILURE); return; } if (screenshot_config->take_window_shot) { switch (screenshot_config->border_effect[0]) { case 's': /* shadow */ screenshot_add_shadow (&screenshot); break; case 'b': /* border */ screenshot_add_border (&screenshot); break; case 'n': /* none */ default: break; } } self->priv->screenshot = screenshot; if (screenshot_config->copy_to_clipboard) { screenshot_save_to_clipboard (self); screenshot_play_sound_effect ("screen-capture", _("Screenshot taken")); g_application_release (G_APPLICATION (self)); return; } /* FIXME: apply the ICC profile according to the preferences. * org.gnome.ColorManager.GetProfileForWindow() does not exist anymore, * so we probably need to fetch the color profile of the screen where * the area/window was. * * screenshot_ensure_icc_profile (window); */ if (screenshot_config->file != NULL) { self->priv->save_uri = g_file_get_uri (screenshot_config->file); self->priv->should_overwrite = TRUE; screenshot_save_to_file (self); } else screenshot_build_filename_async (screenshot_config->save_dir, NULL, build_filename_ready_cb, self); }