[gnumeric] document properties: improve handling of boolean, add more known property names
- From: Andreas J. Guelzow <guelzow src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] document properties: improve handling of boolean, add more known property names
- Date: Fri, 1 Jul 2011 18:25:03 +0000 (UTC)
commit 947223974a33f8c7d567f2354190d87679066929
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date: Fri Jul 1 12:21:40 2011 -0600
document properties: improve handling of boolean, add more known property names
2011-07-01 Andreas J. Guelzow <aguelzow pyrshep ca>
* dialog-doc-metadata.c (dialog_doc_metadata_get_value_type_from_name):
add items
(dialog_doc_metadata_transform_str_to_boolean): new
(dialog_doc_metadata_transform_boolean_to_str): new
(dialog_doc_metadata_init): connect above transforms
2011-07-01 Andreas J. Guelzow <aguelzow pyrshep ca>
* xlsx-write-docprops.c (xlsx_map_prop_name_to_output_fun):
use GSF_META_NAME_MM_CLIP_COUNT
* xlsx-read-docprops.c: use GSF_META_NAME_MM_CLIP_COUNT
plugins/excel/ChangeLog | 6 ++
plugins/excel/xlsx-read-docprops.c | 2 +-
plugins/excel/xlsx-write-docprops.c | 2 +-
src/dialogs/ChangeLog | 8 +++
src/dialogs/dialog-doc-metadata.c | 95 +++++++++++++++++++++++++++++++----
5 files changed, 100 insertions(+), 13 deletions(-)
---
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index 31a7511..48982e2 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,3 +1,9 @@
+2011-07-01 Andreas J. Guelzow <aguelzow pyrshep ca>
+
+ * xlsx-write-docprops.c (xlsx_map_prop_name_to_output_fun):
+ use GSF_META_NAME_MM_CLIP_COUNT
+ * xlsx-read-docprops.c: use GSF_META_NAME_MM_CLIP_COUNT
+
2011-06-28 Andreas J. Guelzow <aguelzow pyrshep ca>
* xlsx-write-docprops.c (xlsx_read_core_keys): implement
diff --git a/plugins/excel/xlsx-read-docprops.c b/plugins/excel/xlsx-read-docprops.c
index 03f30dc..b926484 100644
--- a/plugins/excel/xlsx-read-docprops.c
+++ b/plugins/excel/xlsx-read-docprops.c
@@ -189,7 +189,7 @@ GSF_XML_IN_NODE_FULL (X_PROPS, X_PROP_SLIDES, XL_NS_PROP, "Slides", GSF_XML_CONT
GSF_XML_IN_NODE_FULL (X_PROPS, X_PROP_NOTES, XL_NS_PROP, "Notes", GSF_XML_CONTENT, FALSE, FALSE, NULL, &xlsx_read_prop, .v_str = GSF_META_NAME_NOTE_COUNT),
GSF_XML_IN_NODE_FULL (X_PROPS, X_PROP_TOTAL_TIME, XL_NS_PROP, "TotalTime", GSF_XML_CONTENT, FALSE, FALSE, NULL, &xlsx_read_prop_int, .v_str = GSF_META_NAME_EDITING_DURATION),
GSF_XML_IN_NODE_FULL (X_PROPS, X_PROP_HIDDEN_SLIDES, XL_NS_PROP, "HiddenSlides", GSF_XML_CONTENT, FALSE, FALSE, NULL, &xlsx_read_prop_int, .v_str = GSF_META_NAME_HIDDEN_SLIDE_COUNT),
-GSF_XML_IN_NODE_FULL (X_PROPS, X_PROP_MMCLIPS, XL_NS_PROP, "MMClips", GSF_XML_CONTENT, FALSE, FALSE, NULL, &xlsx_read_prop_int, .v_str = "xlsx:MMClips"),
+GSF_XML_IN_NODE_FULL (X_PROPS, X_PROP_MMCLIPS, XL_NS_PROP, "MMClips", GSF_XML_CONTENT, FALSE, FALSE, NULL, &xlsx_read_prop_int, .v_str = GSF_META_NAME_MM_CLIP_COUNT),
GSF_XML_IN_NODE_FULL (X_PROPS, X_PROP_SCALE_CROP, XL_NS_PROP, "ScaleCrop", GSF_XML_CONTENT, FALSE, FALSE, NULL, &xlsx_read_prop_boolean, .v_str = GSF_META_NAME_SCALE),
GSF_XML_IN_NODE_FULL (X_PROPS, X_PROP_LINKS_UP_TO_DATE, XL_NS_PROP, "LinksUpToDate", GSF_XML_CONTENT, FALSE, FALSE, NULL, &xlsx_read_prop_boolean, .v_str = GSF_META_NAME_LINKS_DIRTY),
GSF_XML_IN_NODE_FULL (X_PROPS, X_PROP_CHARACTERS_WITH_SPACES, XL_NS_PROP, "CharactersWithSpaces", GSF_XML_CONTENT, FALSE, FALSE, NULL, &xlsx_read_prop_int, .v_str = GSF_META_NAME_BYTE_COUNT),
diff --git a/plugins/excel/xlsx-write-docprops.c b/plugins/excel/xlsx-write-docprops.c
index 5c919c7..3e219b1 100644
--- a/plugins/excel/xlsx-write-docprops.c
+++ b/plugins/excel/xlsx-write-docprops.c
@@ -160,7 +160,7 @@ xlsx_map_prop_name_to_output_fun (char const *name)
{ "xlsx:HyperlinksChanged", xlsx_map_to_bool},
{ GSF_META_NAME_LINE_COUNT, xlsx_map_to_int},
{ GSF_META_NAME_LINKS_DIRTY, xlsx_map_to_bool},
- { "xlsx:MMClips", xlsx_map_to_int},
+ { GSF_META_NAME_MM_CLIP_COUNT, xlsx_map_to_int},
{ GSF_META_NAME_NOTE_COUNT, xlsx_map_to_int},
{ GSF_META_NAME_PAGE_COUNT, xlsx_map_to_int},
{ GSF_META_NAME_PARAGRAPH_COUNT, xlsx_map_to_int},
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index fb1c5ae..460b47b 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -1,3 +1,11 @@
+2011-07-01 Andreas J. Guelzow <aguelzow pyrshep ca>
+
+ * dialog-doc-metadata.c (dialog_doc_metadata_get_value_type_from_name):
+ add items
+ (dialog_doc_metadata_transform_str_to_boolean): new
+ (dialog_doc_metadata_transform_boolean_to_str): new
+ (dialog_doc_metadata_init): connect above transforms
+
2011-06-30 Andreas J. Guelzow <aguelzow pyrshep ca>
* dialog-doc-metadata.c (dialog_doc_metadata_get_value_type_from_name):
diff --git a/src/dialogs/dialog-doc-metadata.c b/src/dialogs/dialog-doc-metadata.c
index 0abb3ae..3df7b9e 100644
--- a/src/dialogs/dialog-doc-metadata.c
+++ b/src/dialogs/dialog-doc-metadata.c
@@ -168,23 +168,50 @@ dialog_doc_metadata_get_value_type_from_name (gchar const *name, GType def)
char const *name;
GType type;
} const map [] = {
- {GSF_META_NAME_CREATOR, G_TYPE_STRING},
- {GSF_META_NAME_TITLE, G_TYPE_STRING},
- {GSF_META_NAME_SUBJECT, G_TYPE_STRING},
- {GSF_META_NAME_MANAGER, G_TYPE_STRING},
- {GSF_META_NAME_COMPANY, G_TYPE_STRING},
- {GSF_META_NAME_CATEGORY, G_TYPE_STRING},
- {GSF_META_NAME_DESCRIPTION, G_TYPE_STRING},
- {GSF_META_NAME_SPREADSHEET_COUNT, G_TYPE_INT},
- {GSF_META_NAME_CELL_COUNT, G_TYPE_INT},
- {GSF_META_NAME_PAGE_COUNT, G_TYPE_INT}
+ {GSF_META_NAME_GENERATOR, G_TYPE_STRING},
+ {GSF_META_NAME_INITIAL_CREATOR, G_TYPE_STRING},
+ {GSF_META_NAME_CREATOR, G_TYPE_STRING},
+ {GSF_META_NAME_TITLE, G_TYPE_STRING},
+ {GSF_META_NAME_SUBJECT, G_TYPE_STRING},
+ {GSF_META_NAME_MANAGER, G_TYPE_STRING},
+ {GSF_META_NAME_COMPANY, G_TYPE_STRING},
+ {GSF_META_NAME_CATEGORY, G_TYPE_STRING},
+ {GSF_META_NAME_DESCRIPTION, G_TYPE_STRING},
+ {GSF_META_NAME_LAST_SAVED_BY, G_TYPE_STRING},
+ {GSF_META_NAME_TEMPLATE, G_TYPE_STRING},
+ {GSF_META_NAME_EDITING_DURATION, G_TYPE_STRING}, /* special */
+ {GSF_META_NAME_SPREADSHEET_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_TABLE_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_CELL_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_CHARACTER_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_BYTE_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_SECURITY, G_TYPE_INT},
+ {GSF_META_NAME_HIDDEN_SLIDE_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_LINE_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_SLIDE_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_WORD_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_MM_CLIP_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_NOTE_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_PARAGRAPH_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_PAGE_COUNT, G_TYPE_INT},
+ {GSF_META_NAME_CODEPAGE, G_TYPE_INT},
+ {GSF_META_NAME_LOCALE_SYSTEM_DEFAULT,G_TYPE_INT},
+ {GSF_META_NAME_OBJECT_COUNT, G_TYPE_INT},
+ {"xlsx:HyperlinksChanged", G_TYPE_BOOLEAN},
+ {GSF_META_NAME_LINKS_DIRTY, G_TYPE_BOOLEAN},
+ {"xlsx:SharedDoc", G_TYPE_BOOLEAN},
+ {GSF_META_NAME_SCALE, G_TYPE_BOOLEAN}
};
static char const *map_vector[] =
- {GSF_META_NAME_KEYWORDS};
+ {GSF_META_NAME_KEYWORDS,
+ GSF_META_NAME_DOCUMENT_PARTS,
+ GSF_META_NAME_HEADING_PAIRS};
static char const *map_timestamps[] =
{GSF_META_NAME_DATE_CREATED,
GSF_META_NAME_DATE_MODIFIED};
+ /*Missing:GSF_META_NAME_THUMBNAIL */
+
int i = G_N_ELEMENTS (map);
dialog_doc_metadata_name_to_type = g_hash_table_new (g_str_hash, g_str_equal);
while (i-- > 0)
@@ -315,6 +342,30 @@ dialog_doc_metadata_transform_str_to_float (const GValue *string_value,
}
static void
+dialog_doc_metadata_transform_str_to_boolean (const GValue *string_value,
+ GValue *b_value)
+{
+ gboolean x, err;
+ gchar const *str;
+ GnmValue *conversion;
+
+ g_return_if_fail (G_VALUE_HOLDS_STRING (string_value));
+ g_return_if_fail (G_VALUE_HOLDS_BOOLEAN (b_value));
+
+ str = g_value_get_string (string_value);
+ conversion = format_match_number (str, NULL, NULL);
+ if (conversion) {
+ x = value_get_as_bool (conversion, &err);
+ value_release (conversion);
+ if (err)
+ x = FALSE;
+ } else
+ x = FALSE;
+
+ g_value_set_boolean (b_value, x);
+}
+
+static void
dialog_doc_metadata_transform_str_to_docprop_vect (const GValue *string_value,
GValue *docprop_value)
{
@@ -433,6 +484,20 @@ dialog_doc_metadata_transform_float_to_str (const GValue *float_value,
g_value_take_string (string_value, str);
}
+static void
+dialog_doc_metadata_transform_boolean_to_str (const GValue *b_value,
+ GValue *string_value)
+{
+ gboolean x;
+
+ g_return_if_fail (G_VALUE_HOLDS_BOOLEAN (b_value));
+ g_return_if_fail (G_VALUE_HOLDS_STRING (string_value));
+
+ x = g_value_get_boolean (b_value);
+
+ g_value_set_static_string (string_value, x ? _("TRUE") : _("FALSE"));
+}
+
static gchar*
gnm_docprop_vector_as_string (GsfDocPropVector *vector)
{
@@ -2247,6 +2312,10 @@ dialog_doc_metadata_init (DialogDocMetaData *state,
GSF_DOCPROP_VECTOR_TYPE,
dialog_doc_metadata_transform_str_to_docprop_vect);
+ g_value_register_transform_func (G_TYPE_STRING,
+ G_TYPE_BOOLEAN,
+ dialog_doc_metadata_transform_str_to_boolean);
+
g_value_register_transform_func (GSF_TIMESTAMP_TYPE,
G_TYPE_STRING,
dialog_doc_metadata_transform_timestamp_to_str);
@@ -2259,6 +2328,10 @@ dialog_doc_metadata_init (DialogDocMetaData *state,
G_TYPE_STRING,
dialog_doc_metadata_transform_float_to_str);
+ g_value_register_transform_func (G_TYPE_BOOLEAN,
+ G_TYPE_STRING,
+ dialog_doc_metadata_transform_boolean_to_str);
+
for (i = 0; page_info[i].page > -1; i++) {
const page_info_t *this_page = &page_info[i];
this_page->page_initializer (state);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]