/+junk/gnome-dialer

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/%2Bjunk/gnome-dialer
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
#include "app.h"
#include <stdlib.h>
#include "dialer-res.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);
}

void
app_install_style (App * self) {
  GtkCssProvider * cssprov = gtk_css_provider_new ();
  
  gtk_css_provider_load_from_resource (cssprov, "/org/gego/dialer/style.main.css");
  
  gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
                                             cssprov,
                                       GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
  
}

App *
app_new () {
  
  App * self = g_malloc (sizeof (App));
  
  self->bldr = gtk_builder_new ();
  
  GError * err = NULL;
  
  if (!gtk_builder_add_from_resource (self->bldr, "/org/gego/dialer/main.glade", &err)) {
    g_print ("Error: %s\n", err->message);
    g_object_unref (self->bldr);
    exit (1);
  }
  
  if (!gtk_builder_add_from_resource (self->bldr, "/org/gego/dialer/dial.glade", &err)) {
    g_print ("Error: %s\n", err->message);
    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")));
  
  app_install_style (self);
  
  gtk_widget_show_all (self->window);
  
  gtk_widget_hide (self->popover);
  
  return self;
}