libgimp/gimpfileselection.c behave like other dialogs (close) when

2000-02-28  Michael Natterer  <mitch@gimp.org>

	* libgimp/gimpfileselection.c
	* libgimp/gimpunitmenu.c: behave like other dialogs (close) when
	pressing "OK" or "Cancel".

	* libgimp/stdplugins-intl.h
	* plug-ins/script-fu/script-fu-intl.h: bind the "gimp-libgimp"
	textdomain also if HAVE_LC_MESSAGES is undefined.

	* plug-ins/print/print-ps.c
	* plug-ins/print/print.c: applied a patch from Robert L Kravitz
	<rlk@alum.mit.edu> which adds a "Center" button, activates all
	text entries and corrects the rounding behaviour. And a minor fix
	for the PS driver.

	* plug-ins/dbbrowser/Makefile.am
	* plug-ins/dbbrowser/dbbrowser.h: removed.

	* plug-ins/dbbrowser/dbbrowser.c
	* plug-ins/dbbrowser/dbbrowser_utils.c
	* plug-ins/dbbrowser/dbbrowser_utils.h
	* plug-ins/common/plugindetails.c: ui and code cleanup.
	libgimp ui stuff and a proper include structure for the dbbrowser.

	* plug-ins/script-fu/script-fu-console.c: include
	"plug-ins/dbbrowser/dbbrowser_utils.h".
This commit is contained in:
Michael Natterer 2000-02-28 00:45:58 +00:00 committed by Michael Natterer
parent 9da436e33e
commit c56b60e815
26 changed files with 3050 additions and 2792 deletions

View File

@ -1,3 +1,31 @@
2000-02-28 Michael Natterer <mitch@gimp.org>
* libgimp/gimpfileselection.c
* libgimp/gimpunitmenu.c: behave like other dialogs (close) when
pressing "OK" or "Cancel".
* libgimp/stdplugins-intl.h
* plug-ins/script-fu/script-fu-intl.h: bind the "gimp-libgimp"
textdomain also if HAVE_LC_MESSAGES is undefined.
* plug-ins/print/print-ps.c
* plug-ins/print/print.c: applied a patch from Robert L Kravitz
<rlk@alum.mit.edu> which adds a "Center" button, activates all
text entries and corrects the rounding behaviour. And a minor fix
for the PS driver.
* plug-ins/dbbrowser/Makefile.am
* plug-ins/dbbrowser/dbbrowser.h: removed.
* plug-ins/dbbrowser/dbbrowser.c
* plug-ins/dbbrowser/dbbrowser_utils.c
* plug-ins/dbbrowser/dbbrowser_utils.h
* plug-ins/common/plugindetails.c: ui and code cleanup.
libgimp ui stuff and a proper include structure for the dbbrowser.
* plug-ins/script-fu/script-fu-console.c: include
"plug-ins/dbbrowser/dbbrowser_utils.h".
Sun Feb 27 21:55:44 CET 2000 Sven Neumann <sven@gimp.org>
* po-script-fu/Makefile.in.in: forgot to check this in

View File

@ -315,6 +315,8 @@ gimp_file_selection_filesel_ok_callback (GtkWidget *widget,
gtk_entry_set_text (GTK_ENTRY (gfs->entry), filename);
gtk_widget_hide (gfs->file_selection);
/* update everything */
gimp_file_selection_entry_callback (gfs->entry, data);
}
@ -357,9 +359,6 @@ gimp_file_selection_browse_callback (GtkWidget *widget,
gtk_container_set_border_width (GTK_CONTAINER (gfs->file_selection), 2);
gtk_container_set_border_width (GTK_CONTAINER (GTK_FILE_SELECTION (gfs->file_selection)->button_area), 2);
gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_FILE_SELECTION (gfs->file_selection)->ok_button)->child), _("Select"));
gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_FILE_SELECTION (gfs->file_selection)->cancel_button)->child), _("Close"));
gtk_signal_connect
(GTK_OBJECT (GTK_FILE_SELECTION (gfs->file_selection)->ok_button),
"clicked",
@ -396,8 +395,8 @@ gimp_file_selection_browse_callback (GtkWidget *widget,
static void
gimp_file_selection_check_filename (GimpFileSelection *gfs)
{
static struct stat statbuf;
gchar* filename;
static struct stat statbuf;
gchar *filename;
if (! gfs->check_valid)
return;

View File

@ -16,105 +16,218 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser_utils.c
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
98/12/13 Sven Neumann <sven@gimp.org> : added help display
*/
* dbbrowser_utils.c
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*
* 98/12/13 Sven Neumann <sven@gimp.org> : added help display
*/
#include "config.h"
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
#include "dbbrowser_utils.h"
#include "libgimp/stdplugins-intl.h"
GList *proc_table;
/* configuration */
GtkWidget*
gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
#define DBL_LIST_WIDTH 220
#define DBL_WIDTH DBL_LIST_WIDTH+400
#define DBL_HEIGHT 250
/* end of configuration */
typedef struct
{
gchar *label;
gchar *func;
} ListEntry_t;
typedef struct
{
GtkWidget *dlg;
GtkWidget *search_entry;
GtkWidget *name_button;
GtkWidget *blurb_button;
GtkWidget *descr_scroll;
GtkWidget *descr_table;
GtkWidget *clist;
GtkWidget *scrolled_win;
/* the currently selected procedure */
gchar *selected_proc_name;
gchar *selected_scheme_proc_name;
gchar *selected_proc_blurb;
gchar *selected_proc_help;
gchar *selected_proc_author;
gchar *selected_proc_copyright;
gchar *selected_proc_date;
gint selected_proc_type;
gint selected_nparams;
gint selected_nreturn_vals;
GParamDef *selected_params;
GParamDef *selected_return_vals;
void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals);
} dbbrowser_t;
/* local functions */
static void dialog_apply_callback (GtkWidget *widget,
gpointer data);
static gint procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data);
static void dialog_search_callback (GtkWidget *widget,
gpointer data);
static void dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name);
static void dialog_close_callback (GtkWidget *widget,
gpointer data);
static void convert_string (gchar *str);
static gchar * GParamType2char (GParamType t);
GList * proc_table = NULL;
/* create the dialog box
* console_entry != NULL => called from the script-fu-console
*/
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
int selected_proc_type,
int selected_nparams,
int selected_nreturn_vals,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals ) )
/* create the dialog box */
/* console_entry != NULL => called from the script-fu-console */
GParamDef *selected_return_vals))
{
dbbrowser_t* dbbrowser;
GtkWidget *button;
GtkWidget *hbox,*searchhbox,*vbox;
GtkWidget *label;
dbbrowser = (gpointer)malloc(sizeof(dbbrowser_t));
dbbrowser = g_new (dbbrowser_t, 1);
dbbrowser->apply_callback = apply_callback;
/* the dialog box */
dbbrowser->dlg = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser (init)"));
gtk_window_position (GTK_WINDOW (dbbrowser->dlg), GTK_WIN_POS_MOUSE);
if (apply_callback)
{
dbbrowser->dlg =
gimp_dialog_new (_("DB Browser (init...)"), "dbbrowser",
gimp_plugin_help_func, "filters/dbbrowser.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Search by Name"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->name_button, TRUE, FALSE,
_("Search by Blurb"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->blurb_button, FALSE, FALSE,
_("Apply"), dialog_apply_callback,
dbbrowser, NULL, NULL, FALSE, FALSE,
_("Close"), dialog_close_callback,
dbbrowser, NULL, NULL, FALSE, TRUE,
NULL);
}
else
{
dbbrowser->dlg =
gimp_dialog_new (_("DB Browser (init...)"), "dbbrowser",
gimp_plugin_help_func, "filters/dbbrowser.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Search by Name"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->name_button, TRUE, FALSE,
_("Search by Blurb"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->blurb_button, FALSE, FALSE,
_("Close"), dialog_close_callback,
dbbrowser, NULL, NULL, FALSE, TRUE,
NULL);
}
gtk_signal_connect (GTK_OBJECT (dbbrowser->dlg), "destroy",
(GtkSignalFunc) dialog_close_callback,
GTK_SIGNAL_FUNC (dialog_close_callback),
dbbrowser);
/* hbox : left=list ; right=description */
hbox = gtk_hbox_new(FALSE, 0);
hbox = gtk_hbox_new (FALSE, 0);
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_border_width (GTK_CONTAINER (vbox), 3);
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);
/* list : list in a scrolled_win */
dbbrowser->clist = gtk_clist_new(1);
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_clist_set_selection_mode (GTK_CLIST (dbbrowser->clist),
GTK_SELECTION_BROWSE);
gtk_widget_set_usize(dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
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);
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->scrolled_win);
/* search entry */
searchhbox = gtk_hbox_new(FALSE,0);
searchhbox = gtk_hbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0);
gtk_widget_show(searchhbox);
gtk_widget_show (searchhbox);
label = gtk_label_new (_("Search :"));
gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5);
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_widget_show(label);
gtk_widget_show (label);
dbbrowser->search_entry = gtk_entry_new();
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);
@ -124,52 +237,12 @@ gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
dbbrowser->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
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);
/* buttons in dlg->action_aera */
gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG(dbbrowser->dlg)->action_area), 0);
dbbrowser->name_button = gtk_button_new_with_label (_("Search by name"));
GTK_WIDGET_SET_FLAGS (dbbrowser->name_button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->name_button), "clicked",
(GtkSignalFunc) dialog_search_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
dbbrowser->name_button , TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->name_button);
dbbrowser->blurb_button = gtk_button_new_with_label (_("Search by blurb"));
GTK_WIDGET_SET_FLAGS (dbbrowser->blurb_button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->blurb_button), "clicked",
(GtkSignalFunc) dialog_search_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
dbbrowser->blurb_button , TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->blurb_button);
if (apply_callback) {
button = gtk_button_new_with_label (_("Apply"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) dialog_apply_callback, dbbrowser );
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show (button);
}
button = gtk_button_new_with_label (_("Close"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) dialog_close_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show (button);
/* now build the list */
gtk_widget_show (dbbrowser->clist);
@ -192,18 +265,17 @@ gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
dbbrowser->selected_return_vals = NULL;
/* first search (all procedures) */
dialog_search_callback( NULL, (gpointer)dbbrowser );
dialog_search_callback (NULL, (gpointer) dbbrowser);
return dbbrowser->dlg;
}
static gint
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton * bevent,
gpointer data)
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data)
{
dbbrowser_t *dbbrowser = data;
gchar *func;
@ -213,39 +285,36 @@ procedure_select_callback (GtkWidget *widget,
g_return_val_if_fail (dbbrowser != NULL, FALSE);
if ((func = (gchar *) (gtk_clist_get_row_data (GTK_CLIST (widget), row))))
dialog_select (dbbrowser, func);
dialog_select (dbbrowser, func);
return FALSE;
}
/* update the description box (right) */
static void
dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name)
/* update the description box (right) */
{
GtkWidget *label;
GtkWidget *old_table;
GtkWidget *help;
GtkWidget *text = NULL;
GtkWidget *vscrollbar;
gint i,row=0;
if (dbbrowser->selected_proc_name)
g_free(dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup(proc_name);
gint i, row = 0;
if (dbbrowser->selected_scheme_proc_name)
g_free(dbbrowser->selected_scheme_proc_name);
dbbrowser->selected_scheme_proc_name =
g_strdup(proc_name);
convert_string(dbbrowser->selected_scheme_proc_name);
g_free (dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup (proc_name);
if (dbbrowser->selected_proc_blurb) g_free(dbbrowser->selected_proc_blurb);
if (dbbrowser->selected_proc_help) g_free(dbbrowser->selected_proc_help);
if (dbbrowser->selected_proc_author) g_free(dbbrowser->selected_proc_author);
if (dbbrowser->selected_proc_copyright) g_free(dbbrowser->selected_proc_copyright);
if (dbbrowser->selected_proc_date) g_free(dbbrowser->selected_proc_date);
if (dbbrowser->selected_params) g_free(dbbrowser->selected_params);
if (dbbrowser->selected_return_vals) g_free(dbbrowser->selected_return_vals);
g_free (dbbrowser->selected_scheme_proc_name);
dbbrowser->selected_scheme_proc_name = g_strdup (proc_name);
convert_string (dbbrowser->selected_scheme_proc_name);
g_free (dbbrowser->selected_proc_blurb);
g_free (dbbrowser->selected_proc_help);
g_free (dbbrowser->selected_proc_author);
g_free (dbbrowser->selected_proc_copyright);
g_free (dbbrowser->selected_proc_date);
g_free (dbbrowser->selected_params);
g_free (dbbrowser->selected_return_vals);
gimp_query_procedure (proc_name,
&(dbbrowser->selected_proc_blurb),
@ -262,154 +331,156 @@ dialog_select (dbbrowser_t *dbbrowser,
/* 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), 3);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 4);
/* show the name */
label = gtk_label_new(_("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);
gtk_widget_show (label);
label = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(label),dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable(GTK_ENTRY(label), 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);
gtk_widget_show (label);
row++;
/* show the description */
label = gtk_label_new(_("Blurb :"));
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);
gtk_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_blurb);
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);
gtk_widget_show (label);
row++;
label = gtk_hseparator_new(); /* ok, not really a label ... :) */
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);
gtk_widget_show (label);
row++;
/* in parameters */
if (dbbrowser->selected_nparams)
{
label = gtk_label_new(_("In :"));
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);
gtk_widget_show(label);
for (i=0;i<(dbbrowser->selected_nparams);i++)
0, 1, row, row+(dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nparams; i++)
{
/* name */
label = gtk_label_new((dbbrowser->selected_params[i]).name);
label = gtk_label_new ((dbbrowser->selected_params[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);
gtk_widget_show(label);
gtk_widget_show (label);
/* type */
label = gtk_label_new(GParamType2char((dbbrowser->selected_params[i]).type));
label = gtk_label_new (GParamType2char ((dbbrowser->selected_params[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);
gtk_widget_show(label);
gtk_widget_show (label);
/* description */
label = gtk_label_new((dbbrowser->selected_params[i]).description);
label = gtk_label_new ((dbbrowser->selected_params[i]).description);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show(label);
gtk_widget_show (label);
row++;
}
}
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++;
}
(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++;
}
/* out parameters */
if (dbbrowser->selected_nreturn_vals)
{
label = gtk_label_new("Out :");
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);
gtk_widget_show(label);
for (i=0;i<(dbbrowser->selected_nreturn_vals);i++)
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nreturn_vals; i++)
{
/* name */
label = gtk_label_new((dbbrowser->selected_return_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);
gtk_widget_show(label);
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);
gtk_widget_show(label);
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);
gtk_widget_show(label);
gtk_widget_show (label);
row++;
}
}
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 );
(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++;
}
/* show the help */
if ((dbbrowser->selected_proc_help) && (strlen(dbbrowser->selected_proc_help) > 1))
if ((dbbrowser->selected_proc_help) &&
(strlen (dbbrowser->selected_proc_help) > 1))
{
label = gtk_label_new(_("Help :"));
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);
gtk_widget_show (label);
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);
@ -420,7 +491,7 @@ dialog_select (dbbrowser_t *dbbrowser,
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap(GTK_TEXT(text), TRUE);
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,
@ -431,63 +502,63 @@ dialog_select (dbbrowser_t *dbbrowser,
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);
label = gtk_hseparator_new(); /* ok, not really a label ... :) */
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);
gtk_widget_show (label);
row++;
}
/* show the author & the copyright */
label = gtk_label_new(_("Author :"));
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);
gtk_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_author);
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);
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);
gtk_widget_show (label);
row++;
label = gtk_label_new(_("Copyright :"));
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_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_copyright);
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);
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);
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++;
if (old_table)
gtk_widget_destroy(old_table);
gtk_widget_destroy (old_table);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
dbbrowser->descr_table);
@ -501,35 +572,38 @@ dialog_select (dbbrowser_t *dbbrowser,
dbbrowser->selected_proc_help, -1);
gtk_text_thaw (GTK_TEXT (text));
}
gtk_widget_show(dbbrowser->descr_table);
gtk_widget_show (dbbrowser->descr_table);
}
/* end of the dialog */
static void
dialog_close_callback (GtkWidget *widget,
gpointer data)
/* end of the dialog */
{
dbbrowser_t* dbbrowser = data;
if (dbbrowser->apply_callback) {
/* we are called by another application : just kill the dialog box */
gtk_widget_hide(dbbrowser->dlg);
gtk_widget_destroy(dbbrowser->dlg);
} else {
/* we are in the plug_in : kill the gtk application */
gtk_widget_destroy(dbbrowser->dlg);
gtk_main_quit ();
}
if (dbbrowser->apply_callback)
{
/* we are called by another application : just kill the dialog box */
gtk_widget_hide (dbbrowser->dlg);
gtk_widget_destroy (dbbrowser->dlg);
}
else
{
/* we are in the plug_in : kill the gtk application */
gtk_widget_destroy (dbbrowser->dlg);
gtk_main_quit ();
}
}
/* end of the dialog */
static void
dialog_apply_callback (GtkWidget *widget,
gpointer data)
/* end of the dialog */
{
dbbrowser_t* dbbrowser = data;
(dbbrowser->apply_callback)( dbbrowser->selected_proc_name,
(dbbrowser->apply_callback) (dbbrowser->selected_proc_name,
dbbrowser->selected_scheme_proc_name,
dbbrowser->selected_proc_blurb,
dbbrowser->selected_proc_help,
@ -540,33 +614,33 @@ dialog_apply_callback (GtkWidget *widget,
dbbrowser->selected_nparams,
dbbrowser->selected_nreturn_vals,
dbbrowser->selected_params,
dbbrowser->selected_return_vals );
dbbrowser->selected_return_vals);
}
/* search in the whole db */
static void
dialog_search_callback (GtkWidget *widget,
gpointer data)
/* search in the whole db */
{
char **proc_list;
int num_procs;
int i, j;
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t* dbbrowser = data;
gchar *func_name, *label, *query_text;
GString *query;
gtk_clist_freeze(GTK_CLIST(dbbrowser->clist));
gtk_clist_clear(GTK_CLIST(dbbrowser->clist));
gtk_clist_freeze (GTK_CLIST (dbbrowser->clist));
gtk_clist_clear (GTK_CLIST (dbbrowser->clist));
/* search */
if ( widget == (dbbrowser->name_button) )
if (widget == (dbbrowser->name_button))
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by name - please wait)"));
query = g_string_new ("");
query_text = gtk_entry_get_text(GTK_ENTRY(dbbrowser->search_entry));
query_text = gtk_entry_get_text (GTK_ENTRY (dbbrowser->search_entry));
while (*query_text)
{
@ -584,7 +658,7 @@ dialog_search_callback (GtkWidget *widget,
g_string_free (query, TRUE);
}
else if ( widget == (dbbrowser->blurb_button) )
else if (widget == (dbbrowser->blurb_button))
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by blurb - please wait)"));
@ -593,34 +667,38 @@ dialog_search_callback (GtkWidget *widget,
".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
else {
else
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (please wait)"));
gimp_query_database (".*", ".*", ".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
}
for (i = 0; i < num_procs; i++) {
j = 0;
while((j < i) &&
(strcmp(gtk_clist_get_row_data(GTK_CLIST(dbbrowser->clist), j),
proc_list[i]) < 0))
j++;
for (i = 0; i < num_procs; i++)
{
j = 0;
while ((j < i) &&
(strcmp (gtk_clist_get_row_data (GTK_CLIST (dbbrowser->clist), j),
proc_list[i]) < 0))
j++;
label = g_strdup(proc_list[i]);
convert_string(label);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(dbbrowser->clist)), j,
&label);
func_name = g_strdup (proc_list[i]);
gtk_clist_set_row_data_full(GTK_CLIST(dbbrowser->clist), j,
func_name, g_free);
}
label = g_strdup (proc_list[i]);
convert_string (label);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(dbbrowser->clist)), j,
&label);
func_name = g_strdup (proc_list[i]);
if (num_procs > 0) {
dialog_select( dbbrowser,gtk_clist_get_row_data(GTK_CLIST(dbbrowser->clist), 0));
gtk_clist_select_row(GTK_CLIST(dbbrowser->clist), 0, 0);
}
gtk_clist_set_row_data_full (GTK_CLIST (dbbrowser->clist), j,
func_name, g_free);
}
if (num_procs > 0)
{
dialog_select (dbbrowser,
gtk_clist_get_row_data (GTK_CLIST (dbbrowser->clist), 0));
gtk_clist_select_row (GTK_CLIST (dbbrowser->clist), 0, 0);
}
/*
if (num_procs != 0) {
@ -651,21 +729,22 @@ dialog_search_callback (GtkWidget *widget,
}
*/
if ( dbbrowser->clist ) {
;
}
if (dbbrowser->clist)
{
;
}
g_free( proc_list );
g_free (proc_list);
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser"));
gtk_clist_thaw(GTK_CLIST(dbbrowser->clist));
gtk_clist_thaw (GTK_CLIST (dbbrowser->clist));
}
/* utils ... */
static void
convert_string (char *str)
convert_string (gchar *str)
{
while (*str)
{
@ -674,33 +753,34 @@ convert_string (char *str)
}
}
static char*
GParamType2char(GParamType t)
static gchar *
GParamType2char (GParamType t)
{
switch (t) {
case PARAM_INT32: return "INT32";
case PARAM_INT16: return "INT16";
case PARAM_INT8: return "INT8";
case PARAM_FLOAT: return "FLOAT";
case PARAM_STRING: return "STRING";
case PARAM_INT32ARRAY: return "INT32ARRAY";
case PARAM_INT16ARRAY: return "INT16ARRAY";
case PARAM_INT8ARRAY: return "INT8ARRAY";
case PARAM_FLOATARRAY: return "FLOATARRAY";
case PARAM_STRINGARRAY: return "STRINGARRAY";
case PARAM_COLOR: return "COLOR";
case PARAM_REGION: return "REGION";
case PARAM_DISPLAY: return "DISPLAY";
case PARAM_IMAGE: return "IMAGE";
case PARAM_LAYER: return "LAYER";
case PARAM_CHANNEL: return "CHANNEL";
case PARAM_DRAWABLE: return "DRAWABLE";
case PARAM_SELECTION: return "SELECTION";
case PARAM_BOUNDARY: return "BOUNDARY";
case PARAM_PATH: return "PATH";
case PARAM_PARASITE: return "PARASITE";
case PARAM_STATUS: return "STATUS";
case PARAM_END: return "END";
default: return "UNKNOWN?";
}
switch (t)
{
case PARAM_INT32: return "INT32";
case PARAM_INT16: return "INT16";
case PARAM_INT8: return "INT8";
case PARAM_FLOAT: return "FLOAT";
case PARAM_STRING: return "STRING";
case PARAM_INT32ARRAY: return "INT32ARRAY";
case PARAM_INT16ARRAY: return "INT16ARRAY";
case PARAM_INT8ARRAY: return "INT8ARRAY";
case PARAM_FLOATARRAY: return "FLOATARRAY";
case PARAM_STRINGARRAY: return "STRINGARRAY";
case PARAM_COLOR: return "COLOR";
case PARAM_REGION: return "REGION";
case PARAM_DISPLAY: return "DISPLAY";
case PARAM_IMAGE: return "IMAGE";
case PARAM_LAYER: return "LAYER";
case PARAM_CHANNEL: return "CHANNEL";
case PARAM_DRAWABLE: return "DRAWABLE";
case PARAM_SELECTION: return "SELECTION";
case PARAM_BOUNDARY: return "BOUNDARY";
case PARAM_PATH: return "PATH";
case PARAM_PARASITE: return "PARASITE";
case PARAM_STATUS: return "STATUS";
case PARAM_END: return "END";
default: return "UNKNOWN?";
}
}

