set color buttons to continuous update. Minor code cleanup.

2003-11-11  Sven Neumann  <sven@gimp.org>

	* plug-ins/script-fu/script-fu-scripts.c: set color buttons to
	continuous update. Minor code cleanup.
This commit is contained in:
Sven Neumann
2003-11-11 19:22:35 +00:00
committed by Sven Neumann
parent 8b2fba9e42
commit b41bbb60de
3 changed files with 397 additions and 392 deletions

View File

@ -1,3 +1,8 @@
2003-11-11 Sven Neumann <sven@gimp.org>
* plug-ins/script-fu/script-fu-scripts.c: set color buttons to
continuous update. Minor code cleanup.
2003-11-11 Dave Neary <bolsh@gimp.org> 2003-11-11 Dave Neary <bolsh@gimp.org>
* app/widgets/gimpdataeditor.c: Save data before disposing of * app/widgets/gimpdataeditor.c: Save data before disposing of

View File

@ -1195,6 +1195,7 @@ script_fu_interface (SFScript *script)
for (i = start_args; i < script->num_args; i++) for (i = start_args; i < script->num_args; i++)
{ {
GtkWidget *widget = NULL;
gchar *label_text; gchar *label_text;
gfloat label_yalign = 0.5; gfloat label_yalign = 0.5;
gboolean widget_leftalign = TRUE; gboolean widget_leftalign = TRUE;
@ -1210,7 +1211,7 @@ script_fu_interface (SFScript *script)
case SF_DRAWABLE: case SF_DRAWABLE:
case SF_LAYER: case SF_LAYER:
case SF_CHANNEL: case SF_CHANNEL:
sf_interface->args_widgets[i] = gtk_option_menu_new (); widget = gtk_option_menu_new ();
switch (script->arg_types[i]) switch (script->arg_types[i])
{ {
case SF_IMAGE: case SF_IMAGE:
@ -1241,19 +1242,18 @@ script_fu_interface (SFScript *script)
menu = NULL; menu = NULL;
break; break;
} }
gtk_option_menu_set_menu (GTK_OPTION_MENU (sf_interface->args_widgets[i]), gtk_option_menu_set_menu (GTK_OPTION_MENU (widget), menu);
menu);
break; break;
case SF_COLOR: case SF_COLOR:
sf_interface->args_widgets[i] = widget = gimp_color_button_new (_("Script-Fu Color Selection"),
gimp_color_button_new (_("Script-Fu Color Selection"), COLOR_SAMPLE_WIDTH,
COLOR_SAMPLE_WIDTH, COLOR_SAMPLE_HEIGHT, COLOR_SAMPLE_HEIGHT,
&script->arg_values[i].sfa_color, &script->arg_values[i].sfa_color,
GIMP_COLOR_AREA_FLAT); GIMP_COLOR_AREA_FLAT);
g_signal_connect (sf_interface->args_widgets[i], gimp_color_button_set_update (GIMP_COLOR_BUTTON (widget), TRUE);
"color_changed", g_signal_connect (widget, "color_changed",
G_CALLBACK (gimp_color_button_get_color), G_CALLBACK (gimp_color_button_get_color),
&script->arg_values[i].sfa_color); &script->arg_values[i].sfa_color);
break; break;
@ -1261,13 +1261,11 @@ script_fu_interface (SFScript *script)
case SF_TOGGLE: case SF_TOGGLE:
g_free (label_text); g_free (label_text);
label_text = NULL; label_text = NULL;
sf_interface->args_widgets[i] = widget = gtk_check_button_new_with_mnemonic (gettext (script->arg_labels[i]));
gtk_check_button_new_with_mnemonic (gettext (script->arg_labels[i])); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget),
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sf_interface->args_widgets[i]),
script->arg_values[i].sfa_toggle); script->arg_values[i].sfa_toggle);
g_signal_connect (sf_interface->args_widgets[i], g_signal_connect (widget, "toggled",
"toggled",
G_CALLBACK (gimp_toggle_button_update), G_CALLBACK (gimp_toggle_button_update),
&script->arg_values[i].sfa_toggle); &script->arg_values[i].sfa_toggle);
break; break;
@ -1276,10 +1274,9 @@ script_fu_interface (SFScript *script)
case SF_STRING: case SF_STRING:
widget_leftalign = FALSE; widget_leftalign = FALSE;
sf_interface->args_widgets[i] = gtk_entry_new (); widget = gtk_entry_new ();
gtk_widget_set_size_request (sf_interface->args_widgets[i], gtk_widget_set_size_request (widget, TEXT_WIDTH, -1);
TEXT_WIDTH, -1); gtk_entry_set_text (GTK_ENTRY (widget),
gtk_entry_set_text (GTK_ENTRY (sf_interface->args_widgets[i]),
script->arg_values[i].sfa_value); script->arg_values[i].sfa_value);
break; break;
@ -1307,14 +1304,12 @@ script_fu_interface (SFScript *script)
script->arg_defaults[i].sfa_adjustment.upper, script->arg_defaults[i].sfa_adjustment.upper,
script->arg_defaults[i].sfa_adjustment.step, script->arg_defaults[i].sfa_adjustment.step,
script->arg_defaults[i].sfa_adjustment.page, 0); script->arg_defaults[i].sfa_adjustment.page, 0);
sf_interface->args_widgets[i] = widget = gtk_spin_button_new (script->arg_values[i].sfa_adjustment.adj,
gtk_spin_button_new (script->arg_values[i].sfa_adjustment.adj,
0, 0,
script->arg_defaults[i].sfa_adjustment.digits); script->arg_defaults[i].sfa_adjustment.digits);
break; break;
default: /* this shouldn't happen */ default:
sf_interface->args_widgets[i] = NULL;
break; break;
} }
break; break;
@ -1324,21 +1319,17 @@ script_fu_interface (SFScript *script)
widget_leftalign = FALSE; widget_leftalign = FALSE;
if (script->arg_types[i] == SF_FILENAME) if (script->arg_types[i] == SF_FILENAME)
sf_interface->args_widgets[i] = widget = gimp_file_selection_new (_("Script-Fu File Selection"),
gimp_file_selection_new (_("Script-Fu File Selection"),
script->arg_values[i].sfa_file.filename, script->arg_values[i].sfa_file.filename,
FALSE, TRUE); FALSE, TRUE);
else else
sf_interface->args_widgets[i] = widget = gimp_file_selection_new (_("Script-Fu Folder Selection"),
gimp_file_selection_new (_("Script-Fu Folder Selection"),
script->arg_values[i].sfa_file.filename, script->arg_values[i].sfa_file.filename,
TRUE, TRUE); TRUE, TRUE);
script->arg_values[i].sfa_file.fileselection = script->arg_values[i].sfa_file.fileselection = widget;
sf_interface->args_widgets[i];
g_signal_connect (sf_interface->args_widgets[i], g_signal_connect (widget, "filename_changed",
"filename_changed",
G_CALLBACK (script_fu_file_selection_callback), G_CALLBACK (script_fu_file_selection_callback),
&script->arg_values[i].sfa_file); &script->arg_values[i].sfa_file);
break; break;
@ -1346,31 +1337,27 @@ script_fu_interface (SFScript *script)
case SF_FONT: case SF_FONT:
widget_leftalign = FALSE; widget_leftalign = FALSE;
sf_interface->args_widgets[i] = widget = gimp_font_select_widget_new (_("Script-Fu Font Selection"),
gimp_font_select_widget_new (_("Script-Fu Font Selection"),
script->arg_values[i].sfa_font, script->arg_values[i].sfa_font,
script_fu_font_preview, script_fu_font_preview,
&script->arg_values[i].sfa_font); &script->arg_values[i].sfa_font);
break; break;
case SF_PATTERN: case SF_PATTERN:
sf_interface->args_widgets[i] = widget = gimp_pattern_select_widget_new (_("Script-fu Pattern Selection"),
gimp_pattern_select_widget_new (_("Script-fu Pattern Selection"),
script->arg_values[i].sfa_pattern, script->arg_values[i].sfa_pattern,
script_fu_pattern_preview, script_fu_pattern_preview,
&script->arg_values[i].sfa_pattern); &script->arg_values[i].sfa_pattern);
break; break;
case SF_GRADIENT: case SF_GRADIENT:
sf_interface->args_widgets[i] = widget = gimp_gradient_select_widget_new (_("Script-Fu Gradient Selection"),
gimp_gradient_select_widget_new (_("Script-Fu Gradient Selection"),
script->arg_values[i].sfa_gradient, script->arg_values[i].sfa_gradient,
script_fu_gradient_preview, script_fu_gradient_preview,
&script->arg_values[i].sfa_gradient); &script->arg_values[i].sfa_gradient);
break; break;
case SF_BRUSH: case SF_BRUSH:
sf_interface->args_widgets[i] = widget = gimp_brush_select_widget_new (_("Script-Fu Brush Selection"),
gimp_brush_select_widget_new (_("Script-Fu Brush Selection"),
script->arg_values[i].sfa_brush.name, script->arg_values[i].sfa_brush.name,
script->arg_values[i].sfa_brush.opacity, script->arg_values[i].sfa_brush.opacity,
script->arg_values[i].sfa_brush.spacing, script->arg_values[i].sfa_brush.spacing,
@ -1380,7 +1367,7 @@ script_fu_interface (SFScript *script)
break; break;
case SF_OPTION: case SF_OPTION:
sf_interface->args_widgets[i] = gtk_option_menu_new (); widget = gtk_option_menu_new ();
menu = gtk_menu_new (); menu = gtk_menu_new ();
for (list = script->arg_defaults[i].sfa_option.list, j = 0; for (list = script->arg_defaults[i].sfa_option.list, j = 0;
list; list;
@ -1393,9 +1380,8 @@ script_fu_interface (SFScript *script)
gtk_widget_show (menu_item); gtk_widget_show (menu_item);
} }
gtk_option_menu_set_menu (GTK_OPTION_MENU (sf_interface->args_widgets[i]), gtk_option_menu_set_menu (GTK_OPTION_MENU (widget), menu);
menu); gtk_option_menu_set_history (GTK_OPTION_MENU (widget),
gtk_option_menu_set_history (GTK_OPTION_MENU (sf_interface->args_widgets[i]),
script->arg_values[i].sfa_option.history); script->arg_values[i].sfa_option.history);
break; break;
@ -1403,12 +1389,14 @@ script_fu_interface (SFScript *script)
break; break;
} }
if (sf_interface->args_widgets[i]) if (widget)
gimp_table_attach_aligned (GTK_TABLE (table), 0, i, gimp_table_attach_aligned (GTK_TABLE (table), 0, i,
label_text, 1.0, label_yalign, label_text, 1.0, label_yalign,
sf_interface->args_widgets[i], 2, widget, 2, widget_leftalign);
widget_leftalign);
g_free (label_text); g_free (label_text);
sf_interface->args_widgets[i] = widget;
} }
gtk_widget_show (table); gtk_widget_show (table);
@ -1578,6 +1566,9 @@ script_fu_ok (SFScript *script)
length = strlen (script->script_name) + 3; length = strlen (script->script_name) + 3;
for (i = 0; i < script->num_args; i++) for (i = 0; i < script->num_args; i++)
{
GtkWidget *widget = sf_interface->args_widgets[i];
switch (script->arg_types[i]) switch (script->arg_types[i])
{ {
case SF_IMAGE: case SF_IMAGE:
@ -1596,11 +1587,12 @@ script_fu_ok (SFScript *script)
break; break;
case SF_VALUE: case SF_VALUE:
length += strlen (gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i]))) + 1; length += strlen (gtk_entry_get_text (GTK_ENTRY (widget))) + 1;
break; break;
case SF_STRING: case SF_STRING:
escaped = g_strescape (gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i])), NULL); escaped = g_strescape (gtk_entry_get_text (GTK_ENTRY (widget)),
NULL);
length += strlen (escaped) + 3; length += strlen (escaped) + 3;
g_free (escaped); g_free (escaped);
break; break;
@ -1611,7 +1603,8 @@ script_fu_ok (SFScript *script)
case SF_FILENAME: case SF_FILENAME:
case SF_DIRNAME: case SF_DIRNAME:
escaped = g_strescape (script->arg_values[i].sfa_file.filename, NULL); escaped = g_strescape (script->arg_values[i].sfa_file.filename,
NULL);
length += strlen (escaped) + 3; length += strlen (escaped) + 3;
g_free (escaped); g_free (escaped);
break; break;
@ -1641,6 +1634,7 @@ script_fu_ok (SFScript *script)
default: default:
break; break;
} }
}
c = command = g_new (gchar, length); c = command = g_new (gchar, length);
@ -1648,6 +1642,8 @@ script_fu_ok (SFScript *script)
c += strlen (script->script_name) + 2; c += strlen (script->script_name) + 2;
for (i = 0; i < script->num_args; i++) for (i = 0; i < script->num_args; i++)
{ {
GtkWidget *widget = sf_interface->args_widgets[i];
switch (script->arg_types[i]) switch (script->arg_types[i])
{ {
case SF_IMAGE: case SF_IMAGE:
@ -1673,13 +1669,13 @@ script_fu_ok (SFScript *script)
break; break;
case SF_VALUE: case SF_VALUE:
text = (gchar *) gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i])); text = (gchar *) gtk_entry_get_text (GTK_ENTRY (widget));
g_free (script->arg_values[i].sfa_value); g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value = g_strdup (text); script->arg_values[i].sfa_value = g_strdup (text);
break; break;
case SF_STRING: case SF_STRING:
text = (gchar *) gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i])); text = (gchar *) gtk_entry_get_text (GTK_ENTRY (widget));
g_free (script->arg_values[i].sfa_value); g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value = g_strdup (text); script->arg_values[i].sfa_value = g_strdup (text);
escaped = g_strescape (text, NULL); escaped = g_strescape (text, NULL);
@ -1698,7 +1694,7 @@ script_fu_ok (SFScript *script)
case SF_SPINNER: case SF_SPINNER:
script->arg_values[i].sfa_adjustment.value = script->arg_values[i].sfa_adjustment.value =
gtk_spin_button_get_value (GTK_SPIN_BUTTON (sf_interface->args_widgets[i])); gtk_spin_button_get_value (GTK_SPIN_BUTTON (widget));
break; break;
default: default:
@ -1752,8 +1748,8 @@ script_fu_ok (SFScript *script)
break; break;
case SF_OPTION: case SF_OPTION:
menu_item = widget = gtk_option_menu_get_menu (GTK_OPTION_MENU (widget));
gtk_menu_get_active (GTK_MENU (gtk_option_menu_get_menu (GTK_OPTION_MENU (sf_interface->args_widgets[i])))); menu_item = gtk_menu_get_active (GTK_MENU (widget));
script->arg_values[i].sfa_option.history = script->arg_values[i].sfa_option.history =
GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (menu_item), GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (menu_item),
"gimp-item-data")); "gimp-item-data"));
@ -1786,6 +1782,9 @@ script_fu_reset (SFScript *script)
gint i; gint i;
for (i = 0; i < script->num_args; i++) for (i = 0; i < script->num_args; i++)
{
GtkWidget *widget = sf_interface->args_widgets[i];
switch (script->arg_types[i]) switch (script->arg_types[i])
{ {
case SF_IMAGE: case SF_IMAGE:
@ -1796,13 +1795,13 @@ script_fu_reset (SFScript *script)
case SF_COLOR: case SF_COLOR:
script->arg_values[i].sfa_color = script->arg_defaults[i].sfa_color; script->arg_values[i].sfa_color = script->arg_defaults[i].sfa_color;
gimp_color_button_set_color (GIMP_COLOR_BUTTON (sf_interface->args_widgets[i]), gimp_color_button_set_color (GIMP_COLOR_BUTTON (widget),
&script->arg_values[i].sfa_color); &script->arg_values[i].sfa_color);
break; break;
case SF_TOGGLE: case SF_TOGGLE:
script->arg_values[i].sfa_toggle = script->arg_defaults[i].sfa_toggle; script->arg_values[i].sfa_toggle = script->arg_defaults[i].sfa_toggle;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sf_interface->args_widgets[i]), gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget),
script->arg_values[i].sfa_toggle); script->arg_values[i].sfa_toggle);
break; break;
@ -1811,7 +1810,7 @@ script_fu_reset (SFScript *script)
g_free (script->arg_values[i].sfa_value); g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value = script->arg_values[i].sfa_value =
g_strdup (script->arg_defaults[i].sfa_value); g_strdup (script->arg_defaults[i].sfa_value);
gtk_entry_set_text (GTK_ENTRY (sf_interface->args_widgets[i]), gtk_entry_set_text (GTK_ENTRY (widget),
script->arg_values[i].sfa_value); script->arg_values[i].sfa_value);
break; break;
@ -1833,22 +1832,22 @@ script_fu_reset (SFScript *script)
break; break;
case SF_FONT: case SF_FONT:
gimp_font_select_widget_set (sf_interface->args_widgets[i], gimp_font_select_widget_set (widget,
script->arg_defaults[i].sfa_font); script->arg_defaults[i].sfa_font);
break; break;
case SF_PATTERN: case SF_PATTERN:
gimp_pattern_select_widget_set (sf_interface->args_widgets[i], gimp_pattern_select_widget_set (widget,
script->arg_defaults[i].sfa_pattern); script->arg_defaults[i].sfa_pattern);
break; break;
case SF_GRADIENT: case SF_GRADIENT:
gimp_gradient_select_widget_set (sf_interface->args_widgets[i], gimp_gradient_select_widget_set (widget,
script->arg_defaults[i].sfa_gradient); script->arg_defaults[i].sfa_gradient);
break; break;
case SF_BRUSH: case SF_BRUSH:
gimp_brush_select_widget_set (sf_interface->args_widgets[i], gimp_brush_select_widget_set (widget,
script->arg_defaults[i].sfa_brush.name, script->arg_defaults[i].sfa_brush.name,
script->arg_defaults[i].sfa_brush.opacity, script->arg_defaults[i].sfa_brush.opacity,
script->arg_defaults[i].sfa_brush.spacing, script->arg_defaults[i].sfa_brush.spacing,
@ -1858,13 +1857,14 @@ script_fu_reset (SFScript *script)
case SF_OPTION: case SF_OPTION:
script->arg_values[i].sfa_option.history = script->arg_values[i].sfa_option.history =
script->arg_defaults[i].sfa_option.history; script->arg_defaults[i].sfa_option.history;
gtk_option_menu_set_history (GTK_OPTION_MENU (sf_interface->args_widgets[i]), gtk_option_menu_set_history (GTK_OPTION_MENU (widget),
script->arg_values[i].sfa_option.history); script->arg_values[i].sfa_option.history);
default: default:
break; break;
} }
} }
}
static void static void
script_fu_about_callback (GtkWidget *widget, script_fu_about_callback (GtkWidget *widget,

View File

@ -1195,6 +1195,7 @@ script_fu_interface (SFScript *script)
for (i = start_args; i < script->num_args; i++) for (i = start_args; i < script->num_args; i++)
{ {
GtkWidget *widget = NULL;
gchar *label_text; gchar *label_text;
gfloat label_yalign = 0.5; gfloat label_yalign = 0.5;
gboolean widget_leftalign = TRUE; gboolean widget_leftalign = TRUE;
@ -1210,7 +1211,7 @@ script_fu_interface (SFScript *script)
case SF_DRAWABLE: case SF_DRAWABLE:
case SF_LAYER: case SF_LAYER:
case SF_CHANNEL: case SF_CHANNEL:
sf_interface->args_widgets[i] = gtk_option_menu_new (); widget = gtk_option_menu_new ();
switch (script->arg_types[i]) switch (script->arg_types[i])
{ {
case SF_IMAGE: case SF_IMAGE:
@ -1241,19 +1242,18 @@ script_fu_interface (SFScript *script)
menu = NULL; menu = NULL;
break; break;
} }
gtk_option_menu_set_menu (GTK_OPTION_MENU (sf_interface->args_widgets[i]), gtk_option_menu_set_menu (GTK_OPTION_MENU (widget), menu);
menu);
break; break;
case SF_COLOR: case SF_COLOR:
sf_interface->args_widgets[i] = widget = gimp_color_button_new (_("Script-Fu Color Selection"),
gimp_color_button_new (_("Script-Fu Color Selection"), COLOR_SAMPLE_WIDTH,
COLOR_SAMPLE_WIDTH, COLOR_SAMPLE_HEIGHT, COLOR_SAMPLE_HEIGHT,
&script->arg_values[i].sfa_color, &script->arg_values[i].sfa_color,
GIMP_COLOR_AREA_FLAT); GIMP_COLOR_AREA_FLAT);
g_signal_connect (sf_interface->args_widgets[i], gimp_color_button_set_update (GIMP_COLOR_BUTTON (widget), TRUE);
"color_changed", g_signal_connect (widget, "color_changed",
G_CALLBACK (gimp_color_button_get_color), G_CALLBACK (gimp_color_button_get_color),
&script->arg_values[i].sfa_color); &script->arg_values[i].sfa_color);
break; break;
@ -1261,13 +1261,11 @@ script_fu_interface (SFScript *script)
case SF_TOGGLE: case SF_TOGGLE:
g_free (label_text); g_free (label_text);
label_text = NULL; label_text = NULL;
sf_interface->args_widgets[i] = widget = gtk_check_button_new_with_mnemonic (gettext (script->arg_labels[i]));
gtk_check_button_new_with_mnemonic (gettext (script->arg_labels[i])); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget),
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sf_interface->args_widgets[i]),
script->arg_values[i].sfa_toggle); script->arg_values[i].sfa_toggle);
g_signal_connect (sf_interface->args_widgets[i], g_signal_connect (widget, "toggled",
"toggled",
G_CALLBACK (gimp_toggle_button_update), G_CALLBACK (gimp_toggle_button_update),
&script->arg_values[i].sfa_toggle); &script->arg_values[i].sfa_toggle);
break; break;
@ -1276,10 +1274,9 @@ script_fu_interface (SFScript *script)
case SF_STRING: case SF_STRING:
widget_leftalign = FALSE; widget_leftalign = FALSE;
sf_interface->args_widgets[i] = gtk_entry_new (); widget = gtk_entry_new ();
gtk_widget_set_size_request (sf_interface->args_widgets[i], gtk_widget_set_size_request (widget, TEXT_WIDTH, -1);
TEXT_WIDTH, -1); gtk_entry_set_text (GTK_ENTRY (widget),
gtk_entry_set_text (GTK_ENTRY (sf_interface->args_widgets[i]),
script->arg_values[i].sfa_value); script->arg_values[i].sfa_value);
break; break;
@ -1307,14 +1304,12 @@ script_fu_interface (SFScript *script)
script->arg_defaults[i].sfa_adjustment.upper, script->arg_defaults[i].sfa_adjustment.upper,
script->arg_defaults[i].sfa_adjustment.step, script->arg_defaults[i].sfa_adjustment.step,
script->arg_defaults[i].sfa_adjustment.page, 0); script->arg_defaults[i].sfa_adjustment.page, 0);
sf_interface->args_widgets[i] = widget = gtk_spin_button_new (script->arg_values[i].sfa_adjustment.adj,
gtk_spin_button_new (script->arg_values[i].sfa_adjustment.adj,
0, 0,
script->arg_defaults[i].sfa_adjustment.digits); script->arg_defaults[i].sfa_adjustment.digits);
break; break;
default: /* this shouldn't happen */ default:
sf_interface->args_widgets[i] = NULL;
break; break;
} }
break; break;
@ -1324,21 +1319,17 @@ script_fu_interface (SFScript *script)
widget_leftalign = FALSE; widget_leftalign = FALSE;
if (script->arg_types[i] == SF_FILENAME) if (script->arg_types[i] == SF_FILENAME)
sf_interface->args_widgets[i] = widget = gimp_file_selection_new (_("Script-Fu File Selection"),
gimp_file_selection_new (_("Script-Fu File Selection"),
script->arg_values[i].sfa_file.filename, script->arg_values[i].sfa_file.filename,
FALSE, TRUE); FALSE, TRUE);
else else
sf_interface->args_widgets[i] = widget = gimp_file_selection_new (_("Script-Fu Folder Selection"),
gimp_file_selection_new (_("Script-Fu Folder Selection"),
script->arg_values[i].sfa_file.filename, script->arg_values[i].sfa_file.filename,
TRUE, TRUE); TRUE, TRUE);
script->arg_values[i].sfa_file.fileselection = script->arg_values[i].sfa_file.fileselection = widget;
sf_interface->args_widgets[i];
g_signal_connect (sf_interface->args_widgets[i], g_signal_connect (widget, "filename_changed",
"filename_changed",
G_CALLBACK (script_fu_file_selection_callback), G_CALLBACK (script_fu_file_selection_callback),
&script->arg_values[i].sfa_file); &script->arg_values[i].sfa_file);
break; break;
@ -1346,31 +1337,27 @@ script_fu_interface (SFScript *script)
case SF_FONT: case SF_FONT:
widget_leftalign = FALSE; widget_leftalign = FALSE;
sf_interface->args_widgets[i] = widget = gimp_font_select_widget_new (_("Script-Fu Font Selection"),
gimp_font_select_widget_new (_("Script-Fu Font Selection"),
script->arg_values[i].sfa_font, script->arg_values[i].sfa_font,
script_fu_font_preview, script_fu_font_preview,
&script->arg_values[i].sfa_font); &script->arg_values[i].sfa_font);
break; break;
case SF_PATTERN: case SF_PATTERN:
sf_interface->args_widgets[i] = widget = gimp_pattern_select_widget_new (_("Script-fu Pattern Selection"),
gimp_pattern_select_widget_new (_("Script-fu Pattern Selection"),
script->arg_values[i].sfa_pattern, script->arg_values[i].sfa_pattern,
script_fu_pattern_preview, script_fu_pattern_preview,
&script->arg_values[i].sfa_pattern); &script->arg_values[i].sfa_pattern);
break; break;
case SF_GRADIENT: case SF_GRADIENT:
sf_interface->args_widgets[i] = widget = gimp_gradient_select_widget_new (_("Script-Fu Gradient Selection"),
gimp_gradient_select_widget_new (_("Script-Fu Gradient Selection"),
script->arg_values[i].sfa_gradient, script->arg_values[i].sfa_gradient,
script_fu_gradient_preview, script_fu_gradient_preview,
&script->arg_values[i].sfa_gradient); &script->arg_values[i].sfa_gradient);
break; break;
case SF_BRUSH: case SF_BRUSH:
sf_interface->args_widgets[i] = widget = gimp_brush_select_widget_new (_("Script-Fu Brush Selection"),
gimp_brush_select_widget_new (_("Script-Fu Brush Selection"),
script->arg_values[i].sfa_brush.name, script->arg_values[i].sfa_brush.name,
script->arg_values[i].sfa_brush.opacity, script->arg_values[i].sfa_brush.opacity,
script->arg_values[i].sfa_brush.spacing, script->arg_values[i].sfa_brush.spacing,
@ -1380,7 +1367,7 @@ script_fu_interface (SFScript *script)
break; break;
case SF_OPTION: case SF_OPTION:
sf_interface->args_widgets[i] = gtk_option_menu_new (); widget = gtk_option_menu_new ();
menu = gtk_menu_new (); menu = gtk_menu_new ();
for (list = script->arg_defaults[i].sfa_option.list, j = 0; for (list = script->arg_defaults[i].sfa_option.list, j = 0;
list; list;
@ -1393,9 +1380,8 @@ script_fu_interface (SFScript *script)
gtk_widget_show (menu_item); gtk_widget_show (menu_item);
} }
gtk_option_menu_set_menu (GTK_OPTION_MENU (sf_interface->args_widgets[i]), gtk_option_menu_set_menu (GTK_OPTION_MENU (widget), menu);
menu); gtk_option_menu_set_history (GTK_OPTION_MENU (widget),
gtk_option_menu_set_history (GTK_OPTION_MENU (sf_interface->args_widgets[i]),
script->arg_values[i].sfa_option.history); script->arg_values[i].sfa_option.history);
break; break;
@ -1403,12 +1389,14 @@ script_fu_interface (SFScript *script)
break; break;
} }
if (sf_interface->args_widgets[i]) if (widget)
gimp_table_attach_aligned (GTK_TABLE (table), 0, i, gimp_table_attach_aligned (GTK_TABLE (table), 0, i,
label_text, 1.0, label_yalign, label_text, 1.0, label_yalign,
sf_interface->args_widgets[i], 2, widget, 2, widget_leftalign);
widget_leftalign);
g_free (label_text); g_free (label_text);
sf_interface->args_widgets[i] = widget;
} }
gtk_widget_show (table); gtk_widget_show (table);
@ -1578,6 +1566,9 @@ script_fu_ok (SFScript *script)
length = strlen (script->script_name) + 3; length = strlen (script->script_name) + 3;
for (i = 0; i < script->num_args; i++) for (i = 0; i < script->num_args; i++)
{
GtkWidget *widget = sf_interface->args_widgets[i];
switch (script->arg_types[i]) switch (script->arg_types[i])
{ {
case SF_IMAGE: case SF_IMAGE:
@ -1596,11 +1587,12 @@ script_fu_ok (SFScript *script)
break; break;
case SF_VALUE: case SF_VALUE:
length += strlen (gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i]))) + 1; length += strlen (gtk_entry_get_text (GTK_ENTRY (widget))) + 1;
break; break;
case SF_STRING: case SF_STRING:
escaped = g_strescape (gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i])), NULL); escaped = g_strescape (gtk_entry_get_text (GTK_ENTRY (widget)),
NULL);
length += strlen (escaped) + 3; length += strlen (escaped) + 3;
g_free (escaped); g_free (escaped);
break; break;
@ -1611,7 +1603,8 @@ script_fu_ok (SFScript *script)
case SF_FILENAME: case SF_FILENAME:
case SF_DIRNAME: case SF_DIRNAME:
escaped = g_strescape (script->arg_values[i].sfa_file.filename, NULL); escaped = g_strescape (script->arg_values[i].sfa_file.filename,
NULL);
length += strlen (escaped) + 3; length += strlen (escaped) + 3;
g_free (escaped); g_free (escaped);
break; break;
@ -1641,6 +1634,7 @@ script_fu_ok (SFScript *script)
default: default:
break; break;
} }
}
c = command = g_new (gchar, length); c = command = g_new (gchar, length);
@ -1648,6 +1642,8 @@ script_fu_ok (SFScript *script)
c += strlen (script->script_name) + 2; c += strlen (script->script_name) + 2;
for (i = 0; i < script->num_args; i++) for (i = 0; i < script->num_args; i++)
{ {
GtkWidget *widget = sf_interface->args_widgets[i];
switch (script->arg_types[i]) switch (script->arg_types[i])
{ {
case SF_IMAGE: case SF_IMAGE:
@ -1673,13 +1669,13 @@ script_fu_ok (SFScript *script)
break; break;
case SF_VALUE: case SF_VALUE:
text = (gchar *) gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i])); text = (gchar *) gtk_entry_get_text (GTK_ENTRY (widget));
g_free (script->arg_values[i].sfa_value); g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value = g_strdup (text); script->arg_values[i].sfa_value = g_strdup (text);
break; break;
case SF_STRING: case SF_STRING:
text = (gchar *) gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i])); text = (gchar *) gtk_entry_get_text (GTK_ENTRY (widget));
g_free (script->arg_values[i].sfa_value); g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value = g_strdup (text); script->arg_values[i].sfa_value = g_strdup (text);
escaped = g_strescape (text, NULL); escaped = g_strescape (text, NULL);
@ -1698,7 +1694,7 @@ script_fu_ok (SFScript *script)
case SF_SPINNER: case SF_SPINNER:
script->arg_values[i].sfa_adjustment.value = script->arg_values[i].sfa_adjustment.value =
gtk_spin_button_get_value (GTK_SPIN_BUTTON (sf_interface->args_widgets[i])); gtk_spin_button_get_value (GTK_SPIN_BUTTON (widget));
break; break;
default: default:
@ -1752,8 +1748,8 @@ script_fu_ok (SFScript *script)
break; break;
case SF_OPTION: case SF_OPTION:
menu_item = widget = gtk_option_menu_get_menu (GTK_OPTION_MENU (widget));
gtk_menu_get_active (GTK_MENU (gtk_option_menu_get_menu (GTK_OPTION_MENU (sf_interface->args_widgets[i])))); menu_item = gtk_menu_get_active (GTK_MENU (widget));
script->arg_values[i].sfa_option.history = script->arg_values[i].sfa_option.history =
GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (menu_item), GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (menu_item),
"gimp-item-data")); "gimp-item-data"));
@ -1786,6 +1782,9 @@ script_fu_reset (SFScript *script)
gint i; gint i;
for (i = 0; i < script->num_args; i++) for (i = 0; i < script->num_args; i++)
{
GtkWidget *widget = sf_interface->args_widgets[i];
switch (script->arg_types[i]) switch (script->arg_types[i])
{ {
case SF_IMAGE: case SF_IMAGE:
@ -1796,13 +1795,13 @@ script_fu_reset (SFScript *script)
case SF_COLOR: case SF_COLOR:
script->arg_values[i].sfa_color = script->arg_defaults[i].sfa_color; script->arg_values[i].sfa_color = script->arg_defaults[i].sfa_color;
gimp_color_button_set_color (GIMP_COLOR_BUTTON (sf_interface->args_widgets[i]), gimp_color_button_set_color (GIMP_COLOR_BUTTON (widget),
&script->arg_values[i].sfa_color); &script->arg_values[i].sfa_color);
break; break;
case SF_TOGGLE: case SF_TOGGLE:
script->arg_values[i].sfa_toggle = script->arg_defaults[i].sfa_toggle; script->arg_values[i].sfa_toggle = script->arg_defaults[i].sfa_toggle;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sf_interface->args_widgets[i]), gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget),
script->arg_values[i].sfa_toggle); script->arg_values[i].sfa_toggle);
break; break;
@ -1811,7 +1810,7 @@ script_fu_reset (SFScript *script)
g_free (script->arg_values[i].sfa_value); g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value = script->arg_values[i].sfa_value =
g_strdup (script->arg_defaults[i].sfa_value); g_strdup (script->arg_defaults[i].sfa_value);
gtk_entry_set_text (GTK_ENTRY (sf_interface->args_widgets[i]), gtk_entry_set_text (GTK_ENTRY (widget),
script->arg_values[i].sfa_value); script->arg_values[i].sfa_value);
break; break;
@ -1833,22 +1832,22 @@ script_fu_reset (SFScript *script)
break; break;
case SF_FONT: case SF_FONT:
gimp_font_select_widget_set (sf_interface->args_widgets[i], gimp_font_select_widget_set (widget,
script->arg_defaults[i].sfa_font); script->arg_defaults[i].sfa_font);
break; break;
case SF_PATTERN: case SF_PATTERN:
gimp_pattern_select_widget_set (sf_interface->args_widgets[i], gimp_pattern_select_widget_set (widget,
script->arg_defaults[i].sfa_pattern); script->arg_defaults[i].sfa_pattern);
break; break;
case SF_GRADIENT: case SF_GRADIENT:
gimp_gradient_select_widget_set (sf_interface->args_widgets[i], gimp_gradient_select_widget_set (widget,
script->arg_defaults[i].sfa_gradient); script->arg_defaults[i].sfa_gradient);
break; break;
case SF_BRUSH: case SF_BRUSH:
gimp_brush_select_widget_set (sf_interface->args_widgets[i], gimp_brush_select_widget_set (widget,
script->arg_defaults[i].sfa_brush.name, script->arg_defaults[i].sfa_brush.name,
script->arg_defaults[i].sfa_brush.opacity, script->arg_defaults[i].sfa_brush.opacity,
script->arg_defaults[i].sfa_brush.spacing, script->arg_defaults[i].sfa_brush.spacing,
@ -1858,13 +1857,14 @@ script_fu_reset (SFScript *script)
case SF_OPTION: case SF_OPTION:
script->arg_values[i].sfa_option.history = script->arg_values[i].sfa_option.history =
script->arg_defaults[i].sfa_option.history; script->arg_defaults[i].sfa_option.history;
gtk_option_menu_set_history (GTK_OPTION_MENU (sf_interface->args_widgets[i]), gtk_option_menu_set_history (GTK_OPTION_MENU (widget),
script->arg_values[i].sfa_option.history); script->arg_values[i].sfa_option.history);
default: default:
break; break;
} }
} }
}
static void static void
script_fu_about_callback (GtkWidget *widget, script_fu_about_callback (GtkWidget *widget,