mirror of https://github.com/GNOME/gimp.git
don't say "Now type 'make'" if configure failed.
2002-11-11 Manish Singh <yosh@gimp.org> * autogen.sh: don't say "Now type 'make'" if configure failed. * app/core/Makefile.am * app/core/core-types.h * app/core/gimpenvirontable.[ch]: Implemented GimpEnvironTable, keeps an envp array built from system environment and *.env files. * app/core/gimp.[ch]: keep a GimpEnvironTable around. * app/gimprc.c * app/config/gimpcoreconfig.[ch] * app/core/gimpcoreconfig.h * app/gui/preferences-dialog.c * app/gui/user-install-dialog.c: environ-path config stuff * themes/Default/images/preferences/Makefile.am * themes/Default/images/preferences/folder-environ.png: just copied folder.png here, need a better one. * app/plug-in/plug-in.c: quick hack to use the envp in the GimpEnvironTable. Only on unix now, should really port the code to use g_spawn_*. * data/misc/user_install * etc/gimprc.in: add environ-path stuff * data/environ/Makefile: creates system environ directory. * data/environ/default.env: sample env file info. * data/Makefile.am * configure.in: added data/environ dir * plug-ins/pygimp/Makefile.am: python module files get put in $(gimpplugindir)/python now, install pygimp.env to point to it. * plug-ins/pygimp/doc/Makefile.am: minor clean up.
This commit is contained in:
parent
a6f8c92f4c
commit
2eef2afbc1
ChangeLog
app
autogen.shconfigure.indata
etc
plug-ins/pygimp
themes/Default/images/preferences
40
ChangeLog
40
ChangeLog
|
@ -1,3 +1,43 @@
|
|||
2002-11-11 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* autogen.sh: don't say "Now type 'make'" if configure failed.
|
||||
|
||||
* app/core/Makefile.am
|
||||
* app/core/core-types.h
|
||||
* app/core/gimpenvirontable.[ch]: Implemented GimpEnvironTable,
|
||||
keeps an envp array built from system environment and *.env files.
|
||||
|
||||
* app/core/gimp.[ch]: keep a GimpEnvironTable around.
|
||||
|
||||
* app/gimprc.c
|
||||
* app/config/gimpcoreconfig.[ch]
|
||||
* app/core/gimpcoreconfig.h
|
||||
* app/gui/preferences-dialog.c
|
||||
* app/gui/user-install-dialog.c: environ-path config stuff
|
||||
|
||||
* themes/Default/images/preferences/Makefile.am
|
||||
* themes/Default/images/preferences/folder-environ.png: just copied
|
||||
folder.png here, need a better one.
|
||||
|
||||
* app/plug-in/plug-in.c: quick hack to use the envp in the
|
||||
GimpEnvironTable. Only on unix now, should really port the
|
||||
code to use g_spawn_*.
|
||||
|
||||
* data/misc/user_install
|
||||
* etc/gimprc.in: add environ-path stuff
|
||||
|
||||
* data/environ/Makefile: creates system environ directory.
|
||||
|
||||
* data/environ/default.env: sample env file info.
|
||||
|
||||
* data/Makefile.am
|
||||
* configure.in: added data/environ dir
|
||||
|
||||
* plug-ins/pygimp/Makefile.am: python module files get put in
|
||||
$(gimpplugindir)/python now, install pygimp.env to point to it.
|
||||
|
||||
* plug-ins/pygimp/doc/Makefile.am: minor clean up.
|
||||
|
||||
2002-11-09 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* plug-ins/common/png.c: allow setting compression level 0 from
|
||||
|
|
|
@ -50,6 +50,7 @@ enum
|
|||
PROP_PLUG_IN_PATH,
|
||||
PROP_TOOL_PLUG_IN_PATH,
|
||||
PROP_MODULE_PATH,
|
||||
PROP_ENVIRON_PATH,
|
||||
PROP_BRUSH_PATH,
|
||||
PROP_PATTERN_PATH,
|
||||
PROP_PALETTE_PATH,
|
||||
|
@ -133,6 +134,9 @@ gimp_core_config_class_init (GimpCoreConfigClass *klass)
|
|||
GIMP_CONFIG_INSTALL_PROP_PATH (object_class, PROP_MODULE_PATH,
|
||||
"module-path",
|
||||
gimp_config_build_plug_in_path ("modules"));
|
||||
GIMP_CONFIG_INSTALL_PROP_PATH (object_class, PROP_ENVIRON_PATH,
|
||||
"environ-path",
|
||||
gimp_config_build_plug_in_path ("environ"));
|
||||
GIMP_CONFIG_INSTALL_PROP_PATH (object_class, PROP_BRUSH_PATH,
|
||||
"brush-path",
|
||||
gimp_config_build_data_path ("brushes"));
|
||||
|
@ -220,6 +224,7 @@ gimp_core_config_finalize (GObject *object)
|
|||
g_free (core_config->plug_in_path);
|
||||
g_free (core_config->tool_plug_in_path);
|
||||
g_free (core_config->module_path);
|
||||
g_free (core_config->environ_path);
|
||||
g_free (core_config->brush_path);
|
||||
g_free (core_config->pattern_path);
|
||||
g_free (core_config->palette_path);
|
||||
|
@ -262,6 +267,10 @@ gimp_core_config_set_property (GObject *object,
|
|||
g_free (core_config->module_path);
|
||||
core_config->module_path = g_value_dup_string (value);
|
||||
break;
|
||||
case PROP_ENVIRON_PATH:
|
||||
g_free (core_config->environ_path);
|
||||
core_config->environ_path = g_value_dup_string (value);
|
||||
break;
|
||||
case PROP_BRUSH_PATH:
|
||||
g_free (core_config->brush_path);
|
||||
core_config->brush_path = g_value_dup_string (value);
|
||||
|
@ -376,6 +385,9 @@ gimp_core_config_get_property (GObject *object,
|
|||
case PROP_MODULE_PATH:
|
||||
g_value_set_string (value, core_config->module_path);
|
||||
break;
|
||||
case PROP_ENVIRON_PATH:
|
||||
g_value_set_string (value, core_config->environ_path);
|
||||
break;
|
||||
case PROP_BRUSH_PATH:
|
||||
g_value_set_string (value, core_config->brush_path);
|
||||
break;
|
||||
|
|
|
@ -45,6 +45,7 @@ struct _GimpCoreConfig
|
|||
gchar *plug_in_path;
|
||||
gchar *tool_plug_in_path;
|
||||
gchar *module_path;
|
||||
gchar *environ_path;
|
||||
gchar *brush_path;
|
||||
gchar *pattern_path;
|
||||
gchar *palette_path;
|
||||
|
|
|
@ -78,6 +78,8 @@ libappcore_a_sources = \
|
|||
gimpdrawable-transform-utils.h \
|
||||
gimpedit.c \
|
||||
gimpedit.h \
|
||||
gimpenvirontable.h \
|
||||
gimpenvirontable.c \
|
||||
gimpgradient.c \
|
||||
gimpgradient.h \
|
||||
gimpimage.c \
|
||||
|
|
|
@ -160,6 +160,8 @@ typedef struct _GimpImageMap GimpImageMap;
|
|||
|
||||
typedef struct _GimpText GimpText;
|
||||
|
||||
typedef struct _GimpEnvironTable GimpEnvironTable;
|
||||
|
||||
|
||||
/* undo objects */
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include "gimpcoreconfig.h"
|
||||
#include "gimpdatafactory.h"
|
||||
#include "gimpdocumentlist.h"
|
||||
#include "gimpenvirontable.h"
|
||||
#include "gimpgradient.h"
|
||||
#include "gimpimage.h"
|
||||
#include "gimpimage-new.h"
|
||||
|
@ -147,6 +148,8 @@ gimp_init (Gimp *gimp)
|
|||
paint_init (gimp);
|
||||
|
||||
gimp_modules_init (gimp);
|
||||
|
||||
gimp->environ_table = gimp_environ_table_new ();
|
||||
|
||||
gimp->images = gimp_list_new (GIMP_TYPE_IMAGE,
|
||||
GIMP_CONTAINER_POLICY_WEAK);
|
||||
|
@ -328,6 +331,12 @@ gimp_finalize (GObject *object)
|
|||
gimp->images = NULL;
|
||||
}
|
||||
|
||||
if (gimp->environ_table)
|
||||
{
|
||||
g_object_unref (gimp->environ_table);
|
||||
gimp->environ_table = NULL;
|
||||
}
|
||||
|
||||
if (gimp->module_db)
|
||||
gimp_modules_exit (gimp);
|
||||
|
||||
|
@ -522,6 +531,9 @@ gimp_initialize (Gimp *gimp,
|
|||
/* register all internal procedures */
|
||||
(* status_callback) (_("Procedural Database"), NULL, -1);
|
||||
internal_procs_init (gimp, status_callback);
|
||||
|
||||
(* status_callback) (_("Plug-In Environment"), "", -1);
|
||||
gimp_environ_table_load (gimp->environ_table, gimp->config->environ_path);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -76,6 +76,8 @@ struct _Gimp
|
|||
GimpModuleDB *module_db;
|
||||
gboolean write_modulerc;
|
||||
|
||||
GimpEnvironTable *environ_table;
|
||||
|
||||
GimpContainer *images;
|
||||
gint next_image_ID;
|
||||
guint32 next_guide_ID;
|
||||
|
|
|
@ -27,6 +27,7 @@ struct _GimpCoreConfig
|
|||
gchar *plug_in_path;
|
||||
gchar *tool_plug_in_path;
|
||||
gchar *module_path;
|
||||
gchar *environ_path;
|
||||
|
||||
gchar *brush_path;
|
||||
gchar *pattern_path;
|
||||
|
|
|
@ -0,0 +1,283 @@
|
|||
/* The GIMP -- an image manipulation program
|
||||
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
||||
*
|
||||
* gimpenvirontable.c
|
||||
* (C) 2002 Manish Singh <yosh@gimp.org>
|
||||
*
|
||||
* 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 "config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#include "libgimpbase/gimpbase.h"
|
||||
|
||||
#include "core-types.h"
|
||||
|
||||
#include "gimpenvirontable.h"
|
||||
|
||||
|
||||
/* FIXME: check how portable this is */
|
||||
extern char **environ;
|
||||
|
||||
|
||||
static void gimp_environ_table_class_init (GimpEnvironTableClass *class);
|
||||
static void gimp_environ_table_init (GimpEnvironTable *environ_table);
|
||||
|
||||
static void gimp_environ_table_finalize (GObject *object);
|
||||
|
||||
static void gimp_environ_table_load_env_file (GimpDatafileData *file_data);
|
||||
|
||||
static void gimp_environ_table_populate (GimpEnvironTable *environ_table);
|
||||
static void gimp_environ_table_populate_one (const gchar *name,
|
||||
const gchar *value,
|
||||
GPtrArray *env_array);
|
||||
|
||||
|
||||
static GObjectClass *parent_class = NULL;
|
||||
|
||||
|
||||
GType
|
||||
gimp_environ_table_get_type (void)
|
||||
{
|
||||
static GType environ_table_type = 0;
|
||||
|
||||
if (! environ_table_type)
|
||||
{
|
||||
static const GTypeInfo environ_table_info =
|
||||
{
|
||||
sizeof (GimpEnvironTableClass),
|
||||
NULL, /* base_init */
|
||||
NULL, /* base_finalize */
|
||||
(GClassInitFunc) gimp_environ_table_class_init,
|
||||
NULL, /* class_finalize */
|
||||
NULL, /* class_data */
|
||||
sizeof (GimpEnvironTable),
|
||||
0, /* n_preallocs */
|
||||
(GInstanceInitFunc) gimp_environ_table_init,
|
||||
};
|
||||
|
||||
environ_table_type = g_type_register_static (G_TYPE_OBJECT,
|
||||
"GimpEnvironTable",
|
||||
&environ_table_info, 0);
|
||||
}
|
||||
|
||||
return environ_table_type;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_environ_table_class_init (GimpEnvironTableClass *class)
|
||||
{
|
||||
GObjectClass *object_class;
|
||||
|
||||
object_class = G_OBJECT_CLASS (class);
|
||||
|
||||
parent_class = g_type_class_peek_parent (class);
|
||||
|
||||
object_class->finalize = gimp_environ_table_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_environ_table_init (GimpEnvironTable *env)
|
||||
{
|
||||
env->vars = NULL;
|
||||
env->envp = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_environ_table_finalize (GObject *object)
|
||||
{
|
||||
GimpEnvironTable *env;
|
||||
|
||||
env = GIMP_ENVIRON_TABLE (object);
|
||||
|
||||
gimp_environ_table_clear (env);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
GimpEnvironTable *
|
||||
gimp_environ_table_new (void)
|
||||
{
|
||||
return g_object_new (GIMP_TYPE_ENVIRON_TABLE, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_environ_table_load (GimpEnvironTable *environ_table,
|
||||
const gchar *env_path)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_ENVIRON_TABLE (environ_table));
|
||||
|
||||
gimp_environ_table_clear (environ_table);
|
||||
|
||||
environ_table->vars = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
g_free, g_free);
|
||||
|
||||
gimp_datafiles_read_directories (env_path,
|
||||
G_FILE_TEST_EXISTS,
|
||||
gimp_environ_table_load_env_file,
|
||||
environ_table);
|
||||
|
||||
gimp_environ_table_populate (environ_table);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_environ_table_clear (GimpEnvironTable *environ_table)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_ENVIRON_TABLE (environ_table));
|
||||
|
||||
if (environ_table->vars)
|
||||
{
|
||||
g_hash_table_destroy (environ_table->vars);
|
||||
environ_table->vars = NULL;
|
||||
}
|
||||
|
||||
if (environ_table->envp)
|
||||
{
|
||||
g_strfreev (environ_table->envp);
|
||||
environ_table->envp = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
gchar **
|
||||
gimp_environ_table_get_envp (GimpEnvironTable *environ_table)
|
||||
{
|
||||
g_return_val_if_fail (GIMP_IS_ENVIRON_TABLE (environ_table), NULL);
|
||||
|
||||
/* Hmm.. should we return a copy here in the future? Not thread safe atm,
|
||||
* but, the rest of it isn't either.
|
||||
*/
|
||||
|
||||
if (! environ_table->envp)
|
||||
{
|
||||
environ_table->envp = g_new (gchar *, 1);
|
||||
*(environ_table->envp) = NULL;
|
||||
}
|
||||
|
||||
return environ_table->envp;
|
||||
}
|
||||
|
||||
|
||||
/* private */
|
||||
|
||||
static void
|
||||
gimp_environ_table_load_env_file (GimpDatafileData *file_data)
|
||||
{
|
||||
GimpEnvironTable *environ_table;
|
||||
FILE *env;
|
||||
gchar buffer[4096];
|
||||
gsize len;
|
||||
gchar *name, *value, *p;
|
||||
|
||||
environ_table = GIMP_ENVIRON_TABLE (file_data->user_data);
|
||||
|
||||
env = fopen (file_data->filename, "r");
|
||||
if (! env)
|
||||
return;
|
||||
|
||||
while (fgets (buffer, sizeof (buffer), env))
|
||||
{
|
||||
/* Skip comments */
|
||||
if (buffer[0] == '#')
|
||||
continue;
|
||||
|
||||
len = strlen (buffer) - 1;
|
||||
|
||||
/* Skip too long lines */
|
||||
if (buffer[len] != '\n')
|
||||
continue;
|
||||
|
||||
buffer[len] = '\0';
|
||||
|
||||
p = strchr (buffer, '=');
|
||||
if (! p)
|
||||
continue;
|
||||
|
||||
*p = '\0';
|
||||
|
||||
name = buffer;
|
||||
value = p + 1;
|
||||
|
||||
if (! g_hash_table_lookup (environ_table->vars, name))
|
||||
g_hash_table_insert (environ_table->vars,
|
||||
g_strdup (name),
|
||||
g_strdup (value));
|
||||
}
|
||||
|
||||
fclose (env);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_environ_table_populate (GimpEnvironTable *environ_table)
|
||||
{
|
||||
gchar **var = environ;
|
||||
gchar *name, *p;
|
||||
GPtrArray *env_array;
|
||||
|
||||
env_array = g_ptr_array_new ();
|
||||
|
||||
while (*var)
|
||||
{
|
||||
p = strchr (*var, '=');
|
||||
|
||||
/* shouldn't happen... but just to be safe... */
|
||||
if (p)
|
||||
{
|
||||
name = g_strndup (*var, p - *var);
|
||||
|
||||
if (! g_hash_table_lookup (environ_table->vars, name))
|
||||
g_ptr_array_add (env_array, g_strdup (*var));
|
||||
|
||||
g_free (name);
|
||||
}
|
||||
|
||||
var++;
|
||||
}
|
||||
|
||||
g_hash_table_foreach (environ_table->vars,
|
||||
(GHFunc) gimp_environ_table_populate_one,
|
||||
env_array);
|
||||
|
||||
g_ptr_array_add (env_array, NULL);
|
||||
|
||||
environ_table->envp = (gchar **) g_ptr_array_free (env_array, FALSE);
|
||||
|
||||
#ifdef ENVP_DEBUG
|
||||
var = environ_table->envp;
|
||||
|
||||
g_print ("GimpEnvironTable:\n");
|
||||
while (*var)
|
||||
{
|
||||
g_print ("%s\n", *var);
|
||||
var++;
|
||||
}
|
||||
#endif /* ENVP_DEBUG */
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_environ_table_populate_one (const gchar *name,
|
||||
const gchar *value,
|
||||
GPtrArray *env_array)
|
||||
{
|
||||
gchar *var;
|
||||
|
||||
var = g_strconcat (name, "=", value, NULL);
|
||||
g_ptr_array_add (env_array, var);
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
/* The GIMP -- an image manipulation program
|
||||
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
||||
*
|
||||
* gimpenvirontable.h
|
||||
* (C) 2002 Manish Singh <yosh@gimp.org>
|
||||
*
|
||||
* 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_ENVIRON_TABLE_H__
|
||||
#define __GIMP_ENVIRON_TABLE_H__
|
||||
|
||||
|
||||
#define GIMP_TYPE_ENVIRON_TABLE (gimp_environ_table_get_type ())
|
||||
#define GIMP_ENVIRON_TABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_ENVIRON_TABLE, GimpEnvironTable))
|
||||
#define GIMP_ENVIRON_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_ENVIRON_TABLE, GimpEnvironTableClass))
|
||||
#define GIMP_IS_ENVIRON_TABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_ENVIRON_TABLE))
|
||||
#define GIMP_IS_ENVIRON_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_ENVIRON_TABLE))
|
||||
#define GIMP_ENVIRON_TABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_ENVIRON_TABLE, GimpEnvironTableClass))
|
||||
|
||||
|
||||
typedef struct _GimpEnvironTableClass GimpEnvironTableClass;
|
||||
|
||||
struct _GimpEnvironTable
|
||||
{
|
||||
GObject parent_instance;
|
||||
|
||||
GHashTable *vars;
|
||||
|
||||
gchar **envp;
|
||||
};
|
||||
|
||||
struct _GimpEnvironTableClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
};
|
||||
|
||||
|
||||
GType gimp_environ_table_get_type (void) G_GNUC_CONST;
|
||||
GimpEnvironTable * gimp_environ_table_new (void);
|
||||
|
||||
void gimp_environ_table_load (GimpEnvironTable *environ_table,
|
||||
const gchar *env_path);
|
||||
void gimp_environ_table_clear (GimpEnvironTable *environ_table);
|
||||
|
||||
gchar ** gimp_environ_table_get_envp (GimpEnvironTable *environ_table);
|
||||
|
||||
|
||||
#endif /* __GIMP_ENVIRON_TABLE_H__ */
|
|
@ -159,6 +159,7 @@ static gchar * old_swap_path;
|
|||
static gchar * old_plug_in_path;
|
||||
static gchar * old_tool_plug_in_path;
|
||||
static gchar * old_module_path;
|
||||
static gchar * old_environ_path;
|
||||
static gchar * old_brush_path;
|
||||
static gchar * old_pattern_path;
|
||||
static gchar * old_palette_path;
|
||||
|
@ -193,6 +194,7 @@ static gchar * edit_swap_path = NULL;
|
|||
static gchar * edit_plug_in_path = NULL;
|
||||
static gchar * edit_tool_plug_in_path = NULL;
|
||||
static gchar * edit_module_path = NULL;
|
||||
static gchar * edit_environ_path = NULL;
|
||||
static gchar * edit_brush_path = NULL;
|
||||
static gchar * edit_pattern_path = NULL;
|
||||
static gchar * edit_palette_path = NULL;
|
||||
|
@ -376,6 +378,7 @@ prefs_check_settings (Gimp *gimp)
|
|||
prefs_strcmp (old_plug_in_path, edit_plug_in_path) ||
|
||||
prefs_strcmp (old_tool_plug_in_path, edit_tool_plug_in_path) ||
|
||||
prefs_strcmp (old_module_path, edit_module_path) ||
|
||||
prefs_strcmp (old_environ_path, edit_environ_path) ||
|
||||
prefs_strcmp (old_brush_path, edit_brush_path) ||
|
||||
prefs_strcmp (old_pattern_path, edit_pattern_path) ||
|
||||
prefs_strcmp (old_palette_path, edit_palette_path) ||
|
||||
|
@ -511,6 +514,7 @@ prefs_save_callback (GtkWidget *widget,
|
|||
gchar *save_plug_in_path;
|
||||
gchar *save_tool_plug_in_path;
|
||||
gchar *save_module_path;
|
||||
gchar *save_environ_path;
|
||||
gchar *save_brush_path;
|
||||
gchar *save_pattern_path;
|
||||
gchar *save_palette_path;
|
||||
|
@ -563,6 +567,7 @@ prefs_save_callback (GtkWidget *widget,
|
|||
save_plug_in_path = gimp->config->plug_in_path;
|
||||
save_tool_plug_in_path = gimp->config->tool_plug_in_path;
|
||||
save_module_path = gimp->config->module_path;
|
||||
save_environ_path = gimp->config->environ_path;
|
||||
save_brush_path = gimp->config->brush_path;
|
||||
save_pattern_path = gimp->config->pattern_path;
|
||||
save_palette_path = gimp->config->palette_path;
|
||||
|
@ -813,6 +818,11 @@ prefs_save_callback (GtkWidget *widget,
|
|||
gimp->config->module_path = edit_module_path;
|
||||
update = g_list_append (update, "module-path");
|
||||
}
|
||||
if (prefs_strcmp (old_environ_path, edit_environ_path))
|
||||
{
|
||||
gimp->config->environ_path = edit_environ_path;
|
||||
update = g_list_append (update, "environ-path");
|
||||
}
|
||||
if (prefs_strcmp (old_brush_path, edit_brush_path))
|
||||
{
|
||||
gimp->config->brush_path = edit_brush_path;
|
||||
|
@ -868,6 +878,7 @@ prefs_save_callback (GtkWidget *widget,
|
|||
gimp->config->plug_in_path = save_plug_in_path;
|
||||
gimp->config->tool_plug_in_path = save_tool_plug_in_path;
|
||||
gimp->config->module_path = save_module_path;
|
||||
gimp->config->environ_path = save_environ_path;
|
||||
gimp->config->brush_path = save_brush_path;
|
||||
gimp->config->pattern_path = save_pattern_path;
|
||||
gimp->config->palette_path = save_palette_path;
|
||||
|
@ -981,6 +992,7 @@ prefs_cancel_callback (GtkWidget *widget,
|
|||
prefs_strset (&edit_plug_in_path, old_plug_in_path);
|
||||
prefs_strset (&edit_tool_plug_in_path, old_tool_plug_in_path);
|
||||
prefs_strset (&edit_module_path, old_module_path);
|
||||
prefs_strset (&edit_environ_path, old_environ_path);
|
||||
prefs_strset (&edit_brush_path, old_brush_path);
|
||||
prefs_strset (&edit_pattern_path, old_pattern_path);
|
||||
prefs_strset (&edit_palette_path, old_palette_path);
|
||||
|
@ -1648,6 +1660,7 @@ preferences_dialog_create (Gimp *gimp)
|
|||
edit_plug_in_path = prefs_strdup (gimp->config->plug_in_path);
|
||||
edit_tool_plug_in_path = prefs_strdup (gimp->config->tool_plug_in_path);
|
||||
edit_module_path = prefs_strdup (gimp->config->module_path);
|
||||
edit_environ_path = prefs_strdup (gimp->config->environ_path);
|
||||
edit_brush_path = prefs_strdup (gimp->config->brush_path);
|
||||
edit_pattern_path = prefs_strdup (gimp->config->pattern_path);
|
||||
edit_palette_path = prefs_strdup (gimp->config->palette_path);
|
||||
|
@ -1721,6 +1734,7 @@ preferences_dialog_create (Gimp *gimp)
|
|||
prefs_strset (&old_plug_in_path, edit_plug_in_path);
|
||||
prefs_strset (&old_tool_plug_in_path, edit_tool_plug_in_path);
|
||||
prefs_strset (&old_module_path, edit_module_path);
|
||||
prefs_strset (&old_environ_path, edit_environ_path);
|
||||
prefs_strset (&old_brush_path, edit_brush_path);
|
||||
prefs_strset (&old_pattern_path, edit_pattern_path);
|
||||
prefs_strset (&old_palette_path, edit_palette_path);
|
||||
|
@ -2796,6 +2810,10 @@ preferences_dialog_create (Gimp *gimp)
|
|||
"dialogs/preferences/folders.html#modules",
|
||||
N_("Select Module Folders"),
|
||||
&edit_module_path },
|
||||
{ N_("Environment"), N_("Environment Folders"), "folders-environ.png",
|
||||
"dialogs/preferences/folders.html#environ",
|
||||
N_("Select Environment Folders"),
|
||||
&edit_environ_path },
|
||||
{ N_("Themes"), N_("Theme Folders"), "folders-themes.png",
|
||||
"dialogs/preferences/folders.html#themes",
|
||||
N_("Select Theme Folders"),
|
||||
|
|
|
@ -216,6 +216,15 @@ tree_items[] =
|
|||
"GIMP module folder when searching for modules to load\n"
|
||||
"during initialization.")
|
||||
},
|
||||
{
|
||||
TRUE, "environ",
|
||||
N_("This folder is used to store user created, temporary,\n"
|
||||
"or otherwise non-system-supported additions to the\n"
|
||||
"plug-in environment. The GIMP checks this folder in\n"
|
||||
"addition to the system-wide GIMP environment folder\n"
|
||||
"when searching for plug-in environment modification\n"
|
||||
"files.")
|
||||
},
|
||||
{
|
||||
TRUE, "scripts",
|
||||
N_("This folder is used to store user created and installed\n"
|
||||
|
|
|
@ -324,7 +324,8 @@ gimprc_init (Gimp *gimp)
|
|||
{ "pluginrc-path", TT_PATH, NULL, NULL },
|
||||
{ "module-load-inhibit", TT_PATH, NULL, NULL },
|
||||
{ "thumbnail-size", TT_XTHUMBSIZE,NULL, NULL },
|
||||
{ "tool-plug-in-path", TT_PATH, NULL, NULL }
|
||||
{ "tool-plug-in-path", TT_PATH, NULL, NULL },
|
||||
{ "environ-path", TT_PATH, NULL, NULL }
|
||||
};
|
||||
|
||||
/* this hurts badly */
|
||||
|
@ -358,6 +359,7 @@ gimprc_init (Gimp *gimp)
|
|||
core_funcs[20].val1p = &gimp->config->module_db_load_inhibit;
|
||||
core_funcs[21].val1p = &gimp->config->thumbnail_size;
|
||||
core_funcs[22].val1p = &gimp->config->tool_plug_in_path;
|
||||
core_funcs[23].val1p = &gimp->config->environ_path;
|
||||
|
||||
parse_func_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
|
||||
|
|
|
@ -159,6 +159,7 @@ static gchar * old_swap_path;
|
|||
static gchar * old_plug_in_path;
|
||||
static gchar * old_tool_plug_in_path;
|
||||
static gchar * old_module_path;
|
||||
static gchar * old_environ_path;
|
||||
static gchar * old_brush_path;
|
||||
static gchar * old_pattern_path;
|
||||
static gchar * old_palette_path;
|
||||
|
@ -193,6 +194,7 @@ static gchar * edit_swap_path = NULL;
|
|||
static gchar * edit_plug_in_path = NULL;
|
||||
static gchar * edit_tool_plug_in_path = NULL;
|
||||
static gchar * edit_module_path = NULL;
|
||||
static gchar * edit_environ_path = NULL;
|
||||
static gchar * edit_brush_path = NULL;
|
||||
static gchar * edit_pattern_path = NULL;
|
||||
static gchar * edit_palette_path = NULL;
|
||||
|
@ -376,6 +378,7 @@ prefs_check_settings (Gimp *gimp)
|
|||
prefs_strcmp (old_plug_in_path, edit_plug_in_path) ||
|
||||
prefs_strcmp (old_tool_plug_in_path, edit_tool_plug_in_path) ||
|
||||
prefs_strcmp (old_module_path, edit_module_path) ||
|
||||
prefs_strcmp (old_environ_path, edit_environ_path) ||
|
||||
prefs_strcmp (old_brush_path, edit_brush_path) ||
|
||||
prefs_strcmp (old_pattern_path, edit_pattern_path) ||
|
||||
prefs_strcmp (old_palette_path, edit_palette_path) ||
|
||||
|
@ -511,6 +514,7 @@ prefs_save_callback (GtkWidget *widget,
|
|||
gchar *save_plug_in_path;
|
||||
gchar *save_tool_plug_in_path;
|
||||
gchar *save_module_path;
|
||||
gchar *save_environ_path;
|
||||
gchar *save_brush_path;
|
||||
gchar *save_pattern_path;
|
||||
gchar *save_palette_path;
|
||||
|
@ -563,6 +567,7 @@ prefs_save_callback (GtkWidget *widget,
|
|||
save_plug_in_path = gimp->config->plug_in_path;
|
||||
save_tool_plug_in_path = gimp->config->tool_plug_in_path;
|
||||
save_module_path = gimp->config->module_path;
|
||||
save_environ_path = gimp->config->environ_path;
|
||||
save_brush_path = gimp->config->brush_path;
|
||||
save_pattern_path = gimp->config->pattern_path;
|
||||
save_palette_path = gimp->config->palette_path;
|
||||
|
@ -813,6 +818,11 @@ prefs_save_callback (GtkWidget *widget,
|
|||
gimp->config->module_path = edit_module_path;
|
||||
update = g_list_append (update, "module-path");
|
||||
}
|
||||
if (prefs_strcmp (old_environ_path, edit_environ_path))
|
||||
{
|
||||
gimp->config->environ_path = edit_environ_path;
|
||||
update = g_list_append (update, "environ-path");
|
||||
}
|
||||
if (prefs_strcmp (old_brush_path, edit_brush_path))
|
||||
{
|
||||
gimp->config->brush_path = edit_brush_path;
|
||||
|
@ -868,6 +878,7 @@ prefs_save_callback (GtkWidget *widget,
|
|||
gimp->config->plug_in_path = save_plug_in_path;
|
||||
gimp->config->tool_plug_in_path = save_tool_plug_in_path;
|
||||
gimp->config->module_path = save_module_path;
|
||||
gimp->config->environ_path = save_environ_path;
|
||||
gimp->config->brush_path = save_brush_path;
|
||||
gimp->config->pattern_path = save_pattern_path;
|
||||
gimp->config->palette_path = save_palette_path;
|
||||
|
@ -981,6 +992,7 @@ prefs_cancel_callback (GtkWidget *widget,
|
|||
prefs_strset (&edit_plug_in_path, old_plug_in_path);
|
||||
prefs_strset (&edit_tool_plug_in_path, old_tool_plug_in_path);
|
||||
prefs_strset (&edit_module_path, old_module_path);
|
||||
prefs_strset (&edit_environ_path, old_environ_path);
|
||||
prefs_strset (&edit_brush_path, old_brush_path);
|
||||
prefs_strset (&edit_pattern_path, old_pattern_path);
|
||||
prefs_strset (&edit_palette_path, old_palette_path);
|
||||
|
@ -1648,6 +1660,7 @@ preferences_dialog_create (Gimp *gimp)
|
|||
edit_plug_in_path = prefs_strdup (gimp->config->plug_in_path);
|
||||
edit_tool_plug_in_path = prefs_strdup (gimp->config->tool_plug_in_path);
|
||||
edit_module_path = prefs_strdup (gimp->config->module_path);
|
||||
edit_environ_path = prefs_strdup (gimp->config->environ_path);
|
||||
edit_brush_path = prefs_strdup (gimp->config->brush_path);
|
||||
edit_pattern_path = prefs_strdup (gimp->config->pattern_path);
|
||||
edit_palette_path = prefs_strdup (gimp->config->palette_path);
|
||||
|
@ -1721,6 +1734,7 @@ preferences_dialog_create (Gimp *gimp)
|
|||
prefs_strset (&old_plug_in_path, edit_plug_in_path);
|
||||
prefs_strset (&old_tool_plug_in_path, edit_tool_plug_in_path);
|
||||
prefs_strset (&old_module_path, edit_module_path);
|
||||
prefs_strset (&old_environ_path, edit_environ_path);
|
||||
prefs_strset (&old_brush_path, edit_brush_path);
|
||||
prefs_strset (&old_pattern_path, edit_pattern_path);
|
||||
prefs_strset (&old_palette_path, edit_palette_path);
|
||||
|
@ -2796,6 +2810,10 @@ preferences_dialog_create (Gimp *gimp)
|
|||
"dialogs/preferences/folders.html#modules",
|
||||
N_("Select Module Folders"),
|
||||
&edit_module_path },
|
||||
{ N_("Environment"), N_("Environment Folders"), "folders-environ.png",
|
||||
"dialogs/preferences/folders.html#environ",
|
||||
N_("Select Environment Folders"),
|
||||
&edit_environ_path },
|
||||
{ N_("Themes"), N_("Theme Folders"), "folders-themes.png",
|
||||
"dialogs/preferences/folders.html#themes",
|
||||
N_("Select Theme Folders"),
|
||||
|
|
|
@ -216,6 +216,15 @@ tree_items[] =
|
|||
"GIMP module folder when searching for modules to load\n"
|
||||
"during initialization.")
|
||||
},
|
||||
{
|
||||
TRUE, "environ",
|
||||
N_("This folder is used to store user created, temporary,\n"
|
||||
"or otherwise non-system-supported additions to the\n"
|
||||
"plug-in environment. The GIMP checks this folder in\n"
|
||||
"addition to the system-wide GIMP environment folder\n"
|
||||
"when searching for plug-in environment modification\n"
|
||||
"files.")
|
||||
},
|
||||
{
|
||||
TRUE, "scripts",
|
||||
N_("This folder is used to store user created and installed\n"
|
||||
|
|
|
@ -0,0 +1,283 @@
|
|||
/* The GIMP -- an image manipulation program
|
||||
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
||||
*
|
||||
* gimpenvirontable.c
|
||||
* (C) 2002 Manish Singh <yosh@gimp.org>
|
||||
*
|
||||
* 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 "config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#include "libgimpbase/gimpbase.h"
|
||||
|
||||
#include "core-types.h"
|
||||
|
||||
#include "gimpenvirontable.h"
|
||||
|
||||
|
||||
/* FIXME: check how portable this is */
|
||||
extern char **environ;
|
||||
|
||||
|
||||
static void gimp_environ_table_class_init (GimpEnvironTableClass *class);
|
||||
static void gimp_environ_table_init (GimpEnvironTable *environ_table);
|
||||
|
||||
static void gimp_environ_table_finalize (GObject *object);
|
||||
|
||||
static void gimp_environ_table_load_env_file (GimpDatafileData *file_data);
|
||||
|
||||
static void gimp_environ_table_populate (GimpEnvironTable *environ_table);
|
||||
static void gimp_environ_table_populate_one (const gchar *name,
|
||||
const gchar *value,
|
||||
GPtrArray *env_array);
|
||||
|
||||
|
||||
static GObjectClass *parent_class = NULL;
|
||||
|
||||
|
||||
GType
|
||||
gimp_environ_table_get_type (void)
|
||||
{
|
||||
static GType environ_table_type = 0;
|
||||
|
||||
if (! environ_table_type)
|
||||
{
|
||||
static const GTypeInfo environ_table_info =
|
||||
{
|
||||
sizeof (GimpEnvironTableClass),
|
||||
NULL, /* base_init */
|
||||
NULL, /* base_finalize */
|
||||
(GClassInitFunc) gimp_environ_table_class_init,
|
||||
NULL, /* class_finalize */
|
||||
NULL, /* class_data */
|
||||
sizeof (GimpEnvironTable),
|
||||
0, /* n_preallocs */
|
||||
(GInstanceInitFunc) gimp_environ_table_init,
|
||||
};
|
||||
|
||||
environ_table_type = g_type_register_static (G_TYPE_OBJECT,
|
||||
"GimpEnvironTable",
|
||||
&environ_table_info, 0);
|
||||
}
|
||||
|
||||
return environ_table_type;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_environ_table_class_init (GimpEnvironTableClass *class)
|
||||
{
|
||||
GObjectClass *object_class;
|
||||
|
||||
object_class = G_OBJECT_CLASS (class);
|
||||
|
||||
parent_class = g_type_class_peek_parent (class);
|
||||
|
||||
object_class->finalize = gimp_environ_table_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_environ_table_init (GimpEnvironTable *env)
|
||||
{
|
||||
env->vars = NULL;
|
||||
env->envp = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_environ_table_finalize (GObject *object)
|
||||
{
|
||||
GimpEnvironTable *env;
|
||||
|
||||
env = GIMP_ENVIRON_TABLE (object);
|
||||
|
||||
gimp_environ_table_clear (env);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
GimpEnvironTable *
|
||||
gimp_environ_table_new (void)
|
||||
{
|
||||
return g_object_new (GIMP_TYPE_ENVIRON_TABLE, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_environ_table_load (GimpEnvironTable *environ_table,
|
||||
const gchar *env_path)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_ENVIRON_TABLE (environ_table));
|
||||
|
||||
gimp_environ_table_clear (environ_table);
|
||||
|
||||
environ_table->vars = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
g_free, g_free);
|
||||
|
||||
gimp_datafiles_read_directories (env_path,
|
||||
G_FILE_TEST_EXISTS,
|
||||
gimp_environ_table_load_env_file,
|
||||
environ_table);
|
||||
|
||||
gimp_environ_table_populate (environ_table);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_environ_table_clear (GimpEnvironTable *environ_table)
|
||||
{
|
||||
g_return_if_fail (GIMP_IS_ENVIRON_TABLE (environ_table));
|
||||
|
||||
if (environ_table->vars)
|
||||
{
|
||||
g_hash_table_destroy (environ_table->vars);
|
||||
environ_table->vars = NULL;
|
||||
}
|
||||
|
||||
if (environ_table->envp)
|
||||
{
|
||||
g_strfreev (environ_table->envp);
|
||||
environ_table->envp = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
gchar **
|
||||
gimp_environ_table_get_envp (GimpEnvironTable *environ_table)
|
||||
{
|
||||
g_return_val_if_fail (GIMP_IS_ENVIRON_TABLE (environ_table), NULL);
|
||||
|
||||
/* Hmm.. should we return a copy here in the future? Not thread safe atm,
|
||||
* but, the rest of it isn't either.
|
||||
*/
|
||||
|
||||
if (! environ_table->envp)
|
||||
{
|
||||
environ_table->envp = g_new (gchar *, 1);
|
||||
*(environ_table->envp) = NULL;
|
||||
}
|
||||
|
||||
return environ_table->envp;
|
||||
}
|
||||
|
||||
|
||||
/* private */
|
||||
|
||||
static void
|
||||
gimp_environ_table_load_env_file (GimpDatafileData *file_data)
|
||||
{
|
||||
GimpEnvironTable *environ_table;
|
||||
FILE *env;
|
||||
gchar buffer[4096];
|
||||
gsize len;
|
||||
gchar *name, *value, *p;
|
||||
|
||||
environ_table = GIMP_ENVIRON_TABLE (file_data->user_data);
|
||||
|
||||
env = fopen (file_data->filename, "r");
|
||||
if (! env)
|
||||
return;
|
||||
|
||||
while (fgets (buffer, sizeof (buffer), env))
|
||||
{
|
||||
/* Skip comments */
|
||||
if (buffer[0] == '#')
|
||||
continue;
|
||||
|
||||
len = strlen (buffer) - 1;
|
||||
|
||||
/* Skip too long lines */
|
||||
if (buffer[len] != '\n')
|
||||
continue;
|
||||
|
||||
buffer[len] = '\0';
|
||||
|
||||
p = strchr (buffer, '=');
|
||||
if (! p)
|
||||
continue;
|
||||
|
||||
*p = '\0';
|
||||
|
||||
name = buffer;
|
||||
value = p + 1;
|
||||
|
||||
if (! g_hash_table_lookup (environ_table->vars, name))
|
||||
g_hash_table_insert (environ_table->vars,
|
||||
g_strdup (name),
|
||||
g_strdup (value));
|
||||
}
|
||||
|
||||
fclose (env);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_environ_table_populate (GimpEnvironTable *environ_table)
|
||||
{
|
||||
gchar **var = environ;
|
||||
gchar *name, *p;
|
||||
GPtrArray *env_array;
|
||||
|
||||
env_array = g_ptr_array_new ();
|
||||
|
||||
while (*var)
|
||||
{
|
||||
p = strchr (*var, '=');
|
||||
|
||||
/* shouldn't happen... but just to be safe... */
|
||||
if (p)
|
||||
{
|
||||
name = g_strndup (*var, p - *var);
|
||||
|
||||
if (! g_hash_table_lookup (environ_table->vars, name))
|
||||
g_ptr_array_add (env_array, g_strdup (*var));
|
||||
|
||||
g_free (name);
|
||||
}
|
||||
|
||||
var++;
|
||||
}
|
||||
|
||||
g_hash_table_foreach (environ_table->vars,
|
||||
(GHFunc) gimp_environ_table_populate_one,
|
||||
env_array);
|
||||
|
||||
g_ptr_array_add (env_array, NULL);
|
||||
|
||||
environ_table->envp = (gchar **) g_ptr_array_free (env_array, FALSE);
|
||||
|
||||
#ifdef ENVP_DEBUG
|
||||
var = environ_table->envp;
|
||||
|
||||
g_print ("GimpEnvironTable:\n");
|
||||
while (*var)
|
||||
{
|
||||
g_print ("%s\n", *var);
|
||||
var++;
|
||||
}
|
||||
#endif /* ENVP_DEBUG */
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_environ_table_populate_one (const gchar *name,
|
||||
const gchar *value,
|
||||
GPtrArray *env_array)
|
||||
{
|
||||
gchar *var;
|
||||
|
||||
var = g_strconcat (name, "=", value, NULL);
|
||||
g_ptr_array_add (env_array, var);
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
/* The GIMP -- an image manipulation program
|
||||
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
||||
*
|
||||
* gimpenvirontable.h
|
||||
* (C) 2002 Manish Singh <yosh@gimp.org>
|
||||
*
|
||||
* 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_ENVIRON_TABLE_H__
|
||||
#define __GIMP_ENVIRON_TABLE_H__
|
||||
|
||||
|
||||
#define GIMP_TYPE_ENVIRON_TABLE (gimp_environ_table_get_type ())
|
||||
#define GIMP_ENVIRON_TABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_ENVIRON_TABLE, GimpEnvironTable))
|
||||
#define GIMP_ENVIRON_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_ENVIRON_TABLE, GimpEnvironTableClass))
|
||||
#define GIMP_IS_ENVIRON_TABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_ENVIRON_TABLE))
|
||||
#define GIMP_IS_ENVIRON_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_ENVIRON_TABLE))
|
||||
#define GIMP_ENVIRON_TABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_ENVIRON_TABLE, GimpEnvironTableClass))
|
||||
|
||||
|
||||
typedef struct _GimpEnvironTableClass GimpEnvironTableClass;
|
||||
|
||||
struct _GimpEnvironTable
|
||||
{
|
||||
GObject parent_instance;
|
||||
|
||||
GHashTable *vars;
|
||||
|
||||
gchar **envp;
|
||||
};
|
||||
|
||||
struct _GimpEnvironTableClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
};
|
||||
|
||||
|
||||
GType gimp_environ_table_get_type (void) G_GNUC_CONST;
|
||||
GimpEnvironTable * gimp_environ_table_new (void);
|
||||
|
||||
void gimp_environ_table_load (GimpEnvironTable *environ_table,
|
||||
const gchar *env_path);
|
||||
void gimp_environ_table_clear (GimpEnvironTable *environ_table);
|
||||
|
||||
gchar ** gimp_environ_table_get_envp (GimpEnvironTable *environ_table);
|
||||
|
||||
|
||||
#endif /* __GIMP_ENVIRON_TABLE_H__ */
|
|
@ -87,6 +87,7 @@
|
|||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpcoreconfig.h"
|
||||
#include "core/gimpdrawable.h"
|
||||
#include "core/gimpenvirontable.h"
|
||||
#include "core/gimpimage.h"
|
||||
|
||||
#include "gui/plug-in-menus.h"
|
||||
|
@ -620,7 +621,8 @@ plug_in_open (PlugIn *plug_in)
|
|||
* be reached, unless some strange error condition
|
||||
* exists.
|
||||
*/
|
||||
execvp (plug_in->args[0], plug_in->args);
|
||||
execve (plug_in->args[0], plug_in->args,
|
||||
gimp_environ_table_get_envp (plug_in->gimp->environ_table));
|
||||
_exit (1);
|
||||
}
|
||||
else if (plug_in->pid == -1)
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpcoreconfig.h"
|
||||
#include "core/gimpdrawable.h"
|
||||
#include "core/gimpenvirontable.h"
|
||||
#include "core/gimpimage.h"
|
||||
|
||||
#include "gui/plug-in-menus.h"
|
||||
|
@ -620,7 +621,8 @@ plug_in_open (PlugIn *plug_in)
|
|||
* be reached, unless some strange error condition
|
||||
* exists.
|
||||
*/
|
||||
execvp (plug_in->args[0], plug_in->args);
|
||||
execve (plug_in->args[0], plug_in->args,
|
||||
gimp_environ_table_get_envp (plug_in->gimp->environ_table));
|
||||
_exit (1);
|
||||
}
|
||||
else if (plug_in->pid == -1)
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpcoreconfig.h"
|
||||
#include "core/gimpdrawable.h"
|
||||
#include "core/gimpenvirontable.h"
|
||||
#include "core/gimpimage.h"
|
||||
|
||||
#include "gui/plug-in-menus.h"
|
||||
|
@ -620,7 +621,8 @@ plug_in_open (PlugIn *plug_in)
|
|||
* be reached, unless some strange error condition
|
||||
* exists.
|
||||
*/
|
||||
execvp (plug_in->args[0], plug_in->args);
|
||||
execve (plug_in->args[0], plug_in->args,
|
||||
gimp_environ_table_get_envp (plug_in->gimp->environ_table));
|
||||
_exit (1);
|
||||
}
|
||||
else if (plug_in->pid == -1)
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpcoreconfig.h"
|
||||
#include "core/gimpdrawable.h"
|
||||
#include "core/gimpenvirontable.h"
|
||||
#include "core/gimpimage.h"
|
||||
|
||||
#include "gui/plug-in-menus.h"
|
||||
|
@ -620,7 +621,8 @@ plug_in_open (PlugIn *plug_in)
|
|||
* be reached, unless some strange error condition
|
||||
* exists.
|
||||
*/
|
||||
execvp (plug_in->args[0], plug_in->args);
|
||||
execve (plug_in->args[0], plug_in->args,
|
||||
gimp_environ_table_get_envp (plug_in->gimp->environ_table));
|
||||
_exit (1);
|
||||
}
|
||||
else if (plug_in->pid == -1)
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpcoreconfig.h"
|
||||
#include "core/gimpdrawable.h"
|
||||
#include "core/gimpenvirontable.h"
|
||||
#include "core/gimpimage.h"
|
||||
|
||||
#include "gui/plug-in-menus.h"
|
||||
|
@ -620,7 +621,8 @@ plug_in_open (PlugIn *plug_in)
|
|||
* be reached, unless some strange error condition
|
||||
* exists.
|
||||
*/
|
||||
execvp (plug_in->args[0], plug_in->args);
|
||||
execve (plug_in->args[0], plug_in->args,
|
||||
gimp_environ_table_get_envp (plug_in->gimp->environ_table));
|
||||
_exit (1);
|
||||
}
|
||||
else if (plug_in->pid == -1)
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpcoreconfig.h"
|
||||
#include "core/gimpdrawable.h"
|
||||
#include "core/gimpenvirontable.h"
|
||||
#include "core/gimpimage.h"
|
||||
|
||||
#include "gui/plug-in-menus.h"
|
||||
|
@ -620,7 +621,8 @@ plug_in_open (PlugIn *plug_in)
|
|||
* be reached, unless some strange error condition
|
||||
* exists.
|
||||
*/
|
||||
execvp (plug_in->args[0], plug_in->args);
|
||||
execve (plug_in->args[0], plug_in->args,
|
||||
gimp_environ_table_get_envp (plug_in->gimp->environ_table));
|
||||
_exit (1);
|
||||
}
|
||||
else if (plug_in->pid == -1)
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpcoreconfig.h"
|
||||
#include "core/gimpdrawable.h"
|
||||
#include "core/gimpenvirontable.h"
|
||||
#include "core/gimpimage.h"
|
||||
|
||||
#include "gui/plug-in-menus.h"
|
||||
|
@ -620,7 +621,8 @@ plug_in_open (PlugIn *plug_in)
|
|||
* be reached, unless some strange error condition
|
||||
* exists.
|
||||
*/
|
||||
execvp (plug_in->args[0], plug_in->args);
|
||||
execve (plug_in->args[0], plug_in->args,
|
||||
gimp_environ_table_get_envp (plug_in->gimp->environ_table));
|
||||
_exit (1);
|
||||
}
|
||||
else if (plug_in->pid == -1)
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpcoreconfig.h"
|
||||
#include "core/gimpdrawable.h"
|
||||
#include "core/gimpenvirontable.h"
|
||||
#include "core/gimpimage.h"
|
||||
|
||||
#include "gui/plug-in-menus.h"
|
||||
|
@ -620,7 +621,8 @@ plug_in_open (PlugIn *plug_in)
|
|||
* be reached, unless some strange error condition
|
||||
* exists.
|
||||
*/
|
||||
execvp (plug_in->args[0], plug_in->args);
|
||||
execve (plug_in->args[0], plug_in->args,
|
||||
gimp_environ_table_get_envp (plug_in->gimp->environ_table));
|
||||
_exit (1);
|
||||
}
|
||||
else if (plug_in->pid == -1)
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpcoreconfig.h"
|
||||
#include "core/gimpdrawable.h"
|
||||
#include "core/gimpenvirontable.h"
|
||||
#include "core/gimpimage.h"
|
||||
|
||||
#include "gui/plug-in-menus.h"
|
||||
|
@ -620,7 +621,8 @@ plug_in_open (PlugIn *plug_in)
|
|||
* be reached, unless some strange error condition
|
||||
* exists.
|
||||
*/
|
||||
execvp (plug_in->args[0], plug_in->args);
|
||||
execve (plug_in->args[0], plug_in->args,
|
||||
gimp_environ_table_get_envp (plug_in->gimp->environ_table));
|
||||
_exit (1);
|
||||
}
|
||||
else if (plug_in->pid == -1)
|
||||
|
|
10
autogen.sh
10
autogen.sh
|
@ -170,7 +170,11 @@ intltoolize --copy --force --automake
|
|||
|
||||
cd $ORIGDIR
|
||||
|
||||
$srcdir/configure --enable-maintainer-mode --enable-gtk-doc "$@"
|
||||
if $srcdir/configure --enable-maintainer-mode --enable-gtk-doc "$@"; then
|
||||
echo
|
||||
echo "Now type 'make' to compile $PROJECT."
|
||||
else
|
||||
echo
|
||||
echo "Configure failed or did not finish!"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Now type 'make' to compile $PROJECT."
|
||||
|
|
|
@ -1180,6 +1180,7 @@ themes/Default/Makefile
|
|||
themes/Default/images/Makefile
|
||||
themes/Default/images/preferences/Makefile
|
||||
data/Makefile
|
||||
data/environ/Makefile
|
||||
data/misc/Makefile
|
||||
data/misc/gimp.desktop.in
|
||||
data/images/Makefile
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## Makefile.am for gimp/data
|
||||
|
||||
SUBDIRS = misc images brushes gradients palettes patterns
|
||||
SUBDIRS = environ misc images brushes gradients palettes patterns
|
||||
|
||||
EXTRA_DIST = \
|
||||
AUTHORS \
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Makefile.in
|
||||
Makefile
|
|
@ -0,0 +1,5 @@
|
|||
## Makefile.am for gimp/etc
|
||||
|
||||
environdir = $(gimpplugindir)/environ
|
||||
|
||||
environ_DATA = default.env
|
|
@ -0,0 +1,2 @@
|
|||
# Example entry in files like these
|
||||
# FOOPATH=/path/to/foo/stuff
|
|
@ -35,6 +35,8 @@ echo "mkdir $2/plug-ins"
|
|||
mkdir $2/plug-ins
|
||||
echo "mkdir $2/modules"
|
||||
mkdir $2/modules
|
||||
echo "mkdir $2/environ"
|
||||
mkdir $2/environ
|
||||
echo "mkdir $2/scripts"
|
||||
mkdir $2/scripts
|
||||
echo "mkdir $2/tmp"
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
(exec_prefix "@exec_prefix@")
|
||||
(gimp_data_dir "@gimpdatadir@")
|
||||
(gimp_plugin_dir "@gimpplugindir@")
|
||||
(gimp_environ_dir "@gimpenvirondir@")
|
||||
|
||||
# Set the temporary storage directory...files will appear here
|
||||
# during the course of running the gimp. Most files will disappear
|
||||
|
@ -80,6 +81,9 @@
|
|||
# Set the path to modules that are to be initialized at startup
|
||||
(module-path "${gimp_dir}/modules:${gimp_plugin_dir}/modules")
|
||||
|
||||
# Set the path to files to fill the plug-in environment
|
||||
(environ-path "${gimp_dir}/environ:${gimp_plugin_dir}/environ")
|
||||
|
||||
# Specify a theme for the GUI. If none is specified it defaults to "Default"
|
||||
(theme "Default")
|
||||
|
||||
|
|
|
@ -2,33 +2,41 @@ SUBDIRS = doc plug-ins
|
|||
|
||||
INCLUDES = $(PYTHON_INCLUDES) $(GLIB_CFLAGS) -I$(top_srcdir)
|
||||
|
||||
pyexec_LTLIBRARIES = gimpmodule.la
|
||||
pygimpdir = $(gimpplugindir)/python
|
||||
|
||||
pygimp_LTLIBRARIES = gimpmodule.la
|
||||
|
||||
gimpmodule_la_SOURCES = \
|
||||
gimpmodule.c \
|
||||
pygimp-image.c \
|
||||
pygimp-drawable.c \
|
||||
pygimp-tile.c \
|
||||
pygimp-display.c \
|
||||
pygimp-parasite.c \
|
||||
pygimp-pdb.c \
|
||||
pygimp.h
|
||||
gimpmodule.c \
|
||||
pygimp-image.c \
|
||||
pygimp-drawable.c \
|
||||
pygimp-tile.c \
|
||||
pygimp-display.c \
|
||||
pygimp-parasite.c \
|
||||
pygimp-pdb.c \
|
||||
pygimp.h
|
||||
|
||||
gimpmodule_la_LDFLAGS = -module -avoid-version \
|
||||
-export-symbols-regex 'initgimp|PLUG_IN_INFO'
|
||||
-export-symbols-regex 'initgimp|PLUG_IN_INFO'
|
||||
|
||||
gimpmodule_la_LIBADD = \
|
||||
$(top_builddir)/libgimp/libgimp-$(LT_RELEASE).la \
|
||||
$(top_builddir)/libgimpcolor/libgimpcolor-$(LT_RELEASE).la \
|
||||
$(top_builddir)/libgimpbase/libgimpbase-$(LT_RELEASE).la \
|
||||
$(GLIB_LIBS)
|
||||
$(top_builddir)/libgimp/libgimp-$(LT_RELEASE).la \
|
||||
$(top_builddir)/libgimpcolor/libgimpcolor-$(LT_RELEASE).la \
|
||||
$(top_builddir)/libgimpbase/libgimpbase-$(LT_RELEASE).la \
|
||||
$(GLIB_LIBS)
|
||||
|
||||
python_PYTHON = \
|
||||
gimpplugin.py \
|
||||
gimpenums.py \
|
||||
gimpshelf.py \
|
||||
gimpui.py \
|
||||
gimpfu.py
|
||||
pygimp_PYTHON = \
|
||||
gimpplugin.py \
|
||||
gimpenums.py \
|
||||
gimpshelf.py \
|
||||
gimpui.py \
|
||||
gimpfu.py
|
||||
|
||||
EXTRA_DIST = pygimp.spec
|
||||
pyenvdir = $(gimpplugindir)/environ
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(pyenvdir)
|
||||
echo "PYTHONPATH=$(pygimpdir)" > $(DESTDIR)$(pyenvdir)/pygimp.env
|
||||
|
||||
snap:
|
||||
$(MAKE) dist distdir=$(PACKAGE)-SNAP-`date +"%Y%m%d"`
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
|
||||
noinst_DATA = pygimp.html
|
||||
|
||||
EXTRA_DIST = pygimp.sgml \
|
||||
pygimp.html \
|
||||
structure-of-plugin.html \
|
||||
procedural-database.html \
|
||||
gimp-module-procedures.html \
|
||||
gimp-objects.html \
|
||||
support-modules.html \
|
||||
EXTRA_DIST = \
|
||||
pygimp.sgml \
|
||||
pygimp.html \
|
||||
structure-of-plugin.html \
|
||||
procedural-database.html \
|
||||
gimp-module-procedures.html \
|
||||
gimp-objects.html \
|
||||
support-modules.html \
|
||||
end-note.html
|
||||
|
||||
printed: pygimp.ps pygimp.pdf
|
||||
|
|
|
@ -10,6 +10,7 @@ PREFS_IMAGES = \
|
|||
folders-brushes.png \
|
||||
folders-gradients.png \
|
||||
folders-modules.png \
|
||||
folders-environ.png \
|
||||
folders-palettes.png \
|
||||
folders-patterns.png \
|
||||
folders-plug-ins.png \
|
||||
|
|
Binary file not shown.
After ![]() (image error) Size: 2.9 KiB |
Loading…
Reference in New Issue