View File

@ -16,105 +16,218 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser_utils.c
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
98/12/13 Sven Neumann <sven@gimp.org> : added help display
*/
* dbbrowser_utils.c
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*
* 98/12/13 Sven Neumann <sven@gimp.org> : added help display
*/
#include "config.h"
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
#include "dbbrowser_utils.h"
#include "libgimp/stdplugins-intl.h"
GList *proc_table;
/* configuration */
GtkWidget*
gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
#define DBL_LIST_WIDTH 220
#define DBL_WIDTH DBL_LIST_WIDTH+400
#define DBL_HEIGHT 250
/* end of configuration */
typedef struct
{
gchar *label;
gchar *func;
} ListEntry_t;
typedef struct
{
GtkWidget *dlg;
GtkWidget *search_entry;
GtkWidget *name_button;
GtkWidget *blurb_button;
GtkWidget *descr_scroll;
GtkWidget *descr_table;
GtkWidget *clist;
GtkWidget *scrolled_win;
/* the currently selected procedure */
gchar *selected_proc_name;
gchar *selected_scheme_proc_name;
gchar *selected_proc_blurb;
gchar *selected_proc_help;
gchar *selected_proc_author;
gchar *selected_proc_copyright;
gchar *selected_proc_date;
gint selected_proc_type;
gint selected_nparams;
gint selected_nreturn_vals;
GParamDef *selected_params;
GParamDef *selected_return_vals;
void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals);
} dbbrowser_t;
/* local functions */
static void dialog_apply_callback (GtkWidget *widget,
gpointer data);
static gint procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data);
static void dialog_search_callback (GtkWidget *widget,
gpointer data);
static void dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name);
static void dialog_close_callback (GtkWidget *widget,
gpointer data);
static void convert_string (gchar *str);
static gchar * GParamType2char (GParamType t);
GList * proc_table = NULL;
/* create the dialog box
* console_entry != NULL => called from the script-fu-console
*/
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
int selected_proc_type,
int selected_nparams,
int selected_nreturn_vals,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals ) )
/* create the dialog box */
/* console_entry != NULL => called from the script-fu-console */
GParamDef *selected_return_vals))
{
dbbrowser_t* dbbrowser;
GtkWidget *button;
GtkWidget *hbox,*searchhbox,*vbox;
GtkWidget *label;
dbbrowser = (gpointer)malloc(sizeof(dbbrowser_t));
dbbrowser = g_new (dbbrowser_t, 1);
dbbrowser->apply_callback = apply_callback;
/* the dialog box */
dbbrowser->dlg = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser (init)"));
gtk_window_position (GTK_WINDOW (dbbrowser->dlg), GTK_WIN_POS_MOUSE);
if (apply_callback)
{
dbbrowser->dlg =
gimp_dialog_new (_("DB Browser (init...)"), "dbbrowser",
gimp_plugin_help_func, "filters/dbbrowser.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Search by Name"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->name_button, TRUE, FALSE,
_("Search by Blurb"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->blurb_button, FALSE, FALSE,
_("Apply"), dialog_apply_callback,
dbbrowser, NULL, NULL, FALSE, FALSE,
_("Close"), dialog_close_callback,
dbbrowser, NULL, NULL, FALSE, TRUE,
NULL);
}
else
{
dbbrowser->dlg =
gimp_dialog_new (_("DB Browser (init...)"), "dbbrowser",
gimp_plugin_help_func, "filters/dbbrowser.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Search by Name"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->name_button, TRUE, FALSE,
_("Search by Blurb"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->blurb_button, FALSE, FALSE,
_("Close"), dialog_close_callback,
dbbrowser, NULL, NULL, FALSE, TRUE,
NULL);
}
gtk_signal_connect (GTK_OBJECT (dbbrowser->dlg), "destroy",
(GtkSignalFunc) dialog_close_callback,
GTK_SIGNAL_FUNC (dialog_close_callback),
dbbrowser);
/* hbox : left=list ; right=description */
hbox = gtk_hbox_new(FALSE, 0);
hbox = gtk_hbox_new (FALSE, 0);
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_border_width (GTK_CONTAINER (vbox), 3);
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);
/* list : list in a scrolled_win */
dbbrowser->clist = gtk_clist_new(1);
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_clist_set_selection_mode (GTK_CLIST (dbbrowser->clist),
GTK_SELECTION_BROWSE);
gtk_widget_set_usize(dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
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);
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->scrolled_win);
/* search entry */
searchhbox = gtk_hbox_new(FALSE,0);
searchhbox = gtk_hbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0);
gtk_widget_show(searchhbox);
gtk_widget_show (searchhbox);
label = gtk_label_new (_("Search :"));
gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5);
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_widget_show(label);
gtk_widget_show (label);
dbbrowser->search_entry = gtk_entry_new();
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);
@ -124,52 +237,12 @@ gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
dbbrowser->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
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);
/* buttons in dlg->action_aera */
gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG(dbbrowser->dlg)->action_area), 0);
dbbrowser->name_button = gtk_button_new_with_label (_("Search by name"));
GTK_WIDGET_SET_FLAGS (dbbrowser->name_button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->name_button), "clicked",
(GtkSignalFunc) dialog_search_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
dbbrowser->name_button , TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->name_button);
dbbrowser->blurb_button = gtk_button_new_with_label (_("Search by blurb"));
GTK_WIDGET_SET_FLAGS (dbbrowser->blurb_button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->blurb_button), "clicked",
(GtkSignalFunc) dialog_search_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
dbbrowser->blurb_button , TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->blurb_button);
if (apply_callback) {
button = gtk_button_new_with_label (_("Apply"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) dialog_apply_callback, dbbrowser );
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show (button);
}
button = gtk_button_new_with_label (_("Close"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) dialog_close_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show (button);
/* now build the list */
gtk_widget_show (dbbrowser->clist);
@ -192,18 +265,17 @@ gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
dbbrowser->selected_return_vals = NULL;
/* first search (all procedures) */
dialog_search_callback( NULL, (gpointer)dbbrowser );
dialog_search_callback (NULL, (gpointer) dbbrowser);
return dbbrowser->dlg;
}
static gint
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton * bevent,
gpointer data)
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data)
{
dbbrowser_t *dbbrowser = data;
gchar *func;
@ -213,39 +285,36 @@ procedure_select_callback (GtkWidget *widget,
g_return_val_if_fail (dbbrowser != NULL, FALSE);
if ((func = (gchar *) (gtk_clist_get_row_data (GTK_CLIST (widget), row))))
dialog_select (dbbrowser, func);
dialog_select (dbbrowser, func);
return FALSE;
}
/* update the description box (right) */
static void
dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name)
/* update the description box (right) */
{
GtkWidget *label;
GtkWidget *old_table;
GtkWidget *help;
GtkWidget *text = NULL;
GtkWidget *vscrollbar;
gint i,row=0;
if (dbbrowser->selected_proc_name)
g_free(dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup(proc_name);
gint i, row = 0;
if (dbbrowser->selected_scheme_proc_name)
g_free(dbbrowser->selected_scheme_proc_name);
dbbrowser->selected_scheme_proc_name =
g_strdup(proc_name);
convert_string(dbbrowser->selected_scheme_proc_name);
g_free (dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup (proc_name);
if (dbbrowser->selected_proc_blurb) g_free(dbbrowser->selected_proc_blurb);
if (dbbrowser->selected_proc_help) g_free(dbbrowser->selected_proc_help);
if (dbbrowser->selected_proc_author) g_free(dbbrowser->selected_proc_author);
if (dbbrowser->selected_proc_copyright) g_free(dbbrowser->selected_proc_copyright);
if (dbbrowser->selected_proc_date) g_free(dbbrowser->selected_proc_date);
if (dbbrowser->selected_params) g_free(dbbrowser->selected_params);
if (dbbrowser->selected_return_vals) g_free(dbbrowser->selected_return_vals);
g_free (dbbrowser->selected_scheme_proc_name);
dbbrowser->selected_scheme_proc_name = g_strdup (proc_name);
convert_string (dbbrowser->selected_scheme_proc_name);
g_free (dbbrowser->selected_proc_blurb);
g_free (dbbrowser->selected_proc_help);
g_free (dbbrowser->selected_proc_author);
g_free (dbbrowser->selected_proc_copyright);
g_free (dbbrowser->selected_proc_date);
g_free (dbbrowser->selected_params);
g_free (dbbrowser->selected_return_vals);
gimp_query_procedure (proc_name,
&(dbbrowser->selected_proc_blurb),
@ -262,154 +331,156 @@ dialog_select (dbbrowser_t *dbbrowser,
/* 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), 3);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 4);
/* show the name */
label = gtk_label_new(_("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);
gtk_widget_show (label);
label = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(label),dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable(GTK_ENTRY(label), 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);
gtk_widget_show (label);
row++;
/* show the description */
label = gtk_label_new(_("Blurb :"));
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);
gtk_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_blurb);
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);
gtk_widget_show (label);
row++;
label = gtk_hseparator_new(); /* ok, not really a label ... :) */
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);
gtk_widget_show (label);
row++;
/* in parameters */
if (dbbrowser->selected_nparams)
{
label = gtk_label_new(_("In :"));
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);
gtk_widget_show(label);
for (i=0;i<(dbbrowser->selected_nparams);i++)
0, 1, row, row+(dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nparams; i++)
{
/* name */
label = gtk_label_new((dbbrowser->selected_params[i]).name);
label = gtk_label_new ((dbbrowser->selected_params[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);
gtk_widget_show(label);
gtk_widget_show (label);
/* type */
label = gtk_label_new(GParamType2char((dbbrowser->selected_params[i]).type));
label = gtk_label_new (GParamType2char ((dbbrowser->selected_params[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);
gtk_widget_show(label);
gtk_widget_show (label);
/* description */
label = gtk_label_new((dbbrowser->selected_params[i]).description);
label = gtk_label_new ((dbbrowser->selected_params[i]).description);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show(label);
gtk_widget_show (label);
row++;
}
}
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++;
}
(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++;
}
/* out parameters */
if (dbbrowser->selected_nreturn_vals)
{
label = gtk_label_new("Out :");
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);
gtk_widget_show(label);
for (i=0;i<(dbbrowser->selected_nreturn_vals);i++)
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nreturn_vals; i++)
{
/* name */
label = gtk_label_new((dbbrowser->selected_return_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);
gtk_widget_show(label);
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);
gtk_widget_show(label);
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);
gtk_widget_show(label);
gtk_widget_show (label);
row++;
}
}
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 );
(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++;
}
/* show the help */
if ((dbbrowser->selected_proc_help) && (strlen(dbbrowser->selected_proc_help) > 1))
if ((dbbrowser->selected_proc_help) &&
(strlen (dbbrowser->selected_proc_help) > 1))
{
label = gtk_label_new(_("Help :"));
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);
gtk_widget_show (label);
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);
@ -420,7 +491,7 @@ dialog_select (dbbrowser_t *dbbrowser,
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap(GTK_TEXT(text), TRUE);
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,
@ -431,63 +502,63 @@ dialog_select (dbbrowser_t *dbbrowser,
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);
label = gtk_hseparator_new(); /* ok, not really a label ... :) */
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);
gtk_widget_show (label);
row++;
}
/* show the author & the copyright */
label = gtk_label_new(_("Author :"));
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);
gtk_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_author);
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);
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);
gtk_widget_show (label);
row++;
label = gtk_label_new(_("Copyright :"));
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_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_copyright);
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);
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);
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++;
if (old_table)
gtk_widget_destroy(old_table);
gtk_widget_destroy (old_table);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
dbbrowser->descr_table);
@ -501,35 +572,38 @@ dialog_select (dbbrowser_t *dbbrowser,
dbbrowser->selected_proc_help, -1);
gtk_text_thaw (GTK_TEXT (text));
}
gtk_widget_show(dbbrowser->descr_table);
gtk_widget_show (dbbrowser->descr_table);
}
/* end of the dialog */
static void
dialog_close_callback (GtkWidget *widget,
gpointer data)
/* end of the dialog */
{
dbbrowser_t* dbbrowser = data;
if (dbbrowser->apply_callback) {
/* we are called by another application : just kill the dialog box */
gtk_widget_hide(dbbrowser->dlg);
gtk_widget_destroy(dbbrowser->dlg);
} else {
/* we are in the plug_in : kill the gtk application */
gtk_widget_destroy(dbbrowser->dlg);
gtk_main_quit ();
}
if (dbbrowser->apply_callback)
{
/* we are called by another application : just kill the dialog box */
gtk_widget_hide (dbbrowser->dlg);
gtk_widget_destroy (dbbrowser->dlg);
}
else
{
/* we are in the plug_in : kill the gtk application */
gtk_widget_destroy (dbbrowser->dlg);
gtk_main_quit ();
}
}
/* end of the dialog */
static void
dialog_apply_callback (GtkWidget *widget,
gpointer data)
/* end of the dialog */
{
dbbrowser_t* dbbrowser = data;
(dbbrowser->apply_callback)( dbbrowser->selected_proc_name,
(dbbrowser->apply_callback) (dbbrowser->selected_proc_name,
dbbrowser->selected_scheme_proc_name,
dbbrowser->selected_proc_blurb,
dbbrowser->selected_proc_help,
@ -540,33 +614,33 @@ dialog_apply_callback (GtkWidget *widget,
dbbrowser->selected_nparams,
dbbrowser->selected_nreturn_vals,
dbbrowser->selected_params,
dbbrowser->selected_return_vals );
dbbrowser->selected_return_vals);
}
/* search in the whole db */
static void
dialog_search_callback (GtkWidget *widget,
gpointer data)
/* search in the whole db */
{
char **proc_list;
int num_procs;
int i, j;
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t* dbbrowser = data;
gchar *func_name, *label, *query_text;
GString *query;
gtk_clist_freeze(GTK_CLIST(dbbrowser->clist));
gtk_clist_clear(GTK_CLIST(dbbrowser->clist));
gtk_clist_freeze (GTK_CLIST (dbbrowser->clist));
gtk_clist_clear (GTK_CLIST (dbbrowser->clist));
/* search */
if ( widget == (dbbrowser->name_button) )
if (widget == (dbbrowser->name_button))
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by name - please wait)"));
query = g_string_new ("");
query_text = gtk_entry_get_text(GTK_ENTRY(dbbrowser->search_entry));
query_text = gtk_entry_get_text (GTK_ENTRY (dbbrowser->search_entry));
while (*query_text)
{
@ -584,7 +658,7 @@ dialog_search_callback (GtkWidget *widget,
g_string_free (query, TRUE);
}
else if ( widget == (dbbrowser->blurb_button) )
else if (widget == (dbbrowser->blurb_button))
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by blurb - please wait)"));
@ -593,34 +667,38 @@ dialog_search_callback (GtkWidget *widget,
".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
else {
else
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (please wait)"));
gimp_query_database (".*", ".*", ".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
}
for (i = 0; i < num_procs; i++) {
j = 0;
while((j < i) &&
(strcmp(gtk_clist_get_row_data(GTK_CLIST(dbbrowser->clist), j),
proc_list[i]) < 0))
j++;
for (i = 0; i < num_procs; i++)
{
j = 0;
while ((j < i) &&
(strcmp (gtk_clist_get_row_data (GTK_CLIST (dbbrowser->clist), j),
proc_list[i]) < 0))
j++;
label = g_strdup(proc_list[i]);
convert_string(label);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(dbbrowser->clist)), j,
&label);
func_name = g_strdup (proc_list[i]);
gtk_clist_set_row_data_full(GTK_CLIST(dbbrowser->clist), j,
func_name, g_free);
}
label = g_strdup (proc_list[i]);
convert_string (label);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(dbbrowser->clist)), j,
&label);
func_name = g_strdup (proc_list[i]);
if (num_procs > 0) {
dialog_select( dbbrowser,gtk_clist_get_row_data(GTK_CLIST(dbbrowser->clist), 0));
gtk_clist_select_row(GTK_CLIST(dbbrowser->clist), 0, 0);
}
gtk_clist_set_row_data_full (GTK_CLIST (dbbrowser->clist), j,
func_name, g_free);
}
if (num_procs > 0)
{
dialog_select (dbbrowser,
gtk_clist_get_row_data (GTK_CLIST (dbbrowser->clist), 0));
gtk_clist_select_row (GTK_CLIST (dbbrowser->clist), 0, 0);
}
/*
if (num_procs != 0) {
@ -651,21 +729,22 @@ dialog_search_callback (GtkWidget *widget,
}
*/
if ( dbbrowser->clist ) {
;
}
if (dbbrowser->clist)
{
;
}
g_free( proc_list );
g_free (proc_list);
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser"));
gtk_clist_thaw(GTK_CLIST(dbbrowser->clist));
gtk_clist_thaw (GTK_CLIST (dbbrowser->clist));
}
/* utils ... */
static void
convert_string (char *str)
convert_string (gchar *str)
{
while (*str)
{
@ -674,33 +753,34 @@ convert_string (char *str)
}
}
static char*
GParamType2char(GParamType t)
static gchar *
GParamType2char (GParamType t)
{
switch (t) {
case PARAM_INT32: return "INT32";
case PARAM_INT16: return "INT16";
case PARAM_INT8: return "INT8";
case PARAM_FLOAT: return "FLOAT";
case PARAM_STRING: return "STRING";
case PARAM_INT32ARRAY: return "INT32ARRAY";
case PARAM_INT16ARRAY: return "INT16ARRAY";
case PARAM_INT8ARRAY: return "INT8ARRAY";
case PARAM_FLOATARRAY: return "FLOATARRAY";
case PARAM_STRINGARRAY: return "STRINGARRAY";
case PARAM_COLOR: return "COLOR";
case PARAM_REGION: return "REGION";
case PARAM_DISPLAY: return "DISPLAY";
case PARAM_IMAGE: return "IMAGE";
case PARAM_LAYER: return "LAYER";
case PARAM_CHANNEL: return "CHANNEL";
case PARAM_DRAWABLE: return "DRAWABLE";
case PARAM_SELECTION: return "SELECTION";
case PARAM_BOUNDARY: return "BOUNDARY";
case PARAM_PATH: return "PATH";
case PARAM_PARASITE: return "PARASITE";
case PARAM_STATUS: return "STATUS";
case PARAM_END: return "END";
default: return "UNKNOWN?";
}
switch (t)
{
case PARAM_INT32: return "INT32";
case PARAM_INT16: return "INT16";
case PARAM_INT8: return "INT8";
case PARAM_FLOAT: return "FLOAT";
case PARAM_STRING: return "STRING";
case PARAM_INT32ARRAY: return "INT32ARRAY";
case PARAM_INT16ARRAY: return "INT16ARRAY";
case PARAM_INT8ARRAY: return "INT8ARRAY";
case PARAM_FLOATARRAY: return "FLOATARRAY";
case PARAM_STRINGARRAY: return "STRINGARRAY";
case PARAM_COLOR: return "COLOR";
case PARAM_REGION: return "REGION";
case PARAM_DISPLAY: return "DISPLAY";
case PARAM_IMAGE: return "IMAGE";
case PARAM_LAYER: return "LAYER";
case PARAM_CHANNEL: return "CHANNEL";
case PARAM_DRAWABLE: return "DRAWABLE";
case PARAM_SELECTION: return "SELECTION";
case PARAM_BOUNDARY: return "BOUNDARY";
case PARAM_PATH: return "PATH";
case PARAM_PARASITE: return "PARASITE";
case PARAM_STATUS: return "STATUS";
case PARAM_END: return "END";
default: return "UNKNOWN?";
}
}

