From 124564dd1632b5a05a9665bae2d6c6afa7d9eb46 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 25 Jul 2013 15:53:36 -0500 Subject: subclass IdoLocationMenuItem from IdoBasicMenuItem --- example/menus.c | 2 +- src/idolocationmenuitem.c | 89 +++++------------------------------------------ src/idolocationmenuitem.h | 8 ++--- 3 files changed, 13 insertions(+), 86 deletions(-) diff --git a/example/menus.c b/example/menus.c index 66bc2f2..ab070ac 100644 --- a/example/menus.c +++ b/example/menus.c @@ -138,7 +138,7 @@ main (int argc, char *argv[]) for (i=0; ipriv; if (p->format && *p->format) { GTimeZone * tz; GDateTime * now; - char * str; tz = g_time_zone_new (p->timezone); if (tz == NULL) tz = g_time_zone_new_local (); now = g_date_time_new_now (tz); - str = g_date_time_format (now, p->format); - gtk_label_set_text (GTK_LABEL(p->timestamp_label), str); + str = g_date_time_format (now, p->format); - g_free (str); g_date_time_unref (now); g_time_zone_unref (tz); } else { - gtk_label_set_text (GTK_LABEL(p->timestamp_label), ""); + str = NULL; } + + ido_basic_menu_item_set_secondary_text (IDO_BASIC_MENU_ITEM(self), str); + + g_free (str); } static void @@ -181,10 +178,6 @@ my_get_property (GObject * o, switch (property_id) { - case PROP_NAME: - g_value_set_string (value, p->name); - break; - case PROP_TIMEZONE: g_value_set_string (value, p->timezone); break; @@ -209,10 +202,6 @@ my_set_property (GObject * o, switch (property_id) { - case PROP_NAME: - ido_location_menu_item_set_name (self, g_value_get_string (value)); - break; - case PROP_TIMEZONE: ido_location_menu_item_set_timezone (self, g_value_get_string (value)); break; @@ -242,7 +231,6 @@ my_finalize (GObject * object) priv_t * p = self->priv; g_free (p->format); - g_free (p->name); g_free (p->timezone); G_OBJECT_CLASS (ido_location_menu_item_parent_class)->finalize (object); @@ -269,13 +257,6 @@ ido_location_menu_item_class_init (IdoLocationMenuItemClass *klass) | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS; - properties[PROP_NAME] = g_param_spec_string ( - "name", - "The location's name", - "The name to display; eg, 'Oklahoma City'", - "Location", - prop_flags); - properties[PROP_TIMEZONE] = g_param_spec_string ( "timezone", "timezone identifier", @@ -296,43 +277,11 @@ ido_location_menu_item_class_init (IdoLocationMenuItemClass *klass) static void ido_location_menu_item_init (IdoLocationMenuItem *self) { - priv_t * p; - GtkWidget * w; - GtkGrid * grid; - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, IDO_LOCATION_MENU_ITEM_TYPE, IdoLocationMenuItemPrivate); - - p = self->priv; - - p->name_label = gtk_label_new (NULL); - gtk_misc_set_alignment (GTK_MISC(p->name_label), 0.0, 0.5); - - p->timestamp_label = gtk_label_new (NULL); - gtk_misc_set_alignment (GTK_MISC(p->timestamp_label), 1.0, 0.5); - - w = gtk_grid_new (); - grid = GTK_GRID (w); - gtk_grid_attach (grid, p->name_label, 0, 0, 1, 1); - gtk_grid_attach (grid, p->timestamp_label, 1, 0, 1, 1); - g_object_set (p->name_label, - "halign", GTK_ALIGN_START, - "hexpand", TRUE, - "margin-right", 6, - "valign", GTK_ALIGN_CENTER, - NULL); - g_object_set (p->timestamp_label, - "halign", GTK_ALIGN_END, - "hexpand", FALSE, - "valign", GTK_ALIGN_CENTER, - NULL); - - gtk_widget_show_all (w); - gtk_container_add (GTK_CONTAINER (self), w); } - /*** **** Public API ***/ @@ -344,26 +293,6 @@ ido_location_menu_item_new (void) return GTK_WIDGET (g_object_new (IDO_LOCATION_MENU_ITEM_TYPE, NULL)); } -/** - * ido_location_menu_item_set_name: - * @name: human-readable name, such as a city (eg: "Oklahoma City") - * - * Sets this location's name, for display in the menuitem's primary label. - */ -void -ido_location_menu_item_set_name (IdoLocationMenuItem * self, - const char * name) -{ - priv_t * p; - - g_return_if_fail (IDO_IS_LOCATION_MENU_ITEM (self)); - p = self->priv; - - g_free (p->name); - p->name = g_strdup (name); - gtk_label_set_text (GTK_LABEL(p->name_label), p->name); -} - /** * ido_location_menu_item_set_timezone: * @timezone: timezone identifier (eg: "America/Chicago") @@ -436,7 +365,7 @@ ido_location_menu_item_new_from_model (GMenuItem * menu_item, if (g_menu_item_get_attribute (menu_item, "label", "s", &str)) { - GParameter p = { "name", G_VALUE_INIT }; + GParameter p = { "text", G_VALUE_INIT }; g_value_init (&p.value, G_TYPE_STRING); g_value_take_string (&p.value, str); parameters[n++] = p; diff --git a/src/idolocationmenuitem.h b/src/idolocationmenuitem.h index 08a97af..53fe063 100644 --- a/src/idolocationmenuitem.h +++ b/src/idolocationmenuitem.h @@ -21,6 +21,7 @@ #define __IDO_LOCATION_MENU_ITEM_H__ #include +#include "idobasicmenuitem.h" G_BEGIN_DECLS @@ -34,7 +35,7 @@ typedef struct _IdoLocationMenuItemPrivate IdoLocationMenuItemPrivate; struct _IdoLocationMenuItemClass { - GtkMenuItemClass parent_class; + IdoBasicMenuItemClass parent_class; }; /** @@ -46,7 +47,7 @@ struct _IdoLocationMenuItemClass struct _IdoLocationMenuItem { /*< private >*/ - GtkMenuItem parent; + IdoBasicMenuItem parent; IdoLocationMenuItemPrivate * priv; }; @@ -58,9 +59,6 @@ GtkWidget * ido_location_menu_item_new (void); GtkMenuItem * ido_location_menu_item_new_from_model (GMenuItem * menuitem, GActionGroup * actions); -void ido_location_menu_item_set_name (IdoLocationMenuItem * menuitem, - const char * name); - void ido_location_menu_item_set_timezone (IdoLocationMenuItem * menuitem, const char * timezone); -- cgit v1.2.3