This commit is contained in:
lloyd konneker
2022-08-06 07:39:25 -04:00
parent 81391d82f1
commit ceddb0d369

View File

@ -81,7 +81,7 @@
static void pspec_set_default_file (GParamSpec *pspec, const gchar *filepath); static void pspec_set_default_file (GParamSpec *pspec, const gchar *filepath);
static void append_int_repr_from_gvalue (GString *result_string, GValue *gvalue);
/* Free any allocated members. /* Free any allocated members.
* Somewhat hides what members of the SFArg struct are allocated. * Somewhat hides what members of the SFArg struct are allocated.
@ -386,13 +386,22 @@ script_fu_arg_get_param_spec (SFArg *arg,
break; break;
case SF_ADJUSTMENT: case SF_ADJUSTMENT:
pspec = g_param_spec_double (name, /* switch on number of decimal places aka "digits
nick, * !!! on the default value, not the current value.
arg->label, * Decimal places == 0 means type integer, else float
arg->default_value.sfa_adjustment.lower, */
arg->default_value.sfa_adjustment.upper, if (arg->default_value.sfa_adjustment.digits == 0)
arg->default_value.sfa_adjustment.value, pspec = g_param_spec_int (name, nick, arg->label,
G_PARAM_READWRITE); arg->default_value.sfa_adjustment.lower,
arg->default_value.sfa_adjustment.upper,
arg->default_value.sfa_adjustment.value,
G_PARAM_READWRITE);
else
pspec = g_param_spec_double (name, nick, arg->label,
arg->default_value.sfa_adjustment.lower,
arg->default_value.sfa_adjustment.upper,
arg->default_value.sfa_adjustment.value,
G_PARAM_READWRITE);
break; break;
case SF_FILENAME: case SF_FILENAME:
@ -450,7 +459,7 @@ script_fu_arg_append_repr_from_gvalue (SFArg *arg,
GString *result_string, GString *result_string,
GValue *gvalue) GValue *gvalue)
{ {
g_debug("script_fu_arg_append_repr_from_gvalue %s", arg->label); g_debug ("script_fu_arg_append_repr_from_gvalue %s", arg->label);
switch (arg->type) switch (arg->type)
{ {
case SF_IMAGE: case SF_IMAGE:
@ -543,10 +552,17 @@ script_fu_arg_append_repr_from_gvalue (SFArg *arg,
case SF_ADJUSTMENT: case SF_ADJUSTMENT:
{ {
gchar buffer[G_ASCII_DTOSTR_BUF_SIZE]; if (arg->default_value.sfa_adjustment.digits != 0)
{
gchar buffer[G_ASCII_DTOSTR_BUF_SIZE];
g_ascii_dtostr (buffer, sizeof (buffer), g_value_get_double (gvalue)); g_ascii_dtostr (buffer, sizeof (buffer), g_value_get_double (gvalue));
g_string_append (result_string, buffer); g_string_append (result_string, buffer);
}
else
{
append_int_repr_from_gvalue (result_string, gvalue);
}
} }
break; break;
@ -559,18 +575,7 @@ script_fu_arg_append_repr_from_gvalue (SFArg *arg,
break; break;
case SF_OPTION: case SF_OPTION:
if (G_VALUE_HOLDS_INT (gvalue)) append_int_repr_from_gvalue (result_string, gvalue);
{
g_string_append_printf (result_string, "%d", g_value_get_int (gvalue));
}
else
{
g_warning ("Expecting GValue holding an int.");
/* Append arbitrary int, so no errors in signature of Scheme call.
* The call might not yield result the user intended.
*/
g_string_append (result_string, "1");
}
break; break;
case SF_ENUM: case SF_ENUM:
@ -597,6 +602,8 @@ script_fu_arg_append_repr_from_gvalue (SFArg *arg,
* *
* Used when the PDB procedure implemented by the script is being calling interactively, * Used when the PDB procedure implemented by the script is being calling interactively,
* after a GUI dialog has written user's choices into self's value. * after a GUI dialog has written user's choices into self's value.
*
* This method is slated for deletion when script-fu-interface.c is deleted.
*/ */
void void
script_fu_arg_append_repr_from_self (SFArg *arg, script_fu_arg_append_repr_from_self (SFArg *arg,
@ -872,3 +879,23 @@ pspec_set_default_file (GParamSpec *pspec, const gchar *filepath)
g_value_set_object (&gvalue, gfile); g_value_set_object (&gvalue, gfile);
g_param_value_set_default (pspec, &gvalue); g_param_value_set_default (pspec, &gvalue);
} }
/* Append a string repr of an integer valued gvalue to given GString.
* When the gvalue doesn't hold an integer, warn and append arbitrary int literal.
*/
static void
append_int_repr_from_gvalue (GString *result_string, GValue *gvalue)
{
if (G_VALUE_HOLDS_INT (gvalue))
{
g_string_append_printf (result_string, "%d", g_value_get_int (gvalue));
}
else
{
g_warning ("Expecting GValue holding an int.");
/* Append arbitrary int, so no errors in signature of Scheme call.
* The call might not yield result the user intended.
*/
g_string_append (result_string, "1");
}
}