View File

@ -441,8 +441,8 @@ gimp_unit_menu_build_string (gchar *format,
/* private callback of gimp_unit_menu_create_selection () */
static void
gimp_unit_menu_selection_select_callback (GtkWidget *widget,
gpointer data)
gimp_unit_menu_selection_ok_callback (GtkWidget *widget,
gpointer data)
{
GimpUnitMenu *gum;
GimpUnit unit;
@ -462,6 +462,17 @@ gimp_unit_menu_selection_select_callback (GtkWidget *widget,
}
}
static void
gimp_unit_menu_selection_select_row_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data)
{
if (bevent && bevent->type == GDK_2BUTTON_PRESS)
gimp_unit_menu_selection_ok_callback (NULL, data);
}
/* private function of gimp_unit_menu_callback () */
static void
gimp_unit_menu_create_selection (GimpUnitMenu *gum)
@ -481,9 +492,9 @@ gimp_unit_menu_create_selection (GimpUnitMenu *gum)
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Select"), gimp_unit_menu_selection_select_callback,
_("OK"), gimp_unit_menu_selection_ok_callback,
gum, NULL, NULL, TRUE, FALSE,
_("Close"), gtk_widget_destroy,
_("Cancel"), gtk_widget_destroy,
NULL, 1, NULL, FALSE, TRUE,
NULL);
@ -544,6 +555,9 @@ gimp_unit_menu_create_selection (GimpUnitMenu *gum)
gtk_widget_set_usize (gum->clist, -1, 150);
gtk_container_add (GTK_CONTAINER (scrolled_win), gum->clist);
gtk_signal_connect (GTK_OBJECT (gum->clist), "select_row",
GTK_SIGNAL_FUNC (gimp_unit_menu_selection_select_row_callback),
gum);
gtk_widget_show (gum->clist);
gtk_signal_connect (GTK_OBJECT (gum->clist), "destroy",

View File

@ -32,6 +32,7 @@
}G_STMT_END
#else
#define INIT_I18N() G_STMT_START{ \
bindtextdomain("gimp-libgimp", LOCALEDIR); \
bindtextdomain("gimp-std-plugins", LOCALEDIR); \
textdomain("gimp-std-plugins"); \
}G_STMT_END

View File

