plug-ins/help/Makefile.am plug-ins/help/gimphelpprogress.[ch] new files

2008-05-16  Sven Neumann  <sven@gimp.org>

        * plug-ins/help/Makefile.am
        * plug-ins/help/gimphelpprogress.[ch]
        * plug-ins/help/gimphelpprogress-private.h: new files providing a
        simple framework for progress indication and cancellation.

        * plug-ins/help/gimphelp.[ch]
        * plug-ins/help/gimphelpdomain.[ch]
        * plug-ins/help/gimphelpitem.[ch]
        * plug-ins/help/gimphelplocale.[ch]
        * plug-ins/help/gimphelptypes.h
        * plug-ins/help/help.c
        * plug-ins/help/locales.[ch]: changed accordingly (passing NULL
        as progress for now). Also updated copyright headers.

        * plug-ins/help-browser/help-browser.c: same here.

        * plug-ins/help/gimp-help-lookup.c: use the new API and show some
        progress indication when the --verbose command-line option is used.

svn path=/trunk/; revision=25674
This commit is contained in:
Sven Neumann 2008-05-16 16:56:33 +00:00 committed by Sven Neumann
parent d210e82d7c
commit 6b687736d3
19 changed files with 485 additions and 88 deletions

View File

@ -1,3 +1,24 @@
2008-05-16 Sven Neumann <sven@gimp.org>
* plug-ins/help/Makefile.am
* plug-ins/help/gimphelpprogress.[ch]
* plug-ins/help/gimphelpprogress-private.h: new files providing a
simple framework for progress indication and cancellation.
* plug-ins/help/gimphelp.[ch]
* plug-ins/help/gimphelpdomain.[ch]
* plug-ins/help/gimphelpitem.[ch]
* plug-ins/help/gimphelplocale.[ch]
* plug-ins/help/gimphelptypes.h
* plug-ins/help/help.c
* plug-ins/help/locales.[ch]: changed accordingly (passing NULL
as progress for now). Also updated copyright headers.
* plug-ins/help-browser/help-browser.c: same here.
* plug-ins/help/gimp-help-lookup.c: use the new API and show some
progress indication when the --verbose command-line option is used.
2008-05-16 Michael Natterer <mitch@gimp.org>
* app/dialogs/dialogs.c (dialogs_load_recent_docks): reverse the

View File

