Implemented the saving function (doesn't save attributes yet)

This commit is contained in:
Pierre Pronchery 2010-11-16 16:13:39 +00:00
parent a04a439a63
commit e1b502003f
3 changed files with 56 additions and 14 deletions

View File

@ -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 15:08+0100\n"
"POT-Creation-Date: 2010-11-16 17:11+0100\n"
"PO-Revision-Date: 2010-11-14 00:20+0100\n"
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
"Language-Team: French\n"
@ -116,8 +116,8 @@ msgstr "(Sans titre)"
msgid "Error"
msgstr "Erreur"
#: ../src/xmleditor.c:333 ../src/xmleditor.c:343 ../src/xmleditor.c:485
#: ../src/xmleditor.c:490
#: ../src/xmleditor.c:333 ../src/xmleditor.c:343 ../src/xmleditor.c:527
#: ../src/xmleditor.c:532
msgid "Warning"
msgstr "Avertissement"
@ -131,10 +131,10 @@ msgstr ""
msgid "Open file..."
msgstr "Ouvrir un fichier..."
#: ../src/xmleditor.c:489
#: ../src/xmleditor.c:531
msgid "This file already exists. Overwrite?"
msgstr "Ce fichier existe déjà. Écraser?"
#: ../src/xmleditor.c:508
#: ../src/xmleditor.c:550
msgid "Save as..."
msgstr "Enregistrer sous..."

View File

@ -1,8 +1,8 @@
<root><node1></node1><node2 attr2="attr2"></node2>
<root><node1></node1><node2></node2>
<node3>some data</node3>
<node4 attr4></node4>
<node5/>
<node6 attr6="attr6" attr7="attr7">more data and an &entity; (yup)</node6>
<node7><node8/></node7>
<node4></node4>
<node5></node5>
<node6>more data and an &entity; (yup)</node6>
<node7><node8></node8></node7>
<node9></node9>
</root>
</root>

View File

@ -445,11 +445,14 @@ void xmleditor_open_dialog(XMLEditor * xmleditor)
/* xmleditor_save */
static void _save_do(XMLEditor * xmleditor, FILE * fp, GtkTreeIter * parent);
gboolean xmleditor_save(XMLEditor * xmleditor)
{
char const * filename;
char * buf;
FILE * fp;
char * buf;
GtkTreeIter iter;
if(xmleditor->xml == NULL)
return xmleditor_save_as_dialog(xmleditor);
@ -461,12 +464,51 @@ gboolean xmleditor_save(XMLEditor * xmleditor)
g_free(buf);
return FALSE;
}
/* FIXME implement */
if(gtk_tree_model_iter_children(GTK_TREE_MODEL(xmleditor->store), &iter,
NULL) == TRUE)
_save_do(xmleditor, fp, &iter);
fclose(fp);
return FALSE;
return TRUE;
}
static void _save_do(XMLEditor * xmleditor, FILE * fp, GtkTreeIter * parent)
{
GtkTreeModel * model = GTK_TREE_MODEL(xmleditor->store);
GtkTreeIter child;
gchar * name;
gboolean valid;
gchar * tag;
gchar * data;
gchar * entity;
gtk_tree_model_get(model, parent, XEC_TAGNAME, &name, -1);
fprintf(fp, "<%s", name);
/* attributes */
gtk_tree_model_iter_children(model, &child, parent);
/* FIXME implement */
fprintf(fp, ">");
/* content */
gtk_tree_model_iter_children(model, &child, parent);
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_TAGNAME, &tag,
XEC_DATA, &data, XEC_ENTITY, &entity, -1);
if(tag != NULL)
_save_do(xmleditor, fp, &child);
else if(data != NULL)
fprintf(fp, "%s", data);
else if(entity != NULL)
fprintf(fp, "&%s;", entity);
g_free(tag);
g_free(data);
g_free(entity);
}
fprintf(fp, "</%s>", name);
g_free(name);
}
/* xmleditor_save_as */
gboolean xmleditor_save_as(XMLEditor * xmleditor, char const * filename)