@ -315,6 +315,8 @@ gimp_file_selection_filesel_ok_callback (GtkWidget *widget,
gtk_entry_set_text (GTK_ENTRY (gfs->entry), filename);
gtk_widget_hide (gfs->file_selection);
/* update everything */
gimp_file_selection_entry_callback (gfs->entry, data);
}
@ -357,9 +359,6 @@ gimp_file_selection_browse_callback (GtkWidget *widget,
gtk_container_set_border_width (GTK_CONTAINER (gfs->file_selection), 2);
gtk_container_set_border_width (GTK_CONTAINER (GTK_FILE_SELECTION (gfs->file_selection)->button_area), 2);
gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_FILE_SELECTION (gfs->file_selection)->ok_button)->child), _("Select"));
gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_FILE_SELECTION (gfs->file_selection)->cancel_button)->child), _("Close"));
gtk_signal_connect
(GTK_OBJECT (GTK_FILE_SELECTION (gfs->file_selection)->ok_button),
"clicked",
@ -396,8 +395,8 @@ gimp_file_selection_browse_callback (GtkWidget *widget,
static void
gimp_file_selection_check_filename (GimpFileSelection *gfs)
{
static struct stat statbuf;
gchar* filename;
static struct stat statbuf;
gchar *filename;
if (! gfs->check_valid)
return;

View File

@ -315,6 +315,8 @@ gimp_file_selection_filesel_ok_callback (GtkWidget *widget,
gtk_entry_set_text (GTK_ENTRY (gfs->entry), filename);
gtk_widget_hide (gfs->file_selection);
/* update everything */
gimp_file_selection_entry_callback (gfs->entry, data);
}
@ -357,9 +359,6 @@ gimp_file_selection_browse_callback (GtkWidget *widget,
gtk_container_set_border_width (GTK_CONTAINER (gfs->file_selection), 2);
gtk_container_set_border_width (GTK_CONTAINER (GTK_FILE_SELECTION (gfs->file_selection)->button_area), 2);
gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_FILE_SELECTION (gfs->file_selection)->ok_button)->child), _("Select"));
gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_FILE_SELECTION (gfs->file_selection)->cancel_button)->child), _("Close"));
gtk_signal_connect
(GTK_OBJECT (GTK_FILE_SELECTION (gfs->file_selection)->ok_button),
"clicked",
@ -396,8 +395,8 @@ gimp_file_selection_browse_callback (GtkWidget *widget,
static void
gimp_file_selection_check_filename (GimpFileSelection *gfs)
{
static struct stat statbuf;
gchar* filename;
static struct stat statbuf;
gchar *filename;
if (! gfs->check_valid)
return;

View File

@ -441,8 +441,8 @@ gimp_unit_menu_build_string (gchar *format,
/* private callback of gimp_unit_menu_create_selection () */
static void
gimp_unit_menu_selection_select_callback (GtkWidget *widget,
gpointer data)
gimp_unit_menu_selection_ok_callback (GtkWidget *widget,
gpointer data)
{
GimpUnitMenu *gum;
GimpUnit unit;
@ -462,6 +462,17 @@ gimp_unit_menu_selection_select_callback (GtkWidget *widget,
}
}
static void
gimp_unit_menu_selection_select_row_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data)
{
if (bevent && bevent->type == GDK_2BUTTON_PRESS)
gimp_unit_menu_selection_ok_callback (NULL, data);
}
/* private function of gimp_unit_menu_callback () */
static void
gimp_unit_menu_create_selection (GimpUnitMenu *gum)
@ -481,9 +492,9 @@ gimp_unit_menu_create_selection (GimpUnitMenu *gum)
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Select"), gimp_unit_menu_selection_select_callback,
_("OK"), gimp_unit_menu_selection_ok_callback,
gum, NULL, NULL, TRUE, FALSE,
_("Close"), gtk_widget_destroy,
_("Cancel"), gtk_widget_destroy,
NULL, 1, NULL, FALSE, TRUE,
NULL);
@ -544,6 +555,9 @@ gimp_unit_menu_create_selection (GimpUnitMenu *gum)
gtk_widget_set_usize (gum->clist, -1, 150);
gtk_container_add (GTK_CONTAINER (scrolled_win), gum->clist);
gtk_signal_connect (GTK_OBJECT (gum->clist), "select_row",
GTK_SIGNAL_FUNC (gimp_unit_menu_selection_select_row_callback),
gum);
gtk_widget_show (gum->clist);
gtk_signal_connect (GTK_OBJECT (gum->clist), "destroy",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -16,68 +16,69 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
* dbbrowser
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
/*
This plugin gives you the list of available procedure, with the
name, description and parameters for each procedure.
You can do regexp search (by name and by description)
Useful for scripts development.
NOTE :
this is only a exercice for me (my first "plug-in" (extension))
so it's very (very) dirty.
Btw, hope it gives you some ideas about gimp possibilities.
The core of the plugin is not here. See dbbrowser_utils (shared
with script-fu-console).
TODO
- bug fixes... (my method : rewrite from scratch :)
*/
* This plugin gives you the list of available procedure, with the
* name, description and parameters for each procedure.
* You can do regexp search (by name and by description)
* Useful for scripts development.
*
* NOTE :
* this is only a exercice for me (my first "plug-in" (extension))
* so it's very (very) dirty.
* Btw, hope it gives you some ideas about gimp possibilities.
*
* The core of the plugin is not here. See dbbrowser_utils (shared
* with script-fu-console).
*
* TODO
* - bug fixes... (my method : rewrite from scratch :)
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include "dbbrowser.h"
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
#include "dbbrowser_utils.h"
#include "libgimp/stdplugins-intl.h"
static void query (void);
static void run (char *name,
int nparams,
GParam *param,
int *nreturn_vals,
GParam **return_vals);
static void query (void);
static void run (gchar *name,
gint nparams,
GParam *param,
gint *nreturn_vals,
GParam **return_vals);
GPlugInInfo PLUG_IN_INFO =
{
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
run, /* run_proc */
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
run, /* run_proc */
};
MAIN ()
static void
query ()
query (void)
{
static GParamDef args[] =
{
{ PARAM_INT32, "run_mode", "Interactive, [non-interactive]" }
};
static int nargs = sizeof (args) / sizeof (args[0]);
INIT_I18N();
static gint nargs = sizeof (args) / sizeof (args[0]);
gimp_install_procedure ("extension_db_browser",
"List available procedures in the PDB",
@ -93,10 +94,10 @@ query ()
}
static void
run (char *name,
int nparams,
run (gchar *name,
gint nparams,
GParam *param,
int *nreturn_vals,
gint *nreturn_vals,
GParam **return_vals)
{
static GParam values[1];
@ -105,8 +106,8 @@ run (char *name,
run_mode = param[0].data.d_int32;
*nreturn_vals = 1;
*return_vals = values;
values[0].type = PARAM_STATUS;
*return_vals = values;
values[0].type = PARAM_STATUS;
values[0].data.d_status = STATUS_SUCCESS;
switch (run_mode)
@ -123,8 +124,8 @@ run (char *name,
argv[0] = g_strdup ("dbbrowser");
gtk_init (&argc, &argv);
gtk_rc_parse (gimp_gtkrc ());
gtk_quit_add_destroy (1, (GtkObject*) gimp_db_browser (NULL));
gtk_quit_add_destroy (1, (GtkObject *) gimp_db_browser (NULL));
gtk_main ();
gdk_flush ();
@ -136,22 +137,8 @@ run (char *name,
g_warning ("dbbrowser allows only interactive invocation");
values[0].data.d_status = STATUS_CALLING_ERROR;
break;
default:
break;
}
}

View File

@ -8,7 +8,6 @@ libexec_PROGRAMS = dbbrowser
dbbrowser_SOURCES = \
dbbrowser.c \
dbbrowser.h \
dbbrowser_utils.c \
dbbrowser_utils.h
@ -21,6 +20,7 @@ INCLUDES = \
-I$(includedir)
LDADD = \
$(top_builddir)/libgimp/libgimpui.la \
$(top_builddir)/libgimp/libgimp.la \
$(GTK_LIBS) \
$(INTLLIBS)

View File

@ -16,68 +16,69 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
* dbbrowser
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
/*
This plugin gives you the list of available procedure, with the
name, description and parameters for each procedure.
You can do regexp search (by name and by description)
Useful for scripts development.
NOTE :
this is only a exercice for me (my first "plug-in" (extension))
so it's very (very) dirty.
Btw, hope it gives you some ideas about gimp possibilities.
The core of the plugin is not here. See dbbrowser_utils (shared
with script-fu-console).
TODO
- bug fixes... (my method : rewrite from scratch :)
*/
* This plugin gives you the list of available procedure, with the
* name, description and parameters for each procedure.
* You can do regexp search (by name and by description)
* Useful for scripts development.
*
* NOTE :
* this is only a exercice for me (my first "plug-in" (extension))
* so it's very (very) dirty.
* Btw, hope it gives you some ideas about gimp possibilities.
*
* The core of the plugin is not here. See dbbrowser_utils (shared
* with script-fu-console).
*
* TODO
* - bug fixes... (my method : rewrite from scratch :)
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include "dbbrowser.h"
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
#include "dbbrowser_utils.h"
#include "libgimp/stdplugins-intl.h"
static void query (void);
static void run (char *name,
int nparams,
GParam *param,
int *nreturn_vals,
GParam **return_vals);
static void query (void);
static void run (gchar *name,
gint nparams,
GParam *param,
gint *nreturn_vals,
GParam **return_vals);
GPlugInInfo PLUG_IN_INFO =
{
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
run, /* run_proc */
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
run, /* run_proc */
};
MAIN ()
static void
query ()
query (void)
{
static GParamDef args[] =
{
{ PARAM_INT32, "run_mode", "Interactive, [non-interactive]" }
};
static int nargs = sizeof (args) / sizeof (args[0]);
INIT_I18N();
static gint nargs = sizeof (args) / sizeof (args[0]);
gimp_install_procedure ("extension_db_browser",
"List available procedures in the PDB",
@ -93,10 +94,10 @@ query ()
}
static void
run (char *name,
int nparams,
run (gchar *name,
gint nparams,
GParam *param,
int *nreturn_vals,
gint *nreturn_vals,
GParam **return_vals)
{
static GParam values[1];
@ -105,8 +106,8 @@ run (char *name,
run_mode = param[0].data.d_int32;
*nreturn_vals = 1;
*return_vals = values;
values[0].type = PARAM_STATUS;
*return_vals = values;
values[0].type = PARAM_STATUS;
values[0].data.d_status = STATUS_SUCCESS;
switch (run_mode)
@ -123,8 +124,8 @@ run (char *name,
argv[0] = g_strdup ("dbbrowser");
gtk_init (&argc, &argv);
gtk_rc_parse (gimp_gtkrc ());
gtk_quit_add_destroy (1, (GtkObject*) gimp_db_browser (NULL));
gtk_quit_add_destroy (1, (GtkObject *) gimp_db_browser (NULL));
gtk_main ();
gdk_flush ();
@ -136,22 +137,8 @@ run (char *name,
g_warning ("dbbrowser allows only interactive invocation");
values[0].data.d_status = STATUS_CALLING_ERROR;
break;
default:
break;
}
}

View File

@ -1,43 +0,0 @@
/* The GIMP -- an image manipulation program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser.h
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
#include "gtk/gtk.h"
#include "libgimp/gimp.h"
GtkWidget*
gimp_db_browser (void (* apply_callback)
( gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
int selected_proc_type,
int selected_nparams,
int selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals ));

View File

@ -16,105 +16,218 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser_utils.c
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
98/12/13 Sven Neumann <sven@gimp.org> : added help display
*/
* dbbrowser_utils.c
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*
* 98/12/13 Sven Neumann <sven@gimp.org> : added help display
*/
#include "config.h"
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
#include "dbbrowser_utils.h"
#include "libgimp/stdplugins-intl.h"
GList *proc_table;
/* configuration */
GtkWidget*
gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
#define DBL_LIST_WIDTH 220
#define DBL_WIDTH DBL_LIST_WIDTH+400
#define DBL_HEIGHT 250
/* end of configuration */
typedef struct
{
gchar *label;
gchar *func;
} ListEntry_t;
typedef struct
{
GtkWidget *dlg;
GtkWidget *search_entry;
GtkWidget *name_button;
GtkWidget *blurb_button;
GtkWidget *descr_scroll;
GtkWidget *descr_table;
GtkWidget *clist;
GtkWidget *scrolled_win;
/* the currently selected procedure */
gchar *selected_proc_name;
gchar *selected_scheme_proc_name;
gchar *selected_proc_blurb;
gchar *selected_proc_help;
gchar *selected_proc_author;
gchar *selected_proc_copyright;
gchar *selected_proc_date;
gint selected_proc_type;
gint selected_nparams;
gint selected_nreturn_vals;
GParamDef *selected_params;
GParamDef *selected_return_vals;
void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals);
} dbbrowser_t;
/* local functions */
static void dialog_apply_callback (GtkWidget *widget,
gpointer data);
static gint procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data);
static void dialog_search_callback (GtkWidget *widget,
gpointer data);
static void dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name);
static void dialog_close_callback (GtkWidget *widget,
gpointer data);
static void convert_string (gchar *str);
static gchar * GParamType2char (GParamType t);
GList * proc_table = NULL;
/* create the dialog box
* console_entry != NULL => called from the script-fu-console
*/
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
int selected_proc_type,
int selected_nparams,
int selected_nreturn_vals,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals ) )
/* create the dialog box */
/* console_entry != NULL => called from the script-fu-console */
GParamDef *selected_return_vals))
{
dbbrowser_t* dbbrowser;
GtkWidget *button;
GtkWidget *hbox,*searchhbox,*vbox;
GtkWidget *label;
dbbrowser = (gpointer)malloc(sizeof(dbbrowser_t));
dbbrowser = g_new (dbbrowser_t, 1);
dbbrowser->apply_callback = apply_callback;
/* the dialog box */
dbbrowser->dlg = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser (init)"));
gtk_window_position (GTK_WINDOW (dbbrowser->dlg), GTK_WIN_POS_MOUSE);
if (apply_callback)
{
dbbrowser->dlg =
gimp_dialog_new (_("DB Browser (init...)"), "dbbrowser",
gimp_plugin_help_func, "filters/dbbrowser.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Search by Name"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->name_button, TRUE, FALSE,
_("Search by Blurb"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->blurb_button, FALSE, FALSE,
_("Apply"), dialog_apply_callback,
dbbrowser, NULL, NULL, FALSE, FALSE,
_("Close"), dialog_close_callback,
dbbrowser, NULL, NULL, FALSE, TRUE,
NULL);
}
else
{
dbbrowser->dlg =
gimp_dialog_new (_("DB Browser (init...)"), "dbbrowser",
gimp_plugin_help_func, "filters/dbbrowser.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Search by Name"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->name_button, TRUE, FALSE,
_("Search by Blurb"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->blurb_button, FALSE, FALSE,
_("Close"), dialog_close_callback,
dbbrowser, NULL, NULL, FALSE, TRUE,
NULL);
}
gtk_signal_connect (GTK_OBJECT (dbbrowser->dlg), "destroy",
(GtkSignalFunc) dialog_close_callback,
GTK_SIGNAL_FUNC (dialog_close_callback),
dbbrowser);
/* hbox : left=list ; right=description */
hbox = gtk_hbox_new(FALSE, 0);
hbox = gtk_hbox_new (FALSE, 0);
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_border_width (GTK_CONTAINER (vbox), 3);
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);
/* list : list in a scrolled_win */
dbbrowser->clist = gtk_clist_new(1);
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_clist_set_selection_mode (GTK_CLIST (dbbrowser->clist),
GTK_SELECTION_BROWSE);
gtk_widget_set_usize(dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
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);
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->scrolled_win);
/* search entry */
searchhbox = gtk_hbox_new(FALSE,0);
searchhbox = gtk_hbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0);
gtk_widget_show(searchhbox);
gtk_widget_show (searchhbox);
label = gtk_label_new (_("Search :"));
gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5);
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_widget_show(label);
gtk_widget_show (label);
dbbrowser->search_entry = gtk_entry_new();
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);
@ -124,52 +237,12 @@ gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
dbbrowser->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
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);
/* buttons in dlg->action_aera */
gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG(dbbrowser->dlg)->action_area), 0);
dbbrowser->name_button = gtk_button_new_with_label (_("Search by name"));
GTK_WIDGET_SET_FLAGS (dbbrowser->name_button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->name_button), "clicked",
(GtkSignalFunc) dialog_search_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
dbbrowser->name_button , TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->name_button);
dbbrowser->blurb_button = gtk_button_new_with_label (_("Search by blurb"));
GTK_WIDGET_SET_FLAGS (dbbrowser->blurb_button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->blurb_button), "clicked",
(GtkSignalFunc) dialog_search_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
dbbrowser->blurb_button , TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->blurb_button);
if (apply_callback) {
button = gtk_button_new_with_label (_("Apply"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) dialog_apply_callback, dbbrowser );
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show (button);
}
button = gtk_button_new_with_label (_("Close"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) dialog_close_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show (button);
/* now build the list */
gtk_widget_show (dbbrowser->clist);
@ -192,18 +265,17 @@ gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
dbbrowser->selected_return_vals = NULL;
/* first search (all procedures) */
dialog_search_callback( NULL, (gpointer)dbbrowser );
dialog_search_callback (NULL, (gpointer) dbbrowser);
return dbbrowser->dlg;
}
static gint
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton * bevent,
gpointer data)
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data)
{
dbbrowser_t *dbbrowser = data;
gchar *func;
@ -213,39 +285,36 @@ procedure_select_callback (GtkWidget *widget,
g_return_val_if_fail (dbbrowser != NULL, FALSE);
if ((func = (gchar *) (gtk_clist_get_row_data (GTK_CLIST (widget), row))))
dialog_select (dbbrowser, func);
dialog_select (dbbrowser, func);
return FALSE;
}
/* update the description box (right) */
static void
dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name)
/* update the description box (right) */
{
GtkWidget *label;
GtkWidget *old_table;
GtkWidget *help;
GtkWidget *text = NULL;
GtkWidget *vscrollbar;
gint i,row=0;
if (dbbrowser->selected_proc_name)
g_free(dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup(proc_name);
gint i, row = 0;
if (dbbrowser->selected_scheme_proc_name)
g_free(dbbrowser->selected_scheme_proc_name);
dbbrowser->selected_scheme_proc_name =
g_strdup(proc_name);
convert_string(dbbrowser->selected_scheme_proc_name);
g_free (dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup (proc_name);
if (dbbrowser->selected_proc_blurb) g_free(dbbrowser->selected_proc_blurb);
if (dbbrowser->selected_proc_help) g_free(dbbrowser->selected_proc_help);
if (dbbrowser->selected_proc_author) g_free(dbbrowser->selected_proc_author);
if (dbbrowser->selected_proc_copyright) g_free(dbbrowser->selected_proc_copyright);
if (dbbrowser->selected_proc_date) g_free(dbbrowser->selected_proc_date);
if (dbbrowser->selected_params) g_free(dbbrowser->selected_params);
if (dbbrowser->selected_return_vals) g_free(dbbrowser->selected_return_vals);
g_free (dbbrowser->selected_scheme_proc_name);
dbbrowser->selected_scheme_proc_name = g_strdup (proc_name);
convert_string (dbbrowser->selected_scheme_proc_name);
g_free (dbbrowser->selected_proc_blurb);
g_free (dbbrowser->selected_proc_help);
g_free (dbbrowser->selected_proc_author);
g_free (dbbrowser->selected_proc_copyright);
g_free (dbbrowser->selected_proc_date);
g_free (dbbrowser->selected_params);
g_free (dbbrowser->selected_return_vals);
gimp_query_procedure (proc_name,
&(dbbrowser->selected_proc_blurb),
@ -262,154 +331,156 @@ dialog_select (dbbrowser_t *dbbrowser,
/* 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), 3);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 4);
/* show the name */
label = gtk_label_new(_("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);
gtk_widget_show (label);
label = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(label),dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable(GTK_ENTRY(label), 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);
gtk_widget_show (label);
row++;
/* show the description */
label = gtk_label_new(_("Blurb :"));
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);
gtk_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_blurb);
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);
gtk_widget_show (label);
row++;
label = gtk_hseparator_new(); /* ok, not really a label ... :) */
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);
gtk_widget_show (label);
row++;
/* in parameters */
if (dbbrowser->selected_nparams)
{
label = gtk_label_new(_("In :"));
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);
gtk_widget_show(label);
for (i=0;i<(dbbrowser->selected_nparams);i++)
0, 1, row, row+(dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nparams; i++)
{
/* name */
label = gtk_label_new((dbbrowser->selected_params[i]).name);
label = gtk_label_new ((dbbrowser->selected_params[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);
gtk_widget_show(label);
gtk_widget_show (label);
/* type */
label = gtk_label_new(GParamType2char((dbbrowser->selected_params[i]).type));
label = gtk_label_new (GParamType2char ((dbbrowser->selected_params[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);
gtk_widget_show(label);
gtk_widget_show (label);
/* description */
label = gtk_label_new((dbbrowser->selected_params[i]).description);
label = gtk_label_new ((dbbrowser->selected_params[i]).description);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show(label);
gtk_widget_show (label);
row++;
}
}
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++;
}
(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++;
}
/* out parameters */
if (dbbrowser->selected_nreturn_vals)
{
label = gtk_label_new("Out :");
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);
gtk_widget_show(label);
for (i=0;i<(dbbrowser->selected_nreturn_vals);i++)
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nreturn_vals; i++)
{
/* name */
label = gtk_label_new((dbbrowser->selected_return_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);
gtk_widget_show(label);
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);
gtk_widget_show(label);
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);
gtk_widget_show(label);
gtk_widget_show (label);
row++;
}
}
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 );
(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++;
}
/* show the help */
if ((dbbrowser->selected_proc_help) && (strlen(dbbrowser->selected_proc_help) > 1))
if ((dbbrowser->selected_proc_help) &&
(strlen (dbbrowser->selected_proc_help) > 1))
{
label = gtk_label_new(_("Help :"));
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);
gtk_widget_show (label);
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);
@ -420,7 +491,7 @@ dialog_select (dbbrowser_t *dbbrowser,
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap(GTK_TEXT(text), TRUE);
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,
@ -431,63 +502,63 @@ dialog_select (dbbrowser_t *dbbrowser,
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);
label = gtk_hseparator_new(); /* ok, not really a label ... :) */
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);
gtk_widget_show (label);
row++;
}
/* show the author & the copyright */
label = gtk_label_new(_("Author :"));
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);
gtk_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_author);
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);
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);
gtk_widget_show (label);
row++;
label = gtk_label_new(_("Copyright :"));
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_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_copyright);
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);
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);
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++;
if (old_table)
gtk_widget_destroy(old_table);
gtk_widget_destroy (old_table);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
dbbrowser->descr_table);
@ -501,35 +572,38 @@ dialog_select (dbbrowser_t *dbbrowser,
dbbrowser->selected_proc_help, -1);
gtk_text_thaw (GTK_TEXT (text));
}
gtk_widget_show(dbbrowser->descr_table);
gtk_widget_show (dbbrowser->descr_table);
}
/* end of the dialog */
static void
dialog_close_callback (GtkWidget *widget,
gpointer data)
/* end of the dialog */
{
dbbrowser_t* dbbrowser = data;
if (dbbrowser->apply_callback) {
/* we are called by another application : just kill the dialog box */
gtk_widget_hide(dbbrowser->dlg);
gtk_widget_destroy(dbbrowser->dlg);
} else {
/* we are in the plug_in : kill the gtk application */
gtk_widget_destroy(dbbrowser->dlg);
gtk_main_quit ();
}
if (dbbrowser->apply_callback)
{
/* we are called by another application : just kill the dialog box */
gtk_widget_hide (dbbrowser->dlg);
gtk_widget_destroy (dbbrowser->dlg);
}
else
{
/* we are in the plug_in : kill the gtk application */
gtk_widget_destroy (dbbrowser->dlg);
gtk_main_quit ();
}
}
/* end of the dialog */
static void
dialog_apply_callback (GtkWidget *widget,
gpointer data)
/* end of the dialog */
{
dbbrowser_t* dbbrowser = data;
(dbbrowser->apply_callback)( dbbrowser->selected_proc_name,
(dbbrowser->apply_callback) (dbbrowser->selected_proc_name,
dbbrowser->selected_scheme_proc_name,
dbbrowser->selected_proc_blurb,
dbbrowser->selected_proc_help,
@ -540,33 +614,33 @@ dialog_apply_callback (GtkWidget *widget,
dbbrowser->selected_nparams,
dbbrowser->selected_nreturn_vals,
dbbrowser->selected_params,
dbbrowser->selected_return_vals );
dbbrowser->selected_return_vals);
}
/* search in the whole db */
static void
dialog_search_callback (GtkWidget *widget,
gpointer data)
/* search in the whole db */
{
char **proc_list;
int num_procs;
int i, j;
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t* dbbrowser = data;
gchar *func_name, *label, *query_text;
GString *query;
gtk_clist_freeze(GTK_CLIST(dbbrowser->clist));
gtk_clist_clear(GTK_CLIST(dbbrowser->clist));
gtk_clist_freeze (GTK_CLIST (dbbrowser->clist));
gtk_clist_clear (GTK_CLIST (dbbrowser->clist));
/* search */
if ( widget == (dbbrowser->name_button) )
if (widget == (dbbrowser->name_button))
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by name - please wait)"));
query = g_string_new ("");
query_text = gtk_entry_get_text(GTK_ENTRY(dbbrowser->search_entry));
query_text = gtk_entry_get_text (GTK_ENTRY (dbbrowser->search_entry));
while (*query_text)
{
@ -584,7 +658,7 @@ dialog_search_callback (GtkWidget *widget,
g_string_free (query, TRUE);
}
else if ( widget == (dbbrowser->blurb_button) )
else if (widget == (dbbrowser->blurb_button))
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by blurb - please wait)"));
@ -593,34 +667,38 @@ dialog_search_callback (GtkWidget *widget,
".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
else {
else
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (please wait)"));
gimp_query_database (".*", ".*", ".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
}
for (i = 0; i < num_procs; i++) {
j = 0;
while((j < i) &&
(strcmp(gtk_clist_get_row_data(GTK_CLIST(dbbrowser->clist), j),
proc_list[i]) < 0))
j++;
for (i = 0; i < num_procs; i++)
{
j = 0;
while ((j < i) &&
(strcmp (gtk_clist_get_row_data (GTK_CLIST (dbbrowser->clist), j),
proc_list[i]) < 0))
j++;
label = g_strdup(proc_list[i]);
convert_string(label);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(dbbrowser->clist)), j,
&label);
func_name = g_strdup (proc_list[i]);
gtk_clist_set_row_data_full(GTK_CLIST(dbbrowser->clist), j,
func_name, g_free);
}
label = g_strdup (proc_list[i]);
convert_string (label);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(dbbrowser->clist)), j,
&label);
func_name = g_strdup (proc_list[i]);
if (num_procs > 0) {
dialog_select( dbbrowser,gtk_clist_get_row_data(GTK_CLIST(dbbrowser->clist), 0));
gtk_clist_select_row(GTK_CLIST(dbbrowser->clist), 0, 0);
}
gtk_clist_set_row_data_full (GTK_CLIST (dbbrowser->clist), j,
func_name, g_free);
}
if (num_procs > 0)
{
dialog_select (dbbrowser,
gtk_clist_get_row_data (GTK_CLIST (dbbrowser->clist), 0));
gtk_clist_select_row (GTK_CLIST (dbbrowser->clist), 0, 0);
}
/*
if (num_procs != 0) {
@ -651,21 +729,22 @@ dialog_search_callback (GtkWidget *widget,
}
*/
if ( dbbrowser->clist ) {
;
}
if (dbbrowser->clist)
{
;
}
g_free( proc_list );
g_free (proc_list);
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser"));
gtk_clist_thaw(GTK_CLIST(dbbrowser->clist));
gtk_clist_thaw (GTK_CLIST (dbbrowser->clist));
}
/* utils ... */
static void
convert_string (char *str)
convert_string (gchar *str)
{
while (*str)
{
@ -674,33 +753,34 @@ convert_string (char *str)
}
}
static char*
GParamType2char(GParamType t)
static gchar *
GParamType2char (GParamType t)
{
switch (t) {
case PARAM_INT32: return "INT32";
case PARAM_INT16: return "INT16";
case PARAM_INT8: return "INT8";
case PARAM_FLOAT: return "FLOAT";
case PARAM_STRING: return "STRING";
case PARAM_INT32ARRAY: return "INT32ARRAY";
case PARAM_INT16ARRAY: return "INT16ARRAY";
case PARAM_INT8ARRAY: return "INT8ARRAY";
case PARAM_FLOATARRAY: return "FLOATARRAY";
case PARAM_STRINGARRAY: return "STRINGARRAY";
case PARAM_COLOR: return "COLOR";
case PARAM_REGION: return "REGION";
case PARAM_DISPLAY: return "DISPLAY";
case PARAM_IMAGE: return "IMAGE";
case PARAM_LAYER: return "LAYER";
case PARAM_CHANNEL: return "CHANNEL";
case PARAM_DRAWABLE: return "DRAWABLE";
case PARAM_SELECTION: return "SELECTION";
case PARAM_BOUNDARY: return "BOUNDARY";
case PARAM_PATH: return "PATH";
case PARAM_PARASITE: return "PARASITE";
case PARAM_STATUS: return "STATUS";
case PARAM_END: return "END";
default: return "UNKNOWN?";
}
switch (t)
{
case PARAM_INT32: return "INT32";
case PARAM_INT16: return "INT16";
case PARAM_INT8: return "INT8";
case PARAM_FLOAT: return "FLOAT";
case PARAM_STRING: return "STRING";
case PARAM_INT32ARRAY: return "INT32ARRAY";
case PARAM_INT16ARRAY: return "INT16ARRAY";
case PARAM_INT8ARRAY: return "INT8ARRAY";
case PARAM_FLOATARRAY: return "FLOATARRAY";
case PARAM_STRINGARRAY: return "STRINGARRAY";
case PARAM_COLOR: return "COLOR";
case PARAM_REGION: return "REGION";
case PARAM_DISPLAY: return "DISPLAY";
case PARAM_IMAGE: return "IMAGE";
case PARAM_LAYER: return "LAYER";
case PARAM_CHANNEL: return "CHANNEL";
case PARAM_DRAWABLE: return "DRAWABLE";
case PARAM_SELECTION: return "SELECTION";
case PARAM_BOUNDARY: return "BOUNDARY";
case PARAM_PATH: return "PATH";
case PARAM_PARASITE: return "PARASITE";
case PARAM_STATUS: return "STATUS";
case PARAM_END: return "END";
default: return "UNKNOWN?";
}
}

