Exemplo n.º 1
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
um_photo_dialog_crop (UmPhotoDialog *um,
                      GdkPixbuf     *pixbuf)
{
        GtkWidget *dialog;
        GtkWidget *frame;

        dialog = gtk_dialog_new_with_buttons ("",
                                              GTK_WINDOW (gtk_widget_get_toplevel (um->popup_button)),
                                              0,
                                              GTK_STOCK_CANCEL,
                                              GTK_RESPONSE_REJECT,
                                              _("Select"),
                                              GTK_RESPONSE_ACCEPT,
                                              NULL);
        gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);

        gtk_window_set_icon_name (GTK_WINDOW (dialog), "system-users");

        g_signal_connect (G_OBJECT (dialog), "response",
                          G_CALLBACK (crop_dialog_response), um);

        /* Content */
        um->crop_area           = um_crop_area_new ();
        um_crop_area_set_min_size (UM_CROP_AREA (um->crop_area), 48, 48);
        um_crop_area_set_constrain_aspect (UM_CROP_AREA (um->crop_area), TRUE);
        um_crop_area_set_picture (UM_CROP_AREA (um->crop_area), pixbuf);
        frame                   = gtk_frame_new (NULL);
        gtk_container_add (GTK_CONTAINER (frame), um->crop_area);
        gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);

        gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
                            frame,
                            TRUE, TRUE, 8);

        gtk_window_set_default_size (GTK_WINDOW (dialog), 400, 300);

        gtk_widget_show_all (dialog);
}