Michael Natterer <mitschel@cs.tu-berlin.de>

1999-06-28  Sven Neumann  <sven@gimp.org>
	    Michael Natterer  <mitschel@cs.tu-berlin.de>

	* app/plug_in.c: return a PDB_EXECUTION_ERROR if a procedure
	requested by a plugin doesn't exist.

	* plug-ins/helpbrowser/*: The GIMP Help Browser!
	Not yet built by default. You need GtkXmHTML to make it work.
	There is a Makefile.classic for testing it.

	* Makefile.am
	* configure.in
	* help/*: some sample help files. Subdirs are possible, too.
This commit is contained in:
Sven Neumann 1999-06-28 13:28:37 +00:00 committed by Michael Natterer
parent c2db5a7ebc
commit df1088074e
36 changed files with 1749 additions and 141 deletions

View File

@ -1,3 +1,17 @@
1999-06-28 Sven Neumann <sven@gimp.org>
Michael Natterer <mitschel@cs.tu-berlin.de>
* app/plug_in.c: return a PDB_EXECUTION_ERROR if a procedure
requested by a plugin doesn't exist.
* plug-ins/helpbrowser/*: The GIMP Help Browser!
Not yet built by default. You need GtkXmHTML to make it work.
There is a Makefile.classic for testing it.
* Makefile.am
* configure.in
* help/*: some sample help files. Subdirs are possible, too.
1999-06-28 Michael Natterer <mitschel@cs.tu-berlin.de>
* app/plug_in.c (plug_in_callback): removed the check for

View File

@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = tools po po-plug-ins intl libgimp app $(GIMP_PLUGINS) $(GIMP_MODULES) data tips $(GIMPDOCS)
SUBDIRS = tools po po-plug-ins intl libgimp app $(GIMP_PLUGINS) $(GIMP_MODULES) data tips help $(GIMPDOCS)
bin_SCRIPTS = gimptool

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -1531,15 +1531,19 @@ plug_in_handle_proc_run (GPProcRun *proc_run)
args = plug_in_params_to_args (proc_run->params, proc_run->nparams, FALSE);
proc_rec = procedural_db_lookup (proc_run->name);
if (!proc_rec)
if (proc_rec)
{
/* THIS IS PROBABLY NOT CORRECT -josh */
g_warning ("PDB lookup failed on %s", proc_run->name);
plug_in_args_destroy (args, proc_run->nparams, FALSE);
return;
return_vals = procedural_db_execute (proc_run->name, args);
}
else
{
/* if the name lookup failed, construct a
* dummy "executiuon error" return value --Michael
*/
return_vals = g_new (Argument, 1);
return_vals[0].arg_type = PDB_INT32;
return_vals[0].value.pdb_int = PDB_EXECUTION_ERROR;
}
return_vals = procedural_db_execute (proc_run->name, args);
if (return_vals)
{

View File

@ -674,6 +674,7 @@ intl/Makefile
tools/Makefile
tools/pdbgen/Makefile
libgimp/Makefile
help/Makefile
tips/Makefile],
[
chmod +x gimptool
@ -688,3 +689,5 @@ tips/Makefile],
esac
]
)

2
help/.cvsignore Normal file
View File

@ -0,0 +1,2 @@
Makefile.in
Makefile

18
help/Makefile.am Normal file
View File

@ -0,0 +1,18 @@
## Process this file with automake to produce Makefile.in
helpdatadir = $(gimpdatadir)/help
helpdata_DATA = \
welcome.html \
contents.html \
index.html \
wilber.png
EXTRA_DIST = $(helpdata_DATA)
.PHONY: files
files:
@files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \
echo $$p; \
done

13
help/contents.html Normal file
View File

@ -0,0 +1,13 @@
<html>
<head>
<title>GIMP Help Contents</title>
</head>
<body bgcolor="#ffffff">
<h1>Contents</h1>
<ol>
<li><a href="preface.html">Preface</a></li>
<li><a href="tools/index.html">Tools</a></li>
<li>...</li>
</ol>
</body>
</html>

57
help/index.html Normal file
View File

@ -0,0 +1,57 @@
<html>
<head>
<title>GIMP Help Index</title>
</head>
<body bgcolor="#ffffff">
<h1>GIMP Help Index</h1>
<p>
<a href="#A">A</a>
<a href="#B">B</a>
<a href="#C">C</a>
<a href="#D">D</a>
<a href="#E">E</a>
<a href="#F">F</a>
<a name="A">
<h2>A</h2>
<ul>
<li><a href="tools/airbrush.html">Airbrush</a></li>
<li><a href="layers/add_alpha.html">Alpha Channel</a></li>
</ul>
<a name="B">
<h2>B</h2>
<ul>
<li><a href="tools/bezier.html">Bezier Selections</a></li>
<li>...</li>
</ul>
<a name="C"
<h2>C</h2>
<ul>
<li>...</li>
</ul>
<a name="D"
<h2>D</h2>
<ul>
<li>...</li>
</ul>
<a name="E">
<h2>E</h2>
<ul>
<li>...</li>
</ul>
<a name="F">
<h2>F</h2>
<ul>
<li>...</li>
</ul>
</body>
</html>

19
help/welcome.html Normal file
View File

@ -0,0 +1,19 @@
<html>
<head>
<title>Welcome to the GIMP Help Browser</title>
</head>
<body bgcolor="#ffffff">
<center>
<h2>Welcome to the</h2>
<h1>GIMP Help Browser</h1>
<img src="wilber.png">
<p>
Brought to you by:
<p>
<table><tr>
<td width=50%><center>Sven Neumann<p><address>sven@gimp.org</address></center></td>
<td width=50%><center>Michael Natterer<p><address>mitschel@cs.tu-berlin.de</address></center></td>
</tr></table>
</center>
</body>
</html>

BIN
help/wilber.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1,7 @@
Makefile.in
Makefile
.deps
_libs
.libs
*.o
helpbrowser

View File

@ -0,0 +1,4 @@
all:
gcc `gtk-config --cflags` -g -Wall -ansi -c helpbrowser.c
gcc `gtk-config --cflags` -g -Wall -ansi -c queue.c
gcc -o helpbrowser helpbrowser.o queue.o `gtk-config --libs` `gimptool --libs` -lgtkxmhtml

View File

@ -0,0 +1,65 @@
/* XPM */
static char * back_xpm[] = {
"20 20 42 1",
" c None",
". c #000000",
"+ c #C6D7C3",
"@ c #E4EBE2",
"# c #FFFFFF",
"$ c #DFE8DD",
"% c #F3F7F3",
"& c #DCE6D9",
"* c #F2F6F1",
"= c #EFF3EE",
"- c #F1F5F0",
"; c #F4F7F4",
"> c #121B12",
", c #DEE7DC",
"' c #EEF3ED",
") c #EBF1EA",
"! c #B1C7AC",
"~ c #E9EFE8",
"{ c #D7E3D5",
"] c #243221",
"^ c #375930",
"/ c #548149",
"( c #729B68",
"_ c #80A776",
": c #7DA473",
"< c #81A877",
"[ c #83AA7A",
"} c #87AC7D",
"| c #67925C",
"1 c #516F4A",
"2 c #4E7C44",
"3 c #739C6A",
"4 c #84A979",
"5 c #81A878",
"6 c #709864",
"7 c #49763F",
"8 c #719A67",
"9 c #608C56",
"0 c #46703C",
"a c #6FA763",
"b c #5B8851",
"c c #36582E",
" ",
" ",
" ",
" .. ",
" ..+. ",
" ..@#+. ",
" ..$#%%+. ",
" ..&#*=-;+. ",
" .>,#'))===+. ",
" ..!#~{,@)===+] ",
" ..^/(_:<[}[}|. ",
" ..1234_5}[|. ",
" ..^26<_}|. ",
" ..728_9. ",
" ..0ab. ",
" ..c. ",
" .. ",
" ",
" ",
" "};

View File