View File

@ -16,102 +16,23 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser_utils.h
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
* dbbrowser_utils.h
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
/* configuration */
#define DBL_LIST_WIDTH 220
#define DBL_WIDTH DBL_LIST_WIDTH+400
#define DBL_HEIGHT 250
/* end of configuration */
#include <stdlib.h>
#include <string.h>
#include "gtk/gtk.h"
#include "libgimp/gimp.h"
#include "dbbrowser.h"
typedef struct {
gchar *label;
gchar *func;
} ListEntry_t;
typedef struct {
GtkWidget* dlg;
GtkWidget* search_entry;
GtkWidget* name_button;
GtkWidget* blurb_button;
GtkWidget* descr_scroll;
GtkWidget* descr_table;
GtkWidget* clist;
GtkWidget* scrolled_win;
/* the currently selected procedure */
gchar *selected_proc_name;
gchar *selected_scheme_proc_name;
gchar *selected_proc_blurb;
gchar *selected_proc_help;
gchar *selected_proc_author;
gchar *selected_proc_copyright;
gchar *selected_proc_date;
int selected_proc_type;
int selected_nparams;
int selected_nreturn_vals;
GParamDef *selected_params;
GParamDef *selected_return_vals;
void (*apply_callback) ( gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
int selected_proc_type,
int selected_nparams,
int selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals );
} dbbrowser_t;
/* local functions */
static void
dialog_apply_callback(GtkWidget *, gpointer );
static gint
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton * bevent,
gpointer data);
static void
dialog_search_callback(GtkWidget *,
gpointer);
static void
dialog_select(dbbrowser_t *dbbrowser,
gchar *proc_name);
static void
dialog_close_callback(GtkWidget *,
gpointer);
static void
convert_string (gchar *str);
static gchar*
GParamType2char(GParamType t);
#include <gtk/gtk.h>
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals));

View File

