From 7c7926eed59cb7d76012b34a509f91deea46f29c Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Tue, 16 Nov 2010 16:38:18 +0000 Subject: [PATCH] Parsing and saving attributes as well --- po/fr.po | 62 ++++++++++++++++++++++++------------------------- src/xmleditor.c | 38 ++++++++++++++++++++++++++---- 2 files changed, 64 insertions(+), 36 deletions(-) diff --git a/po/fr.po b/po/fr.po index e8b0b21..dd21e8c 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: XMLEditor 0.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-11-16 17:11+0100\n" +"POT-Creation-Date: 2010-11-16 17:36+0100\n" "PO-Revision-Date: 2010-11-14 00:20+0100\n" "Last-Translator: Pierre Pronchery \n" "Language-Team: French\n" @@ -20,121 +20,121 @@ msgstr "" msgid "Usage: xmleditor [file]\n" msgstr "Usage: xmleditor [fichier]\n" -#: ../src/xmleditor.c:82 +#: ../src/xmleditor.c:83 msgid "_New" msgstr "_Nouveau" -#: ../src/xmleditor.c:84 +#: ../src/xmleditor.c:85 msgid "_Open" msgstr "_Ouvrir" -#: ../src/xmleditor.c:87 +#: ../src/xmleditor.c:88 msgid "_Save" msgstr "_Enregistrer" -#: ../src/xmleditor.c:89 +#: ../src/xmleditor.c:90 msgid "_Save as..." msgstr "Enregistrer _sous..." -#: ../src/xmleditor.c:92 +#: ../src/xmleditor.c:93 msgid "_Close" msgstr "_Fermer" -#: ../src/xmleditor.c:99 +#: ../src/xmleditor.c:100 msgid "_Preferences" msgstr "_Préférences" -#: ../src/xmleditor.c:106 +#: ../src/xmleditor.c:107 msgid "_Expand all" msgstr "Tout _montrer" -#: ../src/xmleditor.c:108 +#: ../src/xmleditor.c:109 msgid "_Collapse all" msgstr "Tout _fermer" -#: ../src/xmleditor.c:115 +#: ../src/xmleditor.c:116 msgid "_About" msgstr "À _propos" -#: ../src/xmleditor.c:126 +#: ../src/xmleditor.c:127 msgid "_File" msgstr "_Fichier" -#: ../src/xmleditor.c:127 +#: ../src/xmleditor.c:128 msgid "_Edit" msgstr "_Édition" -#: ../src/xmleditor.c:128 +#: ../src/xmleditor.c:129 msgid "_View" msgstr "_Vue" -#: ../src/xmleditor.c:129 +#: ../src/xmleditor.c:130 msgid "_Help" msgstr "_Aide" -#: ../src/xmleditor.c:136 +#: ../src/xmleditor.c:137 msgid "New" msgstr "Nouveau" -#: ../src/xmleditor.c:137 +#: ../src/xmleditor.c:138 msgid "Open" msgstr "Ouvrir" -#: ../src/xmleditor.c:139 +#: ../src/xmleditor.c:140 msgid "Save" msgstr "Enregistrer" -#: ../src/xmleditor.c:140 +#: ../src/xmleditor.c:141 msgid "Save as" msgstr "Enregistrer sous" -#: ../src/xmleditor.c:144 +#: ../src/xmleditor.c:145 msgid "Preferences" msgstr "Préférences" -#: ../src/xmleditor.c:212 +#: ../src/xmleditor.c:215 msgid "Name" msgstr "Nom" -#: ../src/xmleditor.c:216 +#: ../src/xmleditor.c:219 msgid "Entity" msgstr "Entité" -#: ../src/xmleditor.c:220 +#: ../src/xmleditor.c:223 msgid "Data" msgstr "Données" -#: ../src/xmleditor.c:241 +#: ../src/xmleditor.c:244 msgid "XML editor - " msgstr "Éditeur XML - " -#: ../src/xmleditor.c:242 +#: ../src/xmleditor.c:245 msgid "(Untitled)" msgstr "(Sans titre)" -#: ../src/xmleditor.c:302 ../src/xmleditor.c:307 +#: ../src/xmleditor.c:305 ../src/xmleditor.c:310 msgid "Error" msgstr "Erreur" -#: ../src/xmleditor.c:333 ../src/xmleditor.c:343 ../src/xmleditor.c:527 -#: ../src/xmleditor.c:532 +#: ../src/xmleditor.c:336 ../src/xmleditor.c:346 ../src/xmleditor.c:555 +#: ../src/xmleditor.c:560 msgid "Warning" msgstr "Avertissement" -#: ../src/xmleditor.c:337 +#: ../src/xmleditor.c:340 msgid "" "There are unsaved changes.\n" "Are you sure you want to close?" msgstr "" -#: ../src/xmleditor.c:431 +#: ../src/xmleditor.c:446 msgid "Open file..." msgstr "Ouvrir un fichier..." -#: ../src/xmleditor.c:531 +#: ../src/xmleditor.c:559 msgid "This file already exists. Overwrite?" msgstr "Ce fichier existe déjà. Écraser?" -#: ../src/xmleditor.c:550 +#: ../src/xmleditor.c:578 msgid "Save as..." msgstr "Enregistrer sous..." diff --git a/src/xmleditor.c b/src/xmleditor.c index 28b0201..e1c27b6 100644 --- a/src/xmleditor.c +++ b/src/xmleditor.c @@ -36,7 +36,8 @@ static char const _license[] = /* private */ /* types */ typedef enum _XMLEditorColumn { - XEC_TAGNAME = 0, XEC_DATA, XEC_ENTITY + XEC_TAGNAME = 0, XEC_ATTRIBUTE_NAME, XEC_ATTRIBUTE_VALUE, XEC_DATA, + XEC_ENTITY } XMLEditorColumn; #define XEC_LAST XEC_ENTITY #define XEC_COUNT (XEC_LAST + 1) @@ -195,9 +196,11 @@ XMLEditor * xmleditor_new(void) gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); xmleditor->store = gtk_tree_store_new(XEC_COUNT, - G_TYPE_STRING, /* XEC_TAGNAME */ - G_TYPE_STRING, /* XEC_DATA */ - G_TYPE_STRING); /* XEC_ENTITY */ + G_TYPE_STRING, /* XEC_TAGNAME */ + G_TYPE_STRING, /* XEC_ATTRIBUTE_NAME */ + G_TYPE_STRING, /* XEC_ATTRIBUTE_VALUE */ + G_TYPE_STRING, /* XEC_DATA */ + G_TYPE_STRING); /* XEC_ENTITY */ xmleditor->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL( xmleditor->store)); #if 0 @@ -395,6 +398,7 @@ static void _open_document_node(XMLEditor * xmleditor, XMLNode * node, { size_t i; GtkTreeIter iter; + GtkTreeIter child; if(node == NULL) return; @@ -414,6 +418,17 @@ static void _open_document_node(XMLEditor * xmleditor, XMLNode * node, gtk_tree_store_append(xmleditor->store, &iter, parent); gtk_tree_store_set(xmleditor->store, &iter, XEC_TAGNAME, node->tag.name, -1); + for(i = 0; i < node->tag.attributes_cnt; i++) + { + gtk_tree_store_append(xmleditor->store, &child, + &iter); + gtk_tree_store_set(xmleditor->store, &child, + XEC_ATTRIBUTE_NAME, + node->tag.attributes[i]->name, + XEC_ATTRIBUTE_VALUE, + node->tag.attributes[i]->value, + -1); + } for(i = 0; i < node->tag.childs_cnt; i++) _open_document_node(xmleditor, node->tag.childs[i], &iter); @@ -477,6 +492,8 @@ static void _save_do(XMLEditor * xmleditor, FILE * fp, GtkTreeIter * parent) GtkTreeIter child; gchar * name; gboolean valid; + gchar * aname; + gchar * avalue; gchar * tag; gchar * data; gchar * entity; @@ -485,7 +502,18 @@ static void _save_do(XMLEditor * xmleditor, FILE * fp, GtkTreeIter * parent) fprintf(fp, "<%s", name); /* attributes */ gtk_tree_model_iter_children(model, &child, parent); - /* FIXME implement */ + for(valid = gtk_tree_model_iter_children(model, &child, parent); + valid == TRUE; + valid = gtk_tree_model_iter_next(model, &child)) + { + gtk_tree_model_get(model, &child, XEC_ATTRIBUTE_NAME, &aname, + XEC_ATTRIBUTE_VALUE, &avalue, -1); + if(aname != NULL) + fprintf(fp, " %s=\"%s\"", aname, (avalue != NULL) + ? avalue : aname); + g_free(aname); + g_free(avalue); + } fprintf(fp, ">"); /* content */ gtk_tree_model_iter_children(model, &child, parent);