# The GIMP -- an image manipulation program
# Copyright (C) 1998-1999 Manish Singh

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

sub pdb_misc {
    $author = $copyright = 'Manish Singh';
    $date = '1998';
}

sub message {
    $blurb = 'Displays a dialog box with a message.';

    $help = <<'HELP';
Displays a dialog box with a message. Useful for status or error reporting.
The message must be in UTF-8 encoding.
HELP

    &pdb_misc;

    @inargs = (
	{ name => 'message', type => 'string', const => 1,
	  desc => 'Message to display in the dialog' }
    );

    %invoke = ( code => <<CODE
{
  if (! g_utf8_validate (message, -1, NULL))
    {
      g_warning ("Strings passed to g_message() must be in UTF-8 encoding.");
      success = FALSE;
    }
  else
    {
      gchar *domain = NULL;

      if (gimp->current_plug_in)
        {
          GSList *list;

          for (list = gimp->plug_in_proc_defs; list; list = g_slist_next (list))
            {
              PlugInProcDef *proc_def = list->data;

              if (&proc_def->db_info == gimp->current_plug_in->proc_rec)
                {
                  const gchar *progname;

                  progname = plug_in_proc_def_get_progname (proc_def);

                  if (proc_def->menu_path)
                    {
                      const gchar *path;
                      gchar       *ellipses;

                      path = dgettext (plug_ins_locale_domain (gimp, progname,
                                                               NULL),
                                       proc_def->menu_path);

                      domain = g_path_get_basename (path);

                      ellipses = strstr (domain, "...");

                      if (ellipses && ellipses == (domain + strlen (domain) - 3))
                        *ellipses = '\\0';
                    }
                  else
                    {
                      domain = g_path_get_basename (progname);
                    }

                  break;
                }
            }
        }

      gimp_message (gimp, domain, message);

      g_free (domain);
    }
}
CODE
    );
}

sub message_get_handler {
    $blurb = <<'BLURB';
Returns the current state of where warning messages are displayed.
BLURB

    $help = <<'HELP';
This procedure returns the way g_message warnings are displayed. They can be
shown in a dialog box or printed on the console where gimp was started.
HELP

    &pdb_misc;

    @outargs = (
	{ name => 'handler', type => 'enum GimpMessageHandlerType',
	  desc => 'The current handler type: { %%desc%% }',
	  alias => 'gimp->message_handler', no_declare => 1 }
    );
}

sub message_set_handler {
    $blurb = 'Controls where warning messages are displayed.';

    $help = <<'HELP';
This procedure controls how g_message warnings are displayed. They can be shown
in a dialog box or printed on the console where gimp was started.
HELP

    &pdb_misc;

    @inargs = (
	{ name => 'handler', type => 'enum GimpMessageHandlerType',
	  desc => 'The new handler type: { %%desc%% }' }
    );

    %invoke = ( code => 'gimp->message_handler = handler;' );
}

@headers = qw(<string.h> "core/gimp.h" "plug-in/plug-in.h" "plug-in/plug-ins.h"
              "plug-in/plug-in-proc.h" "gimp-intl.h");

@procs = qw(message message_get_handler message_set_handler);
%exports = (app => [@procs], lib => [@procs]);

$desc = 'Message procedures';

1;