@ -16,105 +16,218 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser_utils.c
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
98/12/13 Sven Neumann <sven@gimp.org> : added help display
*/
* dbbrowser_utils.c
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*
* 98/12/13 Sven Neumann <sven@gimp.org> : added help display
*/
#include "config.h"
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
#include "dbbrowser_utils.h"
#include "libgimp/stdplugins-intl.h"
GList *proc_table;
/* configuration */
GtkWidget*
gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
#define DBL_LIST_WIDTH 220
#define DBL_WIDTH DBL_LIST_WIDTH+400
#define DBL_HEIGHT 250
/* end of configuration */
typedef struct
{
gchar *label;
gchar *func;
} ListEntry_t;
typedef struct
{
GtkWidget *dlg;
GtkWidget *search_entry;
GtkWidget *name_button;
GtkWidget *blurb_button;
GtkWidget *descr_scroll;
GtkWidget *descr_table;
GtkWidget *clist;
GtkWidget *scrolled_win;
/* the currently selected procedure */
gchar *selected_proc_name;
gchar *selected_scheme_proc_name;
gchar *selected_proc_blurb;
gchar *selected_proc_help;
gchar *selected_proc_author;
gchar *selected_proc_copyright;
gchar *selected_proc_date;
gint selected_proc_type;
gint selected_nparams;
gint selected_nreturn_vals;
GParamDef *selected_params;
GParamDef *selected_return_vals;
void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals);
} dbbrowser_t;
/* local functions */
static void dialog_apply_callback (GtkWidget *widget,
gpointer data);
static gint procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data);
static void dialog_search_callback (GtkWidget *widget,
gpointer data);
static void dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name);
static void dialog_close_callback (GtkWidget *widget,
gpointer data);
static void convert_string (gchar *str);
static gchar * GParamType2char (GParamType t);
GList * proc_table = NULL;
/* create the dialog box
* console_entry != NULL => called from the script-fu-console
*/
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
int selected_proc_type,
int selected_nparams,
int selected_nreturn_vals,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals ) )
/* create the dialog box */
/* console_entry != NULL => called from the script-fu-console */
GParamDef *selected_return_vals))
{
dbbrowser_t* dbbrowser;
GtkWidget *button;
GtkWidget *hbox,*searchhbox,*vbox;
GtkWidget *label;
dbbrowser = (gpointer)malloc(sizeof(dbbrowser_t));
dbbrowser = g_new (dbbrowser_t, 1);
dbbrowser->apply_callback = apply_callback;
/* the dialog box */
dbbrowser->dlg = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser (init)"));
gtk_window_position (GTK_WINDOW (dbbrowser->dlg), GTK_WIN_POS_MOUSE);
if (apply_callback)
{
dbbrowser->dlg =
gimp_dialog_new (_("DB Browser (init...)"), "dbbrowser",
gimp_plugin_help_func, "filters/dbbrowser.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Search by Name"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->name_button, TRUE, FALSE,
_("Search by Blurb"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->blurb_button, FALSE, FALSE,
_("Apply"), dialog_apply_callback,
dbbrowser, NULL, NULL, FALSE, FALSE,
_("Close"), dialog_close_callback,
dbbrowser, NULL, NULL, FALSE, TRUE,
NULL);
}
else
{
dbbrowser->dlg =
gimp_dialog_new (_("DB Browser (init...)"), "dbbrowser",
gimp_plugin_help_func, "filters/dbbrowser.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Search by Name"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->name_button, TRUE, FALSE,
_("Search by Blurb"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->blurb_button, FALSE, FALSE,
_("Close"), dialog_close_callback,
dbbrowser, NULL, NULL, FALSE, TRUE,
NULL);
}
gtk_signal_connect (GTK_OBJECT (dbbrowser->dlg), "destroy",
(GtkSignalFunc) dialog_close_callback,
GTK_SIGNAL_FUNC (dialog_close_callback),
dbbrowser);
/* hbox : left=list ; right=description */
hbox = gtk_hbox_new(FALSE, 0);
hbox = gtk_hbox_new (FALSE, 0);
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_border_width (GTK_CONTAINER (vbox), 3);
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);
/* list : list in a scrolled_win */
dbbrowser->clist = gtk_clist_new(1);
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_clist_set_selection_mode (GTK_CLIST (dbbrowser->clist),
GTK_SELECTION_BROWSE);
gtk_widget_set_usize(dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
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);
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->scrolled_win);
/* search entry */
searchhbox = gtk_hbox_new(FALSE,0);
searchhbox = gtk_hbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0);
gtk_widget_show(searchhbox);
gtk_widget_show (searchhbox);
label = gtk_label_new (_("Search :"));
gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5);
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_widget_show(label);
gtk_widget_show (label);
dbbrowser->search_entry = gtk_entry_new();
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);
@ -124,52 +237,12 @@ gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
dbbrowser->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
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);
/* buttons in dlg->action_aera */
gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG(dbbrowser->dlg)->action_area), 0);
dbbrowser->name_button = gtk_button_new_with_label (_("Search by name"));
GTK_WIDGET_SET_FLAGS (dbbrowser->name_button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->name_button), "clicked",
(GtkSignalFunc) dialog_search_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
dbbrowser->name_button , TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->name_button);
dbbrowser->blurb_button = gtk_button_new_with_label (_("Search by blurb"));
GTK_WIDGET_SET_FLAGS (dbbrowser->blurb_button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->blurb_button), "clicked",
(GtkSignalFunc) dialog_search_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
dbbrowser->blurb_button , TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->blurb_button);
if (apply_callback) {
button = gtk_button_new_with_label (_("Apply"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) dialog_apply_callback, dbbrowser );
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show (button);
}
button = gtk_button_new_with_label (_("Close"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) dialog_close_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show (button);
/* now build the list */
gtk_widget_show (dbbrowser->clist);
@ -192,18 +265,17 @@ gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
dbbrowser->selected_return_vals = NULL;
/* first search (all procedures) */
dialog_search_callback( NULL, (gpointer)dbbrowser );
dialog_search_callback (NULL, (gpointer) dbbrowser);
return dbbrowser->dlg;
}
static gint
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton * bevent,
gpointer data)
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data)
{
dbbrowser_t *dbbrowser = data;
gchar *func;
@ -213,39 +285,36 @@ procedure_select_callback (GtkWidget *widget,
g_return_val_if_fail (dbbrowser != NULL, FALSE);
if ((func = (gchar *) (gtk_clist_get_row_data (GTK_CLIST (widget), row))))
dialog_select (dbbrowser, func);
dialog_select (dbbrowser, func);
return FALSE;
}
/* update the description box (right) */
static void
dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name)
/* update the description box (right) */
{
GtkWidget *label;
GtkWidget *old_table;
GtkWidget *help;
GtkWidget *text = NULL;
GtkWidget *vscrollbar;
gint i,row=0;
if (dbbrowser->selected_proc_name)
g_free(dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup(proc_name);
gint i, row = 0;
if (dbbrowser->selected_scheme_proc_name)
g_free(dbbrowser->selected_scheme_proc_name);
dbbrowser->selected_scheme_proc_name =
g_strdup(proc_name);
convert_string(dbbrowser->selected_scheme_proc_name);
g_free (dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup (proc_name);
if (dbbrowser->selected_proc_blurb) g_free(dbbrowser->selected_proc_blurb);
if (dbbrowser->selected_proc_help) g_free(dbbrowser->selected_proc_help);
if (dbbrowser->selected_proc_author) g_free(dbbrowser->selected_proc_author);
if (dbbrowser->selected_proc_copyright) g_free(dbbrowser->selected_proc_copyright);
if (dbbrowser->selected_proc_date) g_free(dbbrowser->selected_proc_date);
if (dbbrowser->selected_params) g_free(dbbrowser->selected_params);
if (dbbrowser->selected_return_vals) g_free(dbbrowser->selected_return_vals);
g_free (dbbrowser->selected_scheme_proc_name);
dbbrowser->selected_scheme_proc_name = g_strdup (proc_name);
convert_string (dbbrowser->selected_scheme_proc_name);
g_free (dbbrowser->selected_proc_blurb);
g_free (dbbrowser->selected_proc_help);
g_free (dbbrowser->selected_proc_author);
g_free (dbbrowser->selected_proc_copyright);
g_free (dbbrowser->selected_proc_date);
g_free (dbbrowser->selected_params);
g_free (dbbrowser->selected_return_vals);
gimp_query_procedure (proc_name,
&(dbbrowser->selected_proc_blurb),
@ -262,154 +331,156 @@ dialog_select (dbbrowser_t *dbbrowser,
/* 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), 3);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 4);
/* show the name */
label = gtk_label_new(_("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);
gtk_widget_show (label);
label = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(label),dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable(GTK_ENTRY(label), 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);
gtk_widget_show (label);
row++;
/* show the description */
label = gtk_label_new(_("Blurb :"));
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);
gtk_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_blurb);
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);
gtk_widget_show (label);
row++;
label = gtk_hseparator_new(); /* ok, not really a label ... :) */
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);
gtk_widget_show (label);
row++;
/* in parameters */
if (dbbrowser->selected_nparams)
{
label = gtk_label_new(_("In :"));
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);
gtk_widget_show(label);
for (i=0;i<(dbbrowser->selected_nparams);i++)
0, 1, row, row+(dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nparams; i++)
{
/* name */
label = gtk_label_new((dbbrowser->selected_params[i]).name);
label = gtk_label_new ((dbbrowser->selected_params[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);
gtk_widget_show(label);
gtk_widget_show (label);
/* type */
label = gtk_label_new(GParamType2char((dbbrowser->selected_params[i]).type));
label = gtk_label_new (GParamType2char ((dbbrowser->selected_params[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);
gtk_widget_show(label);
gtk_widget_show (label);
/* description */
label = gtk_label_new((dbbrowser->selected_params[i]).description);
label = gtk_label_new ((dbbrowser->selected_params[i]).description);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show(label);
gtk_widget_show (label);
row++;
}
}
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++;
}
(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++;
}
/* out parameters */
if (dbbrowser->selected_nreturn_vals)
{
label = gtk_label_new("Out :");
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);
gtk_widget_show(label);
for (i=0;i<(dbbrowser->selected_nreturn_vals);i++)
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nreturn_vals; i++)
{
/* name */
label = gtk_label_new((dbbrowser->selected_return_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);
gtk_widget_show(label);
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);
gtk_widget_show(label);
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);
gtk_widget_show(label);
gtk_widget_show (label);
row++;
}
}
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 );
(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++;
}
/* show the help */
if ((dbbrowser->selected_proc_help) && (strlen(dbbrowser->selected_proc_help) > 1))
if ((dbbrowser->selected_proc_help) &&
(strlen (dbbrowser->selected_proc_help) > 1))
{
label = gtk_label_new(_("Help :"));
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);
gtk_widget_show (label);
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);
@ -420,7 +491,7 @@ dialog_select (dbbrowser_t *dbbrowser,
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap(GTK_TEXT(text), TRUE);
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,
@ -431,63 +502,63 @@ dialog_select (dbbrowser_t *dbbrowser,
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);
label = gtk_hseparator_new(); /* ok, not really a label ... :) */
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);
gtk_widget_show (label);
row++;
}
/* show the author & the copyright */
label = gtk_label_new(_("Author :"));
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);
gtk_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_author);
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);
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);
gtk_widget_show (label);
row++;
label = gtk_label_new(_("Copyright :"));
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_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_copyright);
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);
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);
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++;
if (old_table)
gtk_widget_destroy(old_table);
gtk_widget_destroy (old_table);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
dbbrowser->descr_table);
@ -501,35 +572,38 @@ dialog_select (dbbrowser_t *dbbrowser,
dbbrowser->selected_proc_help, -1);
gtk_text_thaw (GTK_TEXT (text));
}
gtk_widget_show(dbbrowser->descr_table);
gtk_widget_show (dbbrowser->descr_table);
}
/* end of the dialog */
static void
dialog_close_callback (GtkWidget *widget,
gpointer data)
/* end of the dialog */
{
dbbrowser_t* dbbrowser = data;
if (dbbrowser->apply_callback) {
/* we are called by another application : just kill the dialog box */
gtk_widget_hide(dbbrowser->dlg);
gtk_widget_destroy(dbbrowser->dlg);
} else {
/* we are in the plug_in : kill the gtk application */
gtk_widget_destroy(dbbrowser->dlg);
gtk_main_quit ();
}
if (dbbrowser->apply_callback)
{
/* we are called by another application : just kill the dialog box */
gtk_widget_hide (dbbrowser->dlg);
gtk_widget_destroy (dbbrowser->dlg);
}
else
{
/* we are in the plug_in : kill the gtk application */
gtk_widget_destroy (dbbrowser->dlg);
gtk_main_quit ();
}
}
/* end of the dialog */
static void
dialog_apply_callback (GtkWidget *widget,
gpointer data)
/* end of the dialog */
{
dbbrowser_t* dbbrowser = data;
(dbbrowser->apply_callback)( dbbrowser->selected_proc_name,
(dbbrowser->apply_callback) (dbbrowser->selected_proc_name,
dbbrowser->selected_scheme_proc_name,
dbbrowser->selected_proc_blurb,
dbbrowser->selected_proc_help,
@ -540,33 +614,33 @@ dialog_apply_callback (GtkWidget *widget,
dbbrowser->selected_nparams,
dbbrowser->selected_nreturn_vals,
dbbrowser->selected_params,
dbbrowser->selected_return_vals );
dbbrowser->selected_return_vals);
}
/* search in the whole db */
static void
dialog_search_callback (GtkWidget *widget,
gpointer data)
/* search in the whole db */
{
char **proc_list;
int num_procs;
int i, j;
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t* dbbrowser = data;
gchar *func_name, *label, *query_text;
GString *query;
gtk_clist_freeze(GTK_CLIST(dbbrowser->clist));
gtk_clist_clear(GTK_CLIST(dbbrowser->clist));
gtk_clist_freeze (GTK_CLIST (dbbrowser->clist));
gtk_clist_clear (GTK_CLIST (dbbrowser->clist));
/* search */
if ( widget == (dbbrowser->name_button) )
if (widget == (dbbrowser->name_button))
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by name - please wait)"));
query = g_string_new ("");
query_text = gtk_entry_get_text(GTK_ENTRY(dbbrowser->search_entry));
query_text = gtk_entry_get_text (GTK_ENTRY (dbbrowser->search_entry));
while (*query_text)
{
@ -584,7 +658,7 @@ dialog_search_callback (GtkWidget *widget,
g_string_free (query, TRUE);
}
else if ( widget == (dbbrowser->blurb_button) )
else if (widget == (dbbrowser->blurb_button))
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by blurb - please wait)"));
@ -593,34 +667,38 @@ dialog_search_callback (GtkWidget *widget,
".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
else {
else
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (please wait)"));
gimp_query_database (".*", ".*", ".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
}
for (i = 0; i < num_procs; i++) {
j = 0;
while((j < i) &&
(strcmp(gtk_clist_get_row_data(GTK_CLIST(dbbrowser->clist), j),
proc_list[i]) < 0))
j++;
for (i = 0; i < num_procs; i++)
{
j = 0;
while ((j < i) &&
(strcmp (gtk_clist_get_row_data (GTK_CLIST (dbbrowser->clist), j),
proc_list[i]) < 0))
j++;
label = g_strdup(proc_list[i]);
convert_string(label);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(dbbrowser->clist)), j,
&label);
func_name = g_strdup (proc_list[i]);
gtk_clist_set_row_data_full(GTK_CLIST(dbbrowser->clist), j,
func_name, g_free);
}
label = g_strdup (proc_list[i]);
convert_string (label);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(dbbrowser->clist)), j,
&label);
func_name = g_strdup (proc_list[i]);
if (num_procs > 0) {
dialog_select( dbbrowser,gtk_clist_get_row_data(GTK_CLIST(dbbrowser->clist), 0));
gtk_clist_select_row(GTK_CLIST(dbbrowser->clist), 0, 0);
}
gtk_clist_set_row_data_full (GTK_CLIST (dbbrowser->clist), j,
func_name, g_free);
}
if (num_procs > 0)
{
dialog_select (dbbrowser,
gtk_clist_get_row_data (GTK_CLIST (dbbrowser->clist), 0));
gtk_clist_select_row (GTK_CLIST (dbbrowser->clist), 0, 0);
}
/*
if (num_procs != 0) {
@ -651,21 +729,22 @@ dialog_search_callback (GtkWidget *widget,
}
*/
if ( dbbrowser->clist ) {
;
}
if (dbbrowser->clist)
{
;
}
g_free( proc_list );
g_free (proc_list);
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser"));
gtk_clist_thaw(GTK_CLIST(dbbrowser->clist));
gtk_clist_thaw (GTK_CLIST (dbbrowser->clist));
}
/* utils ... */
static void
convert_string (char *str)
convert_string (gchar *str)
{
while (*str)
{
@ -674,33 +753,34 @@ convert_string (char *str)
}
}
static char*
GParamType2char(GParamType t)
static gchar *
GParamType2char (GParamType t)
{
switch (t) {
case PARAM_INT32: return "INT32";
case PARAM_INT16: return "INT16";
case PARAM_INT8: return "INT8";
case PARAM_FLOAT: return "FLOAT";
case PARAM_STRING: return "STRING";
case PARAM_INT32ARRAY: return "INT32ARRAY";
case PARAM_INT16ARRAY: return "INT16ARRAY";
case PARAM_INT8ARRAY: return "INT8ARRAY";
case PARAM_FLOATARRAY: return "FLOATARRAY";
case PARAM_STRINGARRAY: return "STRINGARRAY";
case PARAM_COLOR: return "COLOR";
case PARAM_REGION: return "REGION";
case PARAM_DISPLAY: return "DISPLAY";
case PARAM_IMAGE: return "IMAGE";
case PARAM_LAYER: return "LAYER";
case PARAM_CHANNEL: return "CHANNEL";
case PARAM_DRAWABLE: return "DRAWABLE";
case PARAM_SELECTION: return "SELECTION";
case PARAM_BOUNDARY: return "BOUNDARY";
case PARAM_PATH: return "PATH";
case PARAM_PARASITE: return "PARASITE";
case PARAM_STATUS: return "STATUS";
case PARAM_END: return "END";
default: return "UNKNOWN?";
}
switch (t)
{
case PARAM_INT32: return "INT32";
case PARAM_INT16: return "INT16";
case PARAM_INT8: return "INT8";
case PARAM_FLOAT: return "FLOAT";
case PARAM_STRING: return "STRING";
case PARAM_INT32ARRAY: return "INT32ARRAY";
case PARAM_INT16ARRAY: return "INT16ARRAY";
case PARAM_INT8ARRAY: return "INT8ARRAY";
case PARAM_FLOATARRAY: return "FLOATARRAY";
case PARAM_STRINGARRAY: return "STRINGARRAY";
case PARAM_COLOR: return "COLOR";
case PARAM_REGION: return "REGION";
case PARAM_DISPLAY: return "DISPLAY";
case PARAM_IMAGE: return "IMAGE";
case PARAM_LAYER: return "LAYER";
case PARAM_CHANNEL: return "CHANNEL";
case PARAM_DRAWABLE: return "DRAWABLE";
case PARAM_SELECTION: return "SELECTION";
case PARAM_BOUNDARY: return "BOUNDARY";
case PARAM_PATH: return "PATH";
case PARAM_PARASITE: return "PARASITE";
case PARAM_STATUS: return "STATUS";
case PARAM_END: return "END";
default: return "UNKNOWN?";
}
}

View File

@ -16,102 +16,23 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser_utils.h
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
* dbbrowser_utils.h
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
/* configuration */
#define DBL_LIST_WIDTH 220
#define DBL_WIDTH DBL_LIST_WIDTH+400
#define DBL_HEIGHT 250
/* end of configuration */
#include <stdlib.h>
#include <string.h>
#include "gtk/gtk.h"
#include "libgimp/gimp.h"
#include "dbbrowser.h"
typedef struct {
gchar *label;
gchar *func;
} ListEntry_t;
typedef struct {
GtkWidget* dlg;
GtkWidget* search_entry;
GtkWidget* name_button;
GtkWidget* blurb_button;
GtkWidget* descr_scroll;
GtkWidget* descr_table;
GtkWidget* clist;
GtkWidget* scrolled_win;
/* the currently selected procedure */
gchar *selected_proc_name;
gchar *selected_scheme_proc_name;
gchar *selected_proc_blurb;
gchar *selected_proc_help;
gchar *selected_proc_author;
gchar *selected_proc_copyright;
gchar *selected_proc_date;
int selected_proc_type;
int selected_nparams;
int selected_nreturn_vals;
GParamDef *selected_params;
GParamDef *selected_return_vals;
void (*apply_callback) ( gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
int selected_proc_type,
int selected_nparams,
int selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals );
} dbbrowser_t;
/* local functions */
static void
dialog_apply_callback(GtkWidget *, gpointer );
static gint
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton * bevent,
gpointer data);
static void
dialog_search_callback(GtkWidget *,
gpointer);
static void
dialog_select(dbbrowser_t *dbbrowser,
gchar *proc_name);
static void
dialog_close_callback(GtkWidget *,
gpointer);
static void
convert_string (gchar *str);
static gchar*
GParamType2char(GParamType t);
#include <gtk/gtk.h>
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals));

View File