@ -0,0 +1,72 @@
/* XPM */
static char * forward_xpm[] = {
"20 20 49 1",
" c None",
". c #000000",
"+ c #E1EADF",
"@ c #FFFFFF",
"# c #F0F4EF",
"$ c #D4E0D1",
"% c #F3F7F3",
"& c #EDF2EB",
"* c #CEDCCB",
"= c #F4F7F4",
"- c #F1F5F0",
"; c #EFF3EE",
"> c #EBF1EA",
", c #C9D8C5",
"' c #E5ECE3",
") c #CBDAC7",
"! c #181818",
"~ c #2B2B2B",
"{ c #E4EBE2",
"] c #DEE7DC",
"^ c #D7E3D5",
"/ c #EEF3ED",
"( c #B1C7AC",
"_ c #9DBB90",
": c #88AC80",
"< c #83AA7C",
"[ c #85A879",
"} c #7EA476",
"| c #84A778",
"1 c #759B6C",
"2 c #59814F",
"3 c #3A5934",
"4 c #9ABB8F",
"5 c #83AA7A",
"6 c #87AC7D",
"7 c #82A87B",
"8 c #86A97C",
"9 c #759C6D",
"0 c #537C49",
"a c #445840",
"b c #80A776",
"c c #749868",
"d c #4B7040",
"e c #90B387",
"f c #749A6B",
"g c #3B5E31",
"h c #5D8554",
"i c #37592F",
"j c #3F6534",
" ",
" ",
" ",
" .. ",
" .+.. ",
" .@#$.. ",
" .@%&#*.. ",
" .@=-;>-,.. ",
" .@;;;>>'#)!. ",
" ~@;;;>{]^]/(.. ",
" ._:<:<[}|123.. ",
" .4567|890a.. ",
" .46b[c0d.. ",
" .ebf0g.. ",
" .<hi.. ",
" .j.. ",
" .. ",
" ",
" ",
" "};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,183 @@
/* The GIMP -- an image manipulation program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help Browser
* Copyright (C) 1999 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitschel@cs.tu-berlin.de>
*
* Some code & ideas stolen from the GNOME help browser.
*
* 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.
*/
#include "queue.h"
struct _Queue
{
GList *queue;
GList *current;
};
typedef struct _QueueElement QueueElement;
struct _QueueElement
{
gchar *ref;
gint pos;
};
Queue *
queue_new (void)
{
Queue *h;
h = g_malloc (sizeof (Queue));
h->queue = NULL;
h->current = NULL;
return (h);
}
static void
queue_free_element (QueueElement *el,
gpointer foo)
{
g_free (el->ref);
g_free (el);
}
void
queue_free (Queue *h)
{
g_return_if_fail (h != NULL);
/* needs to free data in list as well! */
if (h->queue)
{
g_list_foreach (h->queue, (GFunc) queue_free_element, NULL);
g_list_free (h->queue);
}
g_free (h);
}
void
queue_move_prev (Queue *h)
{
if (!h || !h->queue || (h->current == g_list_first (h->queue)))
return;
h->current = g_list_previous (h->current);
}
void
queue_move_next (Queue *h)
{
if (!h || !h->queue || (h->current == g_list_last (h->queue)))
return;
h->current = g_list_next (h->current);
}
gchar *
queue_prev (Queue *h,
gint *pos)
{
GList *p;
if (!h || !h->queue || (h->current == g_list_first (h->queue)))
return NULL;
p = g_list_previous (h->current);
if (pos)
*pos = ((QueueElement *)p->data)->pos;
return ((QueueElement *)p->data)->ref;
}
gchar *
queue_next (Queue *h,
gint *pos)
{
GList *p;
if (!h || !h->queue || (h->current == g_list_last(h->queue)))
return NULL;
p = g_list_next (h->current);
if (pos)
*pos = ((QueueElement *)p->data)->pos;
return ((QueueElement *)p->data)->ref;
}
void
queue_mark_current (Queue *h,
gint pos)
{
if (h->current)
((QueueElement *)(h->current->data))->pos = pos;
}
void
queue_add (Queue *h,
gchar *ref,
gint pos)
{
GList *trash=NULL;
QueueElement *el;
g_return_if_fail (h != NULL);
g_return_if_fail (ref != NULL);
if (h->current)
{
trash = h->current->next;
h->current->next = NULL;
}
el = g_malloc (sizeof (*el));
el->pos = pos;
el->ref = g_strdup (ref);
h->queue = g_list_append (h->queue, el);
h->current = g_list_last (h->queue);
if (trash)
{
g_list_foreach (trash, (GFunc)queue_free_element, NULL);
g_list_free (trash);
}
}
gboolean
queue_isnext (Queue *h)
{
if (!h || !h->queue || (h->current == g_list_last (h->queue)))
return FALSE;
return (g_list_next(h->current) != NULL);
}
gboolean
queue_isprev (Queue *h)
{
if (!h || !h->queue || (h->current == g_list_first (h->queue)))
return FALSE;
return (g_list_previous (h->current) != NULL);
}

View File

@ -0,0 +1,43 @@
/* The GIMP -- an image manipulation program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help Browser
* Copyright (C) 1999 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitschel@cs.tu-berlin.de>
*
* Some code & ideas stolen from the GNOME help browser.
*
* 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.
*/
#ifndef _GIMP_HELP_QUEUE_H_
#define _GIMP_HELP_QUEUE_H_
#include <glib.h>
typedef struct _Queue Queue;
Queue * queue_new (void);
void queue_free (Queue *h);
gchar * queue_prev (Queue *h, gint *pos);
gchar * queue_next (Queue *h, gint *pos);
void queue_move_prev (Queue *h);
void queue_move_next (Queue *h);
void queue_add (Queue *h, gchar *ref, gint pos);
void queue_mark_current (Queue *h, gint pos);
gboolean queue_isnext (Queue *h);
gboolean queue_isprev (Queue *h);
#endif /* _GIMP_HELP_QUEUE_H_ */