Exemple #1
0
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);
}
Exemple #2
0
static void
cheese_avatar_widget_init (CheeseAvatarWidget *widget)
{
    CheeseAvatarWidgetPrivate *priv;
    GtkWidget *frame;
    GtkWidget *image;

    priv = cheese_avatar_widget_get_instance_private (widget);

    priv->flash = cheese_flash_new (GTK_WIDGET (widget));

    priv->notebook = gtk_notebook_new ();
    g_object_set(G_OBJECT (priv->notebook), "margin", 12, NULL);
    gtk_notebook_set_show_border (GTK_NOTEBOOK (priv->notebook), FALSE);
    gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->notebook), FALSE);

    gtk_container_add (GTK_CONTAINER (widget), priv->notebook);

    /* Camera tab */
    priv->camera = cheese_widget_new ();
    g_signal_connect (G_OBJECT (priv->camera), "notify::state",
                      G_CALLBACK (state_change_cb), widget);
    image = gtk_image_new_from_icon_name ("camera-photo-symbolic", GTK_ICON_SIZE_SMALL_TOOLBAR);
    priv->take_button = gtk_button_new ();
    gtk_button_set_image (GTK_BUTTON (priv->take_button), image);
    g_signal_connect (G_OBJECT (priv->take_button), "clicked",
                      G_CALLBACK (take_button_clicked_cb), widget);
    gtk_widget_set_sensitive (priv->take_button, FALSE);
    gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
                              create_page (priv->camera, priv->take_button),
                              gtk_label_new ("webcam"));

    /* Image tab */
    priv->image = um_crop_area_new ();
    frame = gtk_frame_new (NULL);
    gtk_container_add (GTK_CONTAINER (frame), priv->image);
    gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
    priv->take_again_button = gtk_button_new_with_mnemonic (_("_Take Another Picture"));
    g_signal_connect (G_OBJECT (priv->take_again_button), "clicked",
                      G_CALLBACK (take_again_button_clicked_cb), widget);
    gtk_widget_set_sensitive (priv->take_again_button, FALSE);
    gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
                              create_page (frame, priv->take_again_button),
                              gtk_label_new ("image"));

    priv->sizegroup = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
    gtk_size_group_add_widget (priv->sizegroup, priv->take_button);
    gtk_size_group_add_widget (priv->sizegroup, priv->take_again_button);

    gtk_widget_show_all (GTK_WIDGET (widget));
}
static void
screenshot_fallback_fire_flash (GdkWindow *window,
                                GdkRectangle *rectangle)
{
  GdkRectangle rect;
  CheeseFlash *flash = NULL;

  if (rectangle != NULL)
    rect = *rectangle;
  else
    screenshot_fallback_get_window_rect_coords (window,
                                                screenshot_config->include_border,
                                                NULL,
                                                &rect);

  flash = cheese_flash_new ();
  cheese_flash_fire (flash, &rect);

  g_object_unref (flash);
}