/
test-avatar-editor-dialog.c
87 lines (64 loc) · 2.09 KB
/
test-avatar-editor-dialog.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include "config.h"
#include <hildon/hildon.h>
#include "osso-abook-avatar-editor-dialog.h"
#include "osso-abook-debug.h"
#include "osso-abook-log.h"
#include "osso-abook-util.h"
static void
loop_quit (GtkWindow *window, gpointer data)
{
GMainLoop *loop = data;
g_return_if_fail(loop != NULL);
gtk_widget_hide(GTK_WIDGET(window));
while (gtk_events_pending())
gtk_main_iteration();
g_main_loop_quit(loop);
}
static void
avatar_editor_response_cb(GtkWidget *dialog, int response_id,
gpointer user_data)
{
GdkPixbuf *pixbuf = osso_abook_avatar_editor_dialog_get_scaled_pixbuf(
OSSO_ABOOK_AVATAR_EDITOR_DIALOG(dialog));
GtkWidget *image = gtk_image_new_from_pixbuf(pixbuf);
g_object_unref(pixbuf);
gtk_container_add(GTK_CONTAINER(user_data), image);
gtk_widget_show(image);
gtk_widget_destroy(dialog);
}
static void
pixbuf_ready_cb(GObject *source_object, GAsyncResult *res, gpointer user_data)
{
GError *error = NULL;
GdkPixbuf *pixbuf = osso_abook_load_pixbuf_finish(G_FILE(source_object),
res, &error);
if (!error)
{
GtkWidget *dialog = osso_abook_avatar_editor_dialog_new(
GTK_WINDOW(user_data), pixbuf);
g_signal_connect(dialog, "response",
G_CALLBACK(avatar_editor_response_cb), user_data);
gtk_dialog_run(GTK_DIALOG(dialog));
}
else
{
OSSO_ABOOK_WARN("Unable to load test pixbuf, %s", error->message);
gtk_widget_destroy(user_data);
}
}
int
main(int argc, char **argv)
{
hildon_gtk_init(&argc, &argv);
setenv("OSSO_ABOOK_DEBUG", "all,disk-space", TRUE);
GMainLoop *main_loop = g_main_loop_new(NULL, FALSE);
osso_abook_debug_init();
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(window, "destroy", G_CALLBACK(loop_quit), main_loop);
gtk_widget_show_all(window);
GFile *file = g_file_new_for_path("./Macaca_nigra_self-portrait.jpg");
osso_abook_load_pixbuf_async(file, 0, 0, NULL, pixbuf_ready_cb, window);
g_object_unref(file);
g_main_loop_run(main_loop);
g_main_loop_unref(main_loop);
}