app/patterns.c app/pattern_select.c app/internal_procs.c app/patterns.h

Thu Oct  1 22:39:14 BST 1998 Andy Thomas <alt@picnic.demon.co.uk>

	* app/patterns.c app/pattern_select.c app/internal_procs.c
	* app/patterns.h app/pattern_select.h app/plug_in.c
	* libgimp/gimpmenu.h libgimp/gimpmenu.c libgimp/Makefile.am
	* plug-ins/gfig/gfig.c plug-ins/script-fu/scripts/test-sphere.scm
	* plug-ins/script-fu/script-fu.c plug-ins/script-fu/script-fu-enums.h
	* plug-ins/script-fu/script-fu-scripts.c

	* New libgimp/gimppatternmenu.c

	Pattern dialog can now be controlled via the PDB. New widget (not true
	widget) type added to libgimpui (gimp_pattern_select_widget()). Plugins
	should easily be able to control & select patterns. Script-fu
	updated to use new widget. See the test script for example.
This commit is contained in:
BST 1998 Andy Thomas
1998-10-01 22:09:01 +00:00
committed by Andy Thomas
parent c615f15e73
commit e99f37ab19
38 changed files with 1876 additions and 98 deletions

View File

@ -79,6 +79,7 @@ typedef union
gchar * sfa_value;
SFAdjustment sfa_adjustment;
SFFont sfa_font;
gchar * sfa_pattern;
} SFArgValue;
typedef struct
@ -166,6 +167,16 @@ static void script_fu_about_dialog_close (GtkWidget *widget,
static gint script_fu_about_dialog_delete (GtkWidget *widget,
GdkEvent *event,
gpointer data);
static void script_fu_pattern_preview (gchar *name,
gint width,
gint height,
gint bytes,
gchar * mask_data,
gint closing,
gpointer udata);
/*
* Local variables
@ -549,7 +560,18 @@ script_fu_add_script (LISP a)
args[i + 1].name = "font";
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);
script->arg_defaults[i].sfa_pattern = g_strdup (get_c_string (car (a)));
script->arg_values[i].sfa_pattern = g_strdup (script->arg_defaults[i].sfa_pattern);
args[i + 1].type = PARAM_STRING;
args[i + 1].name = "pattern";
args[i + 1].description = script->arg_labels[i];
break;
break;
default:
@ -700,6 +722,9 @@ script_fu_script_proc (char *name,
case SF_FONT:
length += strlen (params[i + 1].data.d_string) + 3;
break;
case SF_PATTERN:
length += strlen (params[i + 1].data.d_string) + 3;
break;
default:
break;
}
@ -746,6 +771,10 @@ script_fu_script_proc (char *name,
g_snprintf (buffer, MAX_STRING_LENGTH, "\"%s\"", params[i + 1].data.d_string);
text = buffer;
break;
case SF_PATTERN:
g_snprintf (buffer, MAX_STRING_LENGTH, "\"%s\"", params[i + 1].data.d_string);
text = buffer;
break;
default:
break;
}
@ -839,6 +868,9 @@ script_fu_free_script (SFScript *script)
g_free (script->arg_defaults[i].sfa_font.fontname);
g_free (script->arg_values[i].sfa_font.fontname);
break;
case SF_PATTERN:
g_free (script->arg_defaults[i].sfa_pattern);
g_free (script->arg_values[i].sfa_pattern);
default:
break;
}
@ -1093,6 +1125,13 @@ script_fu_interface (SFScript *script)
(GtkSignalFunc) script_fu_font_preview_callback,
&script->arg_values[i].sfa_font);
break;
case SF_PATTERN:
script->args_widgets[i] = gimp_pattern_select_widget("Script-fu Pattern Selection",
script->arg_values[i].sfa_pattern,
script_fu_pattern_preview,
&script->arg_values[i].sfa_pattern);
break;
default:
break;
}
@ -1104,7 +1143,7 @@ script_fu_interface (SFScript *script)
gtk_table_attach (GTK_TABLE (table), hbox, /* script->args_widgets[i], */
1, 2, i, i + 1,
GTK_FILL | (((script->arg_types[i] == SF_VALUE) || (script->arg_types[i] == SF_STRING) || (script->arg_types[i] == SF_FONT))
GTK_FILL | (((script->arg_types[i] == SF_VALUE) || (script->arg_types[i] == SF_STRING) || (script->arg_types[i] == SF_FONT))
? GTK_EXPAND : 0),
GTK_FILL, 4, 2);
gtk_widget_show (script->args_widgets[i]);
@ -1196,6 +1235,22 @@ script_fu_color_preview (GtkWidget *preview,
gtk_widget_draw (preview, NULL);
}
static void
script_fu_pattern_preview(gchar *name,
gint width,
gint height,
gint bytes,
gchar * mask_data,
gint closing,
gpointer udata)
{
gchar ** pname = (gchar **) udata;
g_free(*pname);
*pname = g_strdup(name);
}
static void
script_fu_font_preview (GtkWidget *preview,
gchar *data)
@ -1262,6 +1317,9 @@ script_fu_cleanup_widgets (SFScript *script)
script->arg_values[i].sfa_font.dialog = NULL;
}
break;
case SF_PATTERN:
gimp_pattern_select_widget_close_popup(script->args_widgets[i]);
break;
default:
break;
}
@ -1325,6 +1383,9 @@ script_fu_ok_callback (GtkWidget *widget,
case SF_FONT:
length += strlen (script->arg_values[i].sfa_font.fontname) + 3;
break;
case SF_PATTERN:
length += strlen (script->arg_values[i].sfa_pattern) + 3;
break;
default:
break;
}
@ -1387,6 +1448,10 @@ script_fu_ok_callback (GtkWidget *widget,
g_snprintf (buffer, MAX_STRING_LENGTH, "\"%s\"", script->arg_values[i].sfa_font.fontname);
text = buffer;
break;
case SF_PATTERN:
g_snprintf (buffer, MAX_STRING_LENGTH, "\"%s\"",script->arg_values[i].sfa_pattern);
text = buffer;
break;
default:
break;
}
@ -1621,6 +1686,9 @@ script_fu_reset_callback (GtkWidget *widget,
script_fu_font_preview (script->arg_values[i].sfa_font.preview,
script->arg_values[i].sfa_font.fontname);
break;
case SF_PATTERN:
gimp_pattern_select_widget_set_popup(script->args_widgets[i],script->arg_defaults[i].sfa_pattern);
break;
default:
break;
}