code formating paranoia.

2001-07-29  Michael Natterer  <mitch@gimp.org>

	* app/gimphelp.c: code formating paranoia.

	* app/core/gimp.c: one more g_signal_connect().

	* app/tools/gimpmeasuretool.c: a gtk_widget_show() was optimized
	away :)

	* plug-ins/Makefile.am: re-enabled script-fu and dbbrowser.

	* plug-ins/dbbrowser/dbbrowser_utils.[ch]
	* plug-ins/script-fu/script-fu-console.[ch]
	* plug-ins/script-fu/script-fu-scripts.c
	* plug-ins/script-fu/script-fu-text-console.[ch]
	* plug-ins/script-fu/script-fu.c: use GtkTextBuffer/GtkTextView
	all over the place. GUI code cleanup in the dbbrowser and
	the script-fu console.
This commit is contained in:
Michael Natterer
2001-07-30 00:46:09 +00:00
committed by Michael Natterer
parent b906b3947f
commit 8d9931f719
20 changed files with 1345 additions and 1609 deletions

View File

@ -1,3 +1,22 @@
2001-07-29 Michael Natterer <mitch@gimp.org>
* app/gimphelp.c: code formating paranoia.
* app/core/gimp.c: one more g_signal_connect().
* app/tools/gimpmeasuretool.c: a gtk_widget_show() was optimized
away :)
* plug-ins/Makefile.am: re-enabled script-fu and dbbrowser.
* plug-ins/dbbrowser/dbbrowser_utils.[ch]
* plug-ins/script-fu/script-fu-console.[ch]
* plug-ins/script-fu/script-fu-scripts.c
* plug-ins/script-fu/script-fu-text-console.[ch]
* plug-ins/script-fu/script-fu.c: use GtkTextBuffer/GtkTextView
all over the place. GUI code cleanup in the dbbrowser and
the script-fu console.
2001-07-29 Sven Neumann <sven@gimp.org>
* app/devices.c

View File

@ -570,9 +570,10 @@ gimp_create_context (Gimp *gimp,
gimp->context_list = g_list_prepend (gimp->context_list, context);
gtk_signal_connect (GTK_OBJECT (context), "destroy",
GTK_SIGNAL_FUNC (gimp_context_destroy_callback),
gimp);
g_signal_connect_object (G_OBJECT (context), "destroy",
G_CALLBACK (gimp_context_destroy_callback),
G_OBJECT (gimp),
0);
return context;
}

View File

@ -208,13 +208,13 @@ gimp_help_internal (const gchar *help_path,
}
args = g_new (Argument, 4);
args[0].arg_type = GIMP_PDB_INT32;
args[0].value.pdb_int = RUN_INTERACTIVE;
args[1].arg_type = GIMP_PDB_STRING;
args[0].arg_type = GIMP_PDB_INT32;
args[0].value.pdb_int = RUN_INTERACTIVE;
args[1].arg_type = GIMP_PDB_STRING;
args[1].value.pdb_pointer = (gpointer) help_path;
args[2].arg_type = GIMP_PDB_STRING;
args[2].arg_type = GIMP_PDB_STRING;
args[2].value.pdb_pointer = (gpointer) current_locale;
args[3].arg_type = GIMP_PDB_STRING;
args[3].arg_type = GIMP_PDB_STRING;
args[3].value.pdb_pointer = (gpointer) help_data;
plug_in_run (proc_rec, args, 4, FALSE, TRUE, 0);

View File

