# 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.

# "Perlized" from C source by Manish Singh <yosh@gimp.org>
#   Added a PDB entry for writing a gimprc entry, by 
#  Seth Burgess <sjburges@gimp.org> 15/04/99

# The defs

sub gimprc_query {
    $blurb = <<'BLURB';
Queries the gimprc file parser for information on a specified token.
BLURB

    $help = <<'HELP';
This procedure is used to locate additional information contained in the gimprc
file considered extraneous to the operation of the GIMP. Plug-ins that need
configuration information can expect it will be stored in the user gimprc
file and can use this procedure to retrieve it. This query procedure will
return the value associated with the specified token. This corresponds _only_
to entries with the format: (<token> <value>). The value must be a string.
Entries not corresponding to this format will cause warnings to be issued on
gimprc parsing and will not be queryable.
HELP

    &std_pdb_misc;
    $date = '1997';

    @inargs = (
	{ name => 'token', type => 'string',
	  desc => 'The token to query for' }
    );

    @outargs = (
	{ name => 'value', type => 'string',
	  desc => 'The value associated with the queried token',
	  alias => 'g_strdup (value)', no_declare => 1 }
    );

    %invoke = (
	vars => [ 'const gchar *value = NULL' ],
	code => <<'CODE'
{
  success = (value = gimprc_find_token (token)) != NULL;

  if (!success) /* custom ones failed, try the standard ones */
    success = (value = gimprc_value_to_str (token)) != NULL;
}
CODE
    );
}

sub gimprc_set {
    $blurb = 'Sets a gimprc token to a value and saves it in the gimprc.';

    $help = <<'HELP';
This procedure is used to add or change additional information in the gimprc
file that is considered extraneous to the operation of the GIMP. Plug-ins that
need configuration information can use this function to store it, and
gimp_gimprc_query to retrieve it.  This will accept _only_ parameters in the
format of (<token> <value>), where <token> and <value> must be strings. Entries
not corresponding to this format will be eaten and no action will be performed.
If the gimprc can not be written for whatever reason, gimp will complain loudly
and the old gimprc will be saved in gimprc.old.
HELP

    $author = $copyright = 'Seth Burgess';
    $date = '1999';
	
    @inargs = (
	{ name => 'token', type => 'string',
	  desc => 'The token to modify' },
	{ name => 'value', type => 'string',
	  desc => 'The value to set the token to' }
    );

    %invoke = ( 
	code => 'save_gimprc_strings(token, value);'
    );
}

sub get_monitor_resolution {
    $blurb = 'Get the monitor resolution as specified in the Preferences.';

    $help = <<'HELP';
Returns the resolution of the monitor in pixels/inch. This value
is taken from the Preferences (or the X-Server if this is set in the
Preferences) and there's no guarantee for the value to be reasonable.
HELP

    &std_pdb_misc;

    @inargs = ( );

    @outargs = (
	{  name => 'xres', type => 'float', void_ret => 1,
	   desc => 'X resolution', alias => 'xres' },
	{  name => 'yres', type => 'float',
	   desc => 'Y resolution', alias => 'yres' },	   
    );

    %invoke = (
	code => <<'CODE'
{
  xres = gimprc.monitor_xres;
  yres = gimprc.monitor_yres;
  success = TRUE;
}
CODE
    );
}

sub get_default_comment {
    $blurb = 'Get the default image comment as specified in the Preferences.';

    $help = 'Returns a copy of the default image comment.';

    &std_pdb_misc;

    @inargs = ( );

    @outargs = (
	{  name => 'comment', type => 'string',
	   desc => 'Default Image Comment' },
    );

    %invoke = (
	code => <<'CODE'
{
  comment = gimp->config->default_comment;
  success = TRUE;
}
CODE
    );
}

@headers = qw("core/gimp.h" "core/gimpcoreconfig.h" "gimprc.h");

@procs = qw(gimprc_query gimprc_set 
	    get_default_comment get_monitor_resolution);
%exports = (app => [@procs], lib => [@procs]);

$desc = 'Gimprc procedures';

1;
