From 87715f3fa7afcc84585cfa45f9d2e36af191c6f3 Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Thu, 4 Apr 2024 01:09:22 +0200 Subject: src/idoscalemenuitem.c: Make page increment same as step increment --- src/idoscalemenuitem.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/idoscalemenuitem.c b/src/idoscalemenuitem.c index 37a9385..baad442 100644 --- a/src/idoscalemenuitem.c +++ b/src/idoscalemenuitem.c @@ -1,6 +1,6 @@ /* * Copyright 2010 Canonical, Ltd. - * Copyright 2021 Robert Tari + * Copyright 2021-2024 Robert Tari * * This program is free software: you can redistribute it and/or modify it * under the terms of either or both of the following licenses: @@ -701,7 +701,7 @@ ido_scale_menu_item_new_with_range (const gchar *label, gdouble max, gdouble step) { - GObject *adjustment = G_OBJECT (gtk_adjustment_new (value, min, max, step, 10 * step, 0)); + GObject *adjustment = G_OBJECT (gtk_adjustment_new (value, min, max, step, step, 0)); return GTK_WIDGET (g_object_new (IDO_TYPE_SCALE_MENU_ITEM, "label", label, -- cgit v1.2.3 From 451a9efbccc57c46122c3349abeea423ab1e576c Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Thu, 4 Apr 2024 01:10:16 +0200 Subject: src/idoscalemenuitem.c: Add new functionality via the digits and marks parameters --- src/idoscalemenuitem.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/idoscalemenuitem.c b/src/idoscalemenuitem.c index baad442..c6cf877 100644 --- a/src/idoscalemenuitem.c +++ b/src/idoscalemenuitem.c @@ -26,6 +26,7 @@ */ #include +#include #include "idorange.h" #include "idoscalemenuitem.h" #include "idotypebuiltins.h" @@ -1048,6 +1049,13 @@ menu_item_get_icon (GMenuItem *menuitem, return value ? g_icon_deserialize (value) : NULL; } +static gchar* onFormatValue (GtkScale *pScale, gdouble fValue) +{ + gint nValue = fValue * 100; + gchar *sValue = g_strdup_printf ("%i%%", nValue); + + return sValue; +} /** * ido_scale_menu_item_new_from_model: * @@ -1089,6 +1097,31 @@ ido_scale_menu_item_new_from_model (GMenuItem *menuitem, g_free (action); } + IdoScaleMenuItemPrivate *pPrivate = ido_scale_menu_item_get_instance_private (IDO_SCALE_MENU_ITEM (item)); + guchar nDigits = 0; + gboolean bFound = g_menu_item_get_attribute (menuitem, "digits", "y", &nDigits); + + if (bFound) + { + gtk_scale_set_digits (GTK_SCALE (pPrivate->scale), nDigits); + gtk_range_set_round_digits (GTK_RANGE (pPrivate->scale), nDigits); + } + + gboolean bMarks = FALSE; + bFound = g_menu_item_get_attribute (menuitem, "marks", "b", &bMarks); + + if (bFound) + { + gtk_scale_set_draw_value (GTK_SCALE (pPrivate->scale), TRUE); + + for (gdouble fValue = min; fValue < (max + step); fValue += step) + { + gtk_scale_add_mark (GTK_SCALE (pPrivate->scale), round (fValue * 10) / 10, GTK_POS_BOTTOM, NULL); + } + + g_signal_connect (pPrivate->scale, "format-value", G_CALLBACK (onFormatValue), NULL); + } + min_icon = menu_item_get_icon (menuitem, "min-icon"); max_icon = menu_item_get_icon (menuitem, "max-icon"); ido_scale_menu_item_set_icons (IDO_SCALE_MENU_ITEM (item), min_icon, max_icon); -- cgit v1.2.3