[recipes] ingredients list: convert to doubles for amounts
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [recipes] ingredients list: convert to doubles for amounts
- Date: Mon, 26 Jun 2017 01:47:33 +0000 (UTC)
commit 6c36aa118095128e640b601274a17664915b387c
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Jun 25 19:54:45 2017 -0400
ingredients list: convert to doubles for amounts
Change the gr_ingredients_list_scale_unit api to
take a double instead of numerator and denominator.
Update all callers.
src/gr-ingredients-list.c | 14 +++++---------
src/gr-ingredients-list.h | 3 +--
src/gr-ingredients-viewer.c | 32 ++++++++++++++------------------
src/gr-recipe-formatter.c | 2 +-
src/gr-recipe-printer.c | 8 ++++----
5 files changed, 25 insertions(+), 34 deletions(-)
---
diff --git a/src/gr-ingredients-list.c b/src/gr-ingredients-list.c
index a4ddc16..9fe693e 100644
--- a/src/gr-ingredients-list.c
+++ b/src/gr-ingredients-list.c
@@ -172,14 +172,11 @@ gr_ingredients_list_validate (const char *text,
}
static void
-ingredient_scale_unit (Ingredient *ing, int num, int denom, GString *s)
+ingredient_scale_unit (Ingredient *ing, double scale, GString *s)
{
g_autofree char *scaled = NULL;
- double snum;
- snum = (double)num / (double)denom;
- snum = snum * ing->amount;
- scaled = gr_number_format (snum);
+ scaled = gr_number_format (scale * ing->amount);
g_string_append (s, scaled);
if (ing->unit) {
@@ -191,7 +188,7 @@ ingredient_scale_unit (Ingredient *ing, int num, int denom, GString *s)
static void
ingredient_scale (Ingredient *ing, int num, int denom, GString *s)
{
- ingredient_scale_unit (ing, num, denom, s);
+ ingredient_scale_unit (ing, (double)num / (double)denom, s);
g_string_append (s, " ");
g_string_append (s, ing->name);
g_string_append (s, "\n");
@@ -244,8 +241,7 @@ char *
gr_ingredients_list_scale_unit (GrIngredientsList *ingredients,
const char *segment,
const char *name,
- int num,
- int denom)
+ double scale)
{
GList *l;
@@ -257,7 +253,7 @@ gr_ingredients_list_scale_unit (GrIngredientsList *ingredients,
GString *s;
s = g_string_new ("");
- ingredient_scale_unit (ing, num, denom, s);
+ ingredient_scale_unit (ing, scale, s);
return g_string_free (s, FALSE);
}
diff --git a/src/gr-ingredients-list.h b/src/gr-ingredients-list.h
index 90b32e7..ebc7341 100644
--- a/src/gr-ingredients-list.h
+++ b/src/gr-ingredients-list.h
@@ -38,8 +38,7 @@ char *gr_ingredients_list_scale (GrIngredientsList *ingr
char *gr_ingredients_list_scale_unit (GrIngredientsList *ingredients,
const char *segment,
const char *ingredient,
- int num,
- int denom);
+ double scale);
char **gr_ingredients_list_get_segments (GrIngredientsList *ingredients);
char **gr_ingredients_list_get_ingredients (GrIngredientsList *ingredients,
const char *segment);
diff --git a/src/gr-ingredients-viewer.c b/src/gr-ingredients-viewer.c
index 435ec2c..f2f8018 100644
--- a/src/gr-ingredients-viewer.c
+++ b/src/gr-ingredients-viewer.c
@@ -54,8 +54,7 @@ struct _GrIngredientsViewer
GtkWidget *row_before;
GtkWidget *row_after;
- int scale_num;
- int scale_denom;
+ double scale;
};
@@ -69,7 +68,8 @@ enum {
PROP_ACTIVE,
PROP_INGREDIENTS,
PROP_SCALE_NUM,
- PROP_SCALE_DENOM
+ PROP_SCALE_DENOM,
+ PROP_SCALE
};
enum {
@@ -224,12 +224,8 @@ gr_ingredients_viewer_get_property (GObject *object,
g_value_set_boolean (value, self->active_row != NULL);
break;
- case PROP_SCALE_NUM:
- g_value_set_int (value, self->scale_num);
- break;
-
- case PROP_SCALE_DENOM:
- g_value_set_int (value, self->scale_denom);
+ case PROP_SCALE:
+ g_value_set_double (value, self->scale);
break;
default:
@@ -326,7 +322,7 @@ gr_ingredients_viewer_set_ingredients (GrIngredientsViewer *viewer,
const char *unit;
GtkWidget *row;
- s = gr_ingredients_list_scale_unit (ingredients, viewer->title, ings[i], viewer->scale_num,
viewer->scale_denom);
+ s = gr_ingredients_list_scale_unit (ingredients, viewer->title, ings[i], viewer->scale);
strv = g_strsplit (s, " ", 2);
amount = strv[0];
unit = strv[1] ? strv[1] : "";
@@ -616,12 +612,8 @@ gr_ingredients_viewer_set_property (GObject *object,
gr_ingredients_viewer_set_active (self, g_value_get_boolean (value));
break;
- case PROP_SCALE_NUM:
- self->scale_num = g_value_get_int (value);
- break;
-
- case PROP_SCALE_DENOM:
- self->scale_denom = g_value_get_int (value);
+ case PROP_SCALE:
+ self->scale = g_value_get_double (value);
break;
case PROP_INGREDIENTS:
@@ -639,8 +631,7 @@ gr_ingredients_viewer_init (GrIngredientsViewer *self)
gtk_widget_set_has_window (GTK_WIDGET (self), FALSE);
gtk_widget_init_template (GTK_WIDGET (self));
- self->scale_num = 1;
- self->scale_denom = 1;
+ self->scale = 1.0;
self->group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
#if defined(ENABLE_GSPELL) && defined(GSPELL_TYPE_ENTRY)
@@ -699,6 +690,11 @@ gr_ingredients_viewer_class_init (GrIngredientsViewerClass *klass)
G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_SCALE_DENOM, pspec);
+ pspec = g_param_spec_double ("scale", NULL, NULL,
+ 0.0, G_MAXDOUBLE, 1.0,
+ G_PARAM_READWRITE);
+ g_object_class_install_property (object_class, PROP_SCALE, pspec);
+
signals[DELETE] = g_signal_new ("delete",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_FIRST,
diff --git a/src/gr-recipe-formatter.c b/src/gr-recipe-formatter.c
index 32f3cf5..0e7ceaf 100644
--- a/src/gr-recipe-formatter.c
+++ b/src/gr-recipe-formatter.c
@@ -109,7 +109,7 @@ gr_recipe_format (GrRecipe *recipe)
char *unit;
g_string_append (s, "\n");
- unit = gr_ingredients_list_scale_unit (ingredients, segs[j], ings[i], 1, 1);
+ unit = gr_ingredients_list_scale_unit (ingredients, segs[j], ings[i], 1.0);
g_string_append (s, unit);
g_free (unit);
g_string_append (s, " ");
diff --git a/src/gr-recipe-printer.c b/src/gr-recipe-printer.c
index f554dd2..7f9b92b 100644
--- a/src/gr-recipe-printer.c
+++ b/src/gr-recipe-printer.c
@@ -198,7 +198,7 @@ begin_print (GtkPrintOperation *operation,
for (i = 0; ings[i]; i++) {
g_autofree char *unit = NULL;
- unit = gr_ingredients_list_scale_unit (ingredients, segs[j], ings[i], 1, 1);
+ unit = gr_ingredients_list_scale_unit (ingredients, segs[j], ings[i], 1.0);
g_string_append (s, unit);
g_string_append (s, " \n");
}
@@ -263,14 +263,14 @@ begin_print (GtkPrintOperation *operation,
g_string_append (s, "\n");
- unit = gr_ingredients_list_scale_unit (ingredients, segs[j], ings[i], 1, 1);
+ unit = gr_ingredients_list_scale_unit (ingredients, segs[j], ings[i], 1.0);
g_string_append (s, unit);
g_clear_pointer (&unit, g_free);
g_string_append (s, "\t");
g_string_append (s, ings[i]);
g_string_append (s, "\t");
if (mid + i < length) {
- unit = gr_ingredients_list_scale_unit (ingredients, segs[j],
ings[mid + i], 1, 1);
+ unit = gr_ingredients_list_scale_unit (ingredients, segs[j],
ings[mid + i], 1.0);
g_string_append (s, unit);
g_string_append (s, "\t");
g_string_append (s, ings[mid + i]);
@@ -282,7 +282,7 @@ begin_print (GtkPrintOperation *operation,
g_autofree char *unit = NULL;
g_string_append (s, "\n");
- unit = gr_ingredients_list_scale_unit (ingredients, segs[j], ings[i], 1, 1);
+ unit = gr_ingredients_list_scale_unit (ingredients, segs[j], ings[i], 1.0);
g_string_append (s, unit);
g_string_append (s, "\t");
g_string_append (s, ings[i]);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]