diff --git a/ChangeLog b/ChangeLog index 751824271e..b9a123893a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2003-05-25 Michael Natterer + + * libgimpwidgets/gimphelpui.[ch]: added a GimpHelpFunc parameter to + _gimp_help_init(). Implement gimp_standard_help_func() here and + use the function pointer passed to _gimp_help_init(). + + * libgimpwidgets/gimpwidgets-private.[ch]: removed + standard_help_func from GimpWidgetsVTable. Require it as paramater + to gimp_widgets_init() and pass it to _gimp_help_init(). + + * libgimpwidgets/gimpunitmenu.c: use gimp_standard_help_func + directly again. + + * app/libgimp_glue.[ch]: removed gimp_standard_help_func(). + + * libgimp/Makefile.am + * libgimp/gimphelp.c: removed this file (containing + gimp_standard_help_func()). + + * app/gui/gui.c: added private gimp_help_func() and pass it to + gimp_widgets_init(). + + * libgimp/gimpui.c: added private gimp_ui_help_func() and pass it + to gimp_widgets_init(). + 2003-05-25 Michael Natterer * data/misc/Makefile.am: forgot some hardcoded "1.3" here. diff --git a/app/gui/gui.c b/app/gui/gui.c index e400b57431..c9c40bd997 100644 --- a/app/gui/gui.c +++ b/app/gui/gui.c @@ -45,6 +45,7 @@ #include "widgets/gimpdevices.h" #include "widgets/gimpdialogfactory.h" +#include "widgets/gimphelp.h" #include "widgets/gimpitemfactory.h" #include "widgets/gimpmenufactory.h" #include "widgets/gimpwidgets-utils.h" @@ -57,11 +58,15 @@ #include "menus.h" #include "session.h" +#include "app_procs.h" /* FIXME */ + #include "gimp-intl.h" /* local function prototypes */ +static void gui_help_func (const gchar *help_data); + static void gui_threads_enter (Gimp *gimp); static void gui_threads_leave (Gimp *gimp); static void gui_set_busy (Gimp *gimp); @@ -118,8 +123,6 @@ gui_libs_init (gint *argc, return FALSE; /* Initialize the eeky vtable needed by libgimpwidgets */ - vtable.standard_help_func = gimp_standard_help_func; - vtable.palette_get_background = gimp_palette_get_background; vtable.palette_get_foreground = gimp_palette_get_foreground; @@ -133,7 +136,7 @@ gui_libs_init (gint *argc, vtable.unit_get_singular = gimp_unit_get_singular; vtable.unit_get_plural = gimp_unit_get_plural; - gimp_widgets_init (&vtable); + gimp_widgets_init (&vtable, gui_help_func); g_type_class_ref (GIMP_TYPE_COLOR_SELECT); @@ -397,6 +400,12 @@ gui_get_screen_resolution (gdouble *xres, /* private functions */ +static void +gui_help_func (const gchar *help_data) +{ + gimp_help (the_gimp, NULL, help_data); +} + static void gui_threads_enter (Gimp *gimp) { diff --git a/app/libgimp_glue.c b/app/libgimp_glue.c index 18bafabfad..917e0359f7 100644 --- a/app/libgimp_glue.c +++ b/app/libgimp_glue.c @@ -28,8 +28,6 @@ #include "core/gimpcontext.h" #include "core/gimpunit.h" -#include "widgets/gimphelp.h" - #include "app_procs.h" #define __LIBGIMP_GLUE_C__ @@ -163,9 +161,3 @@ gimp_unit_get_plural (GimpUnit unit) { return _gimp_unit_get_plural (the_gimp, unit); } - -void -gimp_standard_help_func (const gchar *help_data) -{ - gimp_help (the_gimp, NULL, help_data); -} diff --git a/app/libgimp_glue.h b/app/libgimp_glue.h index 5996e6aabf..adc76fb149 100644 --- a/app/libgimp_glue.h +++ b/app/libgimp_glue.h @@ -55,7 +55,5 @@ const gchar * gimp_unit_get_abbreviation (GimpUnit unit); const gchar * gimp_unit_get_singular (GimpUnit unit); const gchar * gimp_unit_get_plural (GimpUnit unit); -void gimp_standard_help_func (const gchar *help_data); - #endif /* __LIBGIMP_GLUE_H__ */ diff --git a/libgimp/Makefile.am b/libgimp/Makefile.am index 75565b675d..0d130c21e4 100644 --- a/libgimp/Makefile.am +++ b/libgimp/Makefile.am @@ -157,7 +157,6 @@ libgimp_1_3_la_SOURCES = \ gimpchannel.h \ gimpdrawable.c \ gimpdrawable.h \ - gimphelp.c \ gimpimage.c \ gimpimage.h \ gimplayer.c \ diff --git a/libgimp/gimphelp.c b/libgimp/gimphelp.c deleted file mode 100644 index 23d8ffe755..0000000000 --- a/libgimp/gimphelp.c +++ /dev/null @@ -1,31 +0,0 @@ -/* LIBGIMP - The GIMP Library - * Copyright (C) 1995 Spencer Kimball and Peter Mattis - * - * gimphelp.c - * Copyright (C) 2000 Michael Natterer - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "config.h" - -#include "gimp.h" - -void -gimp_standard_help_func (gchar *help_data) -{ - gimp_help (gimp_get_progname (), help_data); -} diff --git a/libgimp/gimpui.c b/libgimp/gimpui.c index e9280488a2..c27e98152e 100644 --- a/libgimp/gimpui.c +++ b/libgimp/gimpui.c @@ -25,6 +25,14 @@ #include "libgimpwidgets/gimpwidgets.h" #include "libgimpwidgets/gimpwidgets-private.h" + +/* local function prototypes */ + +static void gimp_ui_help_func (const gchar *help_data); + + +/* public functions */ + /** * gimp_ui_init: * @prog_name: The name of the plug-in which will be passed as argv[0] to @@ -82,7 +90,6 @@ gimp_ui_init (const gchar *prog_name, gtk_preview_set_gamma (gimp_gamma ()); /* Initialize the eeky vtable needed by libgimpwidgets */ - vtable.standard_help_func = gimp_standard_help_func; vtable.palette_get_background = gimp_palette_get_background; vtable.palette_get_foreground = gimp_palette_get_foreground; vtable.unit_get_number_of_units = gimp_unit_get_number_of_units; @@ -95,10 +102,19 @@ gimp_ui_init (const gchar *prog_name, vtable.unit_get_singular = gimp_unit_get_singular; vtable.unit_get_plural = gimp_unit_get_plural; - gimp_widgets_init (&vtable); + gimp_widgets_init (&vtable, gimp_ui_help_func); if (! gimp_show_tool_tips ()) gimp_help_disable_tooltips (); initialized = TRUE; } + + +/* private functions */ + +static void +gimp_ui_help_func (const gchar *help_data) +{ + gimp_help (gimp_get_progname (), (gchar *) help_data); +} diff --git a/libgimpwidgets/gimphelpui.c b/libgimpwidgets/gimphelpui.c index 3e651aadf2..9747750b37 100644 --- a/libgimpwidgets/gimphelpui.c +++ b/libgimpwidgets/gimphelpui.c @@ -39,7 +39,6 @@ #include "gimpdialog.h" #include "gimphelpui.h" -#include "gimpwidgets-private.h" typedef enum @@ -67,8 +66,9 @@ static gboolean gimp_help_tips_query_idle_start (gpointer tips_query /* local variables */ -static GtkTooltips *tool_tips = NULL; -static GtkWidget *tips_query = NULL; +static GimpHelpFunc the_help_func = NULL; +static GtkTooltips *tool_tips = NULL; +static GtkWidget *tips_query = NULL; /* public functions */ @@ -84,8 +84,15 @@ static GtkWidget *tips_query = NULL; * Nota that this function is called automatically by gimp_widgets_init(). **/ void -_gimp_help_init (void) +_gimp_help_init (GimpHelpFunc standard_help_func) { + g_return_if_fail (standard_help_func != NULL); + + if (the_help_func) + g_error ("_gimp_help_init() must only be called once!"); + + the_help_func = standard_help_func; + tool_tips = gtk_tooltips_new (); /* take ownership of the tooltips */ @@ -115,6 +122,19 @@ gimp_help_disable_tooltips (void) gtk_tooltips_disable (tool_tips); } +void +gimp_standard_help_func (const gchar *help_data) +{ + if (! the_help_func) + { + g_warning ("gimp_standard_help_func(): you must call _gimp_help_init() " + "before using the help system"); + return; + } + + (* the_help_func) (help_data); +} + /** * gimp_help_connect: * @widget: The widget you want to connect the help accelerator for. Will @@ -336,13 +356,13 @@ gimp_help_tips_query_idle_show_help (gpointer data) gchar *help_text; help_text = g_strconcat (help_data, help_index, NULL); - _gimp_eek.standard_help_func (help_text); + gimp_standard_help_func (help_text); g_free (help_text); } } else { - _gimp_eek.standard_help_func (help_data); + gimp_standard_help_func (help_data); } } diff --git a/libgimpwidgets/gimphelpui.h b/libgimpwidgets/gimphelpui.h index c70a6a1f7f..76d1bcd816 100644 --- a/libgimpwidgets/gimphelpui.h +++ b/libgimpwidgets/gimphelpui.h @@ -28,13 +28,12 @@ G_BEGIN_DECLS /* For information look into the C source or the html documentation */ -void _gimp_help_init (void); +void _gimp_help_init (GimpHelpFunc standard_help_func); void gimp_help_enable_tooltips (void); void gimp_help_disable_tooltips (void); /* the standard gimp help function - * (has different implementations in the main app and in libgimp) */ void gimp_standard_help_func (const gchar *help_data); diff --git a/libgimpwidgets/gimpunitmenu.c b/libgimpwidgets/gimpunitmenu.c index 42baac21b3..4e5d610e6c 100644 --- a/libgimpwidgets/gimpunitmenu.c +++ b/libgimpwidgets/gimpunitmenu.c @@ -525,7 +525,7 @@ gimp_unit_menu_create_selection (GimpUnitMenu *menu) menu->selection = gimp_dialog_new (_("Unit Selection"), "unit_selection", - _gimp_eek.standard_help_func, + gimp_standard_help_func, "dialogs/unit_selection.html", GTK_WIN_POS_MOUSE, FALSE, TRUE, FALSE, diff --git a/libgimpwidgets/gimpwidgets-private.c b/libgimpwidgets/gimpwidgets-private.c index 09ec9d276f..e59429a62a 100644 --- a/libgimpwidgets/gimpwidgets-private.c +++ b/libgimpwidgets/gimpwidgets-private.c @@ -39,7 +39,8 @@ GimpWidgetsVTable _gimp_eek; void -gimp_widgets_init (GimpWidgetsVTable *vtable) +gimp_widgets_init (GimpWidgetsVTable *vtable, + GimpHelpFunc standard_help_func) { static gboolean gimp_widgets_initialized = FALSE; @@ -56,12 +57,10 @@ gimp_widgets_init (GimpWidgetsVTable *vtable) }; g_return_if_fail (vtable != NULL); + g_return_if_fail (standard_help_func != NULL); if (gimp_widgets_initialized) - { - g_error ("gimp_widgets_init() must only be called once!"); - return; - } + g_error ("gimp_widgets_init() must only be called once!"); _gimp_eek = *vtable; @@ -78,7 +77,7 @@ gimp_widgets_init (GimpWidgetsVTable *vtable) g_list_foreach (icon_list, (GFunc) g_object_unref, NULL); g_list_free (icon_list); - _gimp_help_init (); + _gimp_help_init (standard_help_func); gimp_widgets_initialized = TRUE; } diff --git a/libgimpwidgets/gimpwidgets-private.h b/libgimpwidgets/gimpwidgets-private.h index d76637cb2d..fef4b9aba8 100644 --- a/libgimpwidgets/gimpwidgets-private.h +++ b/libgimpwidgets/gimpwidgets-private.h @@ -28,8 +28,6 @@ typedef struct _GimpWidgetsVTable GimpWidgetsVTable; struct _GimpWidgetsVTable { - void (* standard_help_func) (const gchar *help_data); - gboolean (* palette_get_background) (GimpRGB *background); gboolean (* palette_get_foreground) (GimpRGB *background); @@ -55,7 +53,8 @@ extern GimpWidgetsVTable _gimp_eek; G_BEGIN_DECLS -void gimp_widgets_init (GimpWidgetsVTable *vtable); +void gimp_widgets_init (GimpWidgetsVTable *vtable, + GimpHelpFunc standard_help_func); G_END_DECLS