@ -814,6 +814,7 @@ measure_tool_options_new (void)
options->use_info_window_d);
gtk_box_pack_start (GTK_BOX (vbox), options->use_info_window_w,
FALSE, FALSE, 0);
gtk_widget_show (options->use_info_window_w);
g_signal_connect (G_OBJECT (options->use_info_window_w), "toggled",
G_CALLBACK (gimp_toggle_button_update),

View File

@ -208,13 +208,13 @@ gimp_help_internal (const gchar *help_path,
}
args = g_new (Argument, 4);
args[0].arg_type = GIMP_PDB_INT32;
args[0].value.pdb_int = RUN_INTERACTIVE;
args[1].arg_type = GIMP_PDB_STRING;
args[0].arg_type = GIMP_PDB_INT32;
args[0].value.pdb_int = RUN_INTERACTIVE;
args[1].arg_type = GIMP_PDB_STRING;
args[1].value.pdb_pointer = (gpointer) help_path;
args[2].arg_type = GIMP_PDB_STRING;
args[2].arg_type = GIMP_PDB_STRING;
args[2].value.pdb_pointer = (gpointer) current_locale;
args[3].arg_type = GIMP_PDB_STRING;
args[3].arg_type = GIMP_PDB_STRING;
args[3].value.pdb_pointer = (gpointer) help_data;
plug_in_run (proc_rec, args, 4, FALSE, TRUE, 0);

View File

@ -61,7 +61,7 @@ typedef struct
GtkWidget *name_button;
GtkWidget *blurb_button;
GtkWidget *descr_scroll;
GtkWidget *descr_vbox;
GtkWidget *descr_table;
GtkWidget *clist;
@ -120,18 +120,7 @@ GList * proc_table = NULL;
* console_entry != NULL => called from the script-fu-console
*/
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *proc_name,
gchar *scheme_proc_name,
gchar *proc_blurb,
gchar *proc_help,
gchar *proc_author,
gchar *proc_copyright,
gchar *proc_date,
GimpPDBProcType proc_type,
gint nparams,
gint nreturn_vals,
GimpParamDef *params,
GimpParamDef *return_vals))
gimp_db_browser (GimpDBBrowserApplyCallback apply_callback)
{
dbbrowser_t* dbbrowser;
@ -139,6 +128,7 @@ gimp_db_browser (void (* apply_callback) (gchar *proc_name,
GtkWidget *searchhbox;
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *scrolled_window;
dbbrowser = g_new (dbbrowser_t, 1);
@ -188,87 +178,90 @@ gimp_db_browser (void (* apply_callback) (gchar *proc_name,
dbbrowser);
/* hbox : left=list ; right=description */
hbox = gtk_hbox_new (FALSE, 0);
hbox = gtk_hbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->vbox),
hbox, TRUE, TRUE, 0);
gtk_widget_show (hbox);
/* left = vbox : the list and the search entry */
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
gtk_box_pack_start (GTK_BOX (hbox),
vbox, FALSE, TRUE, 0);
gtk_widget_show(vbox);
vbox = gtk_vbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
gtk_widget_show (vbox);
/* list : list in a scrolled_win */
dbbrowser->clist = gtk_clist_new (1);
dbbrowser->scrolled_win = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->scrolled_win),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (vbox), dbbrowser->scrolled_win, TRUE, TRUE, 0);
gtk_widget_show (dbbrowser->scrolled_win);
dbbrowser->clist = gtk_clist_new (1);
gtk_widget_set_usize (dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
gtk_clist_set_selection_mode (GTK_CLIST (dbbrowser->clist),
GTK_SELECTION_BROWSE);
gtk_widget_set_usize (dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->clist), "select_row",
(GtkSignalFunc) procedure_select_callback,
dbbrowser);
gtk_box_pack_start (GTK_BOX (vbox), dbbrowser->scrolled_win, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (dbbrowser->scrolled_win), dbbrowser->clist);
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->scrolled_win);
g_signal_connect (G_OBJECT (dbbrowser->clist), "select_row",
G_CALLBACK (procedure_select_callback),
dbbrowser);
/* search entry */
searchhbox = gtk_hbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), searchhbox, FALSE, FALSE, 0);
gtk_widget_show (searchhbox);
label = gtk_label_new (_("Search:"));
gtk_misc_set_alignment( GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox),
label, TRUE, TRUE, 0);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
dbbrowser->search_entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (searchhbox),
dbbrowser->search_entry, TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->search_entry);
gtk_box_pack_start (GTK_BOX (searchhbox), dbbrowser->search_entry,
TRUE, TRUE, 0);
gtk_widget_show (dbbrowser->search_entry);
/* right = description */
dbbrowser->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
GTK_POLICY_ALWAYS,
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_set_usize (scrolled_window, DBL_WIDTH - DBL_LIST_WIDTH, 0);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (hbox),
dbbrowser->descr_scroll, TRUE, TRUE, 0);
gtk_widget_set_usize (dbbrowser->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, 0);
gtk_widget_show (dbbrowser->descr_scroll);
gtk_box_pack_start (GTK_BOX (hbox), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
dbbrowser->descr_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (dbbrowser->descr_vbox), 4);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window),
dbbrowser->descr_vbox);
gtk_widget_show (dbbrowser->descr_vbox);
/* now build the list */
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->dlg);
/* initialize the "return" value (for "apply") */
dbbrowser->descr_table = NULL;
dbbrowser->selected_proc_name = NULL;
dbbrowser->descr_table = NULL;
dbbrowser->selected_proc_name = NULL;
dbbrowser->selected_scheme_proc_name = NULL;
dbbrowser->selected_proc_blurb = NULL;
dbbrowser->selected_proc_help = NULL;
dbbrowser->selected_proc_author = NULL;
dbbrowser->selected_proc_copyright = NULL;
dbbrowser->selected_proc_date = NULL;
dbbrowser->selected_proc_type = 0;
dbbrowser->selected_nparams = 0;
dbbrowser->selected_nreturn_vals = 0;
dbbrowser->selected_params = NULL;
dbbrowser->selected_return_vals = NULL;
dbbrowser->selected_proc_blurb = NULL;
dbbrowser->selected_proc_help = NULL;
dbbrowser->selected_proc_author = NULL;
dbbrowser->selected_proc_copyright = NULL;
dbbrowser->selected_proc_date = NULL;
dbbrowser->selected_proc_type = 0;
dbbrowser->selected_nparams = 0;
dbbrowser->selected_nreturn_vals = 0;
dbbrowser->selected_params = NULL;
dbbrowser->selected_return_vals = NULL;
/* first search (all procedures) */
dialog_search_callback (NULL, (gpointer) dbbrowser);
@ -284,7 +277,7 @@ procedure_select_callback (GtkWidget *widget,
gpointer data)
{
dbbrowser_t *dbbrowser = data;
gchar *func;
gchar *func;
g_return_val_if_fail (widget != NULL, FALSE);
/* g_return_val_if_fail (bevent != NULL, FALSE); */
@ -300,12 +293,15 @@ static void
dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name)
{
GtkWidget *label;
GtkWidget *old_table;
GtkWidget *help;
GtkWidget *text = NULL;
GtkWidget *vscrollbar;
gint i, row = 0;
GtkWidget *old_table;
GtkWidget *label;
GtkWidget *entry;
GtkWidget *sep;
GtkWidget *scrolled_window;
GtkWidget *text_view;
GtkTextBuffer *text_buffer = NULL;
gint i;
gint row = 0;
g_free (dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup (proc_name);
@ -333,51 +329,41 @@ dialog_select (dbbrowser_t *dbbrowser,
&(dbbrowser->selected_nreturn_vals),
&(dbbrowser->selected_params),
&(dbbrowser->selected_return_vals));
/* save the "old" table */
old_table = dbbrowser->descr_table;
dbbrowser->descr_table = gtk_table_new
(10 + dbbrowser->selected_nparams + dbbrowser->selected_nreturn_vals,
5, FALSE);
dbbrowser->descr_table = gtk_table_new (10 +
dbbrowser->selected_nparams +
dbbrowser->selected_nreturn_vals,
5, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 4);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 6);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), 0, 2);
/* show the name */
label = gtk_label_new (_("Name:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
entry = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (entry), dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable (GTK_ENTRY (entry), FALSE);
label = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (label), dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable (GTK_ENTRY (label), FALSE);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Name:"), 1.0, 0.5,
entry, 3, FALSE);
/* show the description */
label = gtk_label_new (_("Blurb:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1, GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
label = gtk_label_new (dbbrowser->selected_proc_blurb);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Blurb:"), 1.0, 0.5,
label, 3, FALSE);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
/* in parameters */
@ -386,9 +372,10 @@ dialog_select (dbbrowser_t *dbbrowser,
label = gtk_label_new (_("In:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+(dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 3, 0);
0, 1, row, row + (dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nparams; i++)
{
/* name */
@ -411,7 +398,7 @@ dialog_select (dbbrowser_t *dbbrowser,
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
}
}
@ -419,11 +406,10 @@ dialog_select (dbbrowser_t *dbbrowser,
if ((dbbrowser->selected_nparams) &&
(dbbrowser->selected_nreturn_vals))
{
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1,
GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
}
@ -433,151 +419,111 @@ dialog_select (dbbrowser_t *dbbrowser,
label = gtk_label_new (_("Out:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+(dbbrowser->selected_nreturn_vals),
GTK_FILL, GTK_FILL, 3, 0);
0, 1, row, row + (dbbrowser->selected_nreturn_vals),
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nreturn_vals; i++)
{
/* name */
label = gtk_label_new ((dbbrowser->selected_return_vals[i]).name);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 2, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
1, 2, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
/* type */
label = gtk_label_new (GParamType2char((dbbrowser->selected_return_vals[i]).type));
label = gtk_label_new (GParamType2char (dbbrowser->selected_return_vals[i].type));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
2, 3, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
2, 3, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
/* description */
label = gtk_label_new ((dbbrowser->selected_return_vals[i]).description);
label = gtk_label_new (dbbrowser->selected_return_vals[i].description);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
}
}
if ((dbbrowser->selected_nparams) ||
(dbbrowser->selected_nreturn_vals))
if (dbbrowser->selected_nparams ||
dbbrowser->selected_nreturn_vals)
{
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1,
GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
row++;
}
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
}
/* show the help */
if ((dbbrowser->selected_proc_help) &&
if (dbbrowser->selected_proc_help &&
(strlen (dbbrowser->selected_proc_help) > 1))
{
label = gtk_label_new (_("Help:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
help = gtk_table_new (2, 2, FALSE);
gtk_table_set_row_spacing (GTK_TABLE (help), 0, 2);
gtk_table_set_col_spacing (GTK_TABLE (help), 0, 2);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), help,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (help);
row++;
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap (GTK_TEXT (text), TRUE);
gtk_widget_set_usize (text, -1, 60);
gtk_table_attach (GTK_TABLE (help), text, 0, 1, 0, 1,
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (text);
vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
gtk_table_attach (GTK_TABLE (help), vscrollbar, 1, 2, 0, 1,
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (vscrollbar);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Help:"), 1.0, 0.5,
scrolled_window, 3, FALSE);
text_buffer = gtk_text_buffer_new (NULL);
text_view = gtk_text_view_new_with_buffer (text_buffer);
g_object_unref (G_OBJECT (text_buffer));
gtk_text_buffer_set_text (text_buffer, dbbrowser->selected_proc_help, -1);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD);
gtk_widget_set_usize (text_view, -1, 60);
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
gtk_widget_show (text_view);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
row++;
}
/* show the author & the copyright */
label = gtk_label_new (_("Author:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
label = gtk_label_new (dbbrowser->selected_proc_author);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_label_new (_("Date:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Author:"), 1.0, 0.5,
label, 3, FALSE);
label = gtk_label_new (dbbrowser->selected_proc_date);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_label_new (_("Copyright:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Date:"), 1.0, 0.5,
label, 3, FALSE);
label = gtk_label_new (dbbrowser->selected_proc_copyright);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Copyright:"), 1.0, 0.5,
label, 3, FALSE);
if (old_table)
gtk_widget_destroy (old_table);
gtk_container_remove (GTK_CONTAINER (dbbrowser->descr_vbox), old_table);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
dbbrowser->descr_table);
/* now after the table is added to a window add the text */
if (text != NULL)
{
gtk_widget_realize (text);
gtk_text_freeze (GTK_TEXT (text));
gtk_text_insert (GTK_TEXT (text), NULL, NULL, NULL,
dbbrowser->selected_proc_help, -1);
gtk_text_thaw (GTK_TEXT (text));
}
gtk_box_pack_start (GTK_BOX (dbbrowser->descr_vbox), dbbrowser->descr_table,
FALSE, FALSE, 0);
gtk_widget_show (dbbrowser->descr_table);
}
@ -628,12 +574,14 @@ static void
dialog_search_callback (GtkWidget *widget,
gpointer data)
{
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t* dbbrowser = data;
gchar *func_name, *label, *query_text;
GString *query;
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t *dbbrowser = data;
gchar *func_name;
gchar *label;
gchar *query_text;
GString *query;
gtk_clist_freeze (GTK_CLIST (dbbrowser->clist));
gtk_clist_clear (GTK_CLIST (dbbrowser->clist));
@ -669,8 +617,8 @@ dialog_search_callback (GtkWidget *widget,
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by blurb - please wait)"));
gimp_procedural_db_query (".*",
gtk_entry_get_text(
GTK_ENTRY(dbbrowser->search_entry) ),
gtk_entry_get_text
(GTK_ENTRY (dbbrowser->search_entry)),
".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
@ -745,7 +693,6 @@ dialog_search_callback (GtkWidget *widget,
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser"));
gtk_clist_thaw (GTK_CLIST (dbbrowser->clist));
}
/* utils ... */

View File

@ -61,7 +61,7 @@ typedef struct
GtkWidget *name_button;
GtkWidget *blurb_button;
GtkWidget *descr_scroll;
GtkWidget *descr_vbox;
GtkWidget *descr_table;
GtkWidget *clist;
@ -120,18 +120,7 @@ GList * proc_table = NULL;
* console_entry != NULL => called from the script-fu-console
*/
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *proc_name,
gchar *scheme_proc_name,
gchar *proc_blurb,
gchar *proc_help,
gchar *proc_author,
gchar *proc_copyright,
gchar *proc_date,
GimpPDBProcType proc_type,
gint nparams,
gint nreturn_vals,
GimpParamDef *params,
GimpParamDef *return_vals))
gimp_db_browser (GimpDBBrowserApplyCallback apply_callback)
{
dbbrowser_t* dbbrowser;
@ -139,6 +128,7 @@ gimp_db_browser (void (* apply_callback) (gchar *proc_name,
GtkWidget *searchhbox;
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *scrolled_window;
dbbrowser = g_new (dbbrowser_t, 1);
@ -188,87 +178,90 @@ gimp_db_browser (void (* apply_callback) (gchar *proc_name,
dbbrowser);
/* hbox : left=list ; right=description */
hbox = gtk_hbox_new (FALSE, 0);
hbox = gtk_hbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->vbox),
hbox, TRUE, TRUE, 0);
gtk_widget_show (hbox);
/* left = vbox : the list and the search entry */
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
gtk_box_pack_start (GTK_BOX (hbox),
vbox, FALSE, TRUE, 0);
gtk_widget_show(vbox);
vbox = gtk_vbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
gtk_widget_show (vbox);
/* list : list in a scrolled_win */
dbbrowser->clist = gtk_clist_new (1);
dbbrowser->scrolled_win = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->scrolled_win),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (vbox), dbbrowser->scrolled_win, TRUE, TRUE, 0);
gtk_widget_show (dbbrowser->scrolled_win);
dbbrowser->clist = gtk_clist_new (1);
gtk_widget_set_usize (dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
gtk_clist_set_selection_mode (GTK_CLIST (dbbrowser->clist),
GTK_SELECTION_BROWSE);
gtk_widget_set_usize (dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->clist), "select_row",
(GtkSignalFunc) procedure_select_callback,
dbbrowser);
gtk_box_pack_start (GTK_BOX (vbox), dbbrowser->scrolled_win, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (dbbrowser->scrolled_win), dbbrowser->clist);
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->scrolled_win);
g_signal_connect (G_OBJECT (dbbrowser->clist), "select_row",
G_CALLBACK (procedure_select_callback),
dbbrowser);
/* search entry */
searchhbox = gtk_hbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), searchhbox, FALSE, FALSE, 0);
gtk_widget_show (searchhbox);
label = gtk_label_new (_("Search:"));
gtk_misc_set_alignment( GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox),
label, TRUE, TRUE, 0);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
dbbrowser->search_entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (searchhbox),
dbbrowser->search_entry, TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->search_entry);
gtk_box_pack_start (GTK_BOX (searchhbox), dbbrowser->search_entry,
TRUE, TRUE, 0);
gtk_widget_show (dbbrowser->search_entry);
/* right = description */
dbbrowser->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
GTK_POLICY_ALWAYS,
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_set_usize (scrolled_window, DBL_WIDTH - DBL_LIST_WIDTH, 0);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (hbox),
dbbrowser->descr_scroll, TRUE, TRUE, 0);
gtk_widget_set_usize (dbbrowser->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, 0);
gtk_widget_show (dbbrowser->descr_scroll);
gtk_box_pack_start (GTK_BOX (hbox), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
dbbrowser->descr_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (dbbrowser->descr_vbox), 4);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window),
dbbrowser->descr_vbox);
gtk_widget_show (dbbrowser->descr_vbox);
/* now build the list */
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->dlg);
/* initialize the "return" value (for "apply") */
dbbrowser->descr_table = NULL;
dbbrowser->selected_proc_name = NULL;
dbbrowser->descr_table = NULL;
dbbrowser->selected_proc_name = NULL;
dbbrowser->selected_scheme_proc_name = NULL;
dbbrowser->selected_proc_blurb = NULL;
dbbrowser->selected_proc_help = NULL;
dbbrowser->selected_proc_author = NULL;
dbbrowser->selected_proc_copyright = NULL;
dbbrowser->selected_proc_date = NULL;
dbbrowser->selected_proc_type = 0;
dbbrowser->selected_nparams = 0;
dbbrowser->selected_nreturn_vals = 0;
dbbrowser->selected_params = NULL;
dbbrowser->selected_return_vals = NULL;
dbbrowser->selected_proc_blurb = NULL;
dbbrowser->selected_proc_help = NULL;
dbbrowser->selected_proc_author = NULL;
dbbrowser->selected_proc_copyright = NULL;
dbbrowser->selected_proc_date = NULL;
dbbrowser->selected_proc_type = 0;
dbbrowser->selected_nparams = 0;
dbbrowser->selected_nreturn_vals = 0;
dbbrowser->selected_params = NULL;
dbbrowser->selected_return_vals = NULL;
/* first search (all procedures) */
dialog_search_callback (NULL, (gpointer) dbbrowser);
@ -284,7 +277,7 @@ procedure_select_callback (GtkWidget *widget,
gpointer data)
{
dbbrowser_t *dbbrowser = data;
gchar *func;
gchar *func;
g_return_val_if_fail (widget != NULL, FALSE);
/* g_return_val_if_fail (bevent != NULL, FALSE); */
@ -300,12 +293,15 @@ static void
dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name)
{
GtkWidget *label;
GtkWidget *old_table;
GtkWidget *help;
GtkWidget *text = NULL;
GtkWidget *vscrollbar;
gint i, row = 0;
GtkWidget *old_table;
GtkWidget *label;
GtkWidget *entry;
GtkWidget *sep;
GtkWidget *scrolled_window;
GtkWidget *text_view;
GtkTextBuffer *text_buffer = NULL;
gint i;
gint row = 0;
g_free (dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup (proc_name);
@ -333,51 +329,41 @@ dialog_select (dbbrowser_t *dbbrowser,
&(dbbrowser->selected_nreturn_vals),
&(dbbrowser->selected_params),
&(dbbrowser->selected_return_vals));
/* save the "old" table */
old_table = dbbrowser->descr_table;
dbbrowser->descr_table = gtk_table_new
(10 + dbbrowser->selected_nparams + dbbrowser->selected_nreturn_vals,
5, FALSE);
dbbrowser->descr_table = gtk_table_new (10 +
dbbrowser->selected_nparams +
dbbrowser->selected_nreturn_vals,
5, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 4);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 6);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), 0, 2);
/* show the name */
label = gtk_label_new (_("Name:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
entry = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (entry), dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable (GTK_ENTRY (entry), FALSE);
label = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (label), dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable (GTK_ENTRY (label), FALSE);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Name:"), 1.0, 0.5,
entry, 3, FALSE);
/* show the description */
label = gtk_label_new (_("Blurb:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1, GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
label = gtk_label_new (dbbrowser->selected_proc_blurb);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Blurb:"), 1.0, 0.5,
label, 3, FALSE);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
/* in parameters */
@ -386,9 +372,10 @@ dialog_select (dbbrowser_t *dbbrowser,
label = gtk_label_new (_("In:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+(dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 3, 0);
0, 1, row, row + (dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nparams; i++)
{
/* name */
@ -411,7 +398,7 @@ dialog_select (dbbrowser_t *dbbrowser,
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
}
}
@ -419,11 +406,10 @@ dialog_select (dbbrowser_t *dbbrowser,
if ((dbbrowser->selected_nparams) &&
(dbbrowser->selected_nreturn_vals))
{
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1,
GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
}
@ -433,151 +419,111 @@ dialog_select (dbbrowser_t *dbbrowser,
label = gtk_label_new (_("Out:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+(dbbrowser->selected_nreturn_vals),
GTK_FILL, GTK_FILL, 3, 0);
0, 1, row, row + (dbbrowser->selected_nreturn_vals),
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nreturn_vals; i++)
{
/* name */
label = gtk_label_new ((dbbrowser->selected_return_vals[i]).name);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 2, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
1, 2, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
/* type */
label = gtk_label_new (GParamType2char((dbbrowser->selected_return_vals[i]).type));
label = gtk_label_new (GParamType2char (dbbrowser->selected_return_vals[i].type));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
2, 3, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
2, 3, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
/* description */
label = gtk_label_new ((dbbrowser->selected_return_vals[i]).description);
label = gtk_label_new (dbbrowser->selected_return_vals[i].description);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
}
}
if ((dbbrowser->selected_nparams) ||
(dbbrowser->selected_nreturn_vals))
if (dbbrowser->selected_nparams ||
dbbrowser->selected_nreturn_vals)
{
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1,
GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
row++;
}
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
}
/* show the help */
if ((dbbrowser->selected_proc_help) &&
if (dbbrowser->selected_proc_help &&
(strlen (dbbrowser->selected_proc_help) > 1))
{
label = gtk_label_new (_("Help:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
help = gtk_table_new (2, 2, FALSE);
gtk_table_set_row_spacing (GTK_TABLE (help), 0, 2);
gtk_table_set_col_spacing (GTK_TABLE (help), 0, 2);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), help,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (help);
row++;
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap (GTK_TEXT (text), TRUE);
gtk_widget_set_usize (text, -1, 60);
gtk_table_attach (GTK_TABLE (help), text, 0, 1, 0, 1,
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (text);
vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
gtk_table_attach (GTK_TABLE (help), vscrollbar, 1, 2, 0, 1,
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (vscrollbar);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Help:"), 1.0, 0.5,
scrolled_window, 3, FALSE);
text_buffer = gtk_text_buffer_new (NULL);
text_view = gtk_text_view_new_with_buffer (text_buffer);
g_object_unref (G_OBJECT (text_buffer));
gtk_text_buffer_set_text (text_buffer, dbbrowser->selected_proc_help, -1);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD);
gtk_widget_set_usize (text_view, -1, 60);
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
gtk_widget_show (text_view);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
row++;
}
/* show the author & the copyright */
label = gtk_label_new (_("Author:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
label = gtk_label_new (dbbrowser->selected_proc_author);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_label_new (_("Date:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Author:"), 1.0, 0.5,
label, 3, FALSE);
label = gtk_label_new (dbbrowser->selected_proc_date);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_label_new (_("Copyright:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Date:"), 1.0, 0.5,
label, 3, FALSE);
label = gtk_label_new (dbbrowser->selected_proc_copyright);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Copyright:"), 1.0, 0.5,
label, 3, FALSE);
if (old_table)
gtk_widget_destroy (old_table);
gtk_container_remove (GTK_CONTAINER (dbbrowser->descr_vbox), old_table);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
dbbrowser->descr_table);
/* now after the table is added to a window add the text */
if (text != NULL)
{
gtk_widget_realize (text);
gtk_text_freeze (GTK_TEXT (text));
gtk_text_insert (GTK_TEXT (text), NULL, NULL, NULL,
dbbrowser->selected_proc_help, -1);
gtk_text_thaw (GTK_TEXT (text));
}
gtk_box_pack_start (GTK_BOX (dbbrowser->descr_vbox), dbbrowser->descr_table,
FALSE, FALSE, 0);
gtk_widget_show (dbbrowser->descr_table);
}
@ -628,12 +574,14 @@ static void
dialog_search_callback (GtkWidget *widget,
gpointer data)
{
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t* dbbrowser = data;
gchar *func_name, *label, *query_text;
GString *query;
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t *dbbrowser = data;
gchar *func_name;
gchar *label;
gchar *query_text;
GString *query;
gtk_clist_freeze (GTK_CLIST (dbbrowser->clist));
gtk_clist_clear (GTK_CLIST (dbbrowser->clist));
@ -669,8 +617,8 @@ dialog_search_callback (GtkWidget *widget,
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by blurb - please wait)"));
gimp_procedural_db_query (".*",
gtk_entry_get_text(
GTK_ENTRY(dbbrowser->search_entry) ),
gtk_entry_get_text
(GTK_ENTRY (dbbrowser->search_entry)),
".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
@ -745,7 +693,6 @@ dialog_search_callback (GtkWidget *widget,
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser"));
gtk_clist_thaw (GTK_CLIST (dbbrowser->clist));
}
/* utils ... */

View File

@ -30,8 +30,8 @@ EXTRA_DIST = \
SUBDIRS = \
libgck \
## dbbrowser \
## script-fu \
dbbrowser \
script-fu \
## $(GIMP_PERL) \
FractalExplorer \
Lighting \

View File

@ -61,7 +61,7 @@ typedef struct
GtkWidget *name_button;
GtkWidget *blurb_button;
GtkWidget *descr_scroll;
GtkWidget *descr_vbox;
GtkWidget *descr_table;
GtkWidget *clist;
@ -120,18 +120,7 @@ GList * proc_table = NULL;
* console_entry != NULL => called from the script-fu-console
*/
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *proc_name,
gchar *scheme_proc_name,
gchar *proc_blurb,
gchar *proc_help,
gchar *proc_author,
gchar *proc_copyright,
gchar *proc_date,
GimpPDBProcType proc_type,
gint nparams,
gint nreturn_vals,
GimpParamDef *params,
GimpParamDef *return_vals))
gimp_db_browser (GimpDBBrowserApplyCallback apply_callback)
{
dbbrowser_t* dbbrowser;
@ -139,6 +128,7 @@ gimp_db_browser (void (* apply_callback) (gchar *proc_name,
GtkWidget *searchhbox;
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *scrolled_window;
dbbrowser = g_new (dbbrowser_t, 1);
@ -188,87 +178,90 @@ gimp_db_browser (void (* apply_callback) (gchar *proc_name,
dbbrowser);
/* hbox : left=list ; right=description */
hbox = gtk_hbox_new (FALSE, 0);
hbox = gtk_hbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->vbox),
hbox, TRUE, TRUE, 0);
gtk_widget_show (hbox);
/* left = vbox : the list and the search entry */
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
gtk_box_pack_start (GTK_BOX (hbox),
vbox, FALSE, TRUE, 0);
gtk_widget_show(vbox);
vbox = gtk_vbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
gtk_widget_show (vbox);
/* list : list in a scrolled_win */
dbbrowser->clist = gtk_clist_new (1);
dbbrowser->scrolled_win = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->scrolled_win),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (vbox), dbbrowser->scrolled_win, TRUE, TRUE, 0);
gtk_widget_show (dbbrowser->scrolled_win);
dbbrowser->clist = gtk_clist_new (1);
gtk_widget_set_usize (dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
gtk_clist_set_selection_mode (GTK_CLIST (dbbrowser->clist),
GTK_SELECTION_BROWSE);
gtk_widget_set_usize (dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->clist), "select_row",
(GtkSignalFunc) procedure_select_callback,
dbbrowser);
gtk_box_pack_start (GTK_BOX (vbox), dbbrowser->scrolled_win, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (dbbrowser->scrolled_win), dbbrowser->clist);
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->scrolled_win);
g_signal_connect (G_OBJECT (dbbrowser->clist), "select_row",
G_CALLBACK (procedure_select_callback),
dbbrowser);
/* search entry */
searchhbox = gtk_hbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), searchhbox, FALSE, FALSE, 0);
gtk_widget_show (searchhbox);
label = gtk_label_new (_("Search:"));
gtk_misc_set_alignment( GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox),
label, TRUE, TRUE, 0);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
dbbrowser->search_entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (searchhbox),
dbbrowser->search_entry, TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->search_entry);
gtk_box_pack_start (GTK_BOX (searchhbox), dbbrowser->search_entry,
TRUE, TRUE, 0);
gtk_widget_show (dbbrowser->search_entry);
/* right = description */
dbbrowser->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
GTK_POLICY_ALWAYS,
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_set_usize (scrolled_window, DBL_WIDTH - DBL_LIST_WIDTH, 0);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (hbox),
dbbrowser->descr_scroll, TRUE, TRUE, 0);
gtk_widget_set_usize (dbbrowser->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, 0);
gtk_widget_show (dbbrowser->descr_scroll);
gtk_box_pack_start (GTK_BOX (hbox), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
dbbrowser->descr_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (dbbrowser->descr_vbox), 4);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window),
dbbrowser->descr_vbox);
gtk_widget_show (dbbrowser->descr_vbox);
/* now build the list */
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->dlg);
/* initialize the "return" value (for "apply") */
dbbrowser->descr_table = NULL;
dbbrowser->selected_proc_name = NULL;
dbbrowser->descr_table = NULL;
dbbrowser->selected_proc_name = NULL;
dbbrowser->selected_scheme_proc_name = NULL;
dbbrowser->selected_proc_blurb = NULL;
dbbrowser->selected_proc_help = NULL;
dbbrowser->selected_proc_author = NULL;
dbbrowser->selected_proc_copyright = NULL;
dbbrowser->selected_proc_date = NULL;
dbbrowser->selected_proc_type = 0;
dbbrowser->selected_nparams = 0;
dbbrowser->selected_nreturn_vals = 0;
dbbrowser->selected_params = NULL;
dbbrowser->selected_return_vals = NULL;
dbbrowser->selected_proc_blurb = NULL;
dbbrowser->selected_proc_help = NULL;
dbbrowser->selected_proc_author = NULL;
dbbrowser->selected_proc_copyright = NULL;
dbbrowser->selected_proc_date = NULL;
dbbrowser->selected_proc_type = 0;
dbbrowser->selected_nparams = 0;
dbbrowser->selected_nreturn_vals = 0;
dbbrowser->selected_params = NULL;
dbbrowser->selected_return_vals = NULL;
/* first search (all procedures) */
dialog_search_callback (NULL, (gpointer) dbbrowser);
@ -284,7 +277,7 @@ procedure_select_callback (GtkWidget *widget,
gpointer data)
{
dbbrowser_t *dbbrowser = data;
gchar *func;
gchar *func;
g_return_val_if_fail (widget != NULL, FALSE);
/* g_return_val_if_fail (bevent != NULL, FALSE); */
@ -300,12 +293,15 @@ static void
dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name)
{
GtkWidget *label;
GtkWidget *old_table;
GtkWidget *help;
GtkWidget *text = NULL;
GtkWidget *vscrollbar;
gint i, row = 0;
GtkWidget *old_table;
GtkWidget *label;
GtkWidget *entry;
GtkWidget *sep;
GtkWidget *scrolled_window;
GtkWidget *text_view;
GtkTextBuffer *text_buffer = NULL;
gint i;
gint row = 0;
g_free (dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup (proc_name);
@ -333,51 +329,41 @@ dialog_select (dbbrowser_t *dbbrowser,
&(dbbrowser->selected_nreturn_vals),
&(dbbrowser->selected_params),
&(dbbrowser->selected_return_vals));
/* save the "old" table */
old_table = dbbrowser->descr_table;
dbbrowser->descr_table = gtk_table_new
(10 + dbbrowser->selected_nparams + dbbrowser->selected_nreturn_vals,
5, FALSE);
dbbrowser->descr_table = gtk_table_new (10 +
dbbrowser->selected_nparams +
dbbrowser->selected_nreturn_vals,
5, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 4);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 6);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), 0, 2);
/* show the name */
label = gtk_label_new (_("Name:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
entry = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (entry), dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable (GTK_ENTRY (entry), FALSE);
label = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (label), dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable (GTK_ENTRY (label), FALSE);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Name:"), 1.0, 0.5,
entry, 3, FALSE);
/* show the description */
label = gtk_label_new (_("Blurb:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1, GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
label = gtk_label_new (dbbrowser->selected_proc_blurb);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Blurb:"), 1.0, 0.5,
label, 3, FALSE);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
/* in parameters */
@ -386,9 +372,10 @@ dialog_select (dbbrowser_t *dbbrowser,
label = gtk_label_new (_("In:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+(dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 3, 0);
0, 1, row, row + (dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nparams; i++)
{
/* name */
@ -411,7 +398,7 @@ dialog_select (dbbrowser_t *dbbrowser,
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
}
}
@ -419,11 +406,10 @@ dialog_select (dbbrowser_t *dbbrowser,
if ((dbbrowser->selected_nparams) &&
(dbbrowser->selected_nreturn_vals))
{
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1,
GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
}
@ -433,151 +419,111 @@ dialog_select (dbbrowser_t *dbbrowser,
label = gtk_label_new (_("Out:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+(dbbrowser->selected_nreturn_vals),
GTK_FILL, GTK_FILL, 3, 0);
0, 1, row, row + (dbbrowser->selected_nreturn_vals),
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nreturn_vals; i++)
{
/* name */
label = gtk_label_new ((dbbrowser->selected_return_vals[i]).name);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 2, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
1, 2, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
/* type */
label = gtk_label_new (GParamType2char((dbbrowser->selected_return_vals[i]).type));
label = gtk_label_new (GParamType2char (dbbrowser->selected_return_vals[i].type));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
2, 3, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
2, 3, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
/* description */
label = gtk_label_new ((dbbrowser->selected_return_vals[i]).description);
label = gtk_label_new (dbbrowser->selected_return_vals[i].description);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
}
}
if ((dbbrowser->selected_nparams) ||
(dbbrowser->selected_nreturn_vals))
if (dbbrowser->selected_nparams ||
dbbrowser->selected_nreturn_vals)
{
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1,
GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
row++;
}
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
}
/* show the help */
if ((dbbrowser->selected_proc_help) &&
if (dbbrowser->selected_proc_help &&
(strlen (dbbrowser->selected_proc_help) > 1))
{
label = gtk_label_new (_("Help:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
help = gtk_table_new (2, 2, FALSE);
gtk_table_set_row_spacing (GTK_TABLE (help), 0, 2);
gtk_table_set_col_spacing (GTK_TABLE (help), 0, 2);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), help,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (help);
row++;
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap (GTK_TEXT (text), TRUE);
gtk_widget_set_usize (text, -1, 60);
gtk_table_attach (GTK_TABLE (help), text, 0, 1, 0, 1,
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (text);
vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
gtk_table_attach (GTK_TABLE (help), vscrollbar, 1, 2, 0, 1,
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (vscrollbar);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Help:"), 1.0, 0.5,
scrolled_window, 3, FALSE);
text_buffer = gtk_text_buffer_new (NULL);
text_view = gtk_text_view_new_with_buffer (text_buffer);
g_object_unref (G_OBJECT (text_buffer));
gtk_text_buffer_set_text (text_buffer, dbbrowser->selected_proc_help, -1);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD);
gtk_widget_set_usize (text_view, -1, 60);
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
gtk_widget_show (text_view);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
row++;
}
/* show the author & the copyright */
label = gtk_label_new (_("Author:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
label = gtk_label_new (dbbrowser->selected_proc_author);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_label_new (_("Date:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Author:"), 1.0, 0.5,
label, 3, FALSE);
label = gtk_label_new (dbbrowser->selected_proc_date);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_label_new (_("Copyright:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Date:"), 1.0, 0.5,
label, 3, FALSE);
label = gtk_label_new (dbbrowser->selected_proc_copyright);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Copyright:"), 1.0, 0.5,
label, 3, FALSE);
if (old_table)
gtk_widget_destroy (old_table);
gtk_container_remove (GTK_CONTAINER (dbbrowser->descr_vbox), old_table);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
dbbrowser->descr_table);
/* now after the table is added to a window add the text */
if (text != NULL)
{
gtk_widget_realize (text);
gtk_text_freeze (GTK_TEXT (text));
gtk_text_insert (GTK_TEXT (text), NULL, NULL, NULL,
dbbrowser->selected_proc_help, -1);
gtk_text_thaw (GTK_TEXT (text));
}
gtk_box_pack_start (GTK_BOX (dbbrowser->descr_vbox), dbbrowser->descr_table,
FALSE, FALSE, 0);
gtk_widget_show (dbbrowser->descr_table);
}
@ -628,12 +574,14 @@ static void
dialog_search_callback (GtkWidget *widget,
gpointer data)
{
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t* dbbrowser = data;
gchar *func_name, *label, *query_text;
GString *query;
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t *dbbrowser = data;
gchar *func_name;
gchar *label;
gchar *query_text;
GString *query;
gtk_clist_freeze (GTK_CLIST (dbbrowser->clist));
gtk_clist_clear (GTK_CLIST (dbbrowser->clist));
@ -669,8 +617,8 @@ dialog_search_callback (GtkWidget *widget,
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by blurb - please wait)"));
gimp_procedural_db_query (".*",
gtk_entry_get_text(
GTK_ENTRY(dbbrowser->search_entry) ),
gtk_entry_get_text
(GTK_ENTRY (dbbrowser->search_entry)),
".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
@ -745,7 +693,6 @@ dialog_search_callback (GtkWidget *widget,
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser"));
gtk_clist_thaw (GTK_CLIST (dbbrowser->clist));
}
/* utils ... */

View File

@ -21,18 +21,24 @@
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
#include <gtk/gtk.h>
#ifndef __DBBROWSER_UTILS_H__
#define __DBBROWSER_UTILS_H__
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *proc_name,
gchar *scheme_proc_name,
gchar *proc_blurb,
gchar *proc_help,
gchar *proc_author,
gchar *proc_copyright,
gchar *proc_date,
GimpPDBProcType proc_type,
gint nparams,
gint nreturn_vals,
GimpParamDef *params,
GimpParamDef *return_vals));
typedef void (* GimpDBBrowserApplyCallback) (gchar *proc_name,
gchar *scheme_proc_name,
gchar *proc_blurb,
gchar *proc_help,
gchar *proc_author,
gchar *proc_copyright,
gchar *proc_date,
GimpPDBProcType proc_type,
gint nparams,
gint nreturn_vals,
GimpParamDef *params,
GimpParamDef *return_vals);
GtkWidget * gimp_db_browser (GimpDBBrowserApplyCallback apply_callback);
#endif /* __DBBROWSER_UTILS_H__ */

View File

@ -61,7 +61,7 @@ typedef struct
GtkWidget *name_button;
GtkWidget *blurb_button;
GtkWidget *descr_scroll;
GtkWidget *descr_vbox;
GtkWidget *descr_table;
GtkWidget *clist;
@ -120,18 +120,7 @@ GList * proc_table = NULL;
* console_entry != NULL => called from the script-fu-console
*/
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *proc_name,
gchar *scheme_proc_name,
gchar *proc_blurb,
gchar *proc_help,
gchar *proc_author,
gchar *proc_copyright,
gchar *proc_date,
GimpPDBProcType proc_type,
gint nparams,
gint nreturn_vals,
GimpParamDef *params,
GimpParamDef *return_vals))
gimp_db_browser (GimpDBBrowserApplyCallback apply_callback)
{
dbbrowser_t* dbbrowser;
@ -139,6 +128,7 @@ gimp_db_browser (void (* apply_callback) (gchar *proc_name,
GtkWidget *searchhbox;
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *scrolled_window;
dbbrowser = g_new (dbbrowser_t, 1);
@ -188,87 +178,90 @@ gimp_db_browser (void (* apply_callback) (gchar *proc_name,
dbbrowser);
/* hbox : left=list ; right=description */
hbox = gtk_hbox_new (FALSE, 0);
hbox = gtk_hbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->vbox),
hbox, TRUE, TRUE, 0);
gtk_widget_show (hbox);
/* left = vbox : the list and the search entry */
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
gtk_box_pack_start (GTK_BOX (hbox),
vbox, FALSE, TRUE, 0);
gtk_widget_show(vbox);
vbox = gtk_vbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
gtk_widget_show (vbox);
/* list : list in a scrolled_win */
dbbrowser->clist = gtk_clist_new (1);
dbbrowser->scrolled_win = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->scrolled_win),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (vbox), dbbrowser->scrolled_win, TRUE, TRUE, 0);
gtk_widget_show (dbbrowser->scrolled_win);
dbbrowser->clist = gtk_clist_new (1);
gtk_widget_set_usize (dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
gtk_clist_set_selection_mode (GTK_CLIST (dbbrowser->clist),
GTK_SELECTION_BROWSE);
gtk_widget_set_usize (dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->clist), "select_row",
(GtkSignalFunc) procedure_select_callback,
dbbrowser);
gtk_box_pack_start (GTK_BOX (vbox), dbbrowser->scrolled_win, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (dbbrowser->scrolled_win), dbbrowser->clist);
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->scrolled_win);
g_signal_connect (G_OBJECT (dbbrowser->clist), "select_row",
G_CALLBACK (procedure_select_callback),
dbbrowser);
/* search entry */
searchhbox = gtk_hbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), searchhbox, FALSE, FALSE, 0);
gtk_widget_show (searchhbox);
label = gtk_label_new (_("Search:"));
gtk_misc_set_alignment( GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox),
label, TRUE, TRUE, 0);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
dbbrowser->search_entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (searchhbox),
dbbrowser->search_entry, TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->search_entry);
gtk_box_pack_start (GTK_BOX (searchhbox), dbbrowser->search_entry,
TRUE, TRUE, 0);
gtk_widget_show (dbbrowser->search_entry);
/* right = description */
dbbrowser->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
GTK_POLICY_ALWAYS,
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_set_usize (scrolled_window, DBL_WIDTH - DBL_LIST_WIDTH, 0);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (hbox),
dbbrowser->descr_scroll, TRUE, TRUE, 0);
gtk_widget_set_usize (dbbrowser->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, 0);
gtk_widget_show (dbbrowser->descr_scroll);
gtk_box_pack_start (GTK_BOX (hbox), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
dbbrowser->descr_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (dbbrowser->descr_vbox), 4);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window),
dbbrowser->descr_vbox);
gtk_widget_show (dbbrowser->descr_vbox);
/* now build the list */
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->dlg);
/* initialize the "return" value (for "apply") */
dbbrowser->descr_table = NULL;
dbbrowser->selected_proc_name = NULL;
dbbrowser->descr_table = NULL;
dbbrowser->selected_proc_name = NULL;
dbbrowser->selected_scheme_proc_name = NULL;
dbbrowser->selected_proc_blurb = NULL;
dbbrowser->selected_proc_help = NULL;
dbbrowser->selected_proc_author = NULL;
dbbrowser->selected_proc_copyright = NULL;
dbbrowser->selected_proc_date = NULL;
dbbrowser->selected_proc_type = 0;
dbbrowser->selected_nparams = 0;
dbbrowser->selected_nreturn_vals = 0;
dbbrowser->selected_params = NULL;
dbbrowser->selected_return_vals = NULL;
dbbrowser->selected_proc_blurb = NULL;
dbbrowser->selected_proc_help = NULL;
dbbrowser->selected_proc_author = NULL;
dbbrowser->selected_proc_copyright = NULL;
dbbrowser->selected_proc_date = NULL;
dbbrowser->selected_proc_type = 0;
dbbrowser->selected_nparams = 0;
dbbrowser->selected_nreturn_vals = 0;
dbbrowser->selected_params = NULL;
dbbrowser->selected_return_vals = NULL;
/* first search (all procedures) */
dialog_search_callback (NULL, (gpointer) dbbrowser);
@ -284,7 +277,7 @@ procedure_select_callback (GtkWidget *widget,
gpointer data)
{
dbbrowser_t *dbbrowser = data;
gchar *func;
gchar *func;
g_return_val_if_fail (widget != NULL, FALSE);
/* g_return_val_if_fail (bevent != NULL, FALSE); */
@ -300,12 +293,15 @@ static void
dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name)
{
GtkWidget *label;
GtkWidget *old_table;
GtkWidget *help;
GtkWidget *text = NULL;
GtkWidget *vscrollbar;
gint i, row = 0;
GtkWidget *old_table;
GtkWidget *label;
GtkWidget *entry;
GtkWidget *sep;
GtkWidget *scrolled_window;
GtkWidget *text_view;
GtkTextBuffer *text_buffer = NULL;
gint i;
gint row = 0;
g_free (dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup (proc_name);
@ -333,51 +329,41 @@ dialog_select (dbbrowser_t *dbbrowser,
&(dbbrowser->selected_nreturn_vals),
&(dbbrowser->selected_params),
&(dbbrowser->selected_return_vals));
/* save the "old" table */
old_table = dbbrowser->descr_table;
dbbrowser->descr_table = gtk_table_new
(10 + dbbrowser->selected_nparams + dbbrowser->selected_nreturn_vals,
5, FALSE);
dbbrowser->descr_table = gtk_table_new (10 +
dbbrowser->selected_nparams +
dbbrowser->selected_nreturn_vals,
5, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 4);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 6);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), 0, 2);
/* show the name */
label = gtk_label_new (_("Name:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
entry = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (entry), dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable (GTK_ENTRY (entry), FALSE);
label = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (label), dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable (GTK_ENTRY (label), FALSE);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Name:"), 1.0, 0.5,
entry, 3, FALSE);
/* show the description */
label = gtk_label_new (_("Blurb:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1, GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
label = gtk_label_new (dbbrowser->selected_proc_blurb);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Blurb:"), 1.0, 0.5,
label, 3, FALSE);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
/* in parameters */
@ -386,9 +372,10 @@ dialog_select (dbbrowser_t *dbbrowser,
label = gtk_label_new (_("In:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+(dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 3, 0);
0, 1, row, row + (dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nparams; i++)
{
/* name */
@ -411,7 +398,7 @@ dialog_select (dbbrowser_t *dbbrowser,
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
}
}
@ -419,11 +406,10 @@ dialog_select (dbbrowser_t *dbbrowser,
if ((dbbrowser->selected_nparams) &&
(dbbrowser->selected_nreturn_vals))
{
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1,
GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
}
@ -433,151 +419,111 @@ dialog_select (dbbrowser_t *dbbrowser,
label = gtk_label_new (_("Out:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+(dbbrowser->selected_nreturn_vals),
GTK_FILL, GTK_FILL, 3, 0);
0, 1, row, row + (dbbrowser->selected_nreturn_vals),
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nreturn_vals; i++)
{
/* name */
label = gtk_label_new ((dbbrowser->selected_return_vals[i]).name);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 2, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
1, 2, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
/* type */
label = gtk_label_new (GParamType2char((dbbrowser->selected_return_vals[i]).type));
label = gtk_label_new (GParamType2char (dbbrowser->selected_return_vals[i].type));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
2, 3, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
2, 3, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
/* description */
label = gtk_label_new ((dbbrowser->selected_return_vals[i]).description);
label = gtk_label_new (dbbrowser->selected_return_vals[i].description);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
}
}
if ((dbbrowser->selected_nparams) ||
(dbbrowser->selected_nreturn_vals))
if (dbbrowser->selected_nparams ||
dbbrowser->selected_nreturn_vals)
{
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1,
GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
row++;
}
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
}
/* show the help */
if ((dbbrowser->selected_proc_help) &&
if (dbbrowser->selected_proc_help &&
(strlen (dbbrowser->selected_proc_help) > 1))
{
label = gtk_label_new (_("Help:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
help = gtk_table_new (2, 2, FALSE);
gtk_table_set_row_spacing (GTK_TABLE (help), 0, 2);
gtk_table_set_col_spacing (GTK_TABLE (help), 0, 2);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), help,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (help);
row++;
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap (GTK_TEXT (text), TRUE);
gtk_widget_set_usize (text, -1, 60);
gtk_table_attach (GTK_TABLE (help), text, 0, 1, 0, 1,
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (text);
vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
gtk_table_attach (GTK_TABLE (help), vscrollbar, 1, 2, 0, 1,
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (vscrollbar);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Help:"), 1.0, 0.5,
scrolled_window, 3, FALSE);
text_buffer = gtk_text_buffer_new (NULL);
text_view = gtk_text_view_new_with_buffer (text_buffer);
g_object_unref (G_OBJECT (text_buffer));
gtk_text_buffer_set_text (text_buffer, dbbrowser->selected_proc_help, -1);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD);
gtk_widget_set_usize (text_view, -1, 60);
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
gtk_widget_show (text_view);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
row++;
}
/* show the author & the copyright */
label = gtk_label_new (_("Author:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
label = gtk_label_new (dbbrowser->selected_proc_author);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_label_new (_("Date:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Author:"), 1.0, 0.5,
label, 3, FALSE);
label = gtk_label_new (dbbrowser->selected_proc_date);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_label_new (_("Copyright:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Date:"), 1.0, 0.5,
label, 3, FALSE);
label = gtk_label_new (dbbrowser->selected_proc_copyright);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Copyright:"), 1.0, 0.5,
label, 3, FALSE);
if (old_table)
gtk_widget_destroy (old_table);
gtk_container_remove (GTK_CONTAINER (dbbrowser->descr_vbox), old_table);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
dbbrowser->descr_table);
/* now after the table is added to a window add the text */
if (text != NULL)
{
gtk_widget_realize (text);
gtk_text_freeze (GTK_TEXT (text));
gtk_text_insert (GTK_TEXT (text), NULL, NULL, NULL,
dbbrowser->selected_proc_help, -1);
gtk_text_thaw (GTK_TEXT (text));
}
gtk_box_pack_start (GTK_BOX (dbbrowser->descr_vbox), dbbrowser->descr_table,
FALSE, FALSE, 0);
gtk_widget_show (dbbrowser->descr_table);
}
@ -628,12 +574,14 @@ static void
dialog_search_callback (GtkWidget *widget,
gpointer data)
{
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t* dbbrowser = data;
gchar *func_name, *label, *query_text;
GString *query;
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t *dbbrowser = data;
gchar *func_name;
gchar *label;
gchar *query_text;
GString *query;
gtk_clist_freeze (GTK_CLIST (dbbrowser->clist));
gtk_clist_clear (GTK_CLIST (dbbrowser->clist));
@ -669,8 +617,8 @@ dialog_search_callback (GtkWidget *widget,
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by blurb - please wait)"));
gimp_procedural_db_query (".*",
gtk_entry_get_text(
GTK_ENTRY(dbbrowser->search_entry) ),
gtk_entry_get_text
(GTK_ENTRY (dbbrowser->search_entry)),
".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
@ -745,7 +693,6 @@ dialog_search_callback (GtkWidget *widget,
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser"));
gtk_clist_thaw (GTK_CLIST (dbbrowser->clist));
}
/* utils ... */

View File

@ -21,18 +21,24 @@
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
#include <gtk/gtk.h>
#ifndef __DBBROWSER_UTILS_H__
#define __DBBROWSER_UTILS_H__
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *proc_name,
gchar *scheme_proc_name,
gchar *proc_blurb,
gchar *proc_help,
gchar *proc_author,
gchar *proc_copyright,
gchar *proc_date,
GimpPDBProcType proc_type,
gint nparams,
gint nreturn_vals,
GimpParamDef *params,
GimpParamDef *return_vals));
typedef void (* GimpDBBrowserApplyCallback) (gchar *proc_name,
gchar *scheme_proc_name,
gchar *proc_blurb,
gchar *proc_help,
gchar *proc_author,
gchar *proc_copyright,
gchar *proc_date,
GimpPDBProcType proc_type,
gint nparams,
gint nreturn_vals,
GimpParamDef *params,
GimpParamDef *return_vals);
GtkWidget * gimp_db_browser (GimpDBBrowserApplyCallback apply_callback);
#endif /* __DBBROWSER_UTILS_H__ */

View File

@ -61,7 +61,7 @@ typedef struct
GtkWidget *name_button;
GtkWidget *blurb_button;
GtkWidget *descr_scroll;
GtkWidget *descr_vbox;
GtkWidget *descr_table;
GtkWidget *clist;
@ -120,18 +120,7 @@ GList * proc_table = NULL;
* console_entry != NULL => called from the script-fu-console
*/
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *proc_name,
gchar *scheme_proc_name,
gchar *proc_blurb,
gchar *proc_help,
gchar *proc_author,
gchar *proc_copyright,
gchar *proc_date,
GimpPDBProcType proc_type,
gint nparams,
gint nreturn_vals,
GimpParamDef *params,
GimpParamDef *return_vals))
gimp_db_browser (GimpDBBrowserApplyCallback apply_callback)
{
dbbrowser_t* dbbrowser;
@ -139,6 +128,7 @@ gimp_db_browser (void (* apply_callback) (gchar *proc_name,
GtkWidget *searchhbox;
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *scrolled_window;
dbbrowser = g_new (dbbrowser_t, 1);
@ -188,87 +178,90 @@ gimp_db_browser (void (* apply_callback) (gchar *proc_name,
dbbrowser);
/* hbox : left=list ; right=description */
hbox = gtk_hbox_new (FALSE, 0);
hbox = gtk_hbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->vbox),
hbox, TRUE, TRUE, 0);
gtk_widget_show (hbox);
/* left = vbox : the list and the search entry */
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
gtk_box_pack_start (GTK_BOX (hbox),
vbox, FALSE, TRUE, 0);
gtk_widget_show(vbox);
vbox = gtk_vbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
gtk_widget_show (vbox);
/* list : list in a scrolled_win */
dbbrowser->clist = gtk_clist_new (1);
dbbrowser->scrolled_win = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->scrolled_win),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (vbox), dbbrowser->scrolled_win, TRUE, TRUE, 0);
gtk_widget_show (dbbrowser->scrolled_win);
dbbrowser->clist = gtk_clist_new (1);
gtk_widget_set_usize (dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
gtk_clist_set_selection_mode (GTK_CLIST (dbbrowser->clist),
GTK_SELECTION_BROWSE);
gtk_widget_set_usize (dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->clist), "select_row",
(GtkSignalFunc) procedure_select_callback,
dbbrowser);
gtk_box_pack_start (GTK_BOX (vbox), dbbrowser->scrolled_win, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER (dbbrowser->scrolled_win), dbbrowser->clist);
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->scrolled_win);
g_signal_connect (G_OBJECT (dbbrowser->clist), "select_row",
G_CALLBACK (procedure_select_callback),
dbbrowser);
/* search entry */
searchhbox = gtk_hbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), searchhbox, FALSE, FALSE, 0);
gtk_widget_show (searchhbox);
label = gtk_label_new (_("Search:"));
gtk_misc_set_alignment( GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox),
label, TRUE, TRUE, 0);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
dbbrowser->search_entry = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (searchhbox),
dbbrowser->search_entry, TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->search_entry);
gtk_box_pack_start (GTK_BOX (searchhbox), dbbrowser->search_entry,
TRUE, TRUE, 0);
gtk_widget_show (dbbrowser->search_entry);
/* right = description */
dbbrowser->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
GTK_POLICY_ALWAYS,
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_set_usize (scrolled_window, DBL_WIDTH - DBL_LIST_WIDTH, 0);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (hbox),
dbbrowser->descr_scroll, TRUE, TRUE, 0);
gtk_widget_set_usize (dbbrowser->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, 0);
gtk_widget_show (dbbrowser->descr_scroll);
gtk_box_pack_start (GTK_BOX (hbox), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
dbbrowser->descr_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (dbbrowser->descr_vbox), 4);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window),
dbbrowser->descr_vbox);
gtk_widget_show (dbbrowser->descr_vbox);
/* now build the list */
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->dlg);
/* initialize the "return" value (for "apply") */
dbbrowser->descr_table = NULL;
dbbrowser->selected_proc_name = NULL;
dbbrowser->descr_table = NULL;
dbbrowser->selected_proc_name = NULL;
dbbrowser->selected_scheme_proc_name = NULL;
dbbrowser->selected_proc_blurb = NULL;
dbbrowser->selected_proc_help = NULL;
dbbrowser->selected_proc_author = NULL;
dbbrowser->selected_proc_copyright = NULL;
dbbrowser->selected_proc_date = NULL;
dbbrowser->selected_proc_type = 0;
dbbrowser->selected_nparams = 0;
dbbrowser->selected_nreturn_vals = 0;
dbbrowser->selected_params = NULL;
dbbrowser->selected_return_vals = NULL;
dbbrowser->selected_proc_blurb = NULL;
dbbrowser->selected_proc_help = NULL;
dbbrowser->selected_proc_author = NULL;
dbbrowser->selected_proc_copyright = NULL;
dbbrowser->selected_proc_date = NULL;
dbbrowser->selected_proc_type = 0;
dbbrowser->selected_nparams = 0;
dbbrowser->selected_nreturn_vals = 0;
dbbrowser->selected_params = NULL;
dbbrowser->selected_return_vals = NULL;
/* first search (all procedures) */
dialog_search_callback (NULL, (gpointer) dbbrowser);
@ -284,7 +277,7 @@ procedure_select_callback (GtkWidget *widget,
gpointer data)
{
dbbrowser_t *dbbrowser = data;
gchar *func;
gchar *func;
g_return_val_if_fail (widget != NULL, FALSE);
/* g_return_val_if_fail (bevent != NULL, FALSE); */
@ -300,12 +293,15 @@ static void
dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name)
{
GtkWidget *label;
GtkWidget *old_table;
GtkWidget *help;
GtkWidget *text = NULL;
GtkWidget *vscrollbar;
gint i, row = 0;
GtkWidget *old_table;
GtkWidget *label;
GtkWidget *entry;
GtkWidget *sep;
GtkWidget *scrolled_window;
GtkWidget *text_view;
GtkTextBuffer *text_buffer = NULL;
gint i;
gint row = 0;
g_free (dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup (proc_name);
@ -333,51 +329,41 @@ dialog_select (dbbrowser_t *dbbrowser,
&(dbbrowser->selected_nreturn_vals),
&(dbbrowser->selected_params),
&(dbbrowser->selected_return_vals));
/* save the "old" table */
old_table = dbbrowser->descr_table;
dbbrowser->descr_table = gtk_table_new
(10 + dbbrowser->selected_nparams + dbbrowser->selected_nreturn_vals,
5, FALSE);
dbbrowser->descr_table = gtk_table_new (10 +
dbbrowser->selected_nparams +
dbbrowser->selected_nreturn_vals,
5, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 4);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 6);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), 0, 2);
/* show the name */
label = gtk_label_new (_("Name:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
entry = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (entry), dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable (GTK_ENTRY (entry), FALSE);
label = gtk_entry_new ();
gtk_entry_set_text (GTK_ENTRY (label), dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable (GTK_ENTRY (label), FALSE);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Name:"), 1.0, 0.5,
entry, 3, FALSE);
/* show the description */
label = gtk_label_new (_("Blurb:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1, GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
label = gtk_label_new (dbbrowser->selected_proc_blurb);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Blurb:"), 1.0, 0.5,
label, 3, FALSE);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
/* in parameters */
@ -386,9 +372,10 @@ dialog_select (dbbrowser_t *dbbrowser,
label = gtk_label_new (_("In:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+(dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 3, 0);
0, 1, row, row + (dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nparams; i++)
{
/* name */
@ -411,7 +398,7 @@ dialog_select (dbbrowser_t *dbbrowser,
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
}
}
@ -419,11 +406,10 @@ dialog_select (dbbrowser_t *dbbrowser,
if ((dbbrowser->selected_nparams) &&
(dbbrowser->selected_nreturn_vals))
{
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1,
GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
}
@ -433,151 +419,111 @@ dialog_select (dbbrowser_t *dbbrowser,
label = gtk_label_new (_("Out:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+(dbbrowser->selected_nreturn_vals),
GTK_FILL, GTK_FILL, 3, 0);
0, 1, row, row + (dbbrowser->selected_nreturn_vals),
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nreturn_vals; i++)
{
/* name */
label = gtk_label_new ((dbbrowser->selected_return_vals[i]).name);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 2, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
1, 2, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
/* type */
label = gtk_label_new (GParamType2char((dbbrowser->selected_return_vals[i]).type));
label = gtk_label_new (GParamType2char (dbbrowser->selected_return_vals[i].type));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
2, 3, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
2, 3, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
/* description */
label = gtk_label_new ((dbbrowser->selected_return_vals[i]).description);
label = gtk_label_new (dbbrowser->selected_return_vals[i].description);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
}
}
if ((dbbrowser->selected_nparams) ||
(dbbrowser->selected_nreturn_vals))
if (dbbrowser->selected_nparams ||
dbbrowser->selected_nreturn_vals)
{
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1,
GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
row++;
}
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
row++;
}
/* show the help */
if ((dbbrowser->selected_proc_help) &&
if (dbbrowser->selected_proc_help &&
(strlen (dbbrowser->selected_proc_help) > 1))
{
label = gtk_label_new (_("Help:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
help = gtk_table_new (2, 2, FALSE);
gtk_table_set_row_spacing (GTK_TABLE (help), 0, 2);
gtk_table_set_col_spacing (GTK_TABLE (help), 0, 2);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), help,
1, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (help);
row++;
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap (GTK_TEXT (text), TRUE);
gtk_widget_set_usize (text, -1, 60);
gtk_table_attach (GTK_TABLE (help), text, 0, 1, 0, 1,
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (text);
vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
gtk_table_attach (GTK_TABLE (help), vscrollbar, 1, 2, 0, 1,
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (vscrollbar);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Help:"), 1.0, 0.5,
scrolled_window, 3, FALSE);
text_buffer = gtk_text_buffer_new (NULL);
text_view = gtk_text_view_new_with_buffer (text_buffer);
g_object_unref (G_OBJECT (text_buffer));
gtk_text_buffer_set_text (text_buffer, dbbrowser->selected_proc_help, -1);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD);
gtk_widget_set_usize (text_view, -1, 60);
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
gtk_widget_show (text_view);
sep = gtk_hseparator_new ();
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), sep,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 6);
gtk_widget_show (sep);
label = gtk_hseparator_new (); /* ok, not really a label ... :) */
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 4, row, row+1, GTK_FILL, GTK_FILL, 3, 6);
gtk_widget_show (label);
row++;
}
/* show the author & the copyright */
label = gtk_label_new (_("Author:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
label = gtk_label_new (dbbrowser->selected_proc_author);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_label_new (_("Date:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Author:"), 1.0, 0.5,
label, 3, FALSE);
label = gtk_label_new (dbbrowser->selected_proc_date);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
label = gtk_label_new (_("Copyright:"));
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
0, 1, row, row+1,
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Date:"), 1.0, 0.5,
label, 3, FALSE);
label = gtk_label_new (dbbrowser->selected_proc_copyright);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
1, 4, row, row+1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
row++;
gtk_table_set_row_spacing (GTK_TABLE (dbbrowser->descr_table), row, 2);
gimp_table_attach_aligned (GTK_TABLE (dbbrowser->descr_table), 0, row++,
_("Copyright:"), 1.0, 0.5,
label, 3, FALSE);
if (old_table)
gtk_widget_destroy (old_table);
gtk_container_remove (GTK_CONTAINER (dbbrowser->descr_vbox), old_table);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
dbbrowser->descr_table);
/* now after the table is added to a window add the text */
if (text != NULL)
{
gtk_widget_realize (text);
gtk_text_freeze (GTK_TEXT (text));
gtk_text_insert (GTK_TEXT (text), NULL, NULL, NULL,
dbbrowser->selected_proc_help, -1);
gtk_text_thaw (GTK_TEXT (text));
}
gtk_box_pack_start (GTK_BOX (dbbrowser->descr_vbox), dbbrowser->descr_table,
FALSE, FALSE, 0);
gtk_widget_show (dbbrowser->descr_table);
}
@ -628,12 +574,14 @@ static void
dialog_search_callback (GtkWidget *widget,
gpointer data)
{
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t* dbbrowser = data;
gchar *func_name, *label, *query_text;
GString *query;
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t *dbbrowser = data;
gchar *func_name;
gchar *label;
gchar *query_text;
GString *query;
gtk_clist_freeze (GTK_CLIST (dbbrowser->clist));
gtk_clist_clear (GTK_CLIST (dbbrowser->clist));
@ -669,8 +617,8 @@ dialog_search_callback (GtkWidget *widget,
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by blurb - please wait)"));
gimp_procedural_db_query (".*",
gtk_entry_get_text(
GTK_ENTRY(dbbrowser->search_entry) ),
gtk_entry_get_text
(GTK_ENTRY (dbbrowser->search_entry)),
".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
@ -745,7 +693,6 @@ dialog_search_callback (GtkWidget *widget,
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser"));
gtk_clist_thaw (GTK_CLIST (dbbrowser->clist));
}
/* utils ... */

View File

@ -22,9 +22,6 @@
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#if HAVE_DIRENT_H
#include <dirent.h>
#endif
#if HAVE_UNISTD_H
#include <unistd.h>
#endif
@ -43,69 +40,60 @@
#include <plug-ins/dbbrowser/dbbrowser_utils.h>
/* FIXME: To get the 'broken' GtkText */
#define GTK_ENABLE_BROKEN
#include <gtk/gtktext.h>
#ifdef G_OS_WIN32
#include <fcntl.h>
#include <io.h>
#endif
#define TEXT_WIDTH 400
#define TEXT_HEIGHT 400
#define ENTRY_WIDTH 400
#define BUFSIZE 256
#define BUFSIZE 256
#define message(string) printf("(%s): %d ::: %s\n", __PRETTY_FUNCTION__, __LINE__, string)
typedef struct
{
GtkWidget *console;
GtkTextBuffer *console;
GtkWidget *cc;
GtkAdjustment *vadj;
GdkFont *font_strong;
GdkFont *font_emphasis;
GdkFont *font_weak;
GdkFont *font;
GtkWidget *text_view;
gint32 input_id;
} ConsoleInterface;
/*
* Local Functions
*/
static void script_fu_console_interface (void);
static void script_fu_close_callback (GtkWidget *widget,
gpointer data);
static void script_fu_browse_callback (GtkWidget *widget,
gpointer data);
static gboolean script_fu_siod_read (GIOChannel *channel,
GIOCondition cond,
gpointer data);
static gboolean script_fu_cc_is_empty (void);
static gboolean script_fu_cc_key_function (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
static void script_fu_console_interface (void);
static void script_fu_close_callback (GtkWidget *widget,
gpointer data);
static void script_fu_browse_callback (GtkWidget *widget,
gpointer data);
static gboolean script_fu_siod_read (GIOChannel *channel,
GIOCondition cond,
gpointer data);
static gboolean script_fu_cc_is_empty (void);
static gboolean script_fu_cc_key_function (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
static void script_fu_open_siod_console (void);
static void script_fu_close_siod_console (void);
static void script_fu_open_siod_console (void);
static void script_fu_close_siod_console(void);
/*
* Local variables
*/
static ConsoleInterface cint =
{
NULL, /* console */
NULL, /* current command */
NULL, /* vertical adjustment */
NULL, /* strong font */
NULL, /* emphasis font */
NULL, /* weak font */
NULL, /* normal font */
NULL, /* text view */
-1 /* input id */
};
@ -116,11 +104,9 @@ static gint history_len = 0;
static gint history_cur = 0;
static gint history_max = 50;
static gint siod_output_pipe[2];
static gint siod_output_pipe[2];
#define message(string) printf("(%s): %d ::: %s\n", __PRETTY_FUNCTION__, __LINE__, string)
/*
* Function definitions
*/
@ -154,7 +140,7 @@ script_fu_console_run (gchar *name,
case GIMP_RUN_WITH_LAST_VALS:
case GIMP_RUN_NONINTERACTIVE:
status = GIMP_PDB_CALLING_ERROR;
gimp_message (_("Script-Fu console mode allows only interactive invocation"));
g_message (_("Script-Fu console mode allows only interactive invocation"));
break;
default:
@ -171,11 +157,11 @@ script_fu_console_run (gchar *name,
static void
script_fu_console_interface (void)
{
GtkWidget *dlg;
GtkWidget *dialog;
GtkWidget *main_vbox;
GtkWidget *button;
GtkWidget *label;
GtkWidget *vsb;
GtkWidget *table;
GtkWidget *scrolled_window;
GtkWidget *hbox;
GIOChannel *input_channel;
@ -183,138 +169,129 @@ script_fu_console_interface (void)
gimp_ui_init ("script-fu", FALSE);
dlg = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (dlg), _("Script-Fu Console"));
gimp_help_connect_help_accel (dlg, gimp_standard_help_func,
"filters/script-fu.html");
gtk_signal_connect (GTK_OBJECT (dlg), "destroy",
(GtkSignalFunc) script_fu_close_callback,
NULL);
gtk_signal_connect (GTK_OBJECT (dlg), "destroy",
GTK_SIGNAL_FUNC (gtk_widget_destroyed),
&dlg);
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->vbox), 2);
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->action_area), 0);
dialog = gimp_dialog_new (_("Script-Fu Console"), "script-fu-console",
gimp_standard_help_func, "filters/script-fu.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
/* Action area */
button = gtk_button_new_with_label (_("Close"));
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) gtk_widget_destroy,
(gpointer)dlg);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0);
gtk_widget_show (button);
_("Close"), gtk_widget_destroy, NULL,
1, NULL, FALSE, TRUE,
NULL);
g_signal_connect (G_OBJECT (dialog), "destroy",
G_CALLBACK (script_fu_close_callback),
NULL);
g_signal_connect (G_OBJECT (dialog), "destroy",
G_CALLBACK (gtk_widget_destroyed),
&dialog);
/* The main vbox */
main_vbox = gtk_vbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 4);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), main_vbox,
TRUE, TRUE, 0);
gtk_widget_show (main_vbox);
/* The info vbox */
label = gtk_label_new (_("SIOD Output"));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), label, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (main_vbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
/* The output text widget */
cint.vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
vsb = gtk_vscrollbar_new (cint.vadj);
cint.console = gtk_text_new (NULL, cint.vadj);
gtk_text_set_editable (GTK_TEXT (cint.console), FALSE);
gtk_widget_set_usize (cint.console, TEXT_WIDTH, TEXT_HEIGHT);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
gtk_box_pack_start (GTK_BOX (main_vbox), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
table = gtk_table_new (1, 2, FALSE);
gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2);
cint.console = gtk_text_buffer_new (NULL);
cint.text_view = gtk_text_view_new_with_buffer (cint.console);
g_object_unref (G_OBJECT (cint.console));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), table, TRUE, TRUE, 0);
gtk_text_view_set_editable (GTK_TEXT_VIEW (cint.text_view), FALSE);
gtk_widget_set_usize (cint.text_view, TEXT_WIDTH, TEXT_HEIGHT);
gtk_container_add (GTK_CONTAINER (scrolled_window), cint.text_view);
gtk_widget_show (cint.text_view);
gtk_table_attach (GTK_TABLE (table), vsb, 1, 2, 0, 1,
0, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_table_attach (GTK_TABLE (table), cint.console, 0, 1, 0, 1,
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_text_buffer_create_tag (cint.console, "strong",
"weight", PANGO_WEIGHT_BOLD,
"size", 12 * PANGO_SCALE,
NULL);
gtk_text_buffer_create_tag (cint.console, "emphasis",
"style", PANGO_STYLE_OBLIQUE,
"size", 10 * PANGO_SCALE,
NULL);
gtk_text_buffer_create_tag (cint.console, "weak",
"size", 10 * PANGO_SCALE,
NULL);
gtk_container_set_border_width (GTK_CONTAINER (table), 2);
{
const gchar *greeting_texts[] =
{
"strong", "The GIMP - GNU Image Manipulation Program\n\n",
"emphasis", "Copyright (C) 1995-2001\n",
"emphasis", "Spencer Kimball, Peter Mattis and the GIMP Development Team\n",
"weak", "\nThis program is free software; you can redistribute it and/or modify\n",
"weak", "it under the terms of the GNU General Public License as published by\n",
"weak", "the Free Software Foundation; either version 2 of the License, or\n",
"weak", "(at your option) any later version.\n\n",
"weak", "This program is distributed in the hope that it will be useful,\n",
"weak", "but WITHOUT ANY WARRANTY; without even the implied warranty of\n",
"weak", "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n",
"weak", "See the GNU General Public License for more details.\n\n",
"weak", "You should have received a copy of the GNU General Public License\n",
"weak", "along with this program; if not, write to the Free Software\n",
"weak", "Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n\n\n",
"strong", "Script-Fu Console - FIXME(\\n)\n",
"emphasis", "Interactive Scheme Development\n\n",
NULL
};
cint.font_strong =
gdk_font_load ("-*-helvetica-bold-r-normal-*-*-120-*-*-*-*-*-*");
cint.font_emphasis =
gdk_font_load ("-*-helvetica-medium-o-normal-*-*-100-*-*-*-*-*-*");
cint.font_weak =
gdk_font_load ("-*-helvetica-medium-r-normal-*-*-100-*-*-*-*-*-*");
cint.font =
gdk_fontset_load ("-*-*-medium-r-normal-*-*-100-*-*-c-*-iso8859-1,*");
GtkTextIter cursor;
gint i;
/* Realize the widget before allowing new text to be inserted */
gtk_widget_realize (cint.console);
gtk_text_buffer_get_end_iter (cint.console, &cursor);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_strong, NULL, NULL,
"The GIMP - GNU Image Manipulation Program\n\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_emphasis, NULL, NULL,
"Copyright (C) 1995-2001\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_emphasis, NULL, NULL,
"Spencer Kimball, Peter Mattis and the GIMP Development Team\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"This program is free software; you can redistribute it and/or modify\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"it under the terms of the GNU General Public License as published by\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"the Free Software Foundation; either version 2 of the License, or\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"(at your option) any later version.\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"This program is distributed in the hope that it will be useful,\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"See the GNU General Public License for more details.\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"You should have received a copy of the GNU General Public License\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"along with this program; if not, write to the Free Software\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
"\n\n", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_strong, NULL, NULL,
"Script-Fu Console - ", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font_emphasis, NULL, NULL,
"Interactive Scheme Development\n\n", -1);
gtk_widget_show (vsb);
gtk_widget_show (cint.console);
gtk_widget_show (table);
for (i = 0; greeting_texts[i]; i += 2)
{
gtk_text_buffer_insert_with_tags_by_name (cint.console, &cursor,
greeting_texts[i + 1], -1,
greeting_texts[i],
NULL);
}
}
/* The current command */
label = gtk_label_new (_("Current Command"));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), label, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (main_vbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
hbox = gtk_hbox_new ( FALSE, 0 );
hbox = gtk_hbox_new (FALSE, 2);
gtk_widget_set_usize (hbox, ENTRY_WIDTH, 0);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), hbox, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
cint.cc = gtk_entry_new ();
gtk_box_pack_start (GTK_BOX (hbox), cint.cc,
TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (hbox), cint.cc, TRUE, TRUE, 0);
GTK_WIDGET_SET_FLAGS (cint.cc, GTK_CAN_DEFAULT);
gtk_widget_grab_default (cint.cc);
gtk_signal_connect (GTK_OBJECT (cint.cc), "key_press_event",
(GtkSignalFunc) script_fu_cc_key_function,
NULL);
gtk_widget_show (cint.cc);
g_signal_connect (G_OBJECT (cint.cc), "key_press_event",
G_CALLBACK (script_fu_cc_key_function),
NULL);
button = gtk_button_new_with_label (_("Browse..."));
gtk_box_pack_start (GTK_BOX (hbox), button,
FALSE, TRUE, 0);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) script_fu_browse_callback,
NULL);
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, TRUE, 0);
gtk_widget_show (button);
gtk_widget_show (cint.cc);
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (script_fu_browse_callback),
NULL);
input_channel = g_io_channel_unix_new (siod_output_pipe[0]);
cint.input_id = g_io_add_watch (input_channel,
@ -323,19 +300,17 @@ script_fu_console_interface (void)
NULL);
/* Initialize the history */
history = g_list_append (history, NULL);
history = g_list_append (history, NULL);
history_len = 1;
gtk_widget_show (dlg);
gtk_widget_show (dialog);
gtk_main ();
g_source_remove (cint.input_id);
if (dlg)
gtk_widget_destroy (dlg);
gdk_flush ();
if (dialog)
gtk_widget_destroy (dialog);
}
static void
@ -382,63 +357,56 @@ static void
script_fu_browse_callback (GtkWidget *widget,
gpointer data)
{
gtk_quit_add_destroy (1, (GtkObject*) gimp_db_browser (apply_callback));
gtk_quit_add_destroy (1, (GtkObject *) gimp_db_browser (apply_callback));
}
static gboolean
script_fu_console_scroll_end (gpointer data)
script_fu_console_idle_scroll_end (gpointer data)
{
/* The Text widget in 1.0.1 doesn't like being scrolled before
* it is size-allocated, so we wait for it
*/
if ((cint.console->allocation.width > 1) &&
(cint.console->allocation.height > 1))
{
cint.vadj->value = cint.vadj->upper - cint.vadj->page_size;
gtk_signal_emit_by_name (GTK_OBJECT (cint.vadj), "changed");
}
else
gtk_idle_add (script_fu_console_scroll_end, NULL);
GtkAdjustment *adj;
adj = GTK_ADJUSTMENT (data);
gtk_adjustment_set_value (adj, adj->upper - adj->page_size);
return FALSE;
}
static void
script_fu_console_scroll_end (void)
{
GtkTextView *view;
view = GTK_TEXT_VIEW (cint.text_view);
/* the text view idle updates so we need to idle scroll too
*/
g_idle_add (script_fu_console_idle_scroll_end, view->vadjustment);
}
static gboolean
script_fu_siod_read (GIOChannel *channel,
GIOCondition cond,
gpointer data)
{
static gboolean hack = FALSE;
gint count;
GIOError error;
gint count;
GIOError error;
GtkTextIter cursor;
count = 0;
error = g_io_channel_read (channel, read_buffer, BUFSIZE - 1, &count);
if (error == G_IO_ERROR_NONE)
{
#ifndef G_OS_WIN32
/* Is this needed any longer on Unix? */
if (!hack) /* this is a stupid hack, but as of 10/27/98
* the script-fu-console will hang on my system without it.
* the real cause of this needs to be tracked down.
* posibly a problem with the text widget, or the
* signal handlers not getting fully initialized or...
* no reports of hangs on other platforms, could just be a
* problem with my system.
*/
{
hack = TRUE;
return TRUE;
}
#endif
read_buffer[count] = '\0';
gtk_text_freeze (GTK_TEXT (cint.console));
gtk_text_insert (GTK_TEXT (cint.console), cint.font_weak, NULL, NULL,
read_buffer, -1);
gtk_text_thaw (GTK_TEXT (cint.console));
script_fu_console_scroll_end (NULL);
gtk_text_buffer_get_end_iter (cint.console, &cursor);
gtk_text_buffer_insert_with_tags_by_name (cint.console, &cursor,
read_buffer, -1,
"weak",
NULL);
script_fu_console_scroll_end ();
}
return TRUE;
@ -447,7 +415,7 @@ script_fu_siod_read (GIOChannel *channel,
static gboolean
script_fu_cc_is_empty (void)
{
gchar *str;
const gchar *str;
if ((str = gtk_entry_get_text (GTK_ENTRY (cint.cc))) == NULL)
return TRUE;
@ -468,8 +436,9 @@ script_fu_cc_key_function (GtkWidget *widget,
GdkEventKey *event,
gpointer data)
{
GList *list;
gint direction = 0;
GList *list;
gint direction = 0;
GtkTextIter cursor;
switch (event->keyval)
{
@ -484,20 +453,36 @@ script_fu_cc_key_function (GtkWidget *widget,
g_free (list->data);
list->data = g_strdup (gtk_entry_get_text (GTK_ENTRY (cint.cc)));
gtk_text_freeze (GTK_TEXT (cint.console));
gtk_text_insert (GTK_TEXT (cint.console), cint.font_strong, NULL, NULL,
"=> ", -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font, NULL, NULL,
gtk_entry_get_text (GTK_ENTRY (cint.cc)), -1);
gtk_text_insert (GTK_TEXT (cint.console), cint.font, NULL, NULL,
"\n\n", -1);
gtk_text_thaw (GTK_TEXT (cint.console));
gtk_text_buffer_get_end_iter (cint.console, &cursor);
cint.vadj->value = cint.vadj->upper - cint.vadj->page_size;
gtk_signal_emit_by_name (GTK_OBJECT (cint.vadj), "changed");
gtk_text_buffer_insert_with_tags_by_name (cint.console, &cursor,
"=> FIXME(\\n)\n", -1,
"strong",
NULL);
{
gchar *eek;
eek = g_strdup_printf ("%s\n\n",
gtk_entry_get_text (GTK_ENTRY (cint.cc)));
gtk_text_buffer_insert_with_tags_by_name (cint.console, &cursor,
eek, -1,
"weak",
NULL);
g_free (eek);
}
/*
gtk_text_buffer_insert_with_tags_by_name (cint.console, &cursor,
"\n\n", -1,
"weak",
NULL);
*/
script_fu_console_scroll_end ();
gtk_entry_set_text (GTK_ENTRY (cint.cc), "");
gdk_flush ();
siod_interpret_string ((char *) list->data);
gimp_displays_flush ();
@ -595,13 +580,13 @@ script_fu_open_siod_console (void)
}
else
{
gimp_message (_("Unable to open a stream on the SIOD output pipe"));
g_message (_("Unable to open a stream on the SIOD output pipe"));
siod_output = stdout;
}
}
else
{
gimp_message (_("Unable to open the SIOD output pipe"));
g_message (_("Unable to open the SIOD output pipe"));
siod_output = stdout;
}
}
@ -646,7 +631,7 @@ script_fu_eval_run (gchar *name,
case GIMP_RUN_INTERACTIVE:
case GIMP_RUN_WITH_LAST_VALS:
status = GIMP_PDB_CALLING_ERROR;
gimp_message (_("Script-Fu evaluate mode allows only noninteractive invocation"));
g_message (_("Script-Fu evaluate mode allows only noninteractive invocation"));
break;
default:
@ -659,4 +644,3 @@ script_fu_eval_run (gchar *name,
values[0].type = GIMP_PDB_STATUS;
values[0].data.d_status = status;
}

View File

@ -19,15 +19,17 @@
#ifndef __SCRIPT_FU_CONSOLE_H__
#define __SCRIPT_FU_CONSOLE_H__
void script_fu_console_run (gchar *name,
gint nparams,
GimpParam *params,
gint *nreturn_vals,
GimpParam **return_vals);
void script_fu_eval_run (gchar *name,
gint nparams,
GimpParam *params,
gint *nreturn_vals,
GimpParam **return_vals);
void script_fu_console_run (gchar *name,
gint nparams,
GimpParam *params,
gint *nreturn_vals,
GimpParam **return_vals);
void script_fu_eval_run (gchar *name,
gint nparams,
GimpParam *params,
gint *nreturn_vals,
GimpParam **return_vals);
#endif /* __SCRIPT_FU_CONSOLE__ */

View File

@ -35,10 +35,6 @@
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
/* FIXME: To get the 'broken' GtkText */
#define GTK_ENABLE_BROKEN
#include <gtk/gtktext.h>
#include "siod.h"
#include "script-fu-scripts.h"
@ -257,16 +253,16 @@ extern gchar siod_err_msg[];
void
script_fu_find_scripts (void)
{
gchar *path_str;
gchar *home;
gchar *local_path;
gchar *path;
gchar *filename;
gchar *token;
gchar *next_token;
gchar *command;
gint my_err;
DIR *dir;
const gchar *home;
gchar *path_str;
gchar *local_path;
gchar *path;
gchar *filename;
gchar *token;
gchar *next_token;
gchar *command;
gint my_err;
DIR *dir;
struct dirent *dir_ent;
/* Make sure to clear any existing scripts */
@ -1226,9 +1222,10 @@ script_fu_interface (SFScript *script)
gtk_quit_add_destroy (1, GTK_OBJECT (dlg));
gtk_window_set_title (GTK_WINDOW (dlg), sf_interface->window_title);
gtk_window_set_wmclass (GTK_WINDOW (dlg), "script_fu", "Gimp");
gtk_signal_connect_object (GTK_OBJECT (dlg), "delete_event",
GTK_SIGNAL_FUNC (script_fu_interface_quit),
(GtkObject *) script);
g_signal_connect_swapped (G_OBJECT (dlg), "delete_event",
G_CALLBACK (script_fu_interface_quit),
script);
gimp_help_connect_help_accel (dlg, gimp_standard_help_func,
"filters/script-fu.html");
@ -1312,10 +1309,11 @@ script_fu_interface (SFScript *script)
COLOR_SAMPLE_WIDTH, COLOR_SAMPLE_HEIGHT,
&script->arg_values[i].sfa_color,
GIMP_COLOR_AREA_FLAT);
gtk_signal_connect (GTK_OBJECT (sf_interface->args_widgets[i]),
"color_changed",
GTK_SIGNAL_FUNC (gimp_color_button_get_color),
&script->arg_values[i].sfa_color);
g_signal_connect (G_OBJECT (sf_interface->args_widgets[i]),
"color_changed",
G_CALLBACK (gimp_color_button_get_color),
&script->arg_values[i].sfa_color);
break;
case SF_TOGGLE:
@ -1325,10 +1323,11 @@ script_fu_interface (SFScript *script)
gtk_check_button_new_with_label (gettext (script->arg_labels[i]));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sf_interface->args_widgets[i]),
script->arg_values[i].sfa_toggle);
gtk_signal_connect (GTK_OBJECT (sf_interface->args_widgets[i]),
"toggled",
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
&script->arg_values[i].sfa_toggle);
g_signal_connect (G_OBJECT (sf_interface->args_widgets[i]),
"toggled",
G_CALLBACK (gimp_toggle_button_update),
&script->arg_values[i].sfa_toggle);
break;
case SF_VALUE:
@ -1391,10 +1390,10 @@ script_fu_interface (SFScript *script)
script->arg_values[i].sfa_file.fileselection =
sf_interface->args_widgets[i];
gtk_signal_connect (GTK_OBJECT (sf_interface->args_widgets[i]),
"filename_changed",
(GtkSignalFunc) script_fu_file_selection_callback,
&script->arg_values[i].sfa_file);
g_signal_connect (G_OBJECT (sf_interface->args_widgets[i]),
"filename_changed",
G_CALLBACK (script_fu_file_selection_callback),
&script->arg_values[i].sfa_file);
break;
case SF_FONT:
@ -1412,10 +1411,9 @@ script_fu_interface (SFScript *script)
script_fu_font_preview (script->arg_values[i].sfa_font.preview,
script->arg_values[i].sfa_font.fontname);
gtk_signal_connect (GTK_OBJECT (sf_interface->args_widgets[i]),
"clicked",
(GtkSignalFunc) script_fu_font_preview_callback,
&script->arg_values[i].sfa_font);
g_signal_connect (G_OBJECT (sf_interface->args_widgets[i]), "clicked",
G_CALLBACK (script_fu_font_preview_callback),
&script->arg_values[i].sfa_font);
break;
case SF_PATTERN:
@ -1454,7 +1452,7 @@ script_fu_interface (SFScript *script)
menu_item = gtk_menu_item_new_with_label (gettext ((gchar *)list->data));
gtk_object_set_user_data (GTK_OBJECT (menu_item),
GUINT_TO_POINTER (j));
gtk_menu_append (GTK_MENU (menu), menu_item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
gtk_widget_show (menu_item);
}
@ -1481,15 +1479,16 @@ script_fu_interface (SFScript *script)
hbox = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
gtk_widget_show (hbox);
button = gtk_button_new_with_label (_("Reset to Defaults"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) script_fu_reset_callback,
script);
gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
gtk_widget_show (hbox);
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (script_fu_reset_callback),
script);
gtk_widget_show (vbox);
gtk_widget_show (frame);
@ -1503,44 +1502,45 @@ script_fu_interface (SFScript *script)
hbox = gtk_hbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 2);
gtk_box_pack_start (GTK_BOX (main_box), hbox, FALSE, TRUE, 0);
gtk_widget_show (hbox);
bbox = gtk_hbutton_box_new ();
gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 4);
gtk_box_pack_start (GTK_BOX (hbox), bbox, FALSE, FALSE, 0);
gtk_widget_show (bbox);
button = gtk_button_new_with_label (_("About"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (script_fu_about_callback),
script);
gtk_container_add (GTK_CONTAINER (bbox), button);
gtk_widget_show (button);
gtk_widget_show (bbox);
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (script_fu_about_callback),
script);
bbox = gtk_hbutton_box_new ();
gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 4);
gtk_box_pack_end (GTK_BOX (hbox), bbox, FALSE, FALSE, 0);
gtk_widget_show (bbox);
button = gtk_button_new_with_label (_("OK"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (script_fu_ok_callback),
script);
gtk_container_add (GTK_CONTAINER (bbox), button);
gtk_widget_grab_default (button);
gtk_widget_show (button);
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (script_fu_ok_callback),
script);
button = gtk_button_new_with_label (_("Cancel"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (script_fu_interface_quit),
(GtkObject *) script);
gtk_container_add (GTK_CONTAINER (bbox), button);
gtk_widget_show (button);
gtk_widget_show (bbox);
gtk_widget_show (hbox);
g_signal_connect_swapped (G_OBJECT (button), "clicked",
G_CALLBACK (script_fu_interface_quit),
script);
/* The statusbar (well it's a faked statusbar...) */
hbox = gtk_hbox_new (FALSE, 0);
@ -1833,13 +1833,13 @@ script_fu_ok_callback (GtkWidget *widget,
break;
case SF_VALUE:
text = gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i]));
text = (gchar *) gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i]));
g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value = g_strdup (text);
break;
case SF_STRING:
text = gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i]));
text = (gchar *) gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i]));
g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value = g_strdup (text);
escaped = ESCAPE (text);
@ -1940,30 +1940,37 @@ static void
script_fu_about_callback (GtkWidget *widget,
gpointer data)
{
GtkWidget *dialog;
GtkWidget *frame;
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *button;
GtkWidget *label;
GtkWidget *table;
GtkWidget *text;
GtkWidget *vscrollbar;
GtkWidget *dialog;
GtkWidget *frame;
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *label;
GtkWidget *scrolled_window;
GtkWidget *table;
GtkWidget *text_view;
GtkTextBuffer *text_buffer;
SFScript *script = (SFScript *) data;
if (sf_interface->about_dialog == NULL)
{
dialog = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (dialog), sf_interface->window_title);
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
gtk_signal_connect_object (GTK_OBJECT (dialog), "delete_event",
GTK_SIGNAL_FUNC (gtk_widget_destroy),
GTK_OBJECT (dialog));
dialog = gimp_dialog_new (sf_interface->window_title, "script-fu-about",
gimp_standard_help_func,
"filters/script-fu.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Close"), gtk_widget_destroy, NULL,
1, NULL, TRUE, TRUE,
NULL);
sf_interface->about_dialog = dialog;
g_signal_connect (G_OBJECT (dialog), "destroy",
G_CALLBACK (gtk_widget_destroyed),
&sf_interface->about_dialog);
gimp_help_connect_help_accel (dialog, gimp_standard_help_func,
"filters/script-fu.html");
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
@ -1987,30 +1994,24 @@ script_fu_about_callback (GtkWidget *widget,
gtk_widget_show (label);
/* the help display */
table = gtk_table_new (2, 2, FALSE);
gtk_table_set_row_spacing (GTK_TABLE (table), 0, 2);
gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2);
gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);
gtk_widget_show (table);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap (GTK_TEXT (text), TRUE);
gtk_table_attach (GTK_TABLE (table), text, 0, 1, 0, 1,
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_set_usize (text, 200, 60);
gtk_widget_show (text);
text_buffer = gtk_text_buffer_new (NULL);
text_view = gtk_text_view_new_with_buffer (text_buffer);
g_object_unref (G_OBJECT (text_buffer));
vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
gtk_table_attach (GTK_TABLE (table), vscrollbar, 1, 2, 0, 1,
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (vscrollbar);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD);
gtk_widget_set_usize (text_view, 200, 60);
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
gtk_widget_show (text_view);
gtk_widget_realize (text);
gtk_text_freeze (GTK_TEXT (text));
gtk_text_insert (GTK_TEXT (text), NULL, &text->style->black, NULL,
script->help, -1);
gtk_text_buffer_set_text (text_buffer, script->help, -1);
/* author, copyright, etc. */
table = gtk_table_new (2, 4, FALSE);
@ -2046,25 +2047,6 @@ script_fu_about_callback (GtkWidget *widget,
}
gtk_widget_show (frame);
gtk_text_thaw (GTK_TEXT (text));
/* action area */
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area), 2);
button = gtk_button_new_with_label (_("Close"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (gtk_widget_destroy),
GTK_OBJECT (dialog));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_grab_default (button);
gtk_widget_show (button);
sf_interface->about_dialog = dialog;
gtk_signal_connect (GTK_OBJECT (dialog), "destroy",
GTK_SIGNAL_FUNC (gtk_widget_destroyed),
&sf_interface->about_dialog);
}
gtk_window_set_position (GTK_WINDOW (sf_interface->about_dialog),
@ -2201,27 +2183,29 @@ script_fu_font_preview_callback (GtkWidget *widget,
font = (SFFont *) data;
if (!font->dialog)
if (! font->dialog)
{
font->dialog =
font->dialog =
gtk_font_selection_dialog_new (_("Script-Fu Font Selection"));
fsd = GTK_FONT_SELECTION_DIALOG (font->dialog);
gtk_signal_connect (GTK_OBJECT (fsd->ok_button), "clicked",
GTK_SIGNAL_FUNC (script_fu_font_dialog_ok),
font);
gtk_signal_connect (GTK_OBJECT (fsd), "delete_event",
GTK_SIGNAL_FUNC (script_fu_font_dialog_delete),
font);
gtk_signal_connect (GTK_OBJECT (fsd), "destroy",
GTK_SIGNAL_FUNC (gtk_widget_destroyed),
&font->dialog);
gtk_signal_connect (GTK_OBJECT (fsd->cancel_button), "clicked",
GTK_SIGNAL_FUNC (script_fu_font_dialog_cancel),
font);
g_signal_connect (G_OBJECT (fsd->ok_button), "clicked",
G_CALLBACK (script_fu_font_dialog_ok),
font);
g_signal_connect (G_OBJECT (fsd), "delete_event",
G_CALLBACK (script_fu_font_dialog_delete),
font);
g_signal_connect (G_OBJECT (fsd), "destroy",
G_CALLBACK (gtk_widget_destroyed),
&font->dialog);
g_signal_connect (G_OBJECT (fsd->cancel_button), "clicked",
G_CALLBACK (script_fu_font_dialog_cancel),
font);
}
else
fsd = GTK_FONT_SELECTION_DIALOG (font->dialog);
{
fsd = GTK_FONT_SELECTION_DIALOG (font->dialog);
}
gtk_font_selection_dialog_set_font_name (fsd, font->fontname);
gtk_window_set_position (GTK_WINDOW (font->dialog), GTK_WIN_POS_MOUSE);

View File

@ -35,10 +35,6 @@
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
/* FIXME: To get the 'broken' GtkText */
#define GTK_ENABLE_BROKEN
#include <gtk/gtktext.h>
#include "siod.h"
#include "script-fu-scripts.h"
@ -257,16 +253,16 @@ extern gchar siod_err_msg[];
void
script_fu_find_scripts (void)
{
gchar *path_str;
gchar *home;
gchar *local_path;
gchar *path;
gchar *filename;
gchar *token;
gchar *next_token;
gchar *command;
gint my_err;
DIR *dir;
const gchar *home;
gchar *path_str;
gchar *local_path;
gchar *path;
gchar *filename;
gchar *token;
gchar *next_token;
gchar *command;
gint my_err;
DIR *dir;
struct dirent *dir_ent;
/* Make sure to clear any existing scripts */
@ -1226,9 +1222,10 @@ script_fu_interface (SFScript *script)
gtk_quit_add_destroy (1, GTK_OBJECT (dlg));
gtk_window_set_title (GTK_WINDOW (dlg), sf_interface->window_title);
gtk_window_set_wmclass (GTK_WINDOW (dlg), "script_fu", "Gimp");
gtk_signal_connect_object (GTK_OBJECT (dlg), "delete_event",
GTK_SIGNAL_FUNC (script_fu_interface_quit),
(GtkObject *) script);
g_signal_connect_swapped (G_OBJECT (dlg), "delete_event",
G_CALLBACK (script_fu_interface_quit),
script);
gimp_help_connect_help_accel (dlg, gimp_standard_help_func,
"filters/script-fu.html");
@ -1312,10 +1309,11 @@ script_fu_interface (SFScript *script)
COLOR_SAMPLE_WIDTH, COLOR_SAMPLE_HEIGHT,
&script->arg_values[i].sfa_color,
GIMP_COLOR_AREA_FLAT);
gtk_signal_connect (GTK_OBJECT (sf_interface->args_widgets[i]),
"color_changed",
GTK_SIGNAL_FUNC (gimp_color_button_get_color),
&script->arg_values[i].sfa_color);
g_signal_connect (G_OBJECT (sf_interface->args_widgets[i]),
"color_changed",
G_CALLBACK (gimp_color_button_get_color),
&script->arg_values[i].sfa_color);
break;
case SF_TOGGLE:
@ -1325,10 +1323,11 @@ script_fu_interface (SFScript *script)
gtk_check_button_new_with_label (gettext (script->arg_labels[i]));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sf_interface->args_widgets[i]),
script->arg_values[i].sfa_toggle);
gtk_signal_connect (GTK_OBJECT (sf_interface->args_widgets[i]),
"toggled",
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
&script->arg_values[i].sfa_toggle);
g_signal_connect (G_OBJECT (sf_interface->args_widgets[i]),
"toggled",
G_CALLBACK (gimp_toggle_button_update),
&script->arg_values[i].sfa_toggle);
break;
case SF_VALUE:
@ -1391,10 +1390,10 @@ script_fu_interface (SFScript *script)
script->arg_values[i].sfa_file.fileselection =
sf_interface->args_widgets[i];
gtk_signal_connect (GTK_OBJECT (sf_interface->args_widgets[i]),
"filename_changed",
(GtkSignalFunc) script_fu_file_selection_callback,
&script->arg_values[i].sfa_file);
g_signal_connect (G_OBJECT (sf_interface->args_widgets[i]),
"filename_changed",
G_CALLBACK (script_fu_file_selection_callback),
&script->arg_values[i].sfa_file);
break;
case SF_FONT:
@ -1412,10 +1411,9 @@ script_fu_interface (SFScript *script)
script_fu_font_preview (script->arg_values[i].sfa_font.preview,
script->arg_values[i].sfa_font.fontname);
gtk_signal_connect (GTK_OBJECT (sf_interface->args_widgets[i]),
"clicked",
(GtkSignalFunc) script_fu_font_preview_callback,
&script->arg_values[i].sfa_font);
g_signal_connect (G_OBJECT (sf_interface->args_widgets[i]), "clicked",
G_CALLBACK (script_fu_font_preview_callback),
&script->arg_values[i].sfa_font);
break;
case SF_PATTERN:
@ -1454,7 +1452,7 @@ script_fu_interface (SFScript *script)
menu_item = gtk_menu_item_new_with_label (gettext ((gchar *)list->data));
gtk_object_set_user_data (GTK_OBJECT (menu_item),
GUINT_TO_POINTER (j));
gtk_menu_append (GTK_MENU (menu), menu_item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
gtk_widget_show (menu_item);
}
@ -1481,15 +1479,16 @@ script_fu_interface (SFScript *script)
hbox = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
gtk_widget_show (hbox);
button = gtk_button_new_with_label (_("Reset to Defaults"));
gtk_misc_set_padding (GTK_MISC (GTK_BIN (button)->child), 2, 0);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) script_fu_reset_callback,
script);
gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
gtk_widget_show (hbox);
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (script_fu_reset_callback),
script);
gtk_widget_show (vbox);
gtk_widget_show (frame);
@ -1503,44 +1502,45 @@ script_fu_interface (SFScript *script)
hbox = gtk_hbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 2);
gtk_box_pack_start (GTK_BOX (main_box), hbox, FALSE, TRUE, 0);
gtk_widget_show (hbox);
bbox = gtk_hbutton_box_new ();
gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 4);
gtk_box_pack_start (GTK_BOX (hbox), bbox, FALSE, FALSE, 0);
gtk_widget_show (bbox);
button = gtk_button_new_with_label (_("About"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (script_fu_about_callback),
script);
gtk_container_add (GTK_CONTAINER (bbox), button);
gtk_widget_show (button);
gtk_widget_show (bbox);
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (script_fu_about_callback),
script);
bbox = gtk_hbutton_box_new ();
gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 4);
gtk_box_pack_end (GTK_BOX (hbox), bbox, FALSE, FALSE, 0);
gtk_widget_show (bbox);
button = gtk_button_new_with_label (_("OK"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (script_fu_ok_callback),
script);
gtk_container_add (GTK_CONTAINER (bbox), button);
gtk_widget_grab_default (button);
gtk_widget_show (button);
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (script_fu_ok_callback),
script);
button = gtk_button_new_with_label (_("Cancel"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (script_fu_interface_quit),
(GtkObject *) script);
gtk_container_add (GTK_CONTAINER (bbox), button);
gtk_widget_show (button);
gtk_widget_show (bbox);
gtk_widget_show (hbox);
g_signal_connect_swapped (G_OBJECT (button), "clicked",
G_CALLBACK (script_fu_interface_quit),
script);
/* The statusbar (well it's a faked statusbar...) */
hbox = gtk_hbox_new (FALSE, 0);
@ -1833,13 +1833,13 @@ script_fu_ok_callback (GtkWidget *widget,
break;
case SF_VALUE:
text = gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i]));
text = (gchar *) gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i]));
g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value = g_strdup (text);
break;
case SF_STRING:
text = gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i]));
text = (gchar *) gtk_entry_get_text (GTK_ENTRY (sf_interface->args_widgets[i]));
g_free (script->arg_values[i].sfa_value);
script->arg_values[i].sfa_value = g_strdup (text);
escaped = ESCAPE (text);
@ -1940,30 +1940,37 @@ static void
script_fu_about_callback (GtkWidget *widget,
gpointer data)
{
GtkWidget *dialog;
GtkWidget *frame;
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *button;
GtkWidget *label;
GtkWidget *table;
GtkWidget *text;
GtkWidget *vscrollbar;
GtkWidget *dialog;
GtkWidget *frame;
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *label;
GtkWidget *scrolled_window;
GtkWidget *table;
GtkWidget *text_view;
GtkTextBuffer *text_buffer;
SFScript *script = (SFScript *) data;
if (sf_interface->about_dialog == NULL)
{
dialog = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (dialog), sf_interface->window_title);
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
gtk_signal_connect_object (GTK_OBJECT (dialog), "delete_event",
GTK_SIGNAL_FUNC (gtk_widget_destroy),
GTK_OBJECT (dialog));
dialog = gimp_dialog_new (sf_interface->window_title, "script-fu-about",
gimp_standard_help_func,
"filters/script-fu.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Close"), gtk_widget_destroy, NULL,
1, NULL, TRUE, TRUE,
NULL);
sf_interface->about_dialog = dialog;
g_signal_connect (G_OBJECT (dialog), "destroy",
G_CALLBACK (gtk_widget_destroyed),
&sf_interface->about_dialog);
gimp_help_connect_help_accel (dialog, gimp_standard_help_func,
"filters/script-fu.html");
frame = gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
@ -1987,30 +1994,24 @@ script_fu_about_callback (GtkWidget *widget,
gtk_widget_show (label);
/* the help display */
table = gtk_table_new (2, 2, FALSE);
gtk_table_set_row_spacing (GTK_TABLE (table), 0, 2);
gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2);
gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);
gtk_widget_show (table);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap (GTK_TEXT (text), TRUE);
gtk_table_attach (GTK_TABLE (table), text, 0, 1, 0, 1,
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_set_usize (text, 200, 60);
gtk_widget_show (text);
text_buffer = gtk_text_buffer_new (NULL);
text_view = gtk_text_view_new_with_buffer (text_buffer);
g_object_unref (G_OBJECT (text_buffer));
vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
gtk_table_attach (GTK_TABLE (table), vscrollbar, 1, 2, 0, 1,
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
gtk_widget_show (vscrollbar);
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD);
gtk_widget_set_usize (text_view, 200, 60);
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
gtk_widget_show (text_view);
gtk_widget_realize (text);
gtk_text_freeze (GTK_TEXT (text));
gtk_text_insert (GTK_TEXT (text), NULL, &text->style->black, NULL,
script->help, -1);
gtk_text_buffer_set_text (text_buffer, script->help, -1);
/* author, copyright, etc. */
table = gtk_table_new (2, 4, FALSE);
@ -2046,25 +2047,6 @@ script_fu_about_callback (GtkWidget *widget,
}
gtk_widget_show (frame);
gtk_text_thaw (GTK_TEXT (text));
/* action area */
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area), 2);
button = gtk_button_new_with_label (_("Close"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (gtk_widget_destroy),
GTK_OBJECT (dialog));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_grab_default (button);
gtk_widget_show (button);
sf_interface->about_dialog = dialog;
gtk_signal_connect (GTK_OBJECT (dialog), "destroy",
GTK_SIGNAL_FUNC (gtk_widget_destroyed),
&sf_interface->about_dialog);
}
gtk_window_set_position (GTK_WINDOW (sf_interface->about_dialog),
@ -2201,27 +2183,29 @@ script_fu_font_preview_callback (GtkWidget *widget,
font = (SFFont *) data;
if (!font->dialog)
if (! font->dialog)
{
font->dialog =
font->dialog =
gtk_font_selection_dialog_new (_("Script-Fu Font Selection"));
fsd = GTK_FONT_SELECTION_DIALOG (font->dialog);
gtk_signal_connect (GTK_OBJECT (fsd->ok_button), "clicked",
GTK_SIGNAL_FUNC (script_fu_font_dialog_ok),
font);
gtk_signal_connect (GTK_OBJECT (fsd), "delete_event",
GTK_SIGNAL_FUNC (script_fu_font_dialog_delete),
font);
gtk_signal_connect (GTK_OBJECT (fsd), "destroy",
GTK_SIGNAL_FUNC (gtk_widget_destroyed),
&font->dialog);
gtk_signal_connect (GTK_OBJECT (fsd->cancel_button), "clicked",
GTK_SIGNAL_FUNC (script_fu_font_dialog_cancel),
font);
g_signal_connect (G_OBJECT (fsd->ok_button), "clicked",
G_CALLBACK (script_fu_font_dialog_ok),
font);
g_signal_connect (G_OBJECT (fsd), "delete_event",
G_CALLBACK (script_fu_font_dialog_delete),
font);
g_signal_connect (G_OBJECT (fsd), "destroy",
G_CALLBACK (gtk_widget_destroyed),
&font->dialog);
g_signal_connect (G_OBJECT (fsd->cancel_button), "clicked",
G_CALLBACK (script_fu_font_dialog_cancel),
font);
}
else
fsd = GTK_FONT_SELECTION_DIALOG (font->dialog);
{
fsd = GTK_FONT_SELECTION_DIALOG (font->dialog);
}
gtk_font_selection_dialog_set_font_name (fsd, font->fontname);
gtk_window_set_position (GTK_WINDOW (font->dialog), GTK_WIN_POS_MOUSE);

View File

@ -26,18 +26,20 @@
#endif
#include <glib.h>
static void script_fu_text_console_interface (void);
void
script_fu_text_console_run (char *name,
int nparams,
GimpParam *params,
int *nreturn_vals,
GimpParam **return_vals)
script_fu_text_console_run (gchar *name,
gint nparams,
GimpParam *params,
gint *nreturn_vals,
GimpParam **return_vals)
{
static GimpParam values[1];
static GimpParam values[1];
GimpPDBStatusType status = GIMP_PDB_SUCCESS;
GimpRunModeType run_mode;
GimpRunModeType run_mode;
run_mode = params[0].data.d_int32;
@ -57,7 +59,7 @@ script_fu_text_console_run (char *name,
case GIMP_RUN_WITH_LAST_VALS:
case GIMP_RUN_NONINTERACTIVE:
status = GIMP_PDB_CALLING_ERROR;
gimp_message (_("Script-Fu console mode allows only interactive invocation"));
g_message (_("Script-Fu console mode allows only interactive invocation"));
break;
default:
@ -65,24 +67,25 @@ script_fu_text_console_run (char *name,
}
*nreturn_vals = 1;
*return_vals = values;
*return_vals = values;
values[0].type = GIMP_PDB_STATUS;
values[0].type = GIMP_PDB_STATUS;
values[0].data.d_status = status;
}
static gboolean
read_command (GString *command)
{
unsigned char c;
int next;
int left = 0, right = 0;
guchar c;
gint next;
gint left = 0;
gint right = 0;
g_string_assign (command, "");
while ((next = fgetc (stdin)) != EOF)
{
c = (unsigned char) next;
c = (guchar) next;
if ((c == '\n') && (left == right))
break;
@ -101,8 +104,8 @@ read_command (GString *command)
static void
script_fu_text_console_interface (void)
{
gboolean quit = FALSE;
GString *command;
gboolean quit = FALSE;
GString *command;
command = g_string_new ("");
@ -115,6 +118,3 @@ script_fu_text_console_interface (void)
g_string_free (command, TRUE);
}

View File

@ -19,10 +19,12 @@
#ifndef __SCRIPT_FU_TEXT_CONSOLE_H__
#define __SCRIPT_FU_TEXT_CONSOLE_H__
void script_fu_text_console_run (gchar *name,
gint nparams,
GimpParam *params,
gint *nreturn_vals,
GimpParam **return_vals);
#endif /* __SCRIPT_FU_CONSOLE__ */
void script_fu_text_console_run (gchar *name,
gint nparams,
GimpParam *params,
gint *nreturn_vals,
GimpParam **return_vals);
#endif /* __SCRIPT_FU_TEXT_CONSOLE__ */

View File

@ -199,16 +199,17 @@ script_fu_run (gchar *name,
siod_init (FALSE);
}
/* Load all of the available scripts */
script_fu_find_scripts ();
/*
* The main, automatically installed script fu extension.
* For things like logos and effects that are runnable from GIMP menus.
*/
if (strcmp (name, "extension_script_fu") == 0)
{
/*
* The main, automatically installed script fu extension. For
* things like logos and effects that are runnable from GIMP
* menus.
*/
static GimpParam values[1];
GimpPDBStatusType status = GIMP_PDB_SUCCESS;
@ -224,32 +225,43 @@ script_fu_run (gchar *name,
values[0].type = GIMP_PDB_STATUS;
values[0].data.d_status = status;
}
/*
* The script-fu consoles for interactive SIOD development
*/
else if (strcmp (name, "extension_script_fu_text_console") == 0)
{
script_fu_text_console_run (name, nparams, param, nreturn_vals, return_vals);
/*
* The script-fu text console for interactive SIOD development
*/
script_fu_text_console_run (name, nparams, param,
nreturn_vals, return_vals);
}
else if (strcmp (name, "extension_script_fu_console") == 0)
{
script_fu_console_run (name, nparams, param, nreturn_vals, return_vals);
/*
* The script-fu console for interactive SIOD development
*/
script_fu_console_run (name, nparams, param,
nreturn_vals, return_vals);
}
#ifndef G_OS_WIN32
/*
* The script-fu server for remote operation
*/
else if (strcmp (name, "extension_script_fu_server") == 0)
{
script_fu_server_run (name, nparams, param, nreturn_vals, return_vals);
/*
* The script-fu server for remote operation
*/
script_fu_server_run (name, nparams, param,
nreturn_vals, return_vals);
}
#endif
/*
* A non-interactive "console" (for batch mode)
*/
else if (strcmp (name, "extension_script_fu_eval") == 0)
{
script_fu_eval_run (name, nparams, param, nreturn_vals, return_vals);
/*
* A non-interactive "console" (for batch mode)
*/
script_fu_eval_run (name, nparams, param,
nreturn_vals, return_vals);
}
}