dnd fixes
[geeqie.git] / src / metadata.h
1 /*
2  * Geeqie
3  * (C) 2004 John Ellis
4  * Copyright (C) 2008 - 2009 The Geeqie Team
5  *
6  * Author: John Ellis, Laurent Monin
7  *
8  * This software is released under the GNU General Public License (GNU GPL).
9  * Please read the included file COPYING for more information.
10  * This software comes with no warranty of any kind, use at your own risk!
11  */
12
13
14 #ifndef METADATA_H
15 #define METADATA_H
16
17 #define COMMENT_KEY "Xmp.dc.description"
18 #define KEYWORD_KEY "Xmp.dc.subject"
19
20 gboolean metadata_write_queue_remove(FileData *fd);
21 gboolean metadata_write_queue_remove_list(GList *list);
22 gboolean metadata_write_perform(FileData *fd);
23 gboolean metadata_write_queue_confirm(FileUtilDoneFunc done_func, gpointer done_data);
24
25 gint metadata_queue_length(void);
26
27 gboolean metadata_write_list(FileData *fd, const gchar *key, const GList *values);
28 gboolean metadata_write_string(FileData *fd, const gchar *key, const char *value);
29
30 GList *metadata_read_list(FileData *fd, const gchar *key, MetadataFormat format);
31 gchar *metadata_read_string(FileData *fd, const gchar *key, MetadataFormat format);
32 guint64 metadata_read_int(FileData *fd, const gchar *key, guint64 fallback);
33
34 gboolean metadata_append_string(FileData *fd, const gchar *key, const char *value);
35 gboolean metadata_append_list(FileData *fd, const gchar *key, const GList *values);
36
37 GList *string_to_keywords_list(const gchar *text);
38 gchar *find_string_in_list_utf8nocase(GList *list, const gchar *string);
39
40 gboolean meta_data_get_keyword_mark(FileData *fd, gint n, gpointer data);
41 gboolean meta_data_set_keyword_mark(FileData *fd, gint n, gboolean value, gpointer data);
42
43
44 enum {
45         KEYWORD_COLUMN_MARK,
46         KEYWORD_COLUMN_NAME,
47         KEYWORD_COLUMN_CASEFOLD,
48         KEYWORD_COLUMN_IS_KEYWORD,
49         KEYWORD_COLUMN_COUNT
50 };
51
52 extern GtkTreeStore *keyword_tree;
53
54 gchar *keyword_get_name(GtkTreeModel *keyword_tree, GtkTreeIter *iter);
55 gchar *keyword_get_casefold(GtkTreeModel *keyword_tree, GtkTreeIter *iter);
56 gboolean keyword_get_is_keyword(GtkTreeModel *keyword_tree, GtkTreeIter *iter);
57
58 gboolean keyword_compare(GtkTreeModel *keyword_tree, GtkTreeIter *a, GtkTreeIter *b);
59
60 void keyword_copy(GtkTreeStore *keyword_tree, GtkTreeIter *to, GtkTreeIter *from);
61 void keyword_copy_recursive(GtkTreeStore *keyword_tree, GtkTreeIter *to, GtkTreeIter *from);
62 void keyword_move_recursive(GtkTreeStore *keyword_tree, GtkTreeIter *to, GtkTreeIter *from);
63
64 GList *keyword_tree_get_path(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr);
65 gboolean keyword_tree_get_iter(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr, GList *path);
66
67 void keyword_set(GtkTreeStore *keyword_tree, GtkTreeIter *iter, const gchar *name, gboolean is_keyword);
68 gboolean keyword_tree_is_set(GtkTreeModel *keyword_tree, GtkTreeIter *iter, GList *kw_list);
69 void keyword_tree_set(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr, GList **kw_list);
70 void keyword_tree_reset(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr, GList **kw_list);
71
72 void keyword_tree_new_default(void);
73
74
75 #endif
76 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */