add new functions script_fu_script_get_title() and

2008-09-19  Michael Natterer  <mitch@gimp.org>

	* plug-ins/script-fu/script-fu-script.[ch]: add new functions
	script_fu_script_get_title() and script_fu_script_reset().

	* plug-ins/script-fu/script-fu-scripts.c (script_fu_add_script):
	don't set all default values *and* values when parsing the script,
	just set the defaults and call script_fu_script_reset() afterwards.

	* plug-ins/script-fu/script-fu-interface.c (script_fu_interface):
	use the new script_fu_script_get_title().

	(script_fu_reset): call script_fu_script_reset() and then update
	the UI from the current values, instead of doing slightly
	different things for each arg type.


svn path=/trunk/; revision=27009
This commit is contained in:
Michael Natterer
2008-09-19 09:34:35 +00:00
committed by Michael Natterer
parent 39e7f1016f
commit cb702ebd1e
5 changed files with 178 additions and 87 deletions

View File

@ -30,6 +30,8 @@
#include "script-fu-script.h"
#include "script-fu-scripts.h"
#include "script-fu-intl.h"
/*
* Local Functions
@ -324,6 +326,127 @@ script_fu_script_uninstall_proc (SFScript *script)
gimp_uninstall_temp_proc (script->name);
}
gchar *
script_fu_script_get_title (SFScript *script)
{
gchar *title;
gchar *tmp;
g_return_val_if_fail (script != NULL, NULL);
/* strip mnemonics from the menupath */
title = gimp_strip_uline (gettext (script->menu_path));
/* if this looks like a full menu path, use only the last part */
if (title[0] == '<' && (tmp = strrchr (title, '/')) && tmp[1])
{
tmp = g_strdup (tmp + 1);
g_free (title);
title = tmp;
}
/* cut off ellipsis */
tmp = (strstr (title, "..."));
if (! tmp)
/* U+2026 HORIZONTAL ELLIPSIS */
tmp = strstr (title, "\342\200\246");
if (tmp && tmp == (title + strlen (title) - 3))
*tmp = '\0';
return title;
}
void
script_fu_script_reset (SFScript *script,
gboolean reset_ids)
{
gint i;
g_return_if_fail (script != NULL);
for (i = 0; i < script->n_args; i++)
{
SFArgValue *value = &script->args[i].value;
SFArgValue *default_value = &script->args[i].default_value;
switch (script->args[i].type)
{
case SF_IMAGE:
case SF_DRAWABLE:
case SF_LAYER:
case SF_CHANNEL:
case SF_VECTORS:
case SF_DISPLAY:
if (reset_ids)
value->sfa_image = default_value->sfa_image;
break;
case SF_COLOR:
value->sfa_color = default_value->sfa_color;
break;
case SF_TOGGLE:
value->sfa_toggle = default_value->sfa_toggle;
break;
case SF_VALUE:
case SF_STRING:
case SF_TEXT:
g_free (value->sfa_value);
value->sfa_value = g_strdup (default_value->sfa_value);
break;
case SF_ADJUSTMENT:
value->sfa_adjustment.value = default_value->sfa_adjustment.value;
break;
case SF_FILENAME:
case SF_DIRNAME:
g_free (value->sfa_file.filename);
value->sfa_file.filename = g_strdup (default_value->sfa_file.filename);
break;
case SF_FONT:
g_free (value->sfa_font);
value->sfa_font = g_strdup (default_value->sfa_font);
break;
case SF_PALETTE:
g_free (value->sfa_palette);
value->sfa_palette = g_strdup (default_value->sfa_palette);
break;
case SF_PATTERN:
g_free (value->sfa_pattern);
value->sfa_pattern = g_strdup (default_value->sfa_pattern);
break;
case SF_GRADIENT:
g_free (value->sfa_gradient);
value->sfa_gradient = g_strdup (default_value->sfa_gradient);
break;
case SF_BRUSH:
g_free (value->sfa_brush.name);
value->sfa_brush.name = g_strdup (default_value->sfa_brush.name);
value->sfa_brush.opacity = default_value->sfa_brush.opacity;
value->sfa_brush.spacing = default_value->sfa_brush.spacing;
value->sfa_brush.paint_mode = default_value->sfa_brush.paint_mode;
break;
case SF_OPTION:
value->sfa_option.history = default_value->sfa_option.history;
break;
case SF_ENUM:
value->sfa_enum.history = default_value->sfa_enum.history;
break;
}
}
}
gint
script_fu_script_collect_standard_args (SFScript *script,
gint n_params,