[gthumb] Fixed catalog creation
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] Fixed catalog creation
- Date: Tue, 16 Feb 2010 19:40:45 +0000 (UTC)
commit 09770f8199a7e735f9d62b69ea1c6862414f5c94
Author: Paolo Bacchilega <paobac src gnome org>
Date: Tue Feb 16 20:39:55 2010 +0100
Fixed catalog creation
Check whether an attribute is present before using it.
extensions/slideshow/callbacks.c | 55 ++++++++++++++++++++++---------------
gthumb/gvaluehash.h | 18 ++++++++----
2 files changed, 45 insertions(+), 28 deletions(-)
---
diff --git a/extensions/slideshow/callbacks.c b/extensions/slideshow/callbacks.c
index 57624f3..b968827 100644
--- a/extensions/slideshow/callbacks.c
+++ b/extensions/slideshow/callbacks.c
@@ -295,38 +295,49 @@ ss__gth_catalog_write_to_doc (GthCatalog *catalog,
DomElement *root)
{
DomElement *slideshow;
- char *delay;
- char **playlist_files;
+
+ if (! g_value_hash_is_set (catalog->attributes, "slideshow::personalize"))
+ return;
slideshow = dom_document_create_element (doc,
"slideshow",
- "personalize", (g_value_hash_get_boolean (catalog->attributes, "slideshow::personalize") ? "true" : "false"),
- "automatic", (g_value_hash_get_boolean (catalog->attributes, "slideshow::automatic") ? "true" : "false"),
- "wrap-around", (g_value_hash_get_boolean (catalog->attributes, "slideshow::wrap-around") ? "true" : "false"),
+ "personalize", (g_value_hash_get_boolean_or_default (catalog->attributes, "slideshow::personalize", FALSE) ? "true" : "false"),
+ "automatic", (g_value_hash_get_boolean_or_default (catalog->attributes, "slideshow::automatic", FALSE) ? "true" : "false"),
+ "wrap-around", (g_value_hash_get_boolean_or_default (catalog->attributes, "slideshow::wrap-around", FALSE) ? "true" : "false"),
NULL);
dom_element_append_child (root, slideshow);
- delay = g_strdup_printf ("%d", g_value_hash_get_int (catalog->attributes, "slideshow::delay"));
- dom_element_append_child (slideshow,
- dom_document_create_element_with_text (doc, delay, "delay", NULL));
- g_free (delay);
+ if (g_value_hash_is_set (catalog->attributes, "slideshow::delay")) {
+ char *delay;
+
+ delay = g_strdup_printf ("%d", g_value_hash_get_int (catalog->attributes, "slideshow::delay"));
+ dom_element_append_child (slideshow,
+ dom_document_create_element_with_text (doc, delay, "delay", NULL));
+
+ g_free (delay);
+ }
+
+ if (g_value_hash_is_set (catalog->attributes, "slideshow::transition"))
+ dom_element_append_child (slideshow,
+ dom_document_create_element_with_text (doc,
+ g_value_hash_get_string (catalog->attributes, "slideshow::transition"),
+ "transition",
+ NULL));
- dom_element_append_child (slideshow,
- dom_document_create_element_with_text (doc,
- g_value_hash_get_string (catalog->attributes, "slideshow::transition"),
- "transition",
- NULL));
+ if (g_value_hash_is_set (catalog->attributes, "slideshow::playlist")) {
+ char **playlist_files;
- playlist_files = g_value_hash_get_stringv (catalog->attributes, "slideshow::playlist");
- if (playlist_files[0] != NULL) {
- DomElement *playlist;
- int i;
+ playlist_files = g_value_hash_get_stringv (catalog->attributes, "slideshow::playlist");
+ if (playlist_files[0] != NULL) {
+ DomElement *playlist;
+ int i;
- playlist = dom_document_create_element (doc, "playlist", NULL);
- dom_element_append_child (slideshow, playlist);
+ playlist = dom_document_create_element (doc, "playlist", NULL);
+ dom_element_append_child (slideshow, playlist);
- for (i = 0; playlist_files[i] != NULL; i++)
- dom_element_append_child (playlist, dom_document_create_element (doc, "file", "uri", playlist_files[i], NULL));
+ for (i = 0; playlist_files[i] != NULL; i++)
+ dom_element_append_child (playlist, dom_document_create_element (doc, "file", "uri", playlist_files[i], NULL));
+ }
}
}
diff --git a/gthumb/gvaluehash.h b/gthumb/gvaluehash.h
index 55c21dd..41838b0 100644
--- a/gthumb/gvaluehash.h
+++ b/gthumb/gvaluehash.h
@@ -64,12 +64,18 @@ GValue * g_value_hash_get_value (GValueHash *self,
const char *key);
gboolean g_value_hash_is_set (GValueHash *self,
const char *key);
-#define g_value_hash_get_boolean(self, key) (g_value_get_boolean (g_value_hash_get_value ((self), (key))))
-#define g_value_hash_get_float(self, key) (g_value_get_float (g_value_hash_get_value ((self), (key))))
-#define g_value_hash_get_int(self, key) (g_value_get_int (g_value_hash_get_value ((self), (key))))
-#define g_value_hash_get_string(self, key) (g_value_get_string (g_value_hash_get_value ((self), (key))))
-#define g_value_hash_get_stringv(self, key) ((char **) g_value_get_boxed (g_value_hash_get_value ((self), (key))))
-#define g_value_hash_get_string_list(self, key) ((GList *) g_value_get_boxed (g_value_hash_get_value ((self), (key))))))
+#define g_value_hash_get_boolean(self, key) (g_value_get_boolean (g_value_hash_get_value ((self), (key))))
+#define g_value_hash_get_float(self, key) (g_value_get_float (g_value_hash_get_value ((self), (key))))
+#define g_value_hash_get_int(self, key) (g_value_get_int (g_value_hash_get_value ((self), (key))))
+#define g_value_hash_get_string(self, key) (g_value_get_string (g_value_hash_get_value ((self), (key))))
+#define g_value_hash_get_stringv(self, key) ((char **) g_value_get_boxed (g_value_hash_get_value ((self), (key))))
+#define g_value_hash_get_string_list(self, key) ((GList *) g_value_get_boxed (g_value_hash_get_value ((self), (key))))
+#define g_value_hash_get_boolean_or_default(self, key, _default) (g_value_hash_is_set ((self), (key)) ? g_value_get_boolean (g_value_hash_get_value ((self), (key))) : (_default))
+#define g_value_hash_get_float_or_default(self, key, _default) (g_value_hash_is_set ((self), (key)) ? g_value_get_float (g_value_hash_get_value ((self), (key))) : (_default))
+#define g_value_hash_get_int_or_default(self, key, _default) (g_value_hash_is_set ((self), (key)) ? g_value_get_int (g_value_hash_get_value ((self), (key))) : (_default))
+#define g_value_hash_get_string_or_default(self, key, _default) (g_value_hash_is_set ((self), (key)) ? g_value_get_string (g_value_hash_get_value ((self), (key))) : (_default))
+#define g_value_hash_get_stringv_or_default(self, key, _default) (g_value_hash_is_set ((self), (key)) ? (char **) g_value_get_boxed (g_value_hash_get_value ((self), (key))) : (_default))
+#define g_value_hash_get_string_list_or_default(self, key, _default) (g_value_hash_is_set ((self), (key)) ? (GList *) g_value_get_boxed (g_value_hash_get_value ((self), (key))) : (_default))
void g_value_hash_unset (GValueHash *self,
const char *key);
void g_value_hash_clear (GValueHash *self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]