gimp r25938 - in trunk: . app/config app/widgets plug-ins/help



Author: neo
Date: Thu Jun 12 20:14:44 2008
New Revision: 25938
URL: http://svn.gnome.org/viewvc/gimp?rev=25938&view=rev

Log:
2008-06-12  Sven Neumann  <sven gimp org>

	Added basic support for using the online user manual:

	* app/widgets/gimphelp.c
	* plug-ins/help/gimphelp.c: moved some help logic to the core. 
The
	default help domain is now constructed in the core and passed to
	the help plug-ins just like the plug-in help domains.

	* app/config/Makefile.am
	* app/config/gimprc-blurbs.h
	* app/config/gimpguiconfig.[ch]: added gimprc properties to
	specify the location of the online user manual and to decide if 
it
	should be used instead of a locally installed copy.



Modified:
   trunk/ChangeLog
   trunk/app/config/Makefile.am
   trunk/app/config/gimpguiconfig.c
   trunk/app/config/gimpguiconfig.h
   trunk/app/config/gimprc-blurbs.h
   trunk/app/widgets/gimphelp.c
   trunk/plug-ins/help/gimphelp.c

Modified: trunk/app/config/Makefile.am
==============================================================================
--- trunk/app/config/Makefile.am	(original)
+++ trunk/app/config/Makefile.am	Thu Jun 12 20:14:44 2008
@@ -40,7 +40,8 @@
 	gimpxmlparser.h
 
 AM_CPPFLAGS = \
-	-DG_LOG_DOMAIN=\"Gimp-Config\"
+	-DG_LOG_DOMAIN=\"Gimp-Config\"	\
+	-DGIMP_APP_VERSION_STRING=\"$(GIMP_APP_VERSION)\"
 
 INCLUDES = \
 	-I$(top_builddir)	\

Modified: trunk/app/config/gimpguiconfig.c
==============================================================================
--- trunk/app/config/gimpguiconfig.c	(original)
+++ trunk/app/config/gimpguiconfig.c	Thu Jun 12 20:14:44 2008
@@ -34,15 +34,18 @@
 #include "gimp-intl.h"
 
 
-#define DEFAULT_GIMP_HELP_BROWSER  GIMP_HELP_BROWSER_GIMP
-#define DEFAULT_THEME              "Default"
+#define DEFAULT_HELP_BROWSER   GIMP_HELP_BROWSER_GIMP
+#define DEFAULT_THEME          "Default"
+
+#define DEFAULT_USER_MANUAL_ONLINE_URI \
+  "http://docs.gimp.org/"; GIMP_APP_VERSION_STRING
 
 #ifdef G_OS_WIN32
-#  define DEFAULT_WEB_BROWSER      "not used on Windows"
+#  define DEFAULT_WEB_BROWSER  "not used on Windows"
 #elif HAVE_CARBON
-#  define DEFAULT_WEB_BROWSER      "open %s"
+#  define DEFAULT_WEB_BROWSER  "open %s"
 #else
-#  define DEFAULT_WEB_BROWSER      "firefox %s"
+#  define DEFAULT_WEB_BROWSER  "firefox %s"
 #endif
 
 
@@ -74,6 +77,8 @@
   PROP_HELP_LOCALES,
   PROP_HELP_BROWSER,
   PROP_WEB_BROWSER,
+  PROP_USER_MANUAL_ONLINE,
+  PROP_USER_MANUAL_ONLINE_URI,
   PROP_TOOLBOX_WINDOW_HINT,
   PROP_DOCK_WINDOW_HINT,
   PROP_TRANSIENT_DOCKS,
@@ -217,13 +222,23 @@
   GIMP_CONFIG_INSTALL_PROP_ENUM (object_class, PROP_HELP_BROWSER,
                                  "help-browser", HELP_BROWSER_BLURB,
                                  GIMP_TYPE_HELP_BROWSER_TYPE,
-                                 DEFAULT_GIMP_HELP_BROWSER,
+                                 DEFAULT_HELP_BROWSER,
                                  GIMP_PARAM_STATIC_STRINGS);
   GIMP_CONFIG_INSTALL_PROP_PATH (object_class, PROP_WEB_BROWSER,
                                  "web-browser", WEB_BROWSER_BLURB,
                                  GIMP_CONFIG_PATH_FILE,
                                  DEFAULT_WEB_BROWSER,
                                  GIMP_PARAM_STATIC_STRINGS);
