]> Pileus Git - grits/blob - src/aweather-gui.c
Converting a lot of stuff to GObject and adding gtk-doc support
[grits] / src / aweather-gui.c
1 #include <config.h>
2 #include <gtk/gtk.h>
3 #include <gtk/gtkgl.h>
4 #include <gdk/gdkkeysyms.h>
5
6 #include "aweather-gui.h"
7 #include "aweather-view.h"
8
9 /****************
10  * GObject code *
11  ****************/
12 G_DEFINE_TYPE(AWeatherGui, aweather_gui, G_TYPE_OBJECT);
13
14 /* Constructor / destructors */
15 static void aweather_gui_init(AWeatherGui *gui)
16 {
17         g_message("aweather_gui_init");
18         /* Default values */
19         gui->view    = NULL;
20         gui->builder = NULL;
21         gui->window  = NULL;
22         gui->tabs    = NULL;
23         gui->drawing = NULL;
24 }
25
26 static GObject *aweather_gui_constructor(GType gtype, guint n_properties,
27                 GObjectConstructParam *properties)
28 {
29         g_message("aweather_gui_constructor");
30         GObjectClass *parent_class = G_OBJECT_CLASS(aweather_gui_parent_class);
31         return  parent_class->constructor(gtype, n_properties, properties);
32 }
33
34 static void aweather_gui_dispose (GObject *gobject)
35 {
36         g_message("aweather_gui_dispose");
37         AWeatherGui *gui = AWEATHER_GUI(gobject);
38         g_object_unref(gui->view   );
39         g_object_unref(gui->builder);
40         g_object_unref(gui->window );
41         g_object_unref(gui->tabs   );
42         g_object_unref(gui->drawing);
43         G_OBJECT_CLASS(aweather_gui_parent_class)->dispose(gobject);
44 }
45
46 static void aweather_gui_finalize(GObject *gobject)
47 {
48         g_message("aweather_gui_finalize");
49         G_OBJECT_CLASS(aweather_gui_parent_class)->finalize(gobject);
50 }
51
52 static void aweather_gui_class_init(AWeatherGuiClass *klass)
53 {
54         g_message("aweather_gui_class_init");
55         GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
56         gobject_class->constructor  = aweather_gui_constructor;
57         gobject_class->dispose      = aweather_gui_dispose;
58         gobject_class->finalize     = aweather_gui_finalize;
59 }
60
61 /* Methods */
62 AWeatherGui *aweather_gui_new()
63 {
64         g_message("aweather_gui_new");
65         GError *error = NULL;
66
67         AWeatherGui *gui = g_object_new(AWEATHER_TYPE_GUI, NULL);
68
69         gui->builder = gtk_builder_new();
70         if (!gtk_builder_add_from_file(gui->builder, DATADIR "/aweather/aweather.xml", &error))
71                 g_error("Failed to create gtk builder: %s", error->message);
72         gui->view    = aweather_view_new();
73         gui->window  = GTK_WINDOW      (gtk_builder_get_object(gui->builder, "window"));
74         gui->tabs    = GTK_NOTEBOOK    (gtk_builder_get_object(gui->builder, "tabs")); 
75         gui->drawing = GTK_DRAWING_AREA(gtk_builder_get_object(gui->builder, "drawing"));
76         gtk_builder_connect_signals(gui->builder, NULL);
77         return gui;
78 }
79 AWeatherView *aweather_gui_get_view(AWeatherGui *gui)
80 {
81         return gui->view;
82 }
83 GtkBuilder *aweather_gui_get_builder(AWeatherGui *gui)
84 {
85         return gui->builder;
86 }
87 GtkWindow *aweather_gui_get_window(AWeatherGui *gui)
88 {
89         return gui->window;
90 }
91 GtkNotebook *aweather_gui_get_tabs(AWeatherGui *gui)
92 {
93         return gui->tabs;
94 }
95 GtkDrawingArea *aweather_gui_get_drawing(AWeatherGui *gui)
96 {
97         return gui->drawing;
98 }
99
100 //void aweather_gui_register_plugin(AWeatherGui *gui, AWeatherPlugin *plugin);
101
102 /************************
103  * GtkBuilder callbacks *
104  ************************/
105 gboolean on_window_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
106 {
107         if (event->keyval == GDK_q)
108                 gtk_main_quit();
109         return TRUE;
110 }
111
112 void on_site_changed() {
113         g_message("site changed");
114 }