diff options
Diffstat (limited to 'gedit/gedit-dirs.c')
-rwxr-xr-x | gedit/gedit-dirs.c | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/gedit/gedit-dirs.c b/gedit/gedit-dirs.c new file mode 100755 index 00000000..a1467f61 --- /dev/null +++ b/gedit/gedit-dirs.c @@ -0,0 +1,320 @@ +/* + * gedit-dirs.c + * This file is part of gedit + * + * Copyright (C) 2008 Ignacio Casal Quinteiro + * + * 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. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "gedit-dirs.h" + +#ifdef OS_OSX +#include <ige-mac-bundle.h> +#endif + +gchar * +gedit_dirs_get_user_config_dir (void) +{ + gchar *config_dir = NULL; + +#ifndef G_OS_WIN32 + const gchar *envvar; + const gchar *home; + + /* Support old libmate env var */ + envvar = g_getenv ("MATE22_USER_DIR"); + if (envvar != NULL) + { + config_dir = g_build_filename (envvar, + "gedit", + NULL); + + } + else + { + home = g_get_home_dir (); + + if (home != NULL) + { + config_dir = g_build_filename (home, + ".mate2", + "gedit", + NULL); + } + } +#else + config_dir = g_build_filename (g_get_user_config_dir (), + "gedit", + NULL); +#endif + + return config_dir; +} + +gchar * +gedit_dirs_get_user_cache_dir (void) +{ + const gchar *cache_dir; + + cache_dir = g_get_user_cache_dir (); + + return g_build_filename (cache_dir, + "gedit", + NULL); +} + +gchar * +gedit_dirs_get_user_plugins_dir (void) +{ + gchar *config_dir; + gchar *plugin_dir; + + config_dir = gedit_dirs_get_user_config_dir (); + + plugin_dir = g_build_filename (config_dir, + "plugins", + NULL); + g_free (config_dir); + + return plugin_dir; +} + +gchar * +gedit_dirs_get_user_accels_file (void) +{ + gchar *accels = NULL; + +#ifndef G_OS_WIN32 + const gchar *envvar; + const gchar *home; + + /* on linux accels are stored in .mate2/accels + * for historic reasons (backward compat with the + * old libmate that took care of saving them */ + + /* Support old libmate env var */ + envvar = g_getenv ("MATE22_USER_DIR"); + if (envvar != NULL) + { + accels = g_build_filename (envvar, + "accels", + "gedit", + NULL); + } + else + { + home = g_get_home_dir (); + + if (home != NULL) + { + accels = g_build_filename (home, + ".mate2", + "accels", + "gedit", + NULL); + } + } +#else + { + gchar *config_dir = NULL; + + config_dir = gedit_dirs_get_user_config_dir (); + accels = g_build_filename (config_dir, + "accels", + "gedit", + NULL); + + g_free (config_dir); + } +#endif + + return accels; +} + +gchar * +gedit_dirs_get_gedit_data_dir (void) +{ + gchar *data_dir; + +#ifdef G_OS_WIN32 + gchar *win32_dir; + + win32_dir = g_win32_get_package_installation_directory_of_module (NULL); + + data_dir = g_build_filename (win32_dir, + "share", + "gedit-2", + NULL); + + g_free (win32_dir); +#elif defined (OS_OSX) + IgeMacBundle *bundle = ige_mac_bundle_get_default (); + + if (ige_mac_bundle_get_is_app_bundle (bundle)) + { + const gchar *bundle_data_dir = ige_mac_bundle_get_datadir (bundle); + + data_dir = g_build_filename (bundle_data_dir, + "gedit-2", + NULL); + } + else + { + data_dir = g_build_filename (DATADIR, "gedit-2", NULL); + } +#else + data_dir = g_build_filename (DATADIR, + "gedit-2", + NULL); +#endif + + return data_dir; +} + +gchar * +gedit_dirs_get_gedit_locale_dir (void) +{ + gchar *locale_dir; + +#ifdef G_OS_WIN32 + gchar *win32_dir; + + win32_dir = g_win32_get_package_installation_directory_of_module (NULL); + + locale_dir = g_build_filename (win32_dir, + "share", + "locale", + NULL); + + g_free (win32_dir); +#elif defined (OS_OSX) + IgeMacBundle *bundle = ige_mac_bundle_get_default (); + + if (ige_mac_bundle_get_is_app_bundle (bundle)) + { + locale_dir = g_strdup (ige_mac_bundle_get_localedir (bundle)); + } + else + { + locale_dir = g_build_filename (DATADIR, + "locale", + NULL); + } +#else + locale_dir = g_build_filename (DATADIR, + "locale", + NULL); +#endif + + return locale_dir; +} + +gchar * +gedit_dirs_get_gedit_lib_dir (void) +{ + gchar *lib_dir; + +#ifdef G_OS_WIN32 + gchar *win32_dir; + + win32_dir = g_win32_get_package_installation_directory_of_module (NULL); + + lib_dir = g_build_filename (win32_dir, + "lib", + "gedit-2", + NULL); + + g_free (win32_dir); +#elif defined (OS_OSX) + IgeMacBundle *bundle = ige_mac_bundle_get_default (); + + if (ige_mac_bundle_get_is_app_bundle (bundle)) + { + const gchar *path = ige_mac_bundle_get_resourcesdir (bundle); + lib_dir = g_build_filename (path, + "lib", + "gedit-2", + NULL); + } + else + { + lib_dir = g_build_filename (LIBDIR, + "gedit-2", + NULL); + } +#else + lib_dir = g_build_filename (LIBDIR, + "gedit-2", + NULL); +#endif + + return lib_dir; +} + +gchar * +gedit_dirs_get_gedit_plugins_dir (void) +{ + gchar *lib_dir; + gchar *plugin_dir; + + lib_dir = gedit_dirs_get_gedit_lib_dir (); + + plugin_dir = g_build_filename (lib_dir, + "plugins", + NULL); + g_free (lib_dir); + + return plugin_dir; +} + +gchar * +gedit_dirs_get_gedit_plugin_loaders_dir (void) +{ + gchar *lib_dir; + gchar *loader_dir; + + lib_dir = gedit_dirs_get_gedit_lib_dir (); + + loader_dir = g_build_filename (lib_dir, + "plugin-loaders", + NULL); + g_free (lib_dir); + + return loader_dir; +} + +gchar * +gedit_dirs_get_ui_file (const gchar *file) +{ + gchar *datadir; + gchar *ui_file; + + g_return_val_if_fail (file != NULL, NULL); + + datadir = gedit_dirs_get_gedit_data_dir (); + ui_file = g_build_filename (datadir, + "ui", + file, + NULL); + g_free (datadir); + + return ui_file; +} |