From b1d0f0e0a01b958f179845bac8b43ba742961ab6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Wed, 29 Jun 2011 16:43:38 +0100 Subject: Populate menu: Add preferences menu item --- src/indicator-power.c | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/src/indicator-power.c b/src/indicator-power.c index 1eb0797..697f7c6 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -328,6 +328,49 @@ service_proxy_cb (GObject *object, user_data); } +static void +show_preferences_cb (GtkMenuItem *item, + gpointer data) +{ + const gchar *command = "gnome-power-preferences"; + + if (g_spawn_command_line_async (command, NULL) == FALSE) + g_warning ("Couldn't execute command: %s", command); +} + +static void +build_menu (IndicatorPower *self) +{ + IndicatorPowerPrivate *priv = self->priv; + GtkWidget *item; + GtkWidget *image; + guint n_devices = 1; /*TODO*/ + + priv->menu = GTK_MENU (gtk_menu_new ()); + + item = gtk_image_menu_item_new_from_stock ("battery", NULL); + gtk_menu_item_set_label (GTK_MENU_ITEM (item), "Battery Remaining: 0:45s"); /*TODO*/ + gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); + + /* only do the seporator if we have at least one device */ + if (n_devices != 0) + { + item = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); + } + + /* preferences */ + item = gtk_image_menu_item_new_with_mnemonic (_("Power Settings ...")); + image = gtk_image_new_from_icon_name (GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (show_preferences_cb), NULL); + gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); + + /* show the menu */ + gtk_widget_show_all (GTK_WIDGET (priv->menu)); +} + static void indicator_power_init (IndicatorPower *self) { @@ -341,10 +384,7 @@ indicator_power_init (IndicatorPower *self) /* Init variables */ priv->menu = NULL; - priv->menu = GTK_MENU (gtk_menu_new ()); - gtk_menu_set_title (priv->menu, _("Power")); - - gtk_menu_popup (priv->menu, NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ()); + build_menu (self); priv->proxy_cancel = g_cancellable_new(); -- cgit v1.2.3