mirror of https://github.com/GNOME/gimp.git
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:
parent
d210e82d7c
commit
6b687736d3
21
ChangeLog
21
ChangeLog
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
*
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
|
|
|
@ -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>
|
||||
*
|
||||
|
|
|
@ -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>
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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__ */
|
||||
|
|
|
@ -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__ */
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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__ */
|
|
@ -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__ */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>
|
||||
*
|
||||
|
|
|
@ -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>
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue