libgimpbase: add gimp_installation_directory()

which returns the toplevel directory of the running GIMP installation.
This commit is contained in:
Michael Natterer
2012-05-23 11:49:07 +02:00
parent 7d280abd9a
commit 010b28f39e
3 changed files with 25 additions and 5 deletions

View File

@ -41,6 +41,7 @@ EXPORTS
gimp_icon_type_get_type
gimp_image_base_type_get_type
gimp_image_type_get_type
gimp_installation_directory
gimp_interpolation_type_get_type
gimp_locale_directory
gimp_major_version

View File

@ -321,8 +321,26 @@ DllMain (HINSTANCE hinstDLL,
#endif
static const gchar *
gimp_toplevel_directory (void)
/**
* gimp_installation_directory:
*
* Returns the top installation directory of GIMP. On Unix the
* compile-time defined installation prefix is used. On Windows, the
* installation directory as deduced from the executable's full
* filename is used. On OSX we ask [NSBundle mainBundle] for the
* resource path to check if GIMP is part of a relocatable bundle.
*
* The returned string is owned by GIMP and must not be modified or
* freed. The returned string is in the encoding used for filenames by
* GLib, which isn't necessarily UTF-8. (On Windows it always is
* UTF-8.)
*
* Since: GIMP 2.8
*
* Returns: The toplevel installation directory of GIMP.
**/
const gchar *
gimp_installation_directory (void)
{
static gchar *toplevel = NULL;
@ -655,7 +673,7 @@ gimp_path_runtime_fix (gchar **path)
* real one on this machine.
*/
p = *path;
*path = g_strconcat (gimp_toplevel_directory (),
*path = g_strconcat (gimp_installation_directory (),
"\\",
*path + strlen (PREFIX "/"),
NULL);
@ -674,7 +692,7 @@ gimp_path_runtime_fix (gchar **path)
gchar *p = *path;
if (!g_path_is_absolute (p))
{
*path = g_build_filename (gimp_toplevel_directory (), *path, NULL);
*path = g_build_filename (gimp_installation_directory (), *path, NULL);
g_free (p);
}
#else
@ -687,7 +705,7 @@ gimp_path_runtime_fix (gchar **path)
* real one on this machine.
*/
p = *path;
*path = g_build_filename (gimp_toplevel_directory (),
*path = g_build_filename (gimp_installation_directory (),
*path + strlen (PREFIX G_DIR_SEPARATOR_S),
NULL);
g_free (p);

View File

@ -48,6 +48,7 @@ GIMPVAR const guint gimp_micro_version;
const gchar * gimp_directory (void) G_GNUC_CONST;
const gchar * gimp_installation_directory (void) G_GNUC_CONST;
const gchar * gimp_data_directory (void) G_GNUC_CONST;
const gchar * gimp_locale_directory (void) G_GNUC_CONST;
const gchar * gimp_sysconf_directory (void) G_GNUC_CONST;