Mercurial > hg > forks > geeqie
annotate src/metadata.c @ 2607:4a7ef0180612
Fix writing to meta files
Some time ago, this seemed to break. It should never have worked as it
took the image extension and compare it to "...meta".
author | Klaus Ethgen <Klaus@Ethgen.de> |
---|---|
date | Sun, 17 Sep 2017 15:12:21 +0100 |
parents | c6a11c0bade8 |
children | 7a7e180298b1 |
rev | line source |
---|---|
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1 /* |
2350
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
2 * Copyright (C) 2004 John Ellis |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
3 * Copyright (C) 2008 - 2016 The Geeqie Team |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
4 * |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
5 * Authors: John Ellis, Laurent Monin |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
6 * |
2350
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
7 * This program is free software; you can redistribute it and/or modify |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
8 * it under the terms of the GNU General Public License as published by |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
9 * the Free Software Foundation; either version 2 of the License, or |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
10 * (at your option) any later version. |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
11 * |
2350
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
15 * GNU General Public License for more details. |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
16 * |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
17 * You should have received a copy of the GNU General Public License along |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
18 * with this program; if not, write to the Free Software Foundation, Inc., |
95507e596256
Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents:
2185
diff
changeset
|
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
20 */ |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
21 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
22 #include "main.h" |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
23 #include "metadata.h" |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
24 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
25 #include "cache.h" |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
26 #include "exif.h" |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
27 #include "filedata.h" |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
28 #include "misc.h" |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
29 #include "secure_save.h" |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
30 #include "ui_fileops.h" |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
31 #include "ui_misc.h" |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
32 #include "utilops.h" |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
33 #include "filefilter.h" |
1582
f137ec3fd85e
- handle color profile and write metadata buttons on statusbar by ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1568
diff
changeset
|
34 #include "layout_util.h" |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
35 #include "rcfile.h" |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
36 |
1191
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
37 typedef enum { |
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
38 MK_NONE, |
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
39 MK_KEYWORDS, |
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
40 MK_COMMENT |
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
41 } MetadataKey; |
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
42 |
1597
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
43 static const gchar *group_keys[] = { /* tags that will be written to all files in a group, options->metadata.sync_grouped_files */ |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
44 "Xmp.dc.title", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
45 "Xmp.photoshop.Urgency", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
46 "Xmp.photoshop.Category", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
47 "Xmp.photoshop.SupplementalCategory", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
48 "Xmp.dc.subject", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
49 "Xmp.iptc.Location", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
50 "Xmp.photoshop.Instruction", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
51 "Xmp.photoshop.DateCreated", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
52 "Xmp.dc.creator", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
53 "Xmp.photoshop.AuthorsPosition", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
54 "Xmp.photoshop.City", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
55 "Xmp.photoshop.State", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
56 "Xmp.iptc.CountryCode", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
57 "Xmp.photoshop.Country", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
58 "Xmp.photoshop.TransmissionReference", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
59 "Xmp.photoshop.Headline", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
60 "Xmp.photoshop.Credit", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
61 "Xmp.photoshop.Source", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
62 "Xmp.dc.rights", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
63 "Xmp.dc.description", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
64 "Xmp.photoshop.CaptionWriter", |
3e20c76ee7ea
extended the list of grouped metadata tags
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1593
diff
changeset
|
65 NULL}; |
1204
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
66 |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
67 static gboolean metadata_write_queue_idle_cb(gpointer data); |
1434 | 68 static gboolean metadata_legacy_write(FileData *fd); |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
69 static void metadata_legacy_delete(FileData *fd, const gchar *except); |
1683
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
70 static gboolean metadata_file_read(gchar *path, GList **keywords, gchar **comment); |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
71 |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
72 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
73 /* |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
74 *------------------------------------------------------------------- |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
75 * long-term cache - keep keywords from whole dir in memory |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
76 *------------------------------------------------------------------- |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
77 */ |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
78 |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
79 /* fd->cached metadata list of lists |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
80 each particular list contains key as a first entry, then the values |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
81 */ |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
82 |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
83 static void metadata_cache_update(FileData *fd, const gchar *key, const GList *values) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
84 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
85 GList *work; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
86 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
87 work = fd->cached_metadata; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
88 while (work) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
89 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
90 GList *entry = work->data; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
91 gchar *entry_key = entry->data; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
92 |
2184 | 93 if (strcmp(entry_key, key) == 0) |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
94 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
95 /* key found - just replace values */ |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
96 GList *old_values = entry->next; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
97 entry->next = NULL; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
98 old_values->prev = NULL; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
99 string_list_free(old_values); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
100 work->data = g_list_append(entry, string_list_copy(values)); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
101 DEBUG_1("updated %s %s\n", key, fd->path); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
102 return; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
103 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
104 work = work->next; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
105 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
106 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
107 /* key not found - prepend new entry */ |
2184 | 108 fd->cached_metadata = g_list_prepend(fd->cached_metadata, |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
109 g_list_prepend(string_list_copy(values), g_strdup(key))); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
110 DEBUG_1("added %s %s\n", key, fd->path); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
111 |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
112 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
113 |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
114 static const GList *metadata_cache_get(FileData *fd, const gchar *key) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
115 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
116 GList *work; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
117 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
118 work = fd->cached_metadata; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
119 while (work) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
120 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
121 GList *entry = work->data; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
122 gchar *entry_key = entry->data; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
123 |
2184 | 124 if (strcmp(entry_key, key) == 0) |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
125 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
126 /* key found */ |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
127 DEBUG_1("found %s %s\n", key, fd->path); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
128 return entry; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
129 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
130 work = work->next; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
131 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
132 return NULL; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
133 DEBUG_1("not found %s %s\n", key, fd->path); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
134 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
135 |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
136 static void metadata_cache_remove(FileData *fd, const gchar *key) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
137 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
138 GList *work; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
139 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
140 work = fd->cached_metadata; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
141 while (work) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
142 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
143 GList *entry = work->data; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
144 gchar *entry_key = entry->data; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
145 |
2184 | 146 if (strcmp(entry_key, key) == 0) |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
147 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
148 /* key found */ |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
149 string_list_free(entry); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
150 fd->cached_metadata = g_list_delete_link(fd->cached_metadata, work); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
151 DEBUG_1("removed %s %s\n", key, fd->path); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
152 return; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
153 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
154 work = work->next; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
155 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
156 DEBUG_1("not removed %s %s\n", key, fd->path); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
157 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
158 |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
159 void metadata_cache_free(FileData *fd) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
160 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
161 GList *work; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
162 if (fd->cached_metadata) DEBUG_1("freed %s\n", fd->path); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
163 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
164 work = fd->cached_metadata; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
165 while (work) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
166 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
167 GList *entry = work->data; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
168 string_list_free(entry); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
169 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
170 work = work->next; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
171 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
172 g_list_free(fd->cached_metadata); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
173 fd->cached_metadata = NULL; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
174 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
175 |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
176 |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
177 |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
178 |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
179 |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
180 |
1204
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
181 /* |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
182 *------------------------------------------------------------------- |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
183 * write queue |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
184 *------------------------------------------------------------------- |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
185 */ |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
186 |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
187 static GList *metadata_write_queue = NULL; |
1523
e52aabe8fc7a
Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents:
1509
diff
changeset
|
188 static guint metadata_write_idle_id = 0; /* event source id */ |
1204
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
189 |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
190 static void metadata_write_queue_add(FileData *fd) |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
191 { |
1218
7274b21b5533
improved buffering and notifications
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
192 if (!g_list_find(metadata_write_queue, fd)) |
7274b21b5533
improved buffering and notifications
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
193 { |
7274b21b5533
improved buffering and notifications
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
194 metadata_write_queue = g_list_prepend(metadata_write_queue, fd); |
7274b21b5533
improved buffering and notifications
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
195 file_data_ref(fd); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
196 |
1582
f137ec3fd85e
- handle color profile and write metadata buttons on statusbar by ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1568
diff
changeset
|
197 layout_util_status_update_write_all(); |
1218
7274b21b5533
improved buffering and notifications
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
198 } |
1204
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
199 |
2184 | 200 if (metadata_write_idle_id) |
1214
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1211
diff
changeset
|
201 { |
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1211
diff
changeset
|
202 g_source_remove(metadata_write_idle_id); |
1523
e52aabe8fc7a
Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents:
1509
diff
changeset
|
203 metadata_write_idle_id = 0; |
1214
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1211
diff
changeset
|
204 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
205 |
1244
eeefa0f10d39
improved metadata preferences
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1243
diff
changeset
|
206 if (options->metadata.confirm_after_timeout) |
1214
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1211
diff
changeset
|
207 { |
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1211
diff
changeset
|
208 metadata_write_idle_id = g_timeout_add(options->metadata.confirm_timeout * 1000, metadata_write_queue_idle_cb, NULL); |
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1211
diff
changeset
|
209 } |
1204
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
210 } |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
211 |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
212 |
1205
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
213 gboolean metadata_write_queue_remove(FileData *fd) |
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
214 { |
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
215 g_hash_table_destroy(fd->modified_xmp); |
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
216 fd->modified_xmp = NULL; |
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
217 |
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
218 metadata_write_queue = g_list_remove(metadata_write_queue, fd); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
219 |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
220 file_data_increment_version(fd); |
1432
7f454e7d07a3
improved notification system
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1429
diff
changeset
|
221 file_data_send_notification(fd, NOTIFY_REREAD); |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
222 |
1205
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
223 file_data_unref(fd); |
1240
6a1f19764c63
added a status bar button for writting metadata immediately
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1238
diff
changeset
|
224 |
1582
f137ec3fd85e
- handle color profile and write metadata buttons on statusbar by ui_manager
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1568
diff
changeset
|
225 layout_util_status_update_write_all(); |
1205
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
226 return TRUE; |
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
227 } |
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
228 |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
229 gboolean metadata_write_queue_remove_list(GList *list) |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
230 { |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
231 GList *work; |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
232 gboolean ret = TRUE; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
233 |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
234 work = list; |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
235 while (work) |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
236 { |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
237 FileData *fd = work->data; |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
238 work = work->next; |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
239 ret = ret && metadata_write_queue_remove(fd); |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
240 } |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
241 return ret; |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
242 } |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
243 |
1720
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
244 void metadata_notify_cb(FileData *fd, NotifyType type, gpointer data) |
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
245 { |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
246 if (type & (NOTIFY_REREAD | NOTIFY_CHANGE)) |
1720
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
247 { |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
248 metadata_cache_free(fd); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
249 |
2184 | 250 if (g_list_find(metadata_write_queue, fd)) |
1720
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
251 { |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
252 DEBUG_1("Notify metadata: %s %04x", fd->path, type); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
253 if (!isname(fd->path)) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
254 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
255 /* ignore deleted files */ |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
256 metadata_write_queue_remove(fd); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
257 } |
1720
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
258 } |
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
259 } |
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
260 } |
1205
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
261 |
1586
b8515ea34e58
force the metadata dialog if it was triggered by the menu or the button
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1582
diff
changeset
|
262 gboolean metadata_write_queue_confirm(gboolean force_dialog, FileUtilDoneFunc done_func, gpointer done_data) |
1205
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
263 { |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
264 GList *work; |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
265 GList *to_approve = NULL; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
266 |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
267 work = metadata_write_queue; |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
268 while (work) |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
269 { |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
270 FileData *fd = work->data; |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
271 work = work->next; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
272 |
1720
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
273 if (!isname(fd->path)) |
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
274 { |
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
275 /* ignore deleted files */ |
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
276 metadata_write_queue_remove(fd); |
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
277 continue; |
3efe2125cdcc
remove deleted files from metadata queue
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1715
diff
changeset
|
278 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
279 |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
280 if (fd->change) continue; /* another operation in progress, skip this file for now */ |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
281 |
1225
b43a97da2cb7
fixed previous change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1224
diff
changeset
|
282 to_approve = g_list_prepend(to_approve, file_data_ref(fd)); |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
283 } |
1205
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
284 |
1586
b8515ea34e58
force the metadata dialog if it was triggered by the menu or the button
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1582
diff
changeset
|
285 file_util_write_metadata(NULL, to_approve, NULL, force_dialog, done_func, done_data); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
286 |
1214
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1211
diff
changeset
|
287 return (metadata_write_queue != NULL); |
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1211
diff
changeset
|
288 } |
1205
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
289 |
1214
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1211
diff
changeset
|
290 static gboolean metadata_write_queue_idle_cb(gpointer data) |
1e36edfd2a43
write metadata after timeout, image change or dir change
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1211
diff
changeset
|
291 { |
1586
b8515ea34e58
force the metadata dialog if it was triggered by the menu or the button
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1582
diff
changeset
|
292 metadata_write_queue_confirm(FALSE, NULL, NULL); |
1523
e52aabe8fc7a
Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents:
1509
diff
changeset
|
293 metadata_write_idle_id = 0; |
1205
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
294 return FALSE; |
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
295 } |
90a3e8b07c5d
use the workflow in utilops.c for metadata approving and writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1204
diff
changeset
|
296 |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
297 gboolean metadata_write_perform(FileData *fd) |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
298 { |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
299 gboolean success; |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
300 ExifData *exif; |
2607 | 301 guint ln, lf; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
302 |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
303 g_assert(fd->change); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
304 |
2607 | 305 ln = strlen(fd->change->dest); |
306 lf = strlen(GQ_CACHE_EXT_METADATA); | |
2184 | 307 if (fd->change->dest && |
2607 | 308 g_ascii_strncasecmp(fd->change->dest + ln - lf, GQ_CACHE_EXT_METADATA, lf) == 0) |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
309 { |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
310 success = metadata_legacy_write(fd); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
311 if (success) metadata_legacy_delete(fd, fd->change->dest); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
312 return success; |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
313 } |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
314 |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
315 /* write via exiv2 */ |
2184 | 316 /* we can either use cached metadata which have fd->modified_xmp already applied |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
317 or read metadata from file and apply fd->modified_xmp |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
318 metadata are read also if the file was modified meanwhile */ |
2184 | 319 exif = exif_read_fd(fd); |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
320 if (!exif) return FALSE; |
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
321 |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
322 success = (fd->change->dest) ? exif_write_sidecar(exif, fd->change->dest) : exif_write(exif); /* write modified metadata */ |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
323 exif_free_fd(fd, exif); |
1211
cc4d3023ced3
most of the metadata options now works
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1208
diff
changeset
|
324 |
1255
ff73cc8793b0
do not ignore newly created sidecars
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1244
diff
changeset
|
325 if (fd->change->dest) |
2184 | 326 /* this will create a FileData for the sidecar and link it to the main file |
1255
ff73cc8793b0
do not ignore newly created sidecars
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1244
diff
changeset
|
327 (we can't wait until the sidecar is discovered by directory scanning because |
2184 | 328 exif_read_fd is called before that and it would read the main file only and |
1255
ff73cc8793b0
do not ignore newly created sidecars
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1244
diff
changeset
|
329 store the metadata in the cache) |
ff73cc8793b0
do not ignore newly created sidecars
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1244
diff
changeset
|
330 FIXME: this does not catch new sidecars created by independent external programs |
ff73cc8793b0
do not ignore newly created sidecars
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1244
diff
changeset
|
331 */ |
2184 | 332 file_data_unref(file_data_new_group(fd->change->dest)); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
333 |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
334 if (success) metadata_legacy_delete(fd, fd->change->dest); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
335 return success; |
1204
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
336 } |
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
337 |
1240
6a1f19764c63
added a status bar button for writting metadata immediately
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1238
diff
changeset
|
338 gint metadata_queue_length(void) |
6a1f19764c63
added a status bar button for writting metadata immediately
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1238
diff
changeset
|
339 { |
6a1f19764c63
added a status bar button for writting metadata immediately
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1238
diff
changeset
|
340 return g_list_length(metadata_write_queue); |
6a1f19764c63
added a status bar button for writting metadata immediately
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1238
diff
changeset
|
341 } |
6a1f19764c63
added a status bar button for writting metadata immediately
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1238
diff
changeset
|
342 |
1234
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
343 static gboolean metadata_check_key(const gchar *keys[], const gchar *key) |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
344 { |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
345 const gchar **k = keys; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
346 |
1243
473cb2cc42c9
fixed possible segfault
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1241
diff
changeset
|
347 while (*k) |
1234
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
348 { |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
349 if (strcmp(key, *k) == 0) return TRUE; |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
350 k++; |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
351 } |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
352 return FALSE; |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
353 } |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
354 |
1567
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
355 gboolean metadata_write_revert(FileData *fd, const gchar *key) |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
356 { |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
357 if (!fd->modified_xmp) return FALSE; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
358 |
1567
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
359 g_hash_table_remove(fd->modified_xmp, key); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
360 |
1567
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
361 if (g_hash_table_size(fd->modified_xmp) == 0) |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
362 { |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
363 metadata_write_queue_remove(fd); |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
364 } |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
365 else |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
366 { |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
367 /* reread the metadata to restore the original value */ |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
368 file_data_increment_version(fd); |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
369 file_data_send_notification(fd, NOTIFY_REREAD); |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
370 } |
1568
40815af3d5f9
fixed return from metadata_write_revert
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1567
diff
changeset
|
371 return TRUE; |
1567
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
372 } |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
373 |
1234
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
374 gboolean metadata_write_list(FileData *fd, const gchar *key, const GList *values) |
1203
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
375 { |
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
376 if (!fd->modified_xmp) |
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
377 { |
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
378 fd->modified_xmp = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)string_list_free); |
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
379 } |
1234
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
380 g_hash_table_insert(fd->modified_xmp, g_strdup(key), string_list_copy((GList *)values)); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
381 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
382 metadata_cache_remove(fd, key); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
383 |
1203
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
384 if (fd->exif) |
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
385 { |
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
386 exif_update_metadata(fd->exif, key, values); |
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
387 } |
1204
98154f78605e
queue metadata and write them in an idle callback
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1203
diff
changeset
|
388 metadata_write_queue_add(fd); |
1218
7274b21b5533
improved buffering and notifications
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
389 file_data_increment_version(fd); |
1432
7f454e7d07a3
improved notification system
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1429
diff
changeset
|
390 file_data_send_notification(fd, NOTIFY_METADATA); |
1218
7274b21b5533
improved buffering and notifications
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1214
diff
changeset
|
391 |
1234
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
392 if (options->metadata.sync_grouped_files && metadata_check_key(group_keys, key)) |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
393 { |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
394 GList *work = fd->sidecar_files; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
395 |
1234
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
396 while (work) |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
397 { |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
398 FileData *sfd = work->data; |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
399 work = work->next; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
400 |
2598
b8f3f29bd641
Addl #510: Rudimentary video support
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents:
2496
diff
changeset
|
401 if (sfd->format_class == FORMAT_CLASS_META) continue; |
1234
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
402 |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
403 metadata_write_list(sfd, key, values); |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
404 } |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
405 } |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
406 |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
407 |
1203
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
408 return TRUE; |
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
409 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
410 |
1234
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
411 gboolean metadata_write_string(FileData *fd, const gchar *key, const char *value) |
1203
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
412 { |
1234
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
413 GList *list = g_list_append(NULL, g_strdup(value)); |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
414 gboolean ret = metadata_write_list(fd, key, list); |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
415 string_list_free(list); |
3c7d8cec0b50
write keywords and comments with separate functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1231
diff
changeset
|
416 return ret; |
1203
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
417 } |
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
418 |
1567
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
419 gboolean metadata_write_int(FileData *fd, const gchar *key, guint64 value) |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
420 { |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
421 gchar string[50]; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
422 |
2055
a14181f455e5
Fix a snprintf() warning regarding unsigned int64 format string.
Laurent Monin <geeqie@norz.org>
parents:
2021
diff
changeset
|
423 g_snprintf(string, sizeof(string), "%llu", (unsigned long long) value); |
1567
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
424 return metadata_write_string(fd, key, string); |
ef3ca18df43f
added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1542
diff
changeset
|
425 } |
1203
3d2d07d88a5b
prepared infrastructure for delayed metadata writting - refreshing
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1194
diff
changeset
|
426 |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
427 /* |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
428 *------------------------------------------------------------------- |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
429 * keyword / comment read/write |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
430 *------------------------------------------------------------------- |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
431 */ |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
432 |
1683
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
433 static gboolean metadata_file_write(gchar *path, const GList *keywords, const gchar *comment) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
434 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
435 SecureSaveInfo *ssi; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
436 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
437 ssi = secure_open(path); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
438 if (!ssi) return FALSE; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
439 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
440 secure_fprintf(ssi, "#%s comment (%s)\n\n", GQ_APPNAME, VERSION); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
441 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
442 secure_fprintf(ssi, "[keywords]\n"); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
443 while (keywords && secsave_errno == SS_ERR_NONE) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
444 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
445 const gchar *word = keywords->data; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
446 keywords = keywords->next; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
447 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
448 secure_fprintf(ssi, "%s\n", word); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
449 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
450 secure_fputc(ssi, '\n'); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
451 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
452 secure_fprintf(ssi, "[comment]\n"); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
453 secure_fprintf(ssi, "%s\n", (comment) ? comment : ""); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
454 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
455 secure_fprintf(ssi, "#end\n"); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
456 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
457 return (secure_close(ssi) == 0); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
458 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
459 |
1434 | 460 static gboolean metadata_legacy_write(FileData *fd) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
461 { |
1434 | 462 gboolean success = FALSE; |
463 gchar *metadata_pathl; | |
1683
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
464 gpointer keywords; |
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
465 gpointer comment_l; |
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
466 gboolean have_keywords; |
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
467 gboolean have_comment; |
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
468 const gchar *comment; |
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
469 GList *orig_keywords = NULL; |
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
470 gchar *orig_comment = NULL; |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
471 |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
472 g_assert(fd->change && fd->change->dest); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
473 |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
474 DEBUG_1("Saving comment: %s", fd->change->dest); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
475 |
1683
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
476 if (!fd->modified_xmp) return TRUE; |
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
477 |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
478 metadata_pathl = path_from_utf8(fd->change->dest); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
479 |
1683
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
480 have_keywords = g_hash_table_lookup_extended(fd->modified_xmp, KEYWORD_KEY, NULL, &keywords); |
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
481 have_comment = g_hash_table_lookup_extended(fd->modified_xmp, COMMENT_KEY, NULL, &comment_l); |
1687
fc88516f2993
fixed an use of uninitialized value
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1686
diff
changeset
|
482 comment = (have_comment && comment_l) ? ((GList *)comment_l)->data : NULL; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
483 |
1683
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
484 if (!have_keywords || !have_comment) metadata_file_read(metadata_pathl, &orig_keywords, &orig_comment); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
485 |
2184 | 486 success = metadata_file_write(metadata_pathl, |
1683
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
487 have_keywords ? (GList *)keywords : orig_keywords, |
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
488 have_comment ? comment : orig_comment); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
489 |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
490 g_free(metadata_pathl); |
1683
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
491 g_free(orig_comment); |
3a5a4662f724
fixed writting to gqview legacy format
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1656
diff
changeset
|
492 string_list_free(orig_keywords); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
493 |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
494 return success; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
495 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
496 |
1434 | 497 static gboolean metadata_file_read(gchar *path, GList **keywords, gchar **comment) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
498 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
499 FILE *f; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
500 gchar s_buf[1024]; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
501 MetadataKey key = MK_NONE; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
502 GList *list = NULL; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
503 GString *comment_build = NULL; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
504 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
505 f = fopen(path, "r"); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
506 if (!f) return FALSE; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
507 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
508 while (fgets(s_buf, sizeof(s_buf), f)) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
509 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
510 gchar *ptr = s_buf; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
511 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
512 if (*ptr == '#') continue; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
513 if (*ptr == '[' && key != MK_COMMENT) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
514 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
515 gchar *keystr = ++ptr; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
516 |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
517 key = MK_NONE; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
518 while (*ptr != ']' && *ptr != '\n' && *ptr != '\0') ptr++; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
519 |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
520 if (*ptr == ']') |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
521 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
522 *ptr = '\0'; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
523 if (g_ascii_strcasecmp(keystr, "keywords") == 0) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
524 key = MK_KEYWORDS; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
525 else if (g_ascii_strcasecmp(keystr, "comment") == 0) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
526 key = MK_COMMENT; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
527 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
528 continue; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
529 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
530 |
1347
84d289bde1ea
Add missing space between switch and first parenthesis.
Laurent Monin <geeqie@norz.org>
parents:
1340
diff
changeset
|
531 switch (key) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
532 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
533 case MK_NONE: |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
534 break; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
535 case MK_KEYWORDS: |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
536 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
537 while (*ptr != '\n' && *ptr != '\0') ptr++; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
538 *ptr = '\0'; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
539 if (strlen(s_buf) > 0) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
540 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
541 gchar *kw = utf8_validate_or_convert(s_buf); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
542 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
543 list = g_list_prepend(list, kw); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
544 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
545 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
546 break; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
547 case MK_COMMENT: |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
548 if (!comment_build) comment_build = g_string_new(""); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
549 g_string_append(comment_build, s_buf); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
550 break; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
551 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
552 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
553 |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
554 fclose(f); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
555 |
2184 | 556 if (keywords) |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
557 { |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
558 *keywords = g_list_reverse(list); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
559 } |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
560 else |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
561 { |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
562 string_list_free(list); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
563 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
564 |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
565 if (comment_build) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
566 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
567 if (comment) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
568 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
569 gint len; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
570 gchar *ptr = comment_build->str; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
571 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
572 /* strip leading and trailing newlines */ |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
573 while (*ptr == '\n') ptr++; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
574 len = strlen(ptr); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
575 while (len > 0 && ptr[len - 1] == '\n') len--; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
576 if (ptr[len] == '\n') len++; /* keep the last one */ |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
577 if (len > 0) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
578 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
579 gchar *text = g_strndup(ptr, len); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
580 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
581 *comment = utf8_validate_or_convert(text); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
582 g_free(text); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
583 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
584 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
585 g_string_free(comment_build, TRUE); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
586 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
587 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
588 return TRUE; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
589 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
590 |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
591 static void metadata_legacy_delete(FileData *fd, const gchar *except) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
592 { |
1191
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
593 gchar *metadata_path; |
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
594 gchar *metadata_pathl; |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
595 if (!fd) return; |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
596 |
1191
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
597 metadata_path = cache_find_location(CACHE_TYPE_METADATA, fd->path); |
2184 | 598 if (metadata_path && (!except || strcmp(metadata_path, except) != 0)) |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
599 { |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
600 metadata_pathl = path_from_utf8(metadata_path); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
601 unlink(metadata_pathl); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
602 g_free(metadata_pathl); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
603 g_free(metadata_path); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
604 } |
1686
4cb7c2245306
fixes for a built without Exiv2
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1683
diff
changeset
|
605 |
4cb7c2245306
fixes for a built without Exiv2
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1683
diff
changeset
|
606 #ifdef HAVE_EXIV2 |
2184 | 607 /* without exiv2: do not delete xmp metadata because we are not able to convert it, |
1686
4cb7c2245306
fixes for a built without Exiv2
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1683
diff
changeset
|
608 just ignore it */ |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
609 metadata_path = cache_find_location(CACHE_TYPE_XMP_METADATA, fd->path); |
2184 | 610 if (metadata_path && (!except || strcmp(metadata_path, except) != 0)) |
1224
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
611 { |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
612 metadata_pathl = path_from_utf8(metadata_path); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
613 unlink(metadata_pathl); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
614 g_free(metadata_pathl); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
615 g_free(metadata_path); |
8caed680d86f
improved sidecar writting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1222
diff
changeset
|
616 } |
1686
4cb7c2245306
fixes for a built without Exiv2
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1683
diff
changeset
|
617 #endif |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
618 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
619 |
1434 | 620 static gboolean metadata_legacy_read(FileData *fd, GList **keywords, gchar **comment) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
621 { |
1191
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
622 gchar *metadata_path; |
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
623 gchar *metadata_pathl; |
1434 | 624 gboolean success = FALSE; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
625 |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
626 if (!fd) return FALSE; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
627 |
1191
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
628 metadata_path = cache_find_location(CACHE_TYPE_METADATA, fd->path); |
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
629 if (!metadata_path) return FALSE; |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
630 |
1191
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
631 metadata_pathl = path_from_utf8(metadata_path); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
632 |
1191
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
633 success = metadata_file_read(metadata_pathl, keywords, comment); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
634 |
1191
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
635 g_free(metadata_pathl); |
4b38a4d60736
Rename most comment_*() functions to more appropriate metadata_*().
Laurent Monin <geeqie@norz.org>
parents:
1178
diff
changeset
|
636 g_free(metadata_path); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
637 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
638 return success; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
639 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
640 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
641 static GList *remove_duplicate_strings_from_list(GList *list) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
642 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
643 GList *work = list; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
644 GHashTable *hashtable = g_hash_table_new(g_str_hash, g_str_equal); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
645 GList *newlist = NULL; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
646 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
647 while (work) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
648 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
649 gchar *key = work->data; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
650 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
651 if (g_hash_table_lookup(hashtable, key) == NULL) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
652 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
653 g_hash_table_insert(hashtable, (gpointer) key, GINT_TO_POINTER(1)); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
654 newlist = g_list_prepend(newlist, key); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
655 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
656 work = work->next; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
657 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
658 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
659 g_hash_table_destroy(hashtable); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
660 g_list_free(list); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
661 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
662 return g_list_reverse(newlist); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
663 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
664 |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
665 GList *metadata_read_list(FileData *fd, const gchar *key, MetadataFormat format) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
666 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
667 ExifData *exif; |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
668 GList *list = NULL; |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
669 const GList *cache_entry; |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
670 if (!fd) return NULL; |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
671 |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
672 /* unwritten data overide everything */ |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
673 if (fd->modified_xmp && format == METADATA_PLAIN) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
674 { |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
675 list = g_hash_table_lookup(fd->modified_xmp, key); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
676 if (list) return string_list_copy(list); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
677 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
678 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
679 |
2184 | 680 if (format == METADATA_PLAIN && strcmp(key, KEYWORD_KEY) == 0 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
681 && (cache_entry = metadata_cache_get(fd, key))) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
682 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
683 return string_list_copy(cache_entry->next); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
684 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
685 |
2184 | 686 /* |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
687 Legacy metadata file is the primary source if it exists. |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
688 Merging the lists does not make much sense, because the existence of |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
689 legacy metadata file indicates that the other metadata sources are not |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
690 writable and thus it would not be possible to delete the keywords |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
691 that comes from the image file. |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
692 */ |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
693 if (strcmp(key, KEYWORD_KEY) == 0) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
694 { |
2184 | 695 if (metadata_legacy_read(fd, &list, NULL)) |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
696 { |
2184 | 697 if (format == METADATA_PLAIN) |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
698 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
699 metadata_cache_update(fd, key, list); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
700 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
701 return list; |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
702 } |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
703 } |
1504 | 704 else if (strcmp(key, COMMENT_KEY) == 0) |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
705 { |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
706 gchar *comment = NULL; |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
707 if (metadata_legacy_read(fd, NULL, &comment)) return g_list_append(NULL, comment); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
708 } |
1504 | 709 else if (strncmp(key, "file.", 5) == 0) |
1483
757f4a41c203
re-added possibility to display basic file info (size, mode, date)
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
710 { |
757f4a41c203
re-added possibility to display basic file info (size, mode, date)
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
711 return g_list_append(NULL, metadata_file_info(fd, key, format)); |
757f4a41c203
re-added possibility to display basic file info (size, mode, date)
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1465
diff
changeset
|
712 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
713 |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
714 exif = exif_read_fd(fd); /* this is cached, thus inexpensive */ |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
715 if (!exif) return NULL; |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
716 list = exif_get_metadata(exif, key, format); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
717 exif_free_fd(fd, exif); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
718 |
1923
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
719 if (format == METADATA_PLAIN && strcmp(key, KEYWORD_KEY) == 0) |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
720 { |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
721 metadata_cache_update(fd, key, list); |
751d39d7ac30
added long-term cache for keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1806
diff
changeset
|
722 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
723 |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
724 return list; |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
725 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
726 |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
727 gchar *metadata_read_string(FileData *fd, const gchar *key, MetadataFormat format) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
728 { |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
729 GList *string_list = metadata_read_list(fd, key, format); |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
730 if (string_list) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
731 { |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
732 gchar *str = string_list->data; |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
733 string_list->data = NULL; |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
734 string_list_free(string_list); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
735 return str; |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
736 } |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
737 return NULL; |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
738 } |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
739 |
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
740 guint64 metadata_read_int(FileData *fd, const gchar *key, guint64 fallback) |
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
741 { |
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
742 guint64 ret; |
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
743 gchar *endptr; |
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
744 gchar *string = metadata_read_string(fd, key, METADATA_PLAIN); |
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
745 if (!string) return fallback; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
746 |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
747 ret = g_ascii_strtoull(string, &endptr, 10); |
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
748 if (string == endptr) ret = fallback; |
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
749 g_free(string); |
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
750 return ret; |
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
751 } |
1509
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
752 |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
753 gdouble metadata_read_GPS_coord(FileData *fd, const gchar *key, gdouble fallback) |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
754 { |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
755 gdouble coord; |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
756 gchar *endptr; |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
757 gdouble deg, min, sec; |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
758 gboolean ok = FALSE; |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
759 gchar *string = metadata_read_string(fd, key, METADATA_PLAIN); |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
760 if (!string) return fallback; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
761 |
1509
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
762 deg = g_ascii_strtod(string, &endptr); |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
763 if (*endptr == ',') |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
764 { |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
765 min = g_ascii_strtod(endptr + 1, &endptr); |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
766 if (*endptr == ',') |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
767 sec = g_ascii_strtod(endptr + 1, &endptr); |
2184 | 768 else |
1509
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
769 sec = 0.0; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
770 |
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
771 |
2184 | 772 if (*endptr == 'S' || *endptr == 'W' || *endptr == 'N' || *endptr == 'E') |
1509
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
773 { |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
774 coord = deg + min /60.0 + sec / 3600.0; |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
775 ok = TRUE; |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
776 if (*endptr == 'S' || *endptr == 'W') coord = -coord; |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
777 } |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
778 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
779 |
1509
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
780 if (!ok) |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
781 { |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
782 coord = fallback; |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
783 log_printf("unable to parse GPS coordinate '%s'\n", string); |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
784 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
785 |
1509
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
786 g_free(string); |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
787 return coord; |
774ac86214cd
added metadata_read_GPS_coord
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1504
diff
changeset
|
788 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
789 |
2385 | 790 gdouble metadata_read_GPS_direction(FileData *fd, const gchar *key, gdouble fallback) |
791 { | |
792 gchar *endptr; | |
793 gdouble deg; | |
794 gboolean ok = FALSE; | |
795 gchar *string = metadata_read_string(fd, key, METADATA_PLAIN); | |
796 if (!string) return fallback; | |
797 | |
798 DEBUG_3("GPS_direction: %s\n", string); | |
799 deg = g_ascii_strtod(string, &endptr); | |
800 | |
801 /* Expected text string is of the format e.g.: | |
802 * 18000/100 | |
803 */ | |
804 if (*endptr == '/') | |
805 { | |
806 deg = deg/100; | |
807 ok = TRUE; | |
808 } | |
809 | |
810 if (!ok) | |
811 { | |
812 deg = fallback; | |
813 log_printf("unable to parse GPS direction '%s: %f'\n", string, deg); | |
814 } | |
815 | |
816 g_free(string); | |
817 | |
818 return deg; | |
819 } | |
820 | |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
821 gboolean metadata_append_string(FileData *fd, const gchar *key, const char *value) |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
822 { |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
823 gchar *str = metadata_read_string(fd, key, METADATA_PLAIN); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
824 |
2184 | 825 if (!str) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
826 { |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
827 return metadata_write_string(fd, key, value); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
828 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
829 else |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
830 { |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
831 gchar *new_string = g_strconcat(str, value, NULL); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
832 gboolean ret = metadata_write_string(fd, key, new_string); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
833 g_free(str); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
834 g_free(new_string); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
835 return ret; |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
836 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
837 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
838 |
2478
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
839 gboolean metadata_write_GPS_coord(FileData *fd, const gchar *key, gdouble value) |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
840 { |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
841 gint deg; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
842 gdouble min; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
843 gdouble param; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
844 char *coordinate; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
845 char *ref; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
846 gboolean ok = TRUE; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
847 |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
848 param = value; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
849 if (param < 0) |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
850 param = -param; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
851 deg = param; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
852 min = (param * 60) - (deg * 60); |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
853 if (g_strcmp0(key, "Xmp.exif.GPSLongitude") == 0) |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
854 if (value < 0) |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
855 ref = "W"; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
856 else |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
857 ref = "E"; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
858 else if (g_strcmp0(key, "Xmp.exif.GPSLatitude") == 0) |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
859 if (value < 0) |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
860 ref = "S"; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
861 else |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
862 ref = "N"; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
863 else |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
864 { |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
865 log_printf("unknown GPS parameter key '%s'\n", key); |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
866 ok = FALSE; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
867 } |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
868 |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
869 if (ok) |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
870 { |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
871 coordinate = g_strdup_printf("%i,%lf,%s", deg, min, ref); |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
872 metadata_write_string(fd, key, coordinate ); |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
873 g_free(coordinate); |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
874 } |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
875 |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
876 return ok; |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
877 } |
b3462ee88422
Geocode image by drag-drop
Colin Clark <colin.clark@cclark.uk>
parents:
2454
diff
changeset
|
878 |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
879 gboolean metadata_append_list(FileData *fd, const gchar *key, const GList *values) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
880 { |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
881 GList *list = metadata_read_list(fd, key, METADATA_PLAIN); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
882 |
2184 | 883 if (!list) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
884 { |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
885 return metadata_write_list(fd, key, values); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
886 } |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
887 else |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
888 { |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
889 gboolean ret; |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
890 list = g_list_concat(list, string_list_copy(values)); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
891 list = remove_duplicate_strings_from_list(list); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
892 |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
893 ret = metadata_write_list(fd, key, list); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
894 string_list_free(list); |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
895 return ret; |
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
896 } |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
897 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
898 |
1715
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
899 /** |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
900 * \see find_string_in_list |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
901 */ |
1340
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
902 gchar *find_string_in_list_utf8nocase(GList *list, const gchar *string) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
903 { |
1340
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
904 gchar *string_casefold = g_utf8_casefold(string, -1); |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
905 |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
906 while (list) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
907 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
908 gchar *haystack = list->data; |
1715
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
909 |
1340
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
910 if (haystack) |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
911 { |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
912 gboolean equal; |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
913 gchar *haystack_casefold = g_utf8_casefold(haystack, -1); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
914 |
1340
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
915 equal = (strcmp(haystack_casefold, string_casefold) == 0); |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
916 g_free(haystack_casefold); |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
917 |
1340
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
918 if (equal) |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
919 { |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
920 g_free(string_casefold); |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
921 return haystack; |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
922 } |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
923 } |
1715
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
924 |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
925 list = list->next; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
926 } |
1715
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
927 |
1340
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
928 g_free(string_casefold); |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
929 return NULL; |
1117250d3bae
Use g_utf8_casefold() to compare keywords, uppercased/lowercased keywords are now matched against predefined list.
Laurent Monin <geeqie@norz.org>
parents:
1288
diff
changeset
|
930 } |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
931 |
1715
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
932 /** |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
933 * \see find_string_in_list |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
934 */ |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
935 gchar *find_string_in_list_utf8case(GList *list, const gchar *string) |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
936 { |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
937 while (list) |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
938 { |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
939 gchar *haystack = list->data; |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
940 |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
941 if (haystack && strcmp(haystack, string) == 0) |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
942 return haystack; |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
943 |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
944 list = list->next; |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
945 } // while (list) |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
946 |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
947 return NULL; |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
948 } // gchar *find_string_in_list_utf... |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
949 |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
950 /** |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
951 * \brief Find a existent string in a list. |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
952 * |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
953 * This is a switch between find_string_in_list_utf8case and |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
954 * find_string_in_list_utf8nocase to search with or without case for the |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
955 * existence of a string. |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
956 * |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
957 * \param list The list to search in |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
958 * \param string The string to search for |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
959 * \return The string or NULL |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
960 * |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
961 * \see find_string_in_list_utf8case |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
962 * \see find_string_in_list_utf8nocase |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
963 */ |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
964 gchar *find_string_in_list(GList *list, const gchar *string) |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
965 { |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
966 if (options->metadata.keywords_case_sensitive) |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
967 return find_string_in_list_utf8case(list, string); |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
968 else |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
969 return find_string_in_list_utf8nocase(list, string); |
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
970 } |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
971 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
972 #define KEYWORDS_SEPARATOR(c) ((c) == ',' || (c) == ';' || (c) == '\n' || (c) == '\r' || (c) == '\b') |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
973 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
974 GList *string_to_keywords_list(const gchar *text) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
975 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
976 GList *list = NULL; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
977 const gchar *ptr = text; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
978 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
979 while (*ptr != '\0') |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
980 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
981 const gchar *begin; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
982 gint l = 0; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
983 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
984 while (KEYWORDS_SEPARATOR(*ptr)) ptr++; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
985 begin = ptr; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
986 while (*ptr != '\0' && !KEYWORDS_SEPARATOR(*ptr)) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
987 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
988 ptr++; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
989 l++; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
990 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
991 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
992 /* trim starting and ending whitespaces */ |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
993 while (l > 0 && g_ascii_isspace(*begin)) begin++, l--; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
994 while (l > 0 && g_ascii_isspace(begin[l-1])) l--; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
995 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
996 if (l > 0) |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
997 { |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
998 gchar *keyword = g_strndup(begin, l); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
999 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1000 /* only add if not already in the list */ |
1715
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
1001 if (!find_string_in_list(list, keyword)) |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1002 list = g_list_append(list, keyword); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1003 else |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1004 g_free(keyword); |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1005 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1006 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1007 |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1008 return list; |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1009 } |
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1010 |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1011 /* |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1012 * keywords to marks |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1013 */ |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1014 |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1015 |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1016 gboolean meta_data_get_keyword_mark(FileData *fd, gint n, gpointer data) |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1017 { |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1018 /* FIXME: do not use global keyword_tree */ |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1019 GList *path = data; |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1020 GList *keywords; |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1021 gboolean found = FALSE; |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
1022 keywords = metadata_read_list(fd, KEYWORD_KEY, METADATA_PLAIN); |
1238
47e6d7aac05b
simplified metadata interface, dropped metadata_read,
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1234
diff
changeset
|
1023 if (keywords) |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1024 { |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1025 GtkTreeIter iter; |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1026 if (keyword_tree_get_iter(GTK_TREE_MODEL(keyword_tree), &iter, path) && |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1027 keyword_tree_is_set(GTK_TREE_MODEL(keyword_tree), &iter, keywords)) |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1028 found = TRUE; |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1029 |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1030 } |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1031 return found; |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1032 } |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1033 |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1034 gboolean meta_data_set_keyword_mark(FileData *fd, gint n, gboolean value, gpointer data) |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1035 { |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1036 GList *path = data; |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1037 GList *keywords = NULL; |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1038 GtkTreeIter iter; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1039 |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1040 if (!keyword_tree_get_iter(GTK_TREE_MODEL(keyword_tree), &iter, path)) return FALSE; |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1041 |
1288
01a4a8674c8b
use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1284
diff
changeset
|
1042 keywords = metadata_read_list(fd, KEYWORD_KEY, METADATA_PLAIN); |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1043 |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1044 if (!!keyword_tree_is_set(GTK_TREE_MODEL(keyword_tree), &iter, keywords) != !!value) |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1045 { |
2184 | 1046 if (value) |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1047 { |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1048 keyword_tree_set(GTK_TREE_MODEL(keyword_tree), &iter, &keywords); |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1049 } |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1050 else |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1051 { |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1052 keyword_tree_reset(GTK_TREE_MODEL(keyword_tree), &iter, &keywords); |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1053 } |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1054 metadata_write_list(fd, KEYWORD_KEY, keywords); |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1055 } |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1056 |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1057 string_list_free(keywords); |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1058 return TRUE; |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1059 } |
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1060 |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1061 |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1062 |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1063 void meta_data_connect_mark_with_keyword(GtkTreeModel *keyword_tree, GtkTreeIter *kw_iter, gint mark) |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1064 { |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1065 |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1066 FileDataGetMarkFunc get_mark_func; |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1067 FileDataSetMarkFunc set_mark_func; |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1068 gpointer mark_func_data; |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1069 |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1070 gint i; |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1071 |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1072 for (i = 0; i < FILEDATA_MARKS_SIZE; i++) |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1073 { |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1074 file_data_get_registered_mark_func(i, &get_mark_func, &set_mark_func, &mark_func_data); |
2184 | 1075 if (get_mark_func == meta_data_get_keyword_mark) |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1076 { |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1077 GtkTreeIter old_kw_iter; |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1078 GList *old_path = mark_func_data; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1079 |
2184 | 1080 if (keyword_tree_get_iter(keyword_tree, &old_kw_iter, old_path) && |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1081 (i == mark || /* release any previous connection of given mark */ |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1082 keyword_compare(keyword_tree, &old_kw_iter, kw_iter) == 0)) /* or given keyword */ |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1083 { |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1084 file_data_register_mark_func(i, NULL, NULL, NULL, NULL); |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1085 gtk_tree_store_set(GTK_TREE_STORE(keyword_tree), &old_kw_iter, KEYWORD_COLUMN_MARK, "", -1); |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1086 } |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1087 } |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1088 } |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1089 |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1090 |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1091 if (mark >= 0 && mark < FILEDATA_MARKS_SIZE) |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1092 { |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1093 GList *path; |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1094 gchar *mark_str; |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1095 path = keyword_tree_get_path(keyword_tree, kw_iter); |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1096 file_data_register_mark_func(mark, meta_data_get_keyword_mark, meta_data_set_keyword_mark, path, (GDestroyNotify)string_list_free); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1097 |
2600
c6a11c0bade8
Bug fix #509: Increase number of marks to 10
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents:
2598
diff
changeset
|
1098 mark_str = g_strdup_printf("%d", (mark < 9 ? mark : -1) + 1); |
1425
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1099 gtk_tree_store_set(GTK_TREE_STORE(keyword_tree), kw_iter, KEYWORD_COLUMN_MARK, mark_str, -1); |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1100 g_free(mark_str); |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1101 } |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1102 } |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1103 |
e1b082968bff
fixed keyword to mark connection
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1414
diff
changeset
|
1104 |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1105 /* |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1106 *------------------------------------------------------------------- |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1107 * keyword tree |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1108 *------------------------------------------------------------------- |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1109 */ |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1110 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1111 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1112 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1113 GtkTreeStore *keyword_tree; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1114 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1115 gchar *keyword_get_name(GtkTreeModel *keyword_tree, GtkTreeIter *iter) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1116 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1117 gchar *name; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1118 gtk_tree_model_get(keyword_tree, iter, KEYWORD_COLUMN_NAME, &name, -1); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1119 return name; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1120 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1121 |
2492
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1122 gchar *keyword_get_mark(GtkTreeModel *keyword_tree, GtkTreeIter *iter) |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1123 { |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1124 gchar *mark_str; |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1125 |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1126 gtk_tree_model_get(keyword_tree, iter, KEYWORD_COLUMN_MARK, &mark_str, -1); |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1127 return mark_str; |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1128 } |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1129 |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1130 gchar *keyword_get_casefold(GtkTreeModel *keyword_tree, GtkTreeIter *iter) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1131 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1132 gchar *casefold; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1133 gtk_tree_model_get(keyword_tree, iter, KEYWORD_COLUMN_CASEFOLD, &casefold, -1); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1134 return casefold; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1135 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1136 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1137 gboolean keyword_get_is_keyword(GtkTreeModel *keyword_tree, GtkTreeIter *iter) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1138 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1139 gboolean is_keyword; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1140 gtk_tree_model_get(keyword_tree, iter, KEYWORD_COLUMN_IS_KEYWORD, &is_keyword, -1); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1141 return is_keyword; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1142 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1143 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1144 void keyword_set(GtkTreeStore *keyword_tree, GtkTreeIter *iter, const gchar *name, gboolean is_keyword) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1145 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1146 gchar *casefold = g_utf8_casefold(name, -1); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1147 gtk_tree_store_set(keyword_tree, iter, KEYWORD_COLUMN_MARK, "", |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1148 KEYWORD_COLUMN_NAME, name, |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1149 KEYWORD_COLUMN_CASEFOLD, casefold, |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1150 KEYWORD_COLUMN_IS_KEYWORD, is_keyword, -1); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1151 g_free(casefold); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1152 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1153 |
1396 | 1154 gboolean keyword_compare(GtkTreeModel *keyword_tree, GtkTreeIter *a, GtkTreeIter *b) |
1155 { | |
1156 GtkTreePath *pa = gtk_tree_model_get_path(keyword_tree, a); | |
1157 GtkTreePath *pb = gtk_tree_model_get_path(keyword_tree, b); | |
1158 gint ret = gtk_tree_path_compare(pa, pb); | |
1159 gtk_tree_path_free(pa); | |
1160 gtk_tree_path_free(pb); | |
1161 return ret; | |
1162 } | |
1163 | |
1429
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1164 gboolean keyword_same_parent(GtkTreeModel *keyword_tree, GtkTreeIter *a, GtkTreeIter *b) |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1165 { |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1166 GtkTreeIter parent_a; |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1167 GtkTreeIter parent_b; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1168 |
1429
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1169 gboolean valid_pa = gtk_tree_model_iter_parent(keyword_tree, &parent_a, a); |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1170 gboolean valid_pb = gtk_tree_model_iter_parent(keyword_tree, &parent_b, b); |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1171 |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1172 if (valid_pa && valid_pb) |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1173 { |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1174 return keyword_compare(keyword_tree, &parent_a, &parent_b) == 0; |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1175 } |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1176 else |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1177 { |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1178 return (!valid_pa && !valid_pb); /* both are toplevel */ |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1179 } |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1180 } |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1181 |
1465
7f77bb16d3b1
do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1464
diff
changeset
|
1182 gboolean keyword_exists(GtkTreeModel *keyword_tree, GtkTreeIter *parent_ptr, GtkTreeIter *sibling, const gchar *name, gboolean exclude_sibling, GtkTreeIter *result) |
1429
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1183 { |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1184 GtkTreeIter parent; |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1185 GtkTreeIter iter; |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1186 gboolean toplevel = FALSE; |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1187 gboolean ret; |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1188 gchar *casefold; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1189 |
1429
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1190 if (parent_ptr) |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1191 { |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1192 parent = *parent_ptr; |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1193 } |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1194 else if (sibling) |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1195 { |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1196 toplevel = !gtk_tree_model_iter_parent(keyword_tree, &parent, sibling); |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1197 } |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1198 else |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1199 { |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1200 toplevel = TRUE; |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1201 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1202 |
1429
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1203 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(keyword_tree), &iter, toplevel ? NULL : &parent)) return FALSE; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1204 |
1429
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1205 casefold = g_utf8_casefold(name, -1); |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1206 ret = FALSE; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1207 |
1429
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1208 while (TRUE) |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1209 { |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1210 if (!(exclude_sibling && sibling && keyword_compare(keyword_tree, &iter, sibling) == 0)) |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1211 { |
1590
32a63a57690f
use "keywords" instead of "tags" in option name, it is more consistent
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1586
diff
changeset
|
1212 if (options->metadata.keywords_case_sensitive) |
1540
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1213 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1214 gchar *iter_name = keyword_get_name(keyword_tree, &iter); |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1215 ret = strcmp(name, iter_name) == 0; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1216 g_free(iter_name); |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1217 } |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1218 else |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1219 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1220 gchar *iter_casefold = keyword_get_casefold(keyword_tree, &iter); |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1221 ret = strcmp(casefold, iter_casefold) == 0; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1222 g_free(iter_casefold); |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1223 } // if (options->metadata.tags_cas... |
1429
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1224 } |
2184 | 1225 if (ret) |
1465
7f77bb16d3b1
do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1464
diff
changeset
|
1226 { |
7f77bb16d3b1
do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1464
diff
changeset
|
1227 if (result) *result = iter; |
7f77bb16d3b1
do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1464
diff
changeset
|
1228 break; |
7f77bb16d3b1
do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1464
diff
changeset
|
1229 } |
1429
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1230 if (!gtk_tree_model_iter_next(keyword_tree, &iter)) break; |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1231 } |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1232 g_free(casefold); |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1233 return ret; |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1234 } |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1235 |
7561b35307f1
do not allow to add keywords with the same name as siblings
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1428
diff
changeset
|
1236 |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1237 void keyword_copy(GtkTreeStore *keyword_tree, GtkTreeIter *to, GtkTreeIter *from) |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1238 { |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1239 |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1240 gchar *mark, *name, *casefold; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1241 gboolean is_keyword; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1242 |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1243 /* do not copy KEYWORD_COLUMN_HIDE_IN, it fully shows the new subtree */ |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1244 gtk_tree_model_get(GTK_TREE_MODEL(keyword_tree), from, KEYWORD_COLUMN_MARK, &mark, |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1245 KEYWORD_COLUMN_NAME, &name, |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1246 KEYWORD_COLUMN_CASEFOLD, &casefold, |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1247 KEYWORD_COLUMN_IS_KEYWORD, &is_keyword, -1); |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1248 |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1249 gtk_tree_store_set(keyword_tree, to, KEYWORD_COLUMN_MARK, mark, |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1250 KEYWORD_COLUMN_NAME, name, |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1251 KEYWORD_COLUMN_CASEFOLD, casefold, |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1252 KEYWORD_COLUMN_IS_KEYWORD, is_keyword, -1); |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1253 g_free(mark); |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1254 g_free(name); |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1255 g_free(casefold); |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1256 } |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1257 |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1258 void keyword_copy_recursive(GtkTreeStore *keyword_tree, GtkTreeIter *to, GtkTreeIter *from) |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1259 { |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1260 GtkTreeIter from_child; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1261 |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1262 keyword_copy(keyword_tree, to, from); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1263 |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1264 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(keyword_tree), &from_child, from)) return; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1265 |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1266 while (TRUE) |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1267 { |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1268 GtkTreeIter to_child; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1269 gtk_tree_store_append(keyword_tree, &to_child, to); |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1270 keyword_copy_recursive(keyword_tree, &to_child, &from_child); |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1271 if (!gtk_tree_model_iter_next(GTK_TREE_MODEL(keyword_tree), &from_child)) return; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1272 } |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1273 } |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1274 |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1275 void keyword_move_recursive(GtkTreeStore *keyword_tree, GtkTreeIter *to, GtkTreeIter *from) |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1276 { |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1277 keyword_copy_recursive(keyword_tree, to, from); |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1278 keyword_delete(keyword_tree, from); |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1279 } |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1280 |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1281 GList *keyword_tree_get_path(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr) |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1282 { |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1283 GList *path = NULL; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1284 GtkTreeIter iter = *iter_ptr; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1285 |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1286 while (TRUE) |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1287 { |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1288 GtkTreeIter parent; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1289 path = g_list_prepend(path, keyword_get_name(keyword_tree, &iter)); |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1290 if (!gtk_tree_model_iter_parent(keyword_tree, &parent, &iter)) break; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1291 iter = parent; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1292 } |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1293 return path; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1294 } |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1295 |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1296 gboolean keyword_tree_get_iter(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr, GList *path) |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1297 { |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1298 GtkTreeIter iter; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1299 |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1300 if (!gtk_tree_model_get_iter_first(keyword_tree, &iter)) return FALSE; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1301 |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1302 while (TRUE) |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1303 { |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1304 GtkTreeIter children; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1305 while (TRUE) |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1306 { |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1307 gchar *name = keyword_get_name(keyword_tree, &iter); |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1308 if (strcmp(name, path->data) == 0) break; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1309 g_free(name); |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1310 if (!gtk_tree_model_iter_next(keyword_tree, &iter)) return FALSE; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1311 } |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1312 path = path->next; |
2184 | 1313 if (!path) |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1314 { |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1315 *iter_ptr = iter; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1316 return TRUE; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1317 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1318 |
1392
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1319 if (!gtk_tree_model_iter_children(keyword_tree, &children, &iter)) return FALSE; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1320 iter = children; |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1321 } |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1322 } |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1323 |
9dbe64aa9e88
dnd in keywords tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1391
diff
changeset
|
1324 |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1325 static gboolean keyword_tree_is_set_casefold(GtkTreeModel *keyword_tree, GtkTreeIter iter, GList *casefold_list) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1326 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1327 if (!casefold_list) return FALSE; |
1456
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1328 |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1329 if (!keyword_get_is_keyword(keyword_tree, &iter)) |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1330 { |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1331 /* for the purpose of expanding and hiding, a helper is set if it has any children set */ |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1332 GtkTreeIter child; |
2184 | 1333 if (!gtk_tree_model_iter_children(keyword_tree, &child, &iter)) |
1456
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1334 return FALSE; /* this should happen only on empty helpers */ |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1335 |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1336 while (TRUE) |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1337 { |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1338 if (keyword_tree_is_set_casefold(keyword_tree, child, casefold_list)) return TRUE; |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1339 if (!gtk_tree_model_iter_next(keyword_tree, &child)) return FALSE; |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1340 } |
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1341 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1342 |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1343 while (TRUE) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1344 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1345 GtkTreeIter parent; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1346 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1347 if (keyword_get_is_keyword(keyword_tree, &iter)) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1348 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1349 GList *work = casefold_list; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1350 gboolean found = FALSE; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1351 gchar *iter_casefold = keyword_get_casefold(keyword_tree, &iter); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1352 while (work) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1353 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1354 const gchar *casefold = work->data; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1355 work = work->next; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1356 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1357 if (strcmp(iter_casefold, casefold) == 0) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1358 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1359 found = TRUE; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1360 break; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1361 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1362 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1363 g_free(iter_casefold); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1364 if (!found) return FALSE; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1365 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1366 |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1367 if (!gtk_tree_model_iter_parent(keyword_tree, &parent, &iter)) return TRUE; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1368 iter = parent; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1369 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1370 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1371 |
1540
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1372 static gboolean keyword_tree_is_set_casefull(GtkTreeModel *keyword_tree, GtkTreeIter iter, GList *kw_list) |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1373 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1374 if (!kw_list) return FALSE; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1375 |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1376 if (!keyword_get_is_keyword(keyword_tree, &iter)) |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1377 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1378 /* for the purpose of expanding and hiding, a helper is set if it has any children set */ |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1379 GtkTreeIter child; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1380 if (!gtk_tree_model_iter_children(keyword_tree, &child, &iter)) |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1381 return FALSE; /* this should happen only on empty helpers */ |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1382 |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1383 while (TRUE) |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1384 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1385 if (keyword_tree_is_set_casefull(keyword_tree, child, kw_list)) return TRUE; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1386 if (!gtk_tree_model_iter_next(keyword_tree, &child)) return FALSE; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1387 } |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1388 } |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1389 |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1390 while (TRUE) |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1391 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1392 GtkTreeIter parent; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1393 |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1394 if (keyword_get_is_keyword(keyword_tree, &iter)) |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1395 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1396 GList *work = kw_list; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1397 gboolean found = FALSE; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1398 gchar *iter_name = keyword_get_name(keyword_tree, &iter); |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1399 while (work) |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1400 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1401 const gchar *name = work->data; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1402 work = work->next; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1403 |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1404 if (strcmp(iter_name, name) == 0) |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1405 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1406 found = TRUE; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1407 break; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1408 } |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1409 } |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1410 g_free(iter_name); |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1411 if (!found) return FALSE; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1412 } |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1413 |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1414 if (!gtk_tree_model_iter_parent(keyword_tree, &parent, &iter)) return TRUE; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1415 iter = parent; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1416 } |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1417 } |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1418 |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1419 gboolean keyword_tree_is_set(GtkTreeModel *keyword_tree, GtkTreeIter *iter, GList *kw_list) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1420 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1421 gboolean ret; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1422 GList *casefold_list = NULL; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1423 GList *work; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1424 |
1590
32a63a57690f
use "keywords" instead of "tags" in option name, it is more consistent
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1586
diff
changeset
|
1425 if (options->metadata.keywords_case_sensitive) |
1540
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1426 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1427 ret = keyword_tree_is_set_casefull(keyword_tree, *iter, kw_list); |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1428 } |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1429 else |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1430 { |
1540
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1431 work = kw_list; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1432 while (work) |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1433 { |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1434 const gchar *kw = work->data; |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1435 work = work->next; |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1436 |
1540
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1437 casefold_list = g_list_prepend(casefold_list, g_utf8_casefold(kw, -1)); |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1438 } |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1439 |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1440 ret = keyword_tree_is_set_casefold(keyword_tree, *iter, casefold_list); |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1441 |
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1442 string_list_free(casefold_list); |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1443 } |
1540
e4d9e5918d46
Allow to configure case handling of keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1523
diff
changeset
|
1444 |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1445 return ret; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1446 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1447 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1448 void keyword_tree_set(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr, GList **kw_list) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1449 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1450 GtkTreeIter iter = *iter_ptr; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1451 while (TRUE) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1452 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1453 GtkTreeIter parent; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1454 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1455 if (keyword_get_is_keyword(keyword_tree, &iter)) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1456 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1457 gchar *name = keyword_get_name(keyword_tree, &iter); |
1715
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
1458 if (!find_string_in_list(*kw_list, name)) |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1459 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1460 *kw_list = g_list_append(*kw_list, name); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1461 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1462 else |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1463 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1464 g_free(name); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1465 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1466 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1467 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1468 if (!gtk_tree_model_iter_parent(keyword_tree, &parent, &iter)) return; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1469 iter = parent; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1470 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1471 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1472 |
1806
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1473 GList *keyword_tree_get(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr) |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1474 { |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1475 GtkTreeIter iter = *iter_ptr; |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1476 GList *kw_list = NULL; |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1477 |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1478 while (TRUE) |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1479 { |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1480 GtkTreeIter parent; |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1481 |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1482 if (keyword_get_is_keyword(keyword_tree, &iter)) |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1483 { |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1484 gchar *name = keyword_get_name(keyword_tree, &iter); |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1485 kw_list = g_list_append(kw_list, name); |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1486 } |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1487 |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1488 if (!gtk_tree_model_iter_parent(keyword_tree, &parent, &iter)) return kw_list; |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1489 iter = parent; |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1490 } |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1491 } // GList *keyword_tree_get(GtkTre... |
7c43397b212b
Add the feature to add single keywords to selection
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1802
diff
changeset
|
1492 |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1493 static void keyword_tree_reset1(GtkTreeModel *keyword_tree, GtkTreeIter *iter, GList **kw_list) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1494 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1495 gchar *found; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1496 gchar *name; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1497 if (!keyword_get_is_keyword(keyword_tree, iter)) return; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1498 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1499 name = keyword_get_name(keyword_tree, iter); |
1715
4d6f5b68f235
Fix a small problem with casefull keywords
Klaus Ethgen <Klaus@Ethgen.de>
parents:
1687
diff
changeset
|
1500 found = find_string_in_list(*kw_list, name); |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1501 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1502 if (found) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1503 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1504 *kw_list = g_list_remove(*kw_list, found); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1505 g_free(found); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1506 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1507 g_free(name); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1508 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1509 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1510 static void keyword_tree_reset_recursive(GtkTreeModel *keyword_tree, GtkTreeIter *iter, GList **kw_list) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1511 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1512 GtkTreeIter child; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1513 keyword_tree_reset1(keyword_tree, iter, kw_list); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1514 |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1515 if (!gtk_tree_model_iter_children(keyword_tree, &child, iter)) return; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1516 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1517 while (TRUE) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1518 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1519 keyword_tree_reset_recursive(keyword_tree, &child, kw_list); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1520 if (!gtk_tree_model_iter_next(keyword_tree, &child)) return; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1521 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1522 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1523 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1524 static gboolean keyword_tree_check_empty_children(GtkTreeModel *keyword_tree, GtkTreeIter *parent, GList *kw_list) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1525 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1526 GtkTreeIter iter; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1527 |
2184 | 1528 if (!gtk_tree_model_iter_children(keyword_tree, &iter, parent)) |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1529 return TRUE; /* this should happen only on empty helpers */ |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1530 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1531 while (TRUE) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1532 { |
1457 | 1533 if (keyword_tree_is_set(keyword_tree, &iter, kw_list)) return FALSE; |
1534 if (!gtk_tree_model_iter_next(keyword_tree, &iter)) return TRUE; | |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1535 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1536 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1537 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1538 void keyword_tree_reset(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr, GList **kw_list) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1539 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1540 GtkTreeIter iter = *iter_ptr; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1541 GtkTreeIter parent; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1542 keyword_tree_reset_recursive(keyword_tree, &iter, kw_list); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1543 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1544 if (!gtk_tree_model_iter_parent(keyword_tree, &parent, &iter)) return; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1545 iter = parent; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1546 |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1547 while (keyword_tree_check_empty_children(keyword_tree, &iter, *kw_list)) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1548 { |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1549 GtkTreeIter parent; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1550 keyword_tree_reset1(keyword_tree, &iter, kw_list); |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1551 if (!gtk_tree_model_iter_parent(keyword_tree, &parent, &iter)) return; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1552 iter = parent; |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1553 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1554 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1555 |
1414
5d76fc72993f
added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1404
diff
changeset
|
1556 void keyword_delete(GtkTreeStore *keyword_tree, GtkTreeIter *iter_ptr) |
5d76fc72993f
added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1404
diff
changeset
|
1557 { |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1558 GList *list; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1559 GtkTreeIter child; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1560 while (gtk_tree_model_iter_children(GTK_TREE_MODEL(keyword_tree), &child, iter_ptr)) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1561 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1562 keyword_delete(keyword_tree, &child); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1563 } |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1564 |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1565 meta_data_connect_mark_with_keyword(GTK_TREE_MODEL(keyword_tree), iter_ptr, -1); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1566 |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1567 gtk_tree_model_get(GTK_TREE_MODEL(keyword_tree), iter_ptr, KEYWORD_COLUMN_HIDE_IN, &list, -1); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1568 g_list_free(list); |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1569 |
1414
5d76fc72993f
added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1404
diff
changeset
|
1570 gtk_tree_store_remove(keyword_tree, iter_ptr); |
5d76fc72993f
added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1404
diff
changeset
|
1571 } |
5d76fc72993f
added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1404
diff
changeset
|
1572 |
5d76fc72993f
added a popup menu in keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1404
diff
changeset
|
1573 |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1574 void keyword_hide_in(GtkTreeStore *keyword_tree, GtkTreeIter *iter, gpointer id) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1575 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1576 GList *list; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1577 gtk_tree_model_get(GTK_TREE_MODEL(keyword_tree), iter, KEYWORD_COLUMN_HIDE_IN, &list, -1); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1578 if (!g_list_find(list, id)) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1579 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1580 list = g_list_prepend(list, id); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1581 gtk_tree_store_set(keyword_tree, iter, KEYWORD_COLUMN_HIDE_IN, list, -1); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1582 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1583 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1584 |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1585 void keyword_show_in(GtkTreeStore *keyword_tree, GtkTreeIter *iter, gpointer id) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1586 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1587 GList *list; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1588 gtk_tree_model_get(GTK_TREE_MODEL(keyword_tree), iter, KEYWORD_COLUMN_HIDE_IN, &list, -1); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1589 list = g_list_remove(list, id); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1590 gtk_tree_store_set(keyword_tree, iter, KEYWORD_COLUMN_HIDE_IN, list, -1); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1591 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1592 |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1593 gboolean keyword_is_hidden_in(GtkTreeModel *keyword_tree, GtkTreeIter *iter, gpointer id) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1594 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1595 GList *list; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1596 gtk_tree_model_get(keyword_tree, iter, KEYWORD_COLUMN_HIDE_IN, &list, -1); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1597 return !!g_list_find(list, id); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1598 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1599 |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1600 static gboolean keyword_show_all_in_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1601 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1602 keyword_show_in(GTK_TREE_STORE(model), iter, data); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1603 return FALSE; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1604 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1605 |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1606 void keyword_show_all_in(GtkTreeStore *keyword_tree, gpointer id) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1607 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1608 gtk_tree_model_foreach(GTK_TREE_MODEL(keyword_tree), keyword_show_all_in_cb, id); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1609 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1610 |
2496
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1611 static gboolean keyword_revert_hidden_in_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1612 { |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1613 if (keyword_is_hidden_in(GTK_TREE_MODEL(keyword_tree), iter, data)) |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1614 { |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1615 keyword_show_in(GTK_TREE_STORE(model), iter, data); |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1616 } |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1617 return FALSE; |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1618 } |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1619 |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1620 void keyword_revert_hidden_in(GtkTreeStore *keyword_tree, gpointer id) |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1621 { |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1622 gtk_tree_model_foreach(GTK_TREE_MODEL(keyword_tree), keyword_revert_hidden_in_cb, id); |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1623 } |
724b89562e09
Additional keyword menu entries
Colin Clark <colin.clark@cclark.uk>
parents:
2492
diff
changeset
|
1624 |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1625 static void keyword_hide_unset_in_recursive(GtkTreeStore *keyword_tree, GtkTreeIter *iter_ptr, gpointer id, GList *keywords) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1626 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1627 GtkTreeIter iter = *iter_ptr; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1628 while (TRUE) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1629 { |
1456
01c26e43e1ce
improved expanding and hiding of helper keywords
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1434
diff
changeset
|
1630 if (!keyword_tree_is_set(GTK_TREE_MODEL(keyword_tree), &iter, keywords)) |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1631 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1632 keyword_hide_in(keyword_tree, &iter, id); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1633 /* no need to check children of hidden node */ |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1634 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1635 else |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1636 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1637 GtkTreeIter child; |
2184 | 1638 if (gtk_tree_model_iter_children(GTK_TREE_MODEL(keyword_tree), &child, &iter)) |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1639 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1640 keyword_hide_unset_in_recursive(keyword_tree, &child, id, keywords); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1641 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1642 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1643 if (!gtk_tree_model_iter_next(GTK_TREE_MODEL(keyword_tree), &iter)) return; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1644 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1645 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1646 |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1647 void keyword_hide_unset_in(GtkTreeStore *keyword_tree, gpointer id, GList *keywords) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1648 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1649 GtkTreeIter iter; |
1487
8e5e0048e02d
fixed possible crash
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1483
diff
changeset
|
1650 if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(keyword_tree), &iter)) return; |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1651 keyword_hide_unset_in_recursive(keyword_tree, &iter, id, keywords); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1652 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1653 |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1654 static gboolean keyword_show_set_in_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter_ptr, gpointer data) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1655 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1656 GtkTreeIter iter = *iter_ptr; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1657 GList *keywords = data; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1658 gpointer id = keywords->data; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1659 keywords = keywords->next; /* hack */ |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1660 if (keyword_tree_is_set(model, &iter, keywords)) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1661 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1662 while (TRUE) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1663 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1664 GtkTreeIter parent; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1665 keyword_show_in(GTK_TREE_STORE(model), &iter, id); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1666 if (!gtk_tree_model_iter_parent(GTK_TREE_MODEL(keyword_tree), &parent, &iter)) break; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1667 iter = parent; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1668 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1669 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1670 return FALSE; |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1671 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1672 |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1673 void keyword_show_set_in(GtkTreeStore *keyword_tree, gpointer id, GList *keywords) |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1674 { |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1675 /* hack: pass id to keyword_hide_unset_in_cb in the list */ |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1676 keywords = g_list_prepend(keywords, id); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1677 gtk_tree_model_foreach(GTK_TREE_MODEL(keyword_tree), keyword_show_set_in_cb, keywords); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1678 keywords = g_list_delete_link(keywords, keywords); |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1679 } |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1680 |
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1681 |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1682 void keyword_tree_new(void) |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1683 { |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1684 if (keyword_tree) return; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1685 |
1428
04b9acf969fb
added keyword tree filtering
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1425
diff
changeset
|
1686 keyword_tree = gtk_tree_store_new(KEYWORD_COLUMN_COUNT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_POINTER); |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1687 } |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1688 |
1542
8ede4c31483e
improved default keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1540
diff
changeset
|
1689 static GtkTreeIter keyword_tree_default_append(GtkTreeStore *keyword_tree, GtkTreeIter *parent, const gchar *name, gboolean is_keyword) |
8ede4c31483e
improved default keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1540
diff
changeset
|
1690 { |
8ede4c31483e
improved default keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1540
diff
changeset
|
1691 GtkTreeIter iter; |
8ede4c31483e
improved default keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1540
diff
changeset
|
1692 gtk_tree_store_append(keyword_tree, &iter, parent); |
8ede4c31483e
improved default keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1540
diff
changeset
|
1693 keyword_set(keyword_tree, &iter, name, is_keyword); |
8ede4c31483e
improved default keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1540
diff
changeset
|
1694 return iter; |
8ede4c31483e
improved default keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1540
diff
changeset
|
1695 } |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1696 |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1697 void keyword_tree_new_default(void) |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1698 { |
2181
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1699 GtkTreeIter i1, i2; |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1700 |
1593
1c7c5b99eae2
fixed keyword tree initialization
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1590
diff
changeset
|
1701 if (!keyword_tree) keyword_tree_new(); |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1702 |
2181
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1703 i1 = keyword_tree_default_append(keyword_tree, NULL, _("People"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1704 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Family"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1705 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Free time"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1706 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Children"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1707 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Sport"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1708 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Culture"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1709 keyword_tree_default_append(keyword_tree, &i2, _("Festival"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1710 i1 = keyword_tree_default_append(keyword_tree, NULL, _("Nature"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1711 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Animal"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1712 keyword_tree_default_append(keyword_tree, &i2, _("Bird"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1713 keyword_tree_default_append(keyword_tree, &i2, _("Insect"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1714 keyword_tree_default_append(keyword_tree, &i2, _("Pets"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1715 keyword_tree_default_append(keyword_tree, &i2, _("Wildlife"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1716 keyword_tree_default_append(keyword_tree, &i2, _("Zoo"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1717 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Plant"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1718 keyword_tree_default_append(keyword_tree, &i2, _("Tree"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1719 keyword_tree_default_append(keyword_tree, &i2, _("Flower"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1720 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Water"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1721 keyword_tree_default_append(keyword_tree, &i2, _("River"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1722 keyword_tree_default_append(keyword_tree, &i2, _("Lake"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1723 keyword_tree_default_append(keyword_tree, &i2, _("Sea"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1724 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Landscape"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1725 i1 = keyword_tree_default_append(keyword_tree, NULL, _("Art"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1726 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Statue"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1727 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Painting"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1728 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Historic"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1729 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Modern"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1730 i1 = keyword_tree_default_append(keyword_tree, NULL, _("City"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1731 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Park"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1732 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Street"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1733 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Square"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1734 i1 = keyword_tree_default_append(keyword_tree, NULL, _("Architecture"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1735 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Buildings"), FALSE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1736 keyword_tree_default_append(keyword_tree, &i2, _("House"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1737 keyword_tree_default_append(keyword_tree, &i2, _("Cathedral"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1738 keyword_tree_default_append(keyword_tree, &i2, _("Palace"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1739 keyword_tree_default_append(keyword_tree, &i2, _("Castle"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1740 keyword_tree_default_append(keyword_tree, &i2, _("Bridge"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1741 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Interior"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1742 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Historic"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1743 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Modern"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1744 i1 = keyword_tree_default_append(keyword_tree, NULL, _("Places"), FALSE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1745 i1 = keyword_tree_default_append(keyword_tree, NULL, _("Conditions"), FALSE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1746 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Night"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1747 keyword_tree_default_append(keyword_tree, &i2, _("Lights"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1748 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Reflections"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1749 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Sun"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1750 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Weather"), FALSE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1751 keyword_tree_default_append(keyword_tree, &i2, _("Fog"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1752 keyword_tree_default_append(keyword_tree, &i2, _("Rain"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1753 keyword_tree_default_append(keyword_tree, &i2, _("Clouds"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1754 keyword_tree_default_append(keyword_tree, &i2, _("Snow"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1755 keyword_tree_default_append(keyword_tree, &i2, _("Sunny weather"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1756 i1 = keyword_tree_default_append(keyword_tree, NULL, _("Photo"), FALSE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1757 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Edited"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1758 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Detail"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1759 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Macro"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1760 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Portrait"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1761 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Black and White"), TRUE); |
8addfcef82af
Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents:
2055
diff
changeset
|
1762 i2 = keyword_tree_default_append(keyword_tree, &i1, _("Perspective"), TRUE); |
1391
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1763 } |
b2468a429b8e
implemented keywords editor as described at
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1347
diff
changeset
|
1764 |
1222
4df9743e97b9
low-level keyword-to-mark functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1220
diff
changeset
|
1765 |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1766 static void keyword_tree_node_write_config(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr, GString *outstr, gint indent) |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1767 { |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1768 GtkTreeIter iter = *iter_ptr; |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1769 while (TRUE) |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1770 { |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1771 GtkTreeIter children; |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1772 gchar *name; |
2492
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1773 gchar *mark_str; |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1774 |
1461
8f4df7710af8
improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1457
diff
changeset
|
1775 WRITE_NL(); WRITE_STRING("<keyword "); |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1776 name = keyword_get_name(keyword_tree, &iter); |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1777 write_char_option(outstr, indent, "name", name); |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1778 g_free(name); |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1779 write_bool_option(outstr, indent, "kw", keyword_get_is_keyword(keyword_tree, &iter)); |
2492
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1780 mark_str = keyword_get_mark(keyword_tree, &iter); |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1781 if (mark_str && mark_str[0]) |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1782 { |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1783 write_char_option(outstr, indent, "mark", mark_str); |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1784 } |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1785 |
2184 | 1786 if (gtk_tree_model_iter_children(keyword_tree, &children, &iter)) |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1787 { |
1461
8f4df7710af8
improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1457
diff
changeset
|
1788 WRITE_STRING(">"); |
8f4df7710af8
improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1457
diff
changeset
|
1789 indent++; |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1790 keyword_tree_node_write_config(keyword_tree, &children, outstr, indent); |
1461
8f4df7710af8
improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1457
diff
changeset
|
1791 indent--; |
8f4df7710af8
improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1457
diff
changeset
|
1792 WRITE_NL(); WRITE_STRING("</keyword>"); |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1793 } |
2184 | 1794 else |
1461
8f4df7710af8
improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1457
diff
changeset
|
1795 { |
8f4df7710af8
improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1457
diff
changeset
|
1796 WRITE_STRING("/>"); |
8f4df7710af8
improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1457
diff
changeset
|
1797 } |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1798 if (!gtk_tree_model_iter_next(keyword_tree, &iter)) return; |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1799 } |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1800 } |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1801 |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1802 void keyword_tree_write_config(GString *outstr, gint indent) |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1803 { |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1804 GtkTreeIter iter; |
1461
8f4df7710af8
improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1457
diff
changeset
|
1805 WRITE_NL(); WRITE_STRING("<keyword_tree>"); |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1806 indent++; |
2185
c14a1d8e6aa4
Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents:
2184
diff
changeset
|
1807 |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1808 if (keyword_tree && gtk_tree_model_get_iter_first(GTK_TREE_MODEL(keyword_tree), &iter)) |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1809 { |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1810 keyword_tree_node_write_config(GTK_TREE_MODEL(keyword_tree), &iter, outstr, indent); |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1811 } |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1812 indent--; |
1461
8f4df7710af8
improved config file formatting
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1457
diff
changeset
|
1813 WRITE_NL(); WRITE_STRING("</keyword_tree>"); |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1814 } |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1815 |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1816 GtkTreeIter *keyword_add_from_config(GtkTreeStore *keyword_tree, GtkTreeIter *parent, const gchar **attribute_names, const gchar **attribute_values) |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1817 { |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1818 gchar *name = NULL; |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1819 gboolean is_kw = TRUE; |
2492
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1820 gchar *mark_str = NULL; |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1821 |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1822 while (*attribute_names) |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1823 { |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1824 const gchar *option = *attribute_names++; |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1825 const gchar *value = *attribute_values++; |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1826 |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1827 if (READ_CHAR_FULL("name", name)) continue; |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1828 if (READ_BOOL_FULL("kw", is_kw)) continue; |
2492
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1829 if (READ_CHAR_FULL("mark", mark_str)) continue; |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1830 |
1464
6c71e4a9d06a
be more verbose on parse errors
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1461
diff
changeset
|
1831 log_printf("unknown attribute %s = %s\n", option, value); |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1832 } |
2184 | 1833 if (name && name[0]) |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1834 { |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1835 GtkTreeIter iter; |
1465
7f77bb16d3b1
do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1464
diff
changeset
|
1836 /* re-use existing keyword if any */ |
7f77bb16d3b1
do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1464
diff
changeset
|
1837 if (!keyword_exists(GTK_TREE_MODEL(keyword_tree), parent, NULL, name, FALSE, &iter)) |
7f77bb16d3b1
do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1464
diff
changeset
|
1838 { |
7f77bb16d3b1
do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1464
diff
changeset
|
1839 gtk_tree_store_append(keyword_tree, &iter, parent); |
7f77bb16d3b1
do not add duplicate keywords from config file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1464
diff
changeset
|
1840 } |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1841 keyword_set(keyword_tree, &iter, name, is_kw); |
2492
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1842 |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1843 if (mark_str) |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1844 { |
2600
c6a11c0bade8
Bug fix #509: Increase number of marks to 10
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents:
2598
diff
changeset
|
1845 gint i = (gint)atoi(mark_str); |
c6a11c0bade8
Bug fix #509: Increase number of marks to 10
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents:
2598
diff
changeset
|
1846 if (i == 0) i = 10; |
c6a11c0bade8
Bug fix #509: Increase number of marks to 10
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents:
2598
diff
changeset
|
1847 |
2492
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1848 meta_data_connect_mark_with_keyword(GTK_TREE_MODEL(keyword_tree), |
2600
c6a11c0bade8
Bug fix #509: Increase number of marks to 10
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents:
2598
diff
changeset
|
1849 &iter, i - 1); |
2492
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1850 } |
586556259c35
Fix #357: Save mark-and-keyword connections
Colin Clark <colin.clark@cclark.uk>
parents:
2478
diff
changeset
|
1851 |
1404
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1852 g_free(name); |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1853 return gtk_tree_iter_copy(&iter); |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1854 } |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1855 g_free(name); |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1856 return NULL; |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1857 } |
093f360034e3
save and restore the keyword tree
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
1396
diff
changeset
|
1858 |
1178
f30384a38be7
Move comments/keywords read and write stuff to new metadata.{c,h}.
Laurent Monin <geeqie@norz.org>
parents:
diff
changeset
|
1859 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ |