From 1b164cf88c0a7555a1b1bc6991f6d0cc505dc906 Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Fri, 3 Mar 2023 00:40:10 +0100 Subject: src/idoprogressmenuitem.c: Rewrite to use icon, progress property and activation --- src/idoprogressmenuitem.c | 129 ++++++++++++++++++++-------------------------- 1 file changed, 57 insertions(+), 72 deletions(-) (limited to 'src') diff --git a/src/idoprogressmenuitem.c b/src/idoprogressmenuitem.c index 004682e..821d0a6 100644 --- a/src/idoprogressmenuitem.c +++ b/src/idoprogressmenuitem.c @@ -1,19 +1,19 @@ /* - * Copyright 2013 Canonical Ltd. + * Copyright 2023 Robert Tari * * Authors: - * Charles Kerr + * Robert Tari * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3, as published + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranties of - * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along + * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ @@ -21,85 +21,70 @@ #include "idobasicmenuitem.h" #include "idoactionhelper.h" -static void -on_progress_action_state_changed (IdoActionHelper * helper, - GVariant * state, - gpointer unused G_GNUC_UNUSED) +static void onActivate (GtkMenuItem *item, gpointer pData) { - IdoBasicMenuItem * ido_menu_item; - char * str; - - ido_menu_item = IDO_BASIC_MENU_ITEM (ido_action_helper_get_widget (helper)); - - g_return_if_fail (ido_menu_item != NULL); - g_return_if_fail (g_variant_is_of_type (state, G_VARIANT_TYPE_UINT32)); - - str = g_strdup_printf ("%"G_GUINT32_FORMAT"%%", g_variant_get_uint32 (state)); - ido_basic_menu_item_set_secondary_text (ido_menu_item, str); - g_free (str); + IdoActionHelper *pHelper = pData; + ido_action_helper_activate (pHelper); } /** * ido_progress_menu_item_new_from_model: - * @menu_item: the corresponding menuitem - * @actions: action group to tell when this GtkMenuItem is activated + * @pMenuItem: the corresponding menuitem + * @pActionGroup: action group to tell when this GtkMenuItem is activated * * Creates a new progress menuitem with properties initialized from * the menuitem's attributes. * * If the menuitem's 'action' attribute is set, trigger that action - * in @actions when this IdoBasicMenuItem is activated. + * in @pActionGroup when this IdoProgressMenuItem is activated. */ -GtkMenuItem * -ido_progress_menu_item_new_from_model (GMenuItem * menu_item, - GActionGroup * actions) +GtkMenuItem *ido_progress_menu_item_new_from_model (GMenuItem *pMenuItem, GActionGroup *pActionGroup) { - guint i; - guint n; - gchar * str; - IdoBasicMenuItem * ido_menu_item; - const gchar * names[1] = {0}; - GValue * values; - const guint n_max = 1; - - /* create the ido menuitem */; + IdoBasicMenuItem *pBasicMenuItem = NULL; + gchar *sLabel = NULL; - n = 0; - values = g_new0(GValue, n_max); - - if (g_menu_item_get_attribute (menu_item, "label", "s", &str)) + if (g_menu_item_get_attribute (pMenuItem, "label", "s", &sLabel)) { - names[n] = "text"; - g_value_init (&values[n], G_TYPE_STRING); - g_value_take_string (&values[n], str); - n++; - } - - g_assert (n <= G_N_ELEMENTS (names)); - g_assert (n <= n_max); - ido_menu_item = IDO_BASIC_MENU_ITEM(g_object_new_with_properties (IDO_TYPE_BASIC_MENU_ITEM, n, names, values)); - - for (i=0; i