libgimpbase/gimpbaseenums.[ch] changed enum GimpUserDirectory and API of

2007-08-11  Michael Natterer  <mitch@gimp.org>

	* libgimpbase/gimpbaseenums.[ch]
	* libgimpbase/gimpenv.[ch]: changed enum GimpUserDirectory and API
	of gimp_user_directory() so that g_get_user_special_dir() can be
	used instead as soon as we depend on GLib 2.14.

	* tools/pdbgen/enums.pl: regenerated.

	* app/widgets/gimpfiledialog.c
	* plug-ins/pygimp/gimpmodule.c: changed accordingly.


svn path=/trunk/; revision=23212
This commit is contained in:
Michael Natterer 2007-08-11 17:15:52 +00:00 committed by Michael Natterer
parent 7f5d403615
commit 0d17856e58
8 changed files with 97 additions and 67 deletions

View File

@ -1,3 +1,15 @@
2007-08-11 Michael Natterer <mitch@gimp.org>
* libgimpbase/gimpbaseenums.[ch]
* libgimpbase/gimpenv.[ch]: changed enum GimpUserDirectory and API
of gimp_user_directory() so that g_get_user_special_dir() can be
used instead as soon as we depend on GLib 2.14.
* tools/pdbgen/enums.pl: regenerated.
* app/widgets/gimpfiledialog.c
* plug-ins/pygimp/gimpmodule.c: changed accordingly.
2007-08-11 Sven Neumann <sven@gimp.org>
* menus/image-menu.xml.in: added "<Image>/Image/Mode/Color Profile"

View File

@ -256,7 +256,7 @@ gimp_file_dialog_new (Gimp *gimp,
GSList *file_procs;
const gchar *automatic;
const gchar *automatic_help_id;
gchar *pictures;
const gchar *pictures;
gboolean local_only;
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
@ -338,11 +338,8 @@ gimp_file_dialog_new (Gimp *gimp,
pictures = gimp_user_directory (GIMP_USER_DIRECTORY_PICTURES);
if (pictures)
{
gtk_file_chooser_add_shortcut_folder (GTK_FILE_CHOOSER (dialog),
pictures, NULL);
g_free (pictures);
}
gimp_file_dialog_add_preview (dialog, gimp);

View File

@ -1038,8 +1038,10 @@ gimp_user_directory_get_type (void)
{
{ GIMP_USER_DIRECTORY_DESKTOP, "GIMP_USER_DIRECTORY_DESKTOP", "desktop" },
{ GIMP_USER_DIRECTORY_DOCUMENTS, "GIMP_USER_DIRECTORY_DOCUMENTS", "documents" },
{ GIMP_USER_DIRECTORY_DOWNLOAD, "GIMP_USER_DIRECTORY_DOWNLOAD", "download" },
{ GIMP_USER_DIRECTORY_MUSIC, "GIMP_USER_DIRECTORY_MUSIC", "music" },
{ GIMP_USER_DIRECTORY_PICTURES, "GIMP_USER_DIRECTORY_PICTURES", "pictures" },
{ GIMP_USER_DIRECTORY_PUBLIC_SHARE, "GIMP_USER_DIRECTORY_PUBLIC_SHARE", "public-share" },
{ GIMP_USER_DIRECTORY_TEMPLATES, "GIMP_USER_DIRECTORY_TEMPLATES", "templates" },
{ GIMP_USER_DIRECTORY_VIDEOS, "GIMP_USER_DIRECTORY_VIDEOS", "videos" },
{ 0, NULL, NULL }
@ -1049,8 +1051,10 @@ gimp_user_directory_get_type (void)
{
{ GIMP_USER_DIRECTORY_DESKTOP, "GIMP_USER_DIRECTORY_DESKTOP", NULL },
{ GIMP_USER_DIRECTORY_DOCUMENTS, "GIMP_USER_DIRECTORY_DOCUMENTS", NULL },
{ GIMP_USER_DIRECTORY_DOWNLOAD, "GIMP_USER_DIRECTORY_DOWNLOAD", NULL },
{ GIMP_USER_DIRECTORY_MUSIC, "GIMP_USER_DIRECTORY_MUSIC", NULL },
{ GIMP_USER_DIRECTORY_PICTURES, "GIMP_USER_DIRECTORY_PICTURES", NULL },
{ GIMP_USER_DIRECTORY_PUBLIC_SHARE, "GIMP_USER_DIRECTORY_PUBLIC_SHARE", NULL },
{ GIMP_USER_DIRECTORY_TEMPLATES, "GIMP_USER_DIRECTORY_TEMPLATES", NULL },
{ GIMP_USER_DIRECTORY_VIDEOS, "GIMP_USER_DIRECTORY_VIDEOS", NULL },
{ 0, NULL, NULL }

View File

@ -457,8 +457,10 @@ typedef enum
{
GIMP_USER_DIRECTORY_DESKTOP,
GIMP_USER_DIRECTORY_DOCUMENTS,
GIMP_USER_DIRECTORY_DOWNLOAD,
GIMP_USER_DIRECTORY_MUSIC,
GIMP_USER_DIRECTORY_PICTURES,
GIMP_USER_DIRECTORY_PUBLIC_SHARE,
GIMP_USER_DIRECTORY_TEMPLATES,
GIMP_USER_DIRECTORY_VIDEOS
} GimpUserDirectory;

View File

@ -488,6 +488,8 @@ find_folder (OSType type)
}
#endif
static gchar **gimp_user_directories = NULL;
/**
* gimp_user_directory:
* @type: the type of user directory to retrieve
@ -498,77 +500,87 @@ find_folder (OSType type)
* Plug-ins may want to use this function to add shortcuts to such
* folders to a file-chooser.
*
* Returns: a newly allocated directory name in filesystem encoding,
* or %NULL
* Returns: The path to the specified user directory, or %NULL if the
* logical ID was not found.
*
* Since: GIMP 2.4
**/
gchar *
const gchar *
gimp_user_directory (GimpUserDirectory type)
{
switch (type)
g_return_val_if_fail (type >= GIMP_USER_DIRECTORY_DESKTOP &&
type <= GIMP_USER_DIRECTORY_VIDEOS, NULL);
if (G_UNLIKELY (gimp_user_directories == NULL))
{
gimp_user_directories = g_new0 (gchar *, GIMP_USER_DIRECTORY_VIDEOS + 1);
#ifdef G_OS_WIN32
case GIMP_USER_DIRECTORY_DESKTOP:
return get_special_folder (CSIDL_DESKTOPDIRECTORY);
case GIMP_USER_DIRECTORY_DOCUMENTS:
return get_special_folder (CSIDL_MYDOCUMENTS);
case GIMP_USER_DIRECTORY_MUSIC:
return get_special_folder (CSIDL_MYMUSIC);
case GIMP_USER_DIRECTORY_PICTURES:
return get_special_folder (CSIDL_MYPICTURES);
case GIMP_USER_DIRECTORY_TEMPLATES:
return get_special_folder (CSIDL_TEMPLATES);
case GIMP_USER_DIRECTORY_VIDEOS:
return get_special_folder (CSIDL_MYVIDEO);
gimp_user_directories[GIMP_USER_DIRECTORY_DESKTOP] =
get_special_folder (CSIDL_DESKTOPDIRECTORY);
gimp_user_directories[GIMP_USER_DIRECTORY_DOCUMENTS] =
get_special_folder (CSIDL_MYDOCUMENTS);
gimp_user_directories[GIMP_USER_DIRECTORY_DOWNLOAD] =
get_special_folder (CSIDL_DESKTOPDIRECTORY);
gimp_user_directories[GIMP_USER_DIRECTORY_MUSIC] =
get_special_folder (CSIDL_MYMUSIC);
gimp_user_directories[GIMP_USER_DIRECTORY_PICTURES] =
get_special_folder (CSIDL_MYPICTURES);
gimp_user_directories[GIMP_USER_DIRECTORY_PUBLIC_SHARE] =
get_special_folder (CSIDL_COMMON_DOCUMENTS);
gimp_user_directories[GIMP_USER_DIRECTORY_TEMPLATES] =
get_special_folder (CSIDL_TEMPLATES);
gimp_user_directories[GIMP_USER_DIRECTORY_VIDEOS] =
get_special_folder (CSIDL_MYVIDEO);
#elif HAVE_CARBON
case GIMP_USER_DIRECTORY_DESKTOP:
return find_folder (kDesktopFolderType);
case GIMP_USER_DIRECTORY_DOCUMENTS:
return find_folder (kDocumentsFolderType);
case GIMP_USER_DIRECTORY_MUSIC:
return find_folder (kMusicDocumentsFolderType);
case GIMP_USER_DIRECTORY_PICTURES:
return find_folder (kPictureDocumentsFolderType);
case GIMP_USER_DIRECTORY_TEMPLATES:
return NULL;
case GIMP_USER_DIRECTORY_VIDEOS:
return find_folder (kMovieDocumentsFolderType);
gimp_user_directories[GIMP_USER_DIRECTORY_DESKTOP] =
find_folder (kDesktopFolderType);
gimp_user_directories[GIMP_USER_DIRECTORY_DOCUMENTS] =
find_folder (kDocumentsFolderType);
gimp_user_directories[GIMP_USER_DIRECTORY_DOWNLOAD] =
find_folder (kDesktopFolderType); /* ??? */
gimp_user_directories[GIMP_USER_DIRECTORY_MUSIC] =
find_folder (kMusicDocumentsFolderType);
gimp_user_directories[GIMP_USER_DIRECTORY_PICTURES] =
find_folder (kPictureDocumentsFolderType);
gimp_user_directories[GIMP_USER_DIRECTORY_PUBLIC_SHARE] = NULL;
gimp_user_directories[GIMP_USER_DIRECTORY_TEMPLATES] = NULL;
gimp_user_directories[GIMP_USER_DIRECTORY_VIDEOS] =
find_folder (kMovieDocumentsFolderType);
#else
case GIMP_USER_DIRECTORY_DESKTOP:
return _xdg_user_dir_lookup ("DESKTOP");
case GIMP_USER_DIRECTORY_DOCUMENTS:
return _xdg_user_dir_lookup ("DOCUMENTS");
case GIMP_USER_DIRECTORY_MUSIC:
return _xdg_user_dir_lookup ("MUSIC");
case GIMP_USER_DIRECTORY_PICTURES:
return _xdg_user_dir_lookup ("PICTURES");
case GIMP_USER_DIRECTORY_TEMPLATES:
return _xdg_user_dir_lookup ("TEMPLATES");
case GIMP_USER_DIRECTORY_VIDEOS:
return _xdg_user_dir_lookup ("VIDEOS");
gimp_user_directories[GIMP_USER_DIRECTORY_DESKTOP] =
_xdg_user_dir_lookup ("DESKTOP");
gimp_user_directories[GIMP_USER_DIRECTORY_DOCUMENTS] =
_xdg_user_dir_lookup ("DOCUMENTS");
gimp_user_directories[GIMP_USER_DIRECTORY_DOWNLOAD] =
_xdg_user_dir_lookup ("DOWNLOAD");
gimp_user_directories[GIMP_USER_DIRECTORY_MUSIC] =
_xdg_user_dir_lookup ("MUSIC");
gimp_user_directories[GIMP_USER_DIRECTORY_PICTURES] =
_xdg_user_dir_lookup ("PICTURES");
gimp_user_directories[GIMP_USER_DIRECTORY_PUBLIC_SHARE] =
_xdg_user_dir_lookup ("PUBLICSHARE");
gimp_user_directories[GIMP_USER_DIRECTORY_TEMPLATES] =
_xdg_user_dir_lookup ("TEMPLATES");
gimp_user_directories[GIMP_USER_DIRECTORY_VIDEOS] =
_xdg_user_dir_lookup ("VIDEOS");
#endif
default:
return NULL;
/* Special-case desktop for historical compatibility */
if (gimp_user_directories[GIMP_USER_DIRECTORY_DESKTOP] == NULL)
{
gimp_user_directories[GIMP_USER_DIRECTORY_DESKTOP] =
g_build_filename (g_get_home_dir (), "Desktop", NULL);
}
}
return gimp_user_directories[type];
}
/**

View File

@ -49,7 +49,7 @@ 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;
const gchar * gimp_plug_in_directory (void) G_GNUC_CONST;
gchar * gimp_user_directory (GimpUserDirectory type) G_GNUC_MALLOC;
const gchar * gimp_user_directory (GimpUserDirectory type) G_GNUC_CONST;
const gchar * gimp_gtkrc (void) G_GNUC_CONST;
gchar * gimp_personal_rc_file (const gchar *basename) G_GNUC_MALLOC;

View File

@ -1399,7 +1399,7 @@ static PyObject *
pygimp_user_directory(PyObject *self, PyObject *args, PyObject *kwargs)
{
GimpUserDirectory type;
char *user_dir;
const char *user_dir;
PyObject *py_type, *ret;
static char *kwlist[] = { "type", NULL };
@ -1416,7 +1416,6 @@ pygimp_user_directory(PyObject *self, PyObject *args, PyObject *kwargs)
if (user_dir) {
ret = PyString_FromString(user_dir);
g_free(user_dir);
} else {
Py_INCREF(Py_None);
ret = Py_None;

View File

@ -353,16 +353,20 @@ package Gimp::CodeGen::enums;
header => 'libgimpbase/gimpbaseenums.h',
symbols => [ qw(GIMP_USER_DIRECTORY_DESKTOP
GIMP_USER_DIRECTORY_DOCUMENTS
GIMP_USER_DIRECTORY_DOWNLOAD
GIMP_USER_DIRECTORY_MUSIC
GIMP_USER_DIRECTORY_PICTURES
GIMP_USER_DIRECTORY_PUBLIC_SHARE
GIMP_USER_DIRECTORY_TEMPLATES
GIMP_USER_DIRECTORY_VIDEOS) ],
mapping => { GIMP_USER_DIRECTORY_DESKTOP => '0',
GIMP_USER_DIRECTORY_DOCUMENTS => '1',
GIMP_USER_DIRECTORY_MUSIC => '2',
GIMP_USER_DIRECTORY_PICTURES => '3',
GIMP_USER_DIRECTORY_TEMPLATES => '4',
GIMP_USER_DIRECTORY_VIDEOS => '5' }
GIMP_USER_DIRECTORY_DOWNLOAD => '2',
GIMP_USER_DIRECTORY_MUSIC => '3',
GIMP_USER_DIRECTORY_PICTURES => '4',
GIMP_USER_DIRECTORY_PUBLIC_SHARE => '5',
GIMP_USER_DIRECTORY_TEMPLATES => '6',
GIMP_USER_DIRECTORY_VIDEOS => '7' }
},
GimpVectorsStrokeType =>
{ contig => 1,