@ -16,105 +16,218 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser_utils.c
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
98/12/13 Sven Neumann <sven@gimp.org> : added help display
*/
* dbbrowser_utils.c
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*
* 98/12/13 Sven Neumann <sven@gimp.org> : added help display
*/
#include "config.h"
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
#include "dbbrowser_utils.h"
#include "libgimp/stdplugins-intl.h"
GList *proc_table;
/* configuration */
GtkWidget*
gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
#define DBL_LIST_WIDTH 220
#define DBL_WIDTH DBL_LIST_WIDTH+400
#define DBL_HEIGHT 250
/* end of configuration */
typedef struct
{
gchar *label;
gchar *func;
} ListEntry_t;
typedef struct
{
GtkWidget *dlg;
GtkWidget *search_entry;
GtkWidget *name_button;
GtkWidget *blurb_button;
GtkWidget *descr_scroll;
GtkWidget *descr_table;
GtkWidget *clist;
GtkWidget *scrolled_win;
/* the currently selected procedure */
gchar *selected_proc_name;
gchar *selected_scheme_proc_name;
gchar *selected_proc_blurb;
gchar *selected_proc_help;
gchar *selected_proc_author;
gchar *selected_proc_copyright;
gchar *selected_proc_date;
gint selected_proc_type;
gint selected_nparams;
gint selected_nreturn_vals;
GParamDef *selected_params;
GParamDef *selected_return_vals;
void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals);
} dbbrowser_t;
/* local functions */
static void dialog_apply_callback (GtkWidget *widget,
gpointer data);
static gint procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data);
static void dialog_search_callback (GtkWidget *widget,
gpointer data);
static void dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name);
static void dialog_close_callback (GtkWidget *widget,
gpointer data);
static void convert_string (gchar *str);
static gchar * GParamType2char (GParamType t);
GList * proc_table = NULL;
/* create the dialog box
* console_entry != NULL => called from the script-fu-console
*/
GtkWidget *
gimp_db_browser (void (* apply_callback) (gchar *selected_proc_name,
gchar *selected_scheme_proc_name,
gchar *selected_proc_blurb,
gchar *selected_proc_help,
gchar *selected_proc_author,
gchar *selected_proc_copyright,
gchar *selected_proc_date,
int selected_proc_type,
int selected_nparams,
int selected_nreturn_vals,
gint selected_proc_type,
gint selected_nparams,
gint selected_nreturn_vals,
GParamDef *selected_params,
GParamDef *selected_return_vals ) )
/* create the dialog box */
/* console_entry != NULL => called from the script-fu-console */
GParamDef *selected_return_vals))
{
dbbrowser_t* dbbrowser;
GtkWidget *button;
GtkWidget *hbox,*searchhbox,*vbox;
GtkWidget *label;
dbbrowser = (gpointer)malloc(sizeof(dbbrowser_t));
dbbrowser = g_new (dbbrowser_t, 1);
dbbrowser->apply_callback = apply_callback;
/* the dialog box */
dbbrowser->dlg = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser (init)"));
gtk_window_position (GTK_WINDOW (dbbrowser->dlg), GTK_WIN_POS_MOUSE);
if (apply_callback)
{
dbbrowser->dlg =
gimp_dialog_new (_("DB Browser (init...)"), "dbbrowser",
gimp_plugin_help_func, "filters/dbbrowser.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Search by Name"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->name_button, TRUE, FALSE,
_("Search by Blurb"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->blurb_button, FALSE, FALSE,
_("Apply"), dialog_apply_callback,
dbbrowser, NULL, NULL, FALSE, FALSE,
_("Close"), dialog_close_callback,
dbbrowser, NULL, NULL, FALSE, TRUE,
NULL);
}
else
{
dbbrowser->dlg =
gimp_dialog_new (_("DB Browser (init...)"), "dbbrowser",
gimp_plugin_help_func, "filters/dbbrowser.html",
GTK_WIN_POS_MOUSE,
FALSE, TRUE, FALSE,
_("Search by Name"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->name_button, TRUE, FALSE,
_("Search by Blurb"), dialog_search_callback,
dbbrowser, NULL, &dbbrowser->blurb_button, FALSE, FALSE,
_("Close"), dialog_close_callback,
dbbrowser, NULL, NULL, FALSE, TRUE,
NULL);
}
gtk_signal_connect (GTK_OBJECT (dbbrowser->dlg), "destroy",
(GtkSignalFunc) dialog_close_callback,
GTK_SIGNAL_FUNC (dialog_close_callback),
dbbrowser);
/* hbox : left=list ; right=description */
hbox = gtk_hbox_new(FALSE, 0);
hbox = gtk_hbox_new (FALSE, 0);
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_border_width (GTK_CONTAINER (vbox), 3);
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);
/* list : list in a scrolled_win */
dbbrowser->clist = gtk_clist_new(1);
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_clist_set_selection_mode (GTK_CLIST (dbbrowser->clist),
GTK_SELECTION_BROWSE);
gtk_widget_set_usize(dbbrowser->clist, DBL_LIST_WIDTH, DBL_HEIGHT);
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);
gtk_widget_show (dbbrowser->clist);
gtk_widget_show (dbbrowser->scrolled_win);
/* search entry */
searchhbox = gtk_hbox_new(FALSE,0);
searchhbox = gtk_hbox_new (FALSE, 4);
gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0);
gtk_widget_show(searchhbox);
gtk_widget_show (searchhbox);
label = gtk_label_new (_("Search :"));
gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5);
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_widget_show(label);
gtk_widget_show (label);
dbbrowser->search_entry = gtk_entry_new();
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);
@ -124,52 +237,12 @@ gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
dbbrowser->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
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);
/* buttons in dlg->action_aera */
gtk_container_border_width (GTK_CONTAINER (GTK_DIALOG(dbbrowser->dlg)->action_area), 0);
dbbrowser->name_button = gtk_button_new_with_label (_("Search by name"));
GTK_WIDGET_SET_FLAGS (dbbrowser->name_button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->name_button), "clicked",
(GtkSignalFunc) dialog_search_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
dbbrowser->name_button , TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->name_button);
dbbrowser->blurb_button = gtk_button_new_with_label (_("Search by blurb"));
GTK_WIDGET_SET_FLAGS (dbbrowser->blurb_button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (dbbrowser->blurb_button), "clicked",
(GtkSignalFunc) dialog_search_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
dbbrowser->blurb_button , TRUE, TRUE, 0);
gtk_widget_show(dbbrowser->blurb_button);
if (apply_callback) {
button = gtk_button_new_with_label (_("Apply"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) dialog_apply_callback, dbbrowser );
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show (button);
}
button = gtk_button_new_with_label (_("Close"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) dialog_close_callback, dbbrowser);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dbbrowser->dlg)->action_area),
button, TRUE, TRUE, 0);
gtk_widget_show (button);
/* now build the list */
gtk_widget_show (dbbrowser->clist);
@ -192,18 +265,17 @@ gimp_db_browser(void (* apply_callback) ( gchar *selected_proc_name,
dbbrowser->selected_return_vals = NULL;
/* first search (all procedures) */
dialog_search_callback( NULL, (gpointer)dbbrowser );
dialog_search_callback (NULL, (gpointer) dbbrowser);
return dbbrowser->dlg;
}
static gint
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton * bevent,
gpointer data)
procedure_select_callback (GtkWidget *widget,
gint row,
gint column,
GdkEventButton *bevent,
gpointer data)
{
dbbrowser_t *dbbrowser = data;
gchar *func;
@ -213,39 +285,36 @@ procedure_select_callback (GtkWidget *widget,
g_return_val_if_fail (dbbrowser != NULL, FALSE);
if ((func = (gchar *) (gtk_clist_get_row_data (GTK_CLIST (widget), row))))
dialog_select (dbbrowser, func);
dialog_select (dbbrowser, func);
return FALSE;
}
/* update the description box (right) */
static void
dialog_select (dbbrowser_t *dbbrowser,
gchar *proc_name)
/* update the description box (right) */
{
GtkWidget *label;
GtkWidget *old_table;
GtkWidget *help;
GtkWidget *text = NULL;
GtkWidget *vscrollbar;
gint i,row=0;
if (dbbrowser->selected_proc_name)
g_free(dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup(proc_name);
gint i, row = 0;
if (dbbrowser->selected_scheme_proc_name)
g_free(dbbrowser->selected_scheme_proc_name);
dbbrowser->selected_scheme_proc_name =
g_strdup(proc_name);
convert_string(dbbrowser->selected_scheme_proc_name);
g_free (dbbrowser->selected_proc_name);
dbbrowser->selected_proc_name = g_strdup (proc_name);
if (dbbrowser->selected_proc_blurb) g_free(dbbrowser->selected_proc_blurb);
if (dbbrowser->selected_proc_help) g_free(dbbrowser->selected_proc_help);
if (dbbrowser->selected_proc_author) g_free(dbbrowser->selected_proc_author);
if (dbbrowser->selected_proc_copyright) g_free(dbbrowser->selected_proc_copyright);
if (dbbrowser->selected_proc_date) g_free(dbbrowser->selected_proc_date);
if (dbbrowser->selected_params) g_free(dbbrowser->selected_params);
if (dbbrowser->selected_return_vals) g_free(dbbrowser->selected_return_vals);
g_free (dbbrowser->selected_scheme_proc_name);
dbbrowser->selected_scheme_proc_name = g_strdup (proc_name);
convert_string (dbbrowser->selected_scheme_proc_name);
g_free (dbbrowser->selected_proc_blurb);
g_free (dbbrowser->selected_proc_help);
g_free (dbbrowser->selected_proc_author);
g_free (dbbrowser->selected_proc_copyright);
g_free (dbbrowser->selected_proc_date);
g_free (dbbrowser->selected_params);
g_free (dbbrowser->selected_return_vals);
gimp_query_procedure (proc_name,
&(dbbrowser->selected_proc_blurb),
@ -262,154 +331,156 @@ dialog_select (dbbrowser_t *dbbrowser,
/* 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), 3);
gtk_table_set_col_spacings (GTK_TABLE (dbbrowser->descr_table), 4);
/* show the name */
label = gtk_label_new(_("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);
gtk_widget_show (label);
label = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(label),dbbrowser->selected_scheme_proc_name);
gtk_entry_set_editable(GTK_ENTRY(label), 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);
gtk_widget_show (label);
row++;
/* show the description */
label = gtk_label_new(_("Blurb :"));
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);
gtk_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_blurb);
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);
gtk_widget_show (label);
row++;
label = gtk_hseparator_new(); /* ok, not really a label ... :) */
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);
gtk_widget_show (label);
row++;
/* in parameters */
if (dbbrowser->selected_nparams)
{
label = gtk_label_new(_("In :"));
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);
gtk_widget_show(label);
for (i=0;i<(dbbrowser->selected_nparams);i++)
0, 1, row, row+(dbbrowser->selected_nparams),
GTK_FILL, GTK_FILL, 3, 0);
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nparams; i++)
{
/* name */
label = gtk_label_new((dbbrowser->selected_params[i]).name);
label = gtk_label_new ((dbbrowser->selected_params[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);
gtk_widget_show(label);
gtk_widget_show (label);
/* type */
label = gtk_label_new(GParamType2char((dbbrowser->selected_params[i]).type));
label = gtk_label_new (GParamType2char ((dbbrowser->selected_params[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);
gtk_widget_show(label);
gtk_widget_show (label);
/* description */
label = gtk_label_new((dbbrowser->selected_params[i]).description);
label = gtk_label_new ((dbbrowser->selected_params[i]).description);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
gtk_table_attach (GTK_TABLE (dbbrowser->descr_table), label,
3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show(label);
gtk_widget_show (label);
row++;
}
}
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++;
}
(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++;
}
/* out parameters */
if (dbbrowser->selected_nreturn_vals)
{
label = gtk_label_new("Out :");
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);
gtk_widget_show(label);
for (i=0;i<(dbbrowser->selected_nreturn_vals);i++)
gtk_widget_show (label);
for (i = 0; i < dbbrowser->selected_nreturn_vals; i++)
{
/* name */
label = gtk_label_new((dbbrowser->selected_return_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);
gtk_widget_show(label);
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);
gtk_widget_show(label);
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);
gtk_widget_show(label);
gtk_widget_show (label);
row++;
}
}
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 );
(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++;
}
/* show the help */
if ((dbbrowser->selected_proc_help) && (strlen(dbbrowser->selected_proc_help) > 1))
if ((dbbrowser->selected_proc_help) &&
(strlen (dbbrowser->selected_proc_help) > 1))
{
label = gtk_label_new(_("Help :"));
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);
gtk_widget_show (label);
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);
@ -420,7 +491,7 @@ dialog_select (dbbrowser_t *dbbrowser,
text = gtk_text_new (NULL, NULL);
gtk_text_set_editable (GTK_TEXT (text), FALSE);
gtk_text_set_word_wrap(GTK_TEXT(text), TRUE);
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,
@ -431,63 +502,63 @@ dialog_select (dbbrowser_t *dbbrowser,
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);
label = gtk_hseparator_new(); /* ok, not really a label ... :) */
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);
gtk_widget_show (label);
row++;
}
/* show the author & the copyright */
label = gtk_label_new(_("Author :"));
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);
gtk_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_author);
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);
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);
gtk_widget_show (label);
row++;
label = gtk_label_new(_("Copyright :"));
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_widget_show (label);
label = gtk_label_new(dbbrowser->selected_proc_copyright);
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);
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);
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++;
if (old_table)
gtk_widget_destroy(old_table);
gtk_widget_destroy (old_table);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (dbbrowser->descr_scroll),
dbbrowser->descr_table);
@ -501,35 +572,38 @@ dialog_select (dbbrowser_t *dbbrowser,
dbbrowser->selected_proc_help, -1);
gtk_text_thaw (GTK_TEXT (text));
}
gtk_widget_show(dbbrowser->descr_table);
gtk_widget_show (dbbrowser->descr_table);
}
/* end of the dialog */
static void
dialog_close_callback (GtkWidget *widget,
gpointer data)
/* end of the dialog */
{
dbbrowser_t* dbbrowser = data;
if (dbbrowser->apply_callback) {
/* we are called by another application : just kill the dialog box */
gtk_widget_hide(dbbrowser->dlg);
gtk_widget_destroy(dbbrowser->dlg);
} else {
/* we are in the plug_in : kill the gtk application */
gtk_widget_destroy(dbbrowser->dlg);
gtk_main_quit ();
}
if (dbbrowser->apply_callback)
{
/* we are called by another application : just kill the dialog box */
gtk_widget_hide (dbbrowser->dlg);
gtk_widget_destroy (dbbrowser->dlg);
}
else
{
/* we are in the plug_in : kill the gtk application */
gtk_widget_destroy (dbbrowser->dlg);
gtk_main_quit ();
}
}
/* end of the dialog */
static void
dialog_apply_callback (GtkWidget *widget,
gpointer data)
/* end of the dialog */
{
dbbrowser_t* dbbrowser = data;
(dbbrowser->apply_callback)( dbbrowser->selected_proc_name,
(dbbrowser->apply_callback) (dbbrowser->selected_proc_name,
dbbrowser->selected_scheme_proc_name,
dbbrowser->selected_proc_blurb,
dbbrowser->selected_proc_help,
@ -540,33 +614,33 @@ dialog_apply_callback (GtkWidget *widget,
dbbrowser->selected_nparams,
dbbrowser->selected_nreturn_vals,
dbbrowser->selected_params,
dbbrowser->selected_return_vals );
dbbrowser->selected_return_vals);
}
/* search in the whole db */
static void
dialog_search_callback (GtkWidget *widget,
gpointer data)
/* search in the whole db */
{
char **proc_list;
int num_procs;
int i, j;
gchar **proc_list;
gint num_procs;
gint i, j;
dbbrowser_t* dbbrowser = data;
gchar *func_name, *label, *query_text;
GString *query;
gtk_clist_freeze(GTK_CLIST(dbbrowser->clist));
gtk_clist_clear(GTK_CLIST(dbbrowser->clist));
gtk_clist_freeze (GTK_CLIST (dbbrowser->clist));
gtk_clist_clear (GTK_CLIST (dbbrowser->clist));
/* search */
if ( widget == (dbbrowser->name_button) )
if (widget == (dbbrowser->name_button))
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by name - please wait)"));
query = g_string_new ("");
query_text = gtk_entry_get_text(GTK_ENTRY(dbbrowser->search_entry));
query_text = gtk_entry_get_text (GTK_ENTRY (dbbrowser->search_entry));
while (*query_text)
{
@ -584,7 +658,7 @@ dialog_search_callback (GtkWidget *widget,
g_string_free (query, TRUE);
}
else if ( widget == (dbbrowser->blurb_button) )
else if (widget == (dbbrowser->blurb_button))
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (by blurb - please wait)"));
@ -593,34 +667,38 @@ dialog_search_callback (GtkWidget *widget,
".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
else {
else
{
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg),
_("DB Browser (please wait)"));
gimp_query_database (".*", ".*", ".*", ".*", ".*", ".*", ".*",
&num_procs, &proc_list);
}
}
for (i = 0; i < num_procs; i++) {
j = 0;
while((j < i) &&
(strcmp(gtk_clist_get_row_data(GTK_CLIST(dbbrowser->clist), j),
proc_list[i]) < 0))
j++;
for (i = 0; i < num_procs; i++)
{
j = 0;
while ((j < i) &&
(strcmp (gtk_clist_get_row_data (GTK_CLIST (dbbrowser->clist), j),
proc_list[i]) < 0))
j++;
label = g_strdup(proc_list[i]);
convert_string(label);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(dbbrowser->clist)), j,
&label);
func_name = g_strdup (proc_list[i]);
gtk_clist_set_row_data_full(GTK_CLIST(dbbrowser->clist), j,
func_name, g_free);
}
label = g_strdup (proc_list[i]);
convert_string (label);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(dbbrowser->clist)), j,
&label);
func_name = g_strdup (proc_list[i]);
if (num_procs > 0) {
dialog_select( dbbrowser,gtk_clist_get_row_data(GTK_CLIST(dbbrowser->clist), 0));
gtk_clist_select_row(GTK_CLIST(dbbrowser->clist), 0, 0);
}
gtk_clist_set_row_data_full (GTK_CLIST (dbbrowser->clist), j,
func_name, g_free);
}
if (num_procs > 0)
{
dialog_select (dbbrowser,
gtk_clist_get_row_data (GTK_CLIST (dbbrowser->clist), 0));
gtk_clist_select_row (GTK_CLIST (dbbrowser->clist), 0, 0);
}
/*
if (num_procs != 0) {
@ -651,21 +729,22 @@ dialog_search_callback (GtkWidget *widget,
}
*/
if ( dbbrowser->clist ) {
;
}
if (dbbrowser->clist)
{
;
}
g_free( proc_list );
g_free (proc_list);
gtk_window_set_title (GTK_WINDOW (dbbrowser->dlg), _("DB Browser"));
gtk_clist_thaw(GTK_CLIST(dbbrowser->clist));
gtk_clist_thaw (GTK_CLIST (dbbrowser->clist));
}
/* utils ... */
static void
convert_string (char *str)
convert_string (gchar *str)
{
while (*str)
{
@ -674,33 +753,34 @@ convert_string (char *str)
}
}
static char*
GParamType2char(GParamType t)
static gchar *
GParamType2char (GParamType t)
{
switch (t) {
case PARAM_INT32: return "INT32";
case PARAM_INT16: return "INT16";
case PARAM_INT8: return "INT8";
case PARAM_FLOAT: return "FLOAT";
case PARAM_STRING: return "STRING";
case PARAM_INT32ARRAY: return "INT32ARRAY";
case PARAM_INT16ARRAY: return "INT16ARRAY";
case PARAM_INT8ARRAY: return "INT8ARRAY";
case PARAM_FLOATARRAY: return "FLOATARRAY";
case PARAM_STRINGARRAY: return "STRINGARRAY";
case PARAM_COLOR: return "COLOR";
case PARAM_REGION: return "REGION";
case PARAM_DISPLAY: return "DISPLAY";
case PARAM_IMAGE: return "IMAGE";
case PARAM_LAYER: return "LAYER";
case PARAM_CHANNEL: return "CHANNEL";
case PARAM_DRAWABLE: return "DRAWABLE";
case PARAM_SELECTION: return "SELECTION";
case PARAM_BOUNDARY: return "BOUNDARY";
case PARAM_PATH: return "PATH";
case PARAM_PARASITE: return "PARASITE";
case PARAM_STATUS: return "STATUS";
case PARAM_END: return "END";
default: return "UNKNOWN?";
}
switch (t)
{
case PARAM_INT32: return "INT32";
case PARAM_INT16: return "INT16";
case PARAM_INT8: return "INT8";
case PARAM_FLOAT: return "FLOAT";
case PARAM_STRING: return "STRING";
case PARAM_INT32ARRAY: return "INT32ARRAY";
case PARAM_INT16ARRAY: return "INT16ARRAY";
case PARAM_INT8ARRAY: return "INT8ARRAY";
case PARAM_FLOATARRAY: return "FLOATARRAY";
case PARAM_STRINGARRAY: return "STRINGARRAY";
case PARAM_COLOR: return "COLOR";
case PARAM_REGION: return "REGION";
case PARAM_DISPLAY: return "DISPLAY";
case PARAM_IMAGE: return "IMAGE";
case PARAM_LAYER: return "LAYER";
case PARAM_CHANNEL: return "CHANNEL";
case PARAM_DRAWABLE: return "DRAWABLE";
case PARAM_SELECTION: return "SELECTION";
case PARAM_BOUNDARY: return "BOUNDARY";
case PARAM_PATH: return "PATH";
case PARAM_PARASITE: return "PARASITE";
case PARAM_STATUS: return "STATUS";
case PARAM_END: return "END";
default: return "UNKNOWN?";
}
}

