From 29e221e6994cf2011103d686ae12d12dd6d05622 Mon Sep 17 00:00:00 2001 From: Thomas Wood Date: Tue, 25 May 2010 16:31:48 +0100 Subject: [PATCH] datetime: add a GtkBuilder file to define the user interface --- panels/datetime/Makefile.am | 6 +- panels/datetime/cc-datetime-panel.c | 37 ++++- panels/datetime/datetime.ui | 247 ++++++++++++++++++++++++++++ 3 files changed, 283 insertions(+), 7 deletions(-) create mode 100644 panels/datetime/datetime.ui diff --git a/panels/datetime/Makefile.am b/panels/datetime/Makefile.am index 49af8fba6..63049d968 100644 --- a/panels/datetime/Makefile.am +++ b/panels/datetime/Makefile.am @@ -1,5 +1,7 @@ -uidir = $(datadir)/ui -ui_DATA = data/bg.png \ +uidir = $(datadir)/ui/datetime +ui_DATA = \ + datetime.ui \ + data/bg.png \ data/cc.png \ data/timezone_0.png \ data/timezone_-10.png \ diff --git a/panels/datetime/cc-datetime-panel.c b/panels/datetime/cc-datetime-panel.c index 74e3eb30c..356a1530d 100644 --- a/panels/datetime/cc-datetime-panel.c +++ b/panels/datetime/cc-datetime-panel.c @@ -30,7 +30,7 @@ G_DEFINE_DYNAMIC_TYPE (CcDateTimePanel, cc_date_time_panel, CC_TYPE_PANEL) struct _CcDateTimePanelPrivate { - gpointer dummy; + GtkBuilder *builder; }; @@ -63,6 +63,13 @@ cc_date_time_panel_set_property (GObject *object, static void cc_date_time_panel_dispose (GObject *object) { + CcDateTimePanelPrivate *priv = CC_DATE_TIME_PANEL (object)->priv; + if (priv->builder) + { + g_object_unref (priv->builder); + priv->builder = NULL; + } + G_OBJECT_CLASS (cc_date_time_panel_parent_class)->dispose (object); } @@ -93,13 +100,33 @@ cc_date_time_panel_class_finalize (CcDateTimePanelClass *klass) static void cc_date_time_panel_init (CcDateTimePanel *self) { - GtkWidget *label; + CcDateTimePanelPrivate *priv; + gchar *objects[] = { "datetime-panel", NULL }; + GtkWidget *widget; + GError *err = NULL; - self->priv = DATE_TIME_PANEL_PRIVATE (self); + priv = self->priv = DATE_TIME_PANEL_PRIVATE (self); - label = cc_timezone_map_new (); + priv->builder = gtk_builder_new (); - gtk_container_add (GTK_CONTAINER (self), label); + gtk_builder_add_objects_from_file (priv->builder, DATADIR"/datetime.ui", + objects, &err); + + if (err) + { + g_warning ("Could not load ui: %s", err->message); + g_error_free (err); + return; + } + + widget = (GtkWidget *) cc_timezone_map_new (); + + gtk_container_add (GTK_CONTAINER (gtk_builder_get_object (priv->builder, + "aspectmap")), + widget); + + gtk_container_add (GTK_CONTAINER (self), + GTK_WIDGET (gtk_builder_get_object (priv->builder, "datetime-panel"))); } void diff --git a/panels/datetime/datetime.ui b/panels/datetime/datetime.ui new file mode 100644 index 000000000..444b8283b --- /dev/null +++ b/panels/datetime/datetime.ui @@ -0,0 +1,247 @@ + + + + + + + + True + vertical + 6 + + + True + + + True + 0 + none + + + + + + 0 + + + + + True + vertical + 6 + + + True + 0 + none + + + True + 6 + 12 + + + True + vertical + 6 + + + True + 6 + + + True + 0 + Current Location: + + + False + 0 + + + + + True + 0 + <b>London</b> + True + + + 1 + + + + + False + 0 + + + + + True + True + automatic + automatic + in + + + True + True + + + + + 1 + + + + + + + + + True + <b>Locations</b> + True + + + + + 0 + + + + + True + 0 + none + + + True + 6 + 12 + + + True + vertical + 6 + + + Keep date and time updated automatically + True + True + False + True + + + 0 + + + + + True + True + 2010 + 4 + 25 + + + False + False + 1 + + + + + True + 6 + + + True + True + + + + 0 + + + + + True + True + + + + 1 + + + + + True + True + + + + 2 + + + + + 2 + + + + + + + + + True + <b>Date and Time</b> + True + + + + + False + 1 + + + + + False + 1 + + + + + 0 + + + + + True + end + + + gtk-apply + True + True + True + True + + + False + False + 0 + + + + + 1 + + + + + +