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
|
#include "app.h"
#include <stdlib.h>
typedef struct _App {
GtkBuilder * bldr;
GtkWidget * popover;
GtkWidget * window;
GtkWidget * openpad;
GtkWidget * dial;
} App;
void
app_destroy (GtkWidget * widget, gpointer user_data) {
gtk_main_quit ();
}
void
app_do_stuff (GtkWidget * widget, App * user_data) {
gtk_widget_show_all (user_data->popover);
}
App *
app_new () {
App * self = g_malloc (sizeof (App));
self->bldr = gtk_builder_new ();
if (!gtk_builder_add_from_file (self->bldr, "./main.glade", NULL)) {
g_print ("Error.");
g_object_unref (self->bldr);
exit (1);
}
if (!gtk_builder_add_from_file (self->bldr, "./dial.glade", NULL)) {
g_print ("Error.");
g_object_unref (self->bldr);
exit (1);
}
self->window = (GtkWidget *) gtk_builder_get_object (self->bldr,
"GnomeDialer");
self->openpad = (GtkWidget *) gtk_builder_get_object (self->bldr,
"openpad");
g_signal_connect (G_OBJECT (self->openpad), "clicked",
G_CALLBACK (app_do_stuff),
self);
gtk_builder_connect_signals(self->bldr, NULL);
g_signal_connect (G_OBJECT(self->window), "destroy",
G_CALLBACK(app_destroy),
self);
self->popover = gtk_popover_new (self->openpad);
gtk_container_add (GTK_CONTAINER (self->popover),
GTK_WIDGET(gtk_builder_get_object (self->bldr, "dial")));
gtk_widget_show_all (self->window);
gtk_widget_hide (self->popover);
return self;
}
|