+  GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_USER_MANUAL_ONLINE,
+                                    "user-manual-online",
+                                    USER_MANUAL_ONLINE_BLURB,
+                                    FALSE,
+                                    GIMP_PARAM_STATIC_STRINGS);
+  GIMP_CONFIG_INSTALL_PROP_STRING (object_class, PROP_USER_MANUAL_ONLINE_URI,
+                                   "user-manual-online-uri",
+                                   USER_MANUAL_ONLINE_URI_BLURB,
+                                   DEFAULT_USER_MANUAL_ONLINE_URI,
+                                   GIMP_PARAM_STATIC_STRINGS);
   GIMP_CONFIG_INSTALL_PROP_ENUM (object_class, PROP_TOOLBOX_WINDOW_HINT,
                                  "toolbox-window-hint",
                                  TOOLBOX_WINDOW_HINT_BLURB,
@@ -263,6 +278,7 @@
   g_free (gui_config->theme);
   g_free (gui_config->help_locales);
   g_free (gui_config->web_browser);
+  g_free (gui_config->user_manual_online_uri);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -356,6 +372,13 @@
       g_free (gui_config->web_browser);
       gui_config->web_browser = g_value_dup_string (value);
       break;
+    case PROP_USER_MANUAL_ONLINE:
+      gui_config->user_manual_online = g_value_get_boolean (value);
+      break;
+    case PROP_USER_MANUAL_ONLINE_URI:
+      g_free (gui_config->user_manual_online_uri);
+      gui_config->user_manual_online_uri = g_value_dup_string (value);
+      break;
     case PROP_TOOLBOX_WINDOW_HINT:
       gui_config->toolbox_window_hint = g_value_get_enum (value);
       break;
@@ -460,6 +483,12 @@
     case PROP_WEB_BROWSER:
       g_value_set_string (value, gui_config->web_browser);
       break;
+    case PROP_USER_MANUAL_ONLINE:
+      g_value_set_boolean (value, gui_config->user_manual_online);
+      break;
+    case PROP_USER_MANUAL_ONLINE_URI:
+      g_value_set_string (value, gui_config->user_manual_online_uri);
+      break;
     case PROP_TOOLBOX_WINDOW_HINT:
       g_value_set_enum (value, gui_config->toolbox_window_hint);
       break;

Modified: trunk/app/config/gimpguiconfig.h
==============================================================================
--- trunk/app/config/gimpguiconfig.h	(original)
+++ trunk/app/config/gimpguiconfig.h	Thu Jun 12 20:14:44 2008
@@ -65,6 +65,8 @@
   gchar               *help_locales;
   GimpHelpBrowserType  help_browser;
   gchar               *web_browser;
+  gboolean             user_manual_online;
+  gchar               *user_manual_online_uri;
   GimpWindowHint       toolbox_window_hint;
   GimpWindowHint       dock_window_hint;
   gboolean             transient_docks;

Modified: trunk/app/config/gimprc-blurbs.h
==============================================================================
--- trunk/app/config/gimprc-blurbs.h	(original)
+++ trunk/app/config/gimprc-blurbs.h	Thu Jun 12 20:14:44 2008
@@ -419,6 +419,14 @@
 #define USE_HELP_BLURB  \
 N_("When enabled, pressing F1 will open the help browser.")
 
+#define USER_MANUAL_ONLINE_BLURB  \
+N_("When enabled, the online user manual will be used by the help system. " \
+   "Otherwise the locally installed copy is used.")
+
+#define USER_MANUAL_ONLINE_URI_BLURB \
+"The location of the online user manual. This is used if " \
+"'user-manual-online' is enabled."
+
 #define WEB_BROWSER_BLURB \
 N_("Sets the external web browser to be used.  This can be an absolute " \
    "path or the name of an executable to search for in the user's PATH. " \

Modified: trunk/app/widgets/gimphelp.c
==============================================================================
--- trunk/app/widgets/gimphelp.c	(original)
+++ trunk/app/widgets/gimphelp.c	Thu Jun 12 20:14:44 2008
@@ -80,7 +80,12 @@
                                            const gchar   *help_domain,
                                            const gchar   *help_locales,
                                            const gchar   *help_id);
-static gchar    * gimp_help_get_locales   (GimpGuiConfig *config);
+
+static gint       gimp_help_get_help_domains       (Gimp    *gimp,
+                                                    gchar ***domain_names,
+                                                    gchar ***domain_uris);
+static gchar    * gimp_help_get_default_domain_uri (Gimp    *gimp);
+static gchar    * gimp_help_get_locales            (Gimp    *gimp);
 
 
 /*  public functions  */
@@ -108,7 +113,7 @@
       if (help_domain && strlen (help_domain))
         idle_help->help_domain = g_strdup (help_domain);
 
-      idle_help->help_locales = gimp_help_get_locales (config);
+      idle_help->help_locales = gimp_help_get_locales (gimp);
 
       if (help_id && strlen (help_id))
         idle_help->help_id = g_strdup (help_id);
@@ -202,9 +207,7 @@
           return FALSE;
         }
 
