libgimpbase: add gimp_installation_directory()
which returns the toplevel directory of the running GIMP installation.
(cherry picked from commit 010b28f39e)
It's not exactly clean to add new API in 2.8.1, but this is so useful
for proper relocation, I've made an exception.
This commit is contained in:
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user