libgimp/Makefile.am libgimp/gimp.h libgimp/gimpui.h

2004-07-27  Michael Natterer  <mitch@gimp.org>

	* libgimp/Makefile.am
	* libgimp/gimp.h
	* libgimp/gimpui.h
	* libgimp/gimppalettemenu.[ch]
	* libgimp/gimppaletteselect.[ch]: added palette select wrapper and
	widget (straight copy & string replace of the font select stuff).
	Fixes bug #136130.

	* plug-ins/script-fu/script-fu-enums.h
	* plug-ins/script-fu/script-fu-scripts.c
	* plug-ins/script-fu/siod-wrapper.c: added SF_PALETTE so it can
	be used in scripts.

	* plug-ins/script-fu/scripts/test-sphere.scm: added a palette
	parameter to the test script.
This commit is contained in:
Michael Natterer
2004-07-27 15:15:58 +00:00
committed by Michael Natterer
parent 9b5862e79b
commit 820b4d247b
14 changed files with 665 additions and 2 deletions

View File

@ -100,6 +100,7 @@ typedef union
SFFilename sfa_file;
gchar *sfa_font;
gchar *sfa_gradient;
gchar *sfa_palette;
gchar *sfa_pattern;
SFBrush sfa_brush;
SFOption sfa_option;
@ -191,6 +192,9 @@ static void script_fu_gradient_callback (const gchar *name,
static void script_fu_font_callback (const gchar *name,
gboolean closing,
gpointer data);
static void script_fu_palette_callback (const gchar *name,
gboolean closing,
gpointer data);
static void script_fu_brush_callback (const gchar *name,
gdouble opacity,
gint spacing,
@ -539,6 +543,19 @@ script_fu_add_script (LISP a)
args[i + 1].description = script->arg_labels[i];
break;
case SF_PALETTE:
if (!TYPEP (car (a), tc_string))
return my_err ("script-fu-register: palette defaults must be string values", NIL);
script->arg_defaults[i].sfa_palette =
g_strdup (get_c_string (car (a)));
script->arg_values[i].sfa_palette =
g_strdup (script->arg_defaults[i].sfa_palette);
args[i + 1].type = GIMP_PDB_STRING;
args[i + 1].name = "palette";
args[i + 1].description = script->arg_labels[i];
break;
case SF_PATTERN:
if (!TYPEP (car (a), tc_string))
return my_err ("script-fu-register: pattern defaults must be string values", NIL);
@ -835,6 +852,7 @@ script_fu_script_proc (const gchar *name,
break;
case SF_FONT:
case SF_PALETTE:
case SF_PATTERN:
case SF_GRADIENT:
case SF_BRUSH:
@ -905,6 +923,7 @@ script_fu_script_proc (const gchar *name,
break;
case SF_FONT:
case SF_PALETTE:
case SF_PATTERN:
case SF_GRADIENT:
case SF_BRUSH:
@ -1034,6 +1053,11 @@ script_fu_free_script (SFScript *script)
g_free (script->arg_values[i].sfa_font);
break;
case SF_PALETTE:
g_free (script->arg_defaults[i].sfa_palette);
g_free (script->arg_values[i].sfa_palette);
break;
case SF_PATTERN:
g_free (script->arg_defaults[i].sfa_pattern);
g_free (script->arg_values[i].sfa_pattern);
@ -1329,6 +1353,13 @@ script_fu_interface (SFScript *script)
&script->arg_values[i].sfa_font);
break;
case SF_PALETTE:
widget = gimp_palette_select_widget_new (_("Script-Fu Palette Selection"),
script->arg_values[i].sfa_palette,
script_fu_palette_callback,
&script->arg_values[i].sfa_palette);
break;
case SF_PATTERN:
leftalign = TRUE;
widget = gimp_pattern_select_widget_new (_("Script-fu Pattern Selection"),
@ -1418,6 +1449,10 @@ script_fu_interface_quit (SFScript *script)
gimp_font_select_widget_close (sf_interface->args_widgets[i]);
break;
case SF_PALETTE:
gimp_palette_select_widget_close (sf_interface->args_widgets[i]);
break;
case SF_PATTERN:
gimp_pattern_select_widget_close (sf_interface->args_widgets[i]);
break;
@ -1488,6 +1523,17 @@ script_fu_font_callback (const gchar *name,
*fname = g_strdup (name);
}
static void
script_fu_palette_callback (const gchar *name,
gboolean closing,
gpointer data)
{
gchar **fname = data;
g_free (*fname);
*fname = g_strdup (name);
}
static void
script_fu_brush_callback (const gchar *name,
gdouble opacity,
@ -1592,6 +1638,10 @@ script_fu_ok (SFScript *script)
length += strlen (script->arg_values[i].sfa_font) + 3;
break;
case SF_PALETTE:
length += strlen (script->arg_values[i].sfa_palette) + 3;
break;
case SF_PATTERN:
length += strlen (script->arg_values[i].sfa_pattern) + 3;
break;
@ -1698,6 +1748,12 @@ script_fu_ok (SFScript *script)
text = buffer;
break;
case SF_PALETTE:
g_snprintf (buffer, sizeof (buffer), "\"%s\"",
script->arg_values[i].sfa_palette);
text = buffer;
break;
case SF_PATTERN:
g_snprintf (buffer, sizeof (buffer), "\"%s\"",
script->arg_values[i].sfa_pattern);
@ -1813,6 +1869,11 @@ script_fu_reset (SFScript *script)
script->arg_defaults[i].sfa_font);
break;
case SF_PALETTE:
gimp_palette_select_widget_set (widget,
script->arg_defaults[i].sfa_palette);
break;
case SF_PATTERN:
gimp_pattern_select_widget_set (widget,
script->arg_defaults[i].sfa_pattern);