Gimp/plug-ins/dbbrowser/dbbrowser.c
Tor Lillqvist 0457d6914a New file.
* plug-ins/makefile.msc: New file.

	* plug-ins/*/*.c (Well, not really all files, but many):
 	Portability fixes. Include config.h, and guard inclusion of POSIX
 	and Unix headers like <unistd.h>, <dirent.h> and
 	<sys/time.h>. Include <string.h> if functions from it are
 	used. Use g_ntohl() and g_htonl() insteead of ntohl() and htonl(),
 	thus no need to include <netinet/in.h>. Include <io.h> on Win32
 	when using open/read/write (which actually are defined as
 	_open/_read/_write by glib.h). Define S_* macros if necessary on
 	Win32. Define rint() and M_PI if necessary (these definitions
 	should be factored out somewhere, no sense repeating them in lots
 	of files). Open files in binary mode when needed.

	* plug-ins/FractalExplorer/FractalExplorer.c: Use
 	g_malloc()/g_free(). Use g_strdup_printf().

  	* plug-ins/dbbrowser/dbbrowser.c: No need to include <X11/Xlib.h>.

	* plug-ins/destripe/destripe.c: Guard use of SIGBUS.

	* plug-ins/{flame/flame,hrz/hrz,pnm/pnm}.c: No need to check for
 	NULL returns from g_malloc() and g_new() as they abort on failure.
	Use g_strdup_printf().

	* plug-ins/gz/gz.c: Win32 version of running the subprocess.

	* plug-ins/hrz/hrz.c: Win32 version. Use more generic tests for
 	non-Unix (OS/2 and Win32), for instance HAVE_MMAP.

	* plug-ins/script-fu/interp_slib.c: Win32 version of myruntime().

	* plug-ins/script-fu/interp_sliba.c: Handle \\ (escaped backslahsh).

	* plug-ins/script-fu/script-fu-console.c: Bypass on Win32.

	* plug-ins/script-fu/script-fu-scripts.c: Portability fixes. Use
 	g_strdup_printf() instead of separate malloc() and sprintf(). Use
 	g_strescape() for strings being passed to Scheme. Some Win32-only
 	stuff.
1999-05-29 01:28:24 +00:00

150 lines
3.4 KiB
C

/* 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
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 :)
*/
#include <stdlib.h>
#include <stdio.h>
#include "dbbrowser.h"
static void query (void);
static void run (char *name,
int nparams,
GParam *param,
int *nreturn_vals,
GParam **return_vals);
GPlugInInfo PLUG_IN_INFO =
{
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
run, /* run_proc */
};
MAIN ()
static void
query ()
{
static GParamDef args[] =
{
{ PARAM_INT32, "run_mode", "Interactive, [non-interactive]" }
};
static int nargs = sizeof (args) / sizeof (args[0]);
gimp_install_procedure ("extension_db_browser",
"list available procedures in the PDB",
"",
"Thomas Noel",
"Thomas Noel",
"23th june 1997",
"<Toolbox>/Xtns/DB Browser",
"",
PROC_EXTENSION,
nargs, 0,
args, NULL);
}
static void
run (char *name,
int nparams,
GParam *param,
int *nreturn_vals,
GParam **return_vals)
{
static GParam values[1];
GRunModeType run_mode;
run_mode = param[0].data.d_int32;
*nreturn_vals = 1;
*return_vals = values;
values[0].type = PARAM_STATUS;
values[0].data.d_status = STATUS_SUCCESS;
switch (run_mode)
{
case RUN_INTERACTIVE:
{
gchar **argv;
gint argc;
argc = 1;
argv = g_new (gchar *, 1);
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_main ();
gdk_flush ();
}
break;
case RUN_WITH_LAST_VALS:
case RUN_NONINTERACTIVE:
g_warning ("dbbrowser allows only interactive invocation");
values[0].data.d_status = STATUS_CALLING_ERROR;
break;
default:
break;
}
}