@ -2,11 +2,11 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help Browser
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*
* Some code & ideas stolen from the GNOME help browser.
* Some code & ideas taken 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
@ -87,14 +87,14 @@ query (void)
};
gimp_install_procedure (GIMP_HELP_BROWSER_EXT_PROC,
"Browse the GIMP help pages",
"Browse the GIMP user manual",
"A small and simple HTML browser optimized for "
"browsing the GIMP help pages.",
"browsing the GIMP user manual.",
"Sven Neumann <sven@gimp.org>, "
"Michael Natterer <mitch@gimp.org>"
"Henrik Brix Andersen <brix@gimp.org>",
"Sven Neumann, Michael Natterer & Henrik Brix Andersen",
"1999-2004",
"1999-2008",
NULL,
"",
GIMP_EXTENSION,
@ -184,7 +184,7 @@ temp_proc_install (void)
"Michael Natterer <mitch@gimp.org>"
"Henrik Brix Andersen <brix@gimp.org>",
"Sven Neumann, Michael Natterer & Henrik Brix Andersen",
"1999-2004",
"1999-2008",
NULL,
"",
GIMP_TEMPORARY,
@ -232,7 +232,7 @@ temp_proc_run (const gchar *name,
gchar *full_uri;
gboolean fatal_error;
full_uri = gimp_help_domain_map (domain, locales, help_id,
full_uri = gimp_help_domain_map (domain, locales, help_id, NULL,
&locale, &fatal_error);
if (full_uri)

View File

@ -25,7 +25,10 @@ libgimphelp_a_SOURCES = \
gimphelpitem.c \
gimphelpitem.h \
gimphelplocale.c \
gimphelplocale.h
gimphelplocale.h \
gimphelpprogress.c \
gimphelpprogress.h \
gimphelpprogress-private.h
libexecdir = $(gimpplugindir)/plug-ins

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* gimp-help-lookup - a standalone gimp-help ID to filename mapper
* Copyright (C) 2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 2004-2008 Sven Neumann <sven@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
@ -31,11 +31,13 @@
#include "gimphelp.h"
static void show_version (void) G_GNUC_NORETURN;
static void show_version (void) G_GNUC_NORETURN;
static gchar * lookup (const gchar *help_domain,
const gchar *help_locales,
const gchar *help_id);
static gchar * lookup (const gchar *help_domain,
const gchar *help_locales,
const gchar *help_id);
static GimpHelpProgress * progress_new (void);
static const gchar *help_base = NULL;
@ -43,6 +45,8 @@ static gchar *help_root = NULL;
static const gchar *help_locales = NULL;
static const gchar **help_ids = NULL;
static gboolean be_verbose = FALSE;
static const GOptionEntry entries[] =
{
@ -62,6 +66,11 @@ static const GOptionEntry entries[] =
G_OPTION_ARG_STRING, &help_locales,
"Specifies help language", "LANG"
},
{
"verbose", 0, 0,
G_OPTION_ARG_NONE, &be_verbose,
"Be more verbose", NULL
},
{
G_OPTION_REMAINING, 0, 0,
G_OPTION_ARG_STRING_ARRAY, &help_ids,
@ -84,6 +93,7 @@ main (gint argc,
context = g_option_context_new ("HELP-ID");
g_option_context_add_main_entries (context, entries, NULL);
if (! g_option_context_parse (context, &argc, &argv, &error))
{
g_print ("%s\n", error->message);
@ -126,9 +136,15 @@ lookup (const gchar *help_domain,
if (domain)
{
GList *locales = gimp_help_parse_locales (help_locales);
gchar *full_uri = gimp_help_domain_map (domain, locales, help_id,
NULL, NULL);
GimpHelpProgress *progress = progress_new ();
GList *locales;
gchar *full_uri;
locales = gimp_help_parse_locales (help_locales);
full_uri = gimp_help_domain_map (domain, locales, help_id, progress,
NULL, NULL);
gimp_help_progress_free (progress);
g_list_foreach (locales, (GFunc) g_free, NULL);
g_list_free (locales);
@ -145,3 +161,41 @@ show_version (void)
g_print ("gimp-help-lookup version %s\n", GIMP_VERSION);
exit (EXIT_SUCCESS);
}
static void
progress_start (const gchar *message,
gboolean cancelable,
gpointer user_data)
{
if (be_verbose)
g_printerr ("\n%s\n", message);
}
static void
progress_end (gpointer user_data)
{
if (be_verbose)
g_printerr ("done\n");
}
static void
progress_set_value (gdouble percentage,
gpointer user_data)
{
if (be_verbose)
g_printerr (".");
}
static GimpHelpProgress *
progress_new (void)
{
const GimpHelpProgressVTable vtable =
{
progress_start,
progress_end,
progress_set_value
};
return gimp_help_progress_new (&vtable, NULL);
}

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*
@ -30,6 +30,7 @@
#include "gimphelpdomain.h"
#include "gimphelpitem.h"
#include "gimphelplocale.h"
#include "gimphelpprogress.h"
#define GIMP_HELP_DEFAULT_DOMAIN "http://www.gimp.org/help"

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*
@ -30,6 +30,7 @@
#include <string.h>
#include <glib-object.h>
#include <gio/gio.h>
#include "libgimpbase/gimpbase.h"
@ -44,9 +45,10 @@
/* local function prototypes */
static gboolean domain_locale_parse (GimpHelpDomain *domain,
GimpHelpLocale *locale,
GError **error);
static gboolean domain_locale_parse (GimpHelpDomain *domain,
GimpHelpLocale *locale,
GimpHelpProgress *progress,
GError **error);
/* public functions */
@ -85,8 +87,9 @@ gimp_help_domain_free (GimpHelpDomain *domain)
}
GimpHelpLocale *
gimp_help_domain_lookup_locale (GimpHelpDomain *domain,
const gchar *locale_id)
gimp_help_domain_lookup_locale (GimpHelpDomain *domain,
const gchar *locale_id,
GimpHelpProgress *progress)
{
GimpHelpLocale *locale = NULL;
@ -104,17 +107,18 @@ gimp_help_domain_lookup_locale (GimpHelpDomain *domain,
locale = gimp_help_locale_new (locale_id);
g_hash_table_insert (domain->help_locales, g_strdup (locale_id), locale);
domain_locale_parse (domain, locale, NULL);
domain_locale_parse (domain, locale, progress, NULL);
return locale;
}
gchar *
gimp_help_domain_map (GimpHelpDomain *domain,
GList *help_locales,
const gchar *help_id,
GimpHelpLocale **ret_locale,
gboolean *fatal_error)
gimp_help_domain_map (GimpHelpDomain *domain,
GList *help_locales,
const gchar *help_id,
GimpHelpProgress *progress,
GimpHelpLocale **ret_locale,
gboolean *fatal_error)
{
GimpHelpLocale *locale = NULL;
const gchar *ref = NULL;
@ -131,7 +135,8 @@ gimp_help_domain_map (GimpHelpDomain *domain,
for (list = help_locales; list && !ref; list = list->next)
{
locale = gimp_help_domain_lookup_locale (domain,
(const gchar *) list->data);
(const gchar *) list->data,
progress);
ref = gimp_help_locale_map (locale, help_id);
}
@ -139,7 +144,8 @@ gimp_help_domain_map (GimpHelpDomain *domain,
for (list = help_locales; list && !ref; list = list->next)
{
locale = gimp_help_domain_lookup_locale (domain,
(const gchar *) list->data);
(const gchar *) list->data,
progress);
ref = locale->help_missing;
}
@ -163,23 +169,28 @@ gimp_help_domain_map (GimpHelpDomain *domain,
#endif
locale = gimp_help_domain_lookup_locale (domain,
GIMP_HELP_DEFAULT_LOCALE);
GIMP_HELP_DEFAULT_LOCALE, NULL);
if (! domain_locale_parse (domain, locale, &error))
if (! domain_locale_parse (domain, locale, NULL, &error))
{
if (error->code == G_FILE_ERROR_NOENT)
switch (error->code)
{
case G_IO_ERROR_NOT_FOUND:
g_message ("%s\n\n%s",
_("The GIMP help files are not found."),
_("The GIMP user manual is not available."),
_("Please install the additional help package or use "
"the online user manual at http://docs.gimp.org/."));
}
else
{
break;
case G_IO_ERROR_CANCELLED:
break;
default:
g_message ("%s\n\n%s\n\n%s",
_("There is a problem with the GIMP help files."),
_("There is a problem with the GIMP user manual."),
error->message,
_("Please check your installation."));
break;
}
g_error_free (error);
@ -200,9 +211,10 @@ gimp_help_domain_map (GimpHelpDomain *domain,
/* private functions */
static gboolean
domain_locale_parse (GimpHelpDomain *domain,
GimpHelpLocale *locale,
GError **error)
domain_locale_parse (GimpHelpDomain *domain,
GimpHelpLocale *locale,
GimpHelpProgress *progress,
GError **error)
{
gchar *uri;
gboolean success;
@ -214,7 +226,8 @@ domain_locale_parse (GimpHelpDomain *domain,
uri = g_strdup_printf ("%s/%s/gimp-help.xml",
domain->help_uri, locale->locale_id);
success = gimp_help_locale_parse (locale, uri, domain->help_domain, error);
success = gimp_help_locale_parse (locale, uri, domain->help_domain,
progress, error);
g_free (uri);

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*
@ -33,17 +33,19 @@ struct _GimpHelpDomain
};
GimpHelpDomain * gimp_help_domain_new (const gchar *domain_name,
const gchar *domain_uri);
void gimp_help_domain_free (GimpHelpDomain *domain);
GimpHelpDomain * gimp_help_domain_new (const gchar *domain_name,
const gchar *domain_uri);
void gimp_help_domain_free (GimpHelpDomain *domain);
GimpHelpLocale * gimp_help_domain_lookup_locale (GimpHelpDomain *domain,
const gchar *locale_id);
gchar * gimp_help_domain_map (GimpHelpDomain *domain,
GList *help_locales,
const gchar *help_id,
GimpHelpLocale **locale,
gboolean *fatal_error);
GimpHelpLocale * gimp_help_domain_lookup_locale (GimpHelpDomain *domain,
const gchar *locale_id,
GimpHelpProgress *progress);
gchar * gimp_help_domain_map (GimpHelpDomain *domain,
GList *help_locales,
const gchar *help_id,
GimpHelpProgress *progress,
GimpHelpLocale **locale,
gboolean *fatal_error);
void gimp_help_domain_exit (void);

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*
@ -33,6 +33,7 @@
#include <gio/gio.h>
#include "gimphelp.h"
#include "gimphelpprogress-private.h"
#ifdef DISABLE_NLS
#define _(String) (String)
@ -117,7 +118,10 @@ typedef struct
} LocaleParser;
static gboolean locale_parser_parse (GMarkupParseContext *context,
GimpHelpProgress *progress,
GInputStream *stream,
goffset size,
GCancellable *cancellable,
GError **error);
static void locale_parser_start_element (GMarkupParseContext *context,
const gchar *element_name,
@ -154,15 +158,18 @@ static const GMarkupParser markup_parser =
};
gboolean
gimp_help_locale_parse (GimpHelpLocale *locale,
const gchar *uri,
const gchar *help_domain,
GError **error)
gimp_help_locale_parse (GimpHelpLocale *locale,
const gchar *uri,
const gchar *help_domain,
GimpHelpProgress *progress,
GError **error)
{
GMarkupParseContext *context;
GFile *file;
GFileInputStream *stream;
LocaleParser parser = { NULL, };
GCancellable *cancellable = NULL;
LocaleParser parser = { NULL, };
goffset size = 0;
gboolean success;
g_return_val_if_fail (locale != NULL, FALSE);
@ -188,7 +195,38 @@ gimp_help_locale_parse (GimpHelpLocale *locale,
file = g_file_new_for_uri (uri);
stream = g_file_read (file, NULL, error);
if (progress)
{
gchar *name = g_file_get_parse_name (file);
cancellable = g_cancellable_new ();
_gimp_help_progress_start (progress, cancellable,
_("Loading index from '%s'"), name);
g_object_unref (cancellable);
g_free (name);
}
if (progress)
{
GFileInfo *info = g_file_query_info (file,
G_FILE_ATTRIBUTE_STANDARD_SIZE, 0,
cancellable, error);
if (! info)
{
locale_set_error (error, _("Could not open '%s' for reading: %s"),
file);
g_object_unref (file);
return FALSE;
}
size = g_file_info_get_size (info);
g_object_unref (info);
}
stream = g_file_read (file, cancellable, error);
if (! stream)
{
@ -206,7 +244,12 @@ gimp_help_locale_parse (GimpHelpLocale *locale,
context = g_markup_parse_context_new (&markup_parser, 0, &parser, NULL);
success = locale_parser_parse (context, G_INPUT_STREAM (stream), error);
success = locale_parser_parse (context, progress,
G_INPUT_STREAM (stream), size,
cancellable, error);
if (progress)
_gimp_help_progress_finish (progress);
g_markup_parse_context_free (context);
g_object_unref (stream);
@ -224,14 +267,18 @@ gimp_help_locale_parse (GimpHelpLocale *locale,
static gboolean
locale_parser_parse (GMarkupParseContext *context,
GimpHelpProgress *progress,
GInputStream *stream,
goffset size,
GCancellable *cancellable,
GError **error)
{
gssize len;
gchar buffer[4096];
gssize len;
goffset done = 0;
gchar buffer[4096];
while ((len = g_input_stream_read (stream, buffer, sizeof (buffer),
NULL, error)) != -1)
cancellable, error)) != -1)
{
switch (len)
{
@ -239,6 +286,16 @@ locale_parser_parse (GMarkupParseContext *context,
return g_markup_parse_context_end_parse (context, error);
default:
done += len;
if (progress)
{
if (size > 0)
_gimp_help_progress_update (progress, (gdouble) done / size);
else
_gimp_help_progress_pulse (progress);
}
if (! g_markup_parse_context_parse (context, buffer, len, error))
return FALSE;
}

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*
@ -36,16 +36,17 @@ struct _GimpHelpLocale
};
GimpHelpLocale * gimp_help_locale_new (const gchar *locale_id);
void gimp_help_locale_free (GimpHelpLocale *locale);
GimpHelpLocale * gimp_help_locale_new (const gchar *locale_id);
void gimp_help_locale_free (GimpHelpLocale *locale);
const gchar * gimp_help_locale_map (GimpHelpLocale *locale,
const gchar *help_id);
const gchar * gimp_help_locale_map (GimpHelpLocale *locale,
const gchar *help_id);
gboolean gimp_help_locale_parse (GimpHelpLocale *locale,
const gchar *uri,
const gchar *help_domain,
GError **error);
gboolean gimp_help_locale_parse (GimpHelpLocale *locale,
const gchar *uri,
const gchar *help_domain,
GimpHelpProgress *progress,
GError **error);
#endif /* __GIMP_HELP_LOCALE_H__ */

View File

@ -0,0 +1,40 @@
/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@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_HELP_PROGRESS_PRIVATE_H__
#define __GIMP_HELP_PROGRESS_PRIVATE_H__
/* internal API */
void _gimp_help_progress_start (GimpHelpProgress *progress,
GCancellable *cancellable,
const gchar *format,
...) G_GNUC_PRINTF (3, 4) G_GNUC_INTERNAL;
void _gimp_help_progress_update (GimpHelpProgress *progress,
gdouble percentage) G_GNUC_INTERNAL;
void _gimp_help_progress_pulse (GimpHelpProgress *progress) G_GNUC_INTERNAL;
void _gimp_help_progress_finish (GimpHelpProgress *progress) G_GNUC_INTERNAL;
#endif /* ! __GIMP_HELP_PROGRESS_PRIVATE_H__ */

View File

@ -0,0 +1,151 @@
/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@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.
*/
/* This code is written so that it can also be compiled standalone.
* It shouldn't depend on libgimp.
*/
#include "config.h"
#include <string.h>
#include <gio/gio.h>
#include "gimphelptypes.h"
#include "gimphelpprogress.h"
#include "gimphelpprogress-private.h"
struct _GimpHelpProgress
{
GimpHelpProgressVTable vtable;
gpointer user_data;
GCancellable *cancellable;
};
GimpHelpProgress *
gimp_help_progress_new (const GimpHelpProgressVTable *vtable,
gpointer user_data)
{
GimpHelpProgress *progress;
g_return_val_if_fail (vtable != NULL, NULL);
progress = g_slice_new0 (GimpHelpProgress);
progress->vtable.start = vtable->start;
progress->vtable.end = vtable->end;
progress->vtable.set_value = vtable->set_value;
progress->user_data = user_data;
return progress;
}
void
gimp_help_progress_free (GimpHelpProgress *progress)
{
g_return_if_fail (progress != NULL);
if (progress->cancellable)
{
g_object_unref (progress->cancellable);
progress->cancellable = NULL;
}
g_slice_free (GimpHelpProgress, progress);
}
void
gimp_help_progress_cancel (GimpHelpProgress *progress)
{
g_return_if_fail (progress != NULL);
if (progress->cancellable)
g_cancellable_cancel (progress->cancellable);
}
void
_gimp_help_progress_start (GimpHelpProgress *progress,
GCancellable *cancellable,
const gchar *format,
...)
{
gchar *message;
va_list args;
g_return_if_fail (progress != NULL);
if (cancellable)
g_object_ref (cancellable);
if (progress->cancellable)
g_object_unref (progress->cancellable);
progress->cancellable = cancellable;
va_start (args, format);
message = g_strdup_vprintf (format, args);
va_end (args);
if (progress->vtable.start)
progress->vtable.start (message, cancellable != NULL, progress->user_data);
g_free (message);
}
void
_gimp_help_progress_update (GimpHelpProgress *progress,
gdouble percentage)
{
g_return_if_fail (progress != NULL);
if (progress->vtable.set_value)
progress->vtable.set_value (percentage, progress->user_data);
}
void
_gimp_help_progress_pulse (GimpHelpProgress *progress)
{
g_return_if_fail (progress != NULL);
_gimp_help_progress_update (progress, -1.0);
}
void
_gimp_help_progress_finish (GimpHelpProgress *progress)
{
g_return_if_fail (progress != NULL);
if (progress->vtable.end)
progress->vtable.end (progress->user_data);
if (progress->cancellable)
{
g_object_unref (progress->cancellable);
progress->cancellable = NULL;
}
}

View File

@ -0,0 +1,52 @@
/* GIMP - The GNU Image Manipulation Program
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@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_HELP_PROGRESS_H__
#define __GIMP_HELP_PROGRESS_H__
typedef struct
{
void (* start) (const gchar *message,
gboolean cancelable,
gpointer user_data);
void (* end) (gpointer user_data);
void (* set_value) (gdouble percentage,
gpointer user_data);
/* Padding for future expansion. Must be initialized with NULL! */
void (* _gimp_reserved1) (void);
void (* _gimp_reserved2) (void);
void (* _gimp_reserved3) (void);
void (* _gimp_reserved4) (void);
} GimpHelpProgressVTable;
GimpHelpProgress * gimp_help_progress_new (const GimpHelpProgressVTable *vtable,
gpointer user_data);
void gimp_help_progress_free (GimpHelpProgress *progress);
void gimp_help_progress_cancel (GimpHelpProgress *progress);
#endif /* ! __GIMP_HELP_PROGRESS_H__ */

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*
@ -25,9 +25,10 @@
#define __GIMP_HELP_TYPES_H__
typedef struct _GimpHelpDomain GimpHelpDomain;
typedef struct _GimpHelpItem GimpHelpItem;
typedef struct _GimpHelpLocale GimpHelpLocale;
typedef struct _GimpHelpDomain GimpHelpDomain;
typedef struct _GimpHelpItem GimpHelpItem;
typedef struct _GimpHelpLocale GimpHelpLocale;
typedef struct _GimpHelpProgress GimpHelpProgress;
#endif /* ! __GIMP_HELP_TYPES_H__ */

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*
@ -105,7 +105,7 @@ query (void)
"Michael Natterer <mitch@gimp.org>, "
"Henrik Brix Andersen <brix@gimp.org>",
"Sven Neumann, Michael Natterer & Henrik Brix Andersen",
"1999-2004",
"1999-2008",
NULL,
"",
GIMP_EXTENSION,
@ -185,7 +185,7 @@ temp_proc_install (void)
"Michael Natterer <mitch@gimp.org>"
"Henrik Brix Andersen <brix@gimp.org",
"Sven Neumann, Michael Natterer & Henrik Brix Andersen",
"1999-2004",
"1999-2008",
NULL,
"",
GIMP_TEMPORARY,
@ -263,12 +263,13 @@ load_help_idle (gpointer data)
if (domain)
{
GList *locales = gimp_help_parse_locales (idle_help->help_locales);
GList *locales;
gchar *full_uri;
gboolean fatal_error;
locales = gimp_help_parse_locales (idle_help->help_locales);
full_uri = gimp_help_domain_map (domain, locales, idle_help->help_id,
NULL, &fatal_error);
NULL, NULL, &fatal_error);
g_list_foreach (locales, (GFunc) g_free, NULL);
g_list_free (locales);

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*

View File

@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* The GIMP Help plug-in
* Copyright (C) 1999-2004 Sven Neumann <sven@gimp.org>
* Copyright (C) 1999-2008 Sven Neumann <sven@gimp.org>
* Michael Natterer <mitch@gimp.org>
* Henrik Brix Andersen <brix@gimp.org>
*