File diff suppressed because it is too large Load Diff

View File

@ -16,68 +16,69 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
dbbrowser
0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
* dbbrowser
* 0.08 26th sept 97 by Thomas NOEL <thomas@minet.net>
*/
/*
This plugin gives you the list of available procedure, with the
name, description and parameters for each procedure.
You can do regexp search (by name and by description)
Useful for scripts development.
NOTE :
this is only a exercice for me (my first "plug-in" (extension))
so it's very (very) dirty.
Btw, hope it gives you some ideas about gimp possibilities.
The core of the plugin is not here. See dbbrowser_utils (shared
with script-fu-console).
TODO
- bug fixes... (my method : rewrite from scratch :)
*/
* This plugin gives you the list of available procedure, with the
* name, description and parameters for each procedure.
* You can do regexp search (by name and by description)
* Useful for scripts development.
*
* NOTE :
* this is only a exercice for me (my first "plug-in" (extension))
* so it's very (very) dirty.
* Btw, hope it gives you some ideas about gimp possibilities.
*
* The core of the plugin is not here. See dbbrowser_utils (shared
* with script-fu-console).
*
* TODO
* - bug fixes... (my method : rewrite from scratch :)
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include "dbbrowser.h"
#include <gtk/gtk.h>
#include <libgimp/gimp.h>
#include <libgimp/gimpui.h>
#include "dbbrowser_utils.h"
#include "libgimp/stdplugins-intl.h"
static void query (void);
static void run (char *name,
int nparams,
GParam *param,
int *nreturn_vals,
GParam **return_vals);
static void query (void);
static void run (gchar *name,
gint nparams,
GParam *param,
gint *nreturn_vals,
GParam **return_vals);
GPlugInInfo PLUG_IN_INFO =
{
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
run, /* run_proc */
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
run, /* run_proc */
};
MAIN ()
static void
query ()
query (void)
{
static GParamDef args[] =
{
{ PARAM_INT32, "run_mode", "Interactive, [non-interactive]" }
};
static int nargs = sizeof (args) / sizeof (args[0]);
INIT_I18N();
static gint nargs = sizeof (args) / sizeof (args[0]);
gimp_install_procedure ("extension_db_browser",
"List available procedures in the PDB",
@ -93,10 +94,10 @@ query ()
}
static void
run (char *name,
int nparams,
run (gchar *name,
gint nparams,
GParam *param,
int *nreturn_vals,
gint *nreturn_vals,
GParam **return_vals)
{
static GParam values[1];
@ -105,8 +106,8 @@ run (char *name,
run_mode = param[0].data.d_int32;
*nreturn_vals = 1;
*return_vals = values;
values[0].type = PARAM_STATUS;
*return_vals = values;
values[0].type = PARAM_STATUS;
values[0].data.d_status = STATUS_SUCCESS;
switch (run_mode)
@ -123,8 +124,8 @@ run (char *name,
argv[0] = g_strdup ("dbbrowser");
gtk_init (&argc, &argv);
gtk_rc_parse (gimp_gtkrc ());
gtk_quit_add_destroy (1, (GtkObject*) gimp_db_browser (NULL));
gtk_quit_add_destroy (1, (GtkObject *) gimp_db_browser (NULL));
gtk_main ();
gdk_flush ();
@ -136,22 +137,8 @@ run (char *name,
g_warning ("dbbrowser allows only interactive invocation");
values[0].data.d_status = STATUS_CALLING_ERROR;
break;
default:
break;
}
}

View File

@ -540,6 +540,7 @@ ps_print(int model, /* I - Model (Level 1 or 2) */
for (i = 0; i < num_commands; i ++)
{
fputs(commands[i].command, prn);
fputs("\n", prn);
free(commands[i].command);
}

View File

@ -130,8 +130,7 @@ static void file_cancel_callback (void);
static void preview_update (void);
static void preview_button_callback (GtkWidget *, GdkEventButton *);
static void preview_motion_callback (GtkWidget *, GdkEventMotion *);
static void top_callback (GtkWidget *);
static void left_callback (GtkWidget *);
static void position_callback (GtkWidget *);
/*
* Globals...
@ -256,6 +255,7 @@ GtkWidget *print_dialog, /* Print dialog window */
*output_cmd, /* Output command text entry */
*ppd_browser, /* File selection dialog for PPD files */
*file_browser, /* FSD for print files */
*recenter_button,
*left_entry,
*right_entry,
*top_entry,
@ -354,12 +354,10 @@ query(void)
};
static int nargs = sizeof(args) / sizeof(args[0]);
INIT_I18N();
gimp_install_procedure(
"file_print",
_("This plug-in prints images from The GIMP."),
_("Prints images to PostScript, PCL, or ESC/P2 printers."),
"This plug-in prints images from The GIMP.",
"Prints images to PostScript, PCL, or ESC/P2 printers.",
"Michael Sweet <mike@easysw.com> and Robert Krawitz <rlk@alum.mit.edu>",
"Copyright 1997-2000 by Michael Sweet and Robert Krawitz",
PLUG_IN_VERSION,
@ -834,19 +832,26 @@ do_print_dialog (void)
GDK_BUTTON_PRESS_MASK |
GDK_BUTTON_RELEASE_MASK);
table = gtk_table_new (2, 4, FALSE);
table = gtk_table_new (3, 4, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (table), 4);
gtk_table_set_row_spacings (GTK_TABLE (table), 4);
gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
gtk_widget_show (table);
recenter_button = button = gtk_button_new_with_label(_("Center Image"));
gtk_signal_connect(GTK_OBJECT(button), "clicked",
(GtkSignalFunc)position_callback, NULL);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
NULL, 0, 0,
button, 2, TRUE);
left_entry = entry = gtk_entry_new ();
sprintf (s, "%.3f", fabs (vars.left));
gtk_entry_set_text (GTK_ENTRY (entry), s);
gtk_signal_connect (GTK_OBJECT (entry), "activate",
(GtkSignalFunc)left_callback, NULL);
(GtkSignalFunc) position_callback, NULL);
gtk_widget_set_usize (entry, 60, 0);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
_("Left:"), 1.0, 0.5,
entry, 1, TRUE);
@ -854,27 +859,29 @@ do_print_dialog (void)
sprintf (s, "%.3f", fabs (vars.top));
gtk_entry_set_text (GTK_ENTRY (entry), s);
gtk_signal_connect (GTK_OBJECT (entry), "activate",
(GtkSignalFunc) top_callback, NULL);
(GtkSignalFunc) position_callback, NULL);
gtk_widget_set_usize (entry, 60, 0);
gimp_table_attach_aligned (GTK_TABLE (table), 2, 0,
gimp_table_attach_aligned (GTK_TABLE (table), 2, 1,
_("Top:"), 1.0, 0.5,
entry, 1, TRUE);
right_entry = entry = gtk_entry_new ();
sprintf (s, "%.3f", fabs (vars.left));
gtk_entry_set_text (GTK_ENTRY (entry), s);
gtk_entry_set_editable (GTK_ENTRY (entry), FALSE);
gtk_signal_connect (GTK_OBJECT (entry), "activate",
(GtkSignalFunc) position_callback, NULL);
gtk_widget_set_usize (entry, 60, 0);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
gimp_table_attach_aligned (GTK_TABLE (table), 0, 2,
_("Right:"), 1.0, 0.5,
entry, 1, TRUE);
bottom_entry = entry = gtk_entry_new ();
sprintf (s, "%.3f", fabs (vars.left));
gtk_entry_set_text (GTK_ENTRY (entry), s);
gtk_entry_set_editable (GTK_ENTRY (entry), FALSE);
gtk_signal_connect (GTK_OBJECT (entry), "activate",
(GtkSignalFunc) position_callback, NULL);
gtk_widget_set_usize (entry, 60, 0);
gimp_table_attach_aligned (GTK_TABLE (table), 2, 1,
gimp_table_attach_aligned (GTK_TABLE (table), 2, 2,
_("Bottom:"), 1.0, 0.5,
entry, 1, TRUE);
@ -1064,7 +1071,7 @@ do_print_dialog (void)
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
gtk_widget_show (button);
scaling_image = button = gtk_toggle_button_new_with_label (_("Set Image Scale"));
scaling_image = button = gtk_button_new_with_label (_("Set Image Scale"));
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) scaling_callback,
NULL);
@ -1549,7 +1556,6 @@ scaling_callback (GtkWidget *widget)
GTK_ADJUSTMENT (scaling_adjustment)->upper = 1201.0;
GTK_ADJUSTMENT (scaling_adjustment)->value = yres;
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (scaling_ppi), TRUE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (scaling_image), FALSE);
vars.scaling = 0.0;
plist[plist_current].v.scaling = vars.scaling;
}
@ -1559,31 +1565,53 @@ scaling_callback (GtkWidget *widget)
}
static void
top_callback(GtkWidget *widget)
position_callback (GtkWidget *widget)
{
gfloat new_value = atof(gtk_entry_get_text(GTK_ENTRY(widget)));
if (vars.top != new_value)
int dontcheck = 0;
if (widget == top_entry)
{
vars.top = new_value * 72;
if (vars.top < 0)
vars.top = 0;
plist[plist_current].v.top = vars.top;
preview_update();
gfloat new_value = atof(gtk_entry_get_text(GTK_ENTRY(widget)));
vars.top = (new_value + 1.0 / 144) * 72;
}
}
static void
left_callback(GtkWidget *widget)
{
gfloat new_value = atof(gtk_entry_get_text(GTK_ENTRY(widget)));
if (vars.left != new_value)
else if (widget == left_entry)
{
gfloat new_value = atof(gtk_entry_get_text(GTK_ENTRY(widget)));
vars.left = (new_value + 1.0 / 144) * 72;
}
else if (widget == bottom_entry)
{
gfloat new_value = atof(gtk_entry_get_text(GTK_ENTRY(widget)));
if (vars.scaling < 0)
vars.top =
(new_value + 1.0 / 144) * 72 - (image_height * -72.0 / vars.scaling);
else
vars.top = (new_value + 1.0 / 144) * 72 - print_height;
}
else if (widget == right_entry)
{
gfloat new_value = atof(gtk_entry_get_text(GTK_ENTRY(widget)));
if (vars.scaling < 0)
vars.left =
(new_value + 1.0 / 144) * 72 - (image_width * -72.0 / vars.scaling);
else
vars.left = (new_value + 1.0 / 144) * 72 - print_width;
}
else if (widget == recenter_button)
{
vars.left = -1;
vars.top = -1;
dontcheck = 1;
}
if (!dontcheck)
{
vars.left = new_value * 72;
if (vars.left < 0)
vars.left = 0;
plist[plist_current].v.left = vars.left;
preview_update();
if (vars.top < 0)
vars.top = 0;
}
plist[plist_current].v.left = vars.left;
plist[plist_current].v.top = vars.top;
preview_update();
}
/*
@ -2064,7 +2092,7 @@ ppd_browse_callback(void)
static void
ppd_ok_callback(void)
ppd_ok_callback (void)
{
gtk_widget_hide(ppd_browser);
gtk_entry_set_text(GTK_ENTRY(ppd_file),
@ -2073,7 +2101,7 @@ ppd_ok_callback(void)
static void
file_ok_callback(void)
file_ok_callback (void)
{
gtk_widget_hide(file_browser);
strcpy(vars.output_to,
@ -2095,7 +2123,7 @@ file_cancel_callback (void)
static void
preview_update(void)
preview_update (void)
{
int temp, /* Swapping variable */
orient, /* True orientation of page */
@ -2252,29 +2280,33 @@ preview_update(void)
plist[plist_current].v.top = vars.top;
}
sprintf(s, "%.3f", vars.top / 72.0);
sprintf(s, "%.2f", vars.top / 72.0);
gtk_signal_handler_block_by_data(GTK_OBJECT(top_entry), NULL);
gtk_entry_set_text(GTK_ENTRY(top_entry), s);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(top_entry), NULL);
sprintf(s, "%.3f", vars.left / 72.0);
sprintf(s, "%.2f", vars.left / 72.0);
gtk_signal_handler_block_by_data(GTK_OBJECT(left_entry), NULL);
gtk_entry_set_text(GTK_ENTRY(left_entry), s);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(left_entry), NULL);
if (vars.scaling < 0)
sprintf(s, "%.3f",
sprintf(s, "%.2f",
(vars.top + (image_height * -72.0 / vars.scaling)) / 72.0);
else
sprintf(s, "%.3f", (vars.top + print_height) / 72.0);
sprintf(s, "%.2f", (vars.top + print_height) / 72.0);
gtk_signal_handler_block_by_data(GTK_OBJECT(bottom_entry), NULL);
gtk_entry_set_text(GTK_ENTRY(bottom_entry), s);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(bottom_entry), NULL);
if (vars.scaling < 0)
sprintf(s, "%.3f",
sprintf(s, "%.2f",
(vars.left + (image_width * -72.0 / vars.scaling)) / 72.0);
else
sprintf(s, "%.3f", (vars.left + print_width) / 72.0);
sprintf(s, "%.2f", (vars.left + print_width) / 72.0);
gtk_signal_handler_block_by_data(GTK_OBJECT(right_entry), NULL);
gtk_entry_set_text(GTK_ENTRY(right_entry), s);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(right_entry), NULL);
gdk_draw_rectangle(preview->widget.window, gc, 1,
page_left + 10 * left / 72, page_top + 10 * top / 72,

View File

@ -40,7 +40,8 @@
#include "siod.h"
#include "script-fu-console.h"
#include <plug-ins/dbbrowser/dbbrowser.h>
#include <plug-ins/dbbrowser/dbbrowser_utils.h>
#ifdef G_OS_WIN32
#include <fcntl.h>

View File

@ -32,6 +32,7 @@
}G_STMT_END
#else
#define INIT_I18N() G_STMT_START{ \
bindtextdomain("gimp-libgimp", LOCALEDIR); \
bindtextdomain("gimp-script-fu", LOCALEDIR); \
textdomain("gimp-script-fu"); \
}G_STMT_END