plug-ins/script-fu/script-fu-enums.h

2004-09-23  Sven Neumann  <sven@gimp.org>

	* plug-ins/script-fu/script-fu-enums.h
	* plug-ins/script-fu/script-fu-interface.c
	* plug-ins/script-fu/script-fu-scripts.c
	* plug-ins/script-fu/siod-wrapper.c: applied a patch by Kevin
	Cozens, based on a patch by Dov Grobgeld. Implements multi-line
	text input in Script-Fu (bug #124394).

	* plug-ins/script-fu/scripts/test-sphere.scm: test the new SF-TEXT
	parameter.
This commit is contained in:
Sven Neumann
2004-09-23 18:19:24 +00:00
committed by Sven Neumann
parent 64fd668c7f
commit b36cb4f0b4
7 changed files with 101 additions and 5 deletions

View File

@ -78,6 +78,8 @@ static void script_fu_about (SFScript *script);
static void script_fu_string_callback (GtkWidget *widget,
gchar **value);
static void script_fu_text_callback (GtkWidget *widget,
gchar **value);
static void script_fu_file_entry_callback (GtkWidget *widget,
SFFilename *file);
static void script_fu_combo_callback (GtkWidget *widget,
@ -348,6 +350,26 @@ script_fu_interface (SFScript *script)
&script->arg_values[i].sfa_value);
break;
case SF_TEXT:
{
GtkTextBuffer *text_buf;
leftalign = FALSE;
widget = gtk_text_view_new ();
text_buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
gtk_text_view_set_editable (GTK_TEXT_VIEW (widget), TRUE);
gtk_widget_set_size_request (widget, TEXT_WIDTH, -1);
gtk_text_buffer_set_text (text_buf,
script->arg_values[i].sfa_value, -1);
g_signal_connect (text_buf, "modified-changed",
G_CALLBACK (script_fu_text_callback),
&script->arg_values[i].sfa_value);
}
break;
case SF_ADJUSTMENT:
switch (script->arg_defaults[i].sfa_adjustment.type)
{
@ -581,6 +603,24 @@ script_fu_string_callback (GtkWidget *widget,
*value = g_strdup (gtk_entry_get_text (GTK_ENTRY (widget)));
}
static void
script_fu_text_callback (GtkWidget *widget,
gchar **value)
{
GtkTextBuffer *text_buf;
GtkTextIter start, end;
gchar *text;
if (*value)
g_free (*value);
text_buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
gtk_text_buffer_get_start_iter (text_buf, &start);
gtk_text_buffer_get_end_iter (text_buf, &end);
text = (gchar *) gtk_text_buffer_get_text (text_buf, &start, &end, FALSE);
*value = g_strdup (text);
}
static void
script_fu_file_entry_callback (GtkWidget *widget,
SFFilename *file)
@ -750,6 +790,26 @@ script_fu_ok (SFScript *script)
g_free (escaped);
break;
case SF_TEXT:
{
GtkTextBuffer *text_buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (sf_interface->args_widgets[i]));
GtkTextIter start, end;
gchar *text;
gtk_text_buffer_get_start_iter (text_buf, &start);
gtk_text_buffer_get_end_iter (text_buf, &end);
text = (gchar *) gtk_text_buffer_get_text (text_buf,
&start, &end, FALSE);
g_free (arg_value->sfa_value);
arg_value->sfa_value = g_strdup (text);
escaped = g_strescape (text, NULL);
g_string_append_printf (s, "\"%s\"", escaped);
g_free (escaped);
g_free (text);
}
break;
case SF_ADJUSTMENT:
g_ascii_dtostr (buffer, sizeof (buffer),
arg_value->sfa_adjustment.value);
@ -843,6 +903,20 @@ script_fu_reset (SFScript *script)
script->arg_defaults[i].sfa_value);
break;
case SF_TEXT:
{
GtkTextBuffer *buffer;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value =
g_strdup (script->arg_defaults[i].sfa_value);
gtk_text_buffer_set_text (buffer,
script->arg_values[i].sfa_value, -1);
}
break;
case SF_ADJUSTMENT:
gtk_adjustment_set_value (script->arg_values[i].sfa_adjustment.adj,
script->arg_defaults[i].sfa_adjustment.value);