-      n_domains = gimp_plug_in_manager_get_help_domains (gimp->plug_in_manager,
-                                                         &help_domains,
-                                                         &help_uris);
+      n_domains = gimp_help_get_help_domains (gimp, &help_domains, &help_uris);
 
       args = gimp_procedure_get_arguments (procedure);
       gimp_value_array_truncate (args, 5);
@@ -409,9 +412,62 @@
     }
 }
 
+static gint
+gimp_help_get_help_domains (Gimp    *gimp,
+                            gchar ***domain_names,
+                            gchar ***domain_uris)
+{
+  gchar **plug_in_domains = NULL;
+  gchar **plug_in_uris    = NULL;
+  gint    i, n_domains;
+
+  n_domains = gimp_plug_in_manager_get_help_domains (gimp->plug_in_manager,
+                                                     &plug_in_domains,
+                                                     &plug_in_uris);
+
+  *domain_names = g_new0 (gchar *, n_domains + 1);
+  *domain_uris  = g_new0 (gchar *, n_domains + 1);
+
+  *domain_names[0] = g_strdup ("http://www.gimp.org/help";);
+  *domain_uris[0]  = gimp_help_get_default_domain_uri (gimp);
+
+  for (i = 0; i < n_domains; i++)
+    {
+      *domain_names[i + 1] = plug_in_domains[i];
+      *domain_uris[i + 1]  = plug_in_uris[i];
+    }
+
+  g_free (plug_in_domains);
+  g_free (plug_in_uris);
+
+  return n_domains + 1;
+}
+
+static gchar *
+gimp_help_get_default_domain_uri (Gimp *gimp)
+{
+  GimpGuiConfig *config = GIMP_GUI_CONFIG (gimp->config);
+  gchar         *dir;
+  gchar         *uri;
+
+  if (g_getenv ("GIMP2_HELP_URI"))
+    return g_strdup (g_getenv ("GIMP2_HELP_URI"));
+
+  if (config->user_manual_online)
+    return g_strdup (config->user_manual_online_uri);
+
+  dir = g_build_filename (gimp_data_directory (), "help", NULL);
+  uri = g_filename_to_uri (dir, NULL, NULL);
+  g_free (dir);
+
+  return uri;
+}
+
 static gchar *
-gimp_help_get_locales (GimpGuiConfig *config)
+gimp_help_get_locales (Gimp *gimp)
 {
+  GimpGuiConfig *config = GIMP_GUI_CONFIG (gimp->config);
+
   if (config->help_locales && strlen (config->help_locales))
     return g_strdup (config->help_locales);
 

Modified: trunk/plug-ins/help/gimphelp.c
==============================================================================
--- trunk/plug-ins/help/gimphelp.c	(original)
+++ trunk/plug-ins/help/gimphelp.c	Thu Jun 12 20:14:44 2008
@@ -55,9 +55,7 @@
                 gint    num_domain_uris,
                 gchar **domain_uris)
 {
-  const gchar *default_env_domain_uri;
-  gchar       *default_domain_uri;
-  gint         i;
+  gint i;
 
   if (num_domain_names != num_domain_uris)
     {
@@ -66,31 +64,9 @@
       return FALSE;
     }
 
-  /*  set default values  */
-  default_env_domain_uri = g_getenv (GIMP_HELP_ENV_URI);
-
-  if (default_env_domain_uri)
-    {
-      default_domain_uri = g_strdup (default_env_domain_uri);
-    }
-  else
-    {
-      gchar *help_root = g_build_filename (gimp_data_directory (),
-                                           GIMP_HELP_PREFIX,
-                                           NULL);
-
-      default_domain_uri = g_filename_to_uri (help_root, NULL, NULL);
-
-      g_free (help_root);
-    }
-
-  gimp_help_register_domain (GIMP_HELP_DEFAULT_DOMAIN, default_domain_uri);
-
   for (i = 0; i < num_domain_names; i++)
     gimp_help_register_domain (domain_names[i], domain_uris[i]);
 
-  g_free (default_domain_uri);
-
   return TRUE;
 }
 
@@ -160,7 +136,7 @@
   if (*s)
     locales = g_list_append (locales, g_strdup (s));
 
-  /*  if the list doesn't contain the default domain yet, append it  */
+  /*  if the list doesn't contain the default locale yet, append it  */
   for (list = locales; list; list = list->next)
     if (strcmp ((const gchar *) list->data, GIMP_HELP_DEFAULT_LOCALE) == 0)
       break;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]