Parsing and saving attributes as well

This commit is contained in:
Pierre Pronchery 2010-11-16 16:38:18 +00:00
parent cf31e30d70
commit 7c7926eed5
2 changed files with 64 additions and 36 deletions

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: XMLEditor 0.0.0\n" "Project-Id-Version: XMLEditor 0.0.0\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2010-11-14 00:20+0100\n"
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n" "Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
"Language-Team: French\n" "Language-Team: French\n"
@ -20,121 +20,121 @@ msgstr ""
msgid "Usage: xmleditor [file]\n" msgid "Usage: xmleditor [file]\n"
msgstr "Usage: xmleditor [fichier]\n" msgstr "Usage: xmleditor [fichier]\n"
#: ../src/xmleditor.c:82 #: ../src/xmleditor.c:83
msgid "_New" msgid "_New"
msgstr "_Nouveau" msgstr "_Nouveau"
#: ../src/xmleditor.c:84 #: ../src/xmleditor.c:85
msgid "_Open" msgid "_Open"
msgstr "_Ouvrir" msgstr "_Ouvrir"
#: ../src/xmleditor.c:87 #: ../src/xmleditor.c:88
msgid "_Save" msgid "_Save"
msgstr "_Enregistrer" msgstr "_Enregistrer"
#: ../src/xmleditor.c:89 #: ../src/xmleditor.c:90
msgid "_Save as..." msgid "_Save as..."
msgstr "Enregistrer _sous..." msgstr "Enregistrer _sous..."
#: ../src/xmleditor.c:92 #: ../src/xmleditor.c:93
msgid "_Close" msgid "_Close"
msgstr "_Fermer" msgstr "_Fermer"
#: ../src/xmleditor.c:99 #: ../src/xmleditor.c:100
msgid "_Preferences" msgid "_Preferences"
msgstr "_Préférences" msgstr "_Préférences"
#: ../src/xmleditor.c:106 #: ../src/xmleditor.c:107
msgid "_Expand all" msgid "_Expand all"
msgstr "Tout _montrer" msgstr "Tout _montrer"
#: ../src/xmleditor.c:108 #: ../src/xmleditor.c:109
msgid "_Collapse all" msgid "_Collapse all"
msgstr "Tout _fermer" msgstr "Tout _fermer"
#: ../src/xmleditor.c:115 #: ../src/xmleditor.c:116
msgid "_About" msgid "_About"
msgstr "À _propos" msgstr "À _propos"
#: ../src/xmleditor.c:126 #: ../src/xmleditor.c:127
msgid "_File" msgid "_File"
msgstr "_Fichier" msgstr "_Fichier"
#: ../src/xmleditor.c:127 #: ../src/xmleditor.c:128
msgid "_Edit" msgid "_Edit"
msgstr "_Édition" msgstr "_Édition"
#: ../src/xmleditor.c:128 #: ../src/xmleditor.c:129
msgid "_View" msgid "_View"
msgstr "_Vue" msgstr "_Vue"
#: ../src/xmleditor.c:129 #: ../src/xmleditor.c:130
msgid "_Help" msgid "_Help"
msgstr "_Aide" msgstr "_Aide"
#: ../src/xmleditor.c:136 #: ../src/xmleditor.c:137
msgid "New" msgid "New"
msgstr "Nouveau" msgstr "Nouveau"
#: ../src/xmleditor.c:137 #: ../src/xmleditor.c:138
msgid "Open" msgid "Open"
msgstr "Ouvrir" msgstr "Ouvrir"
#: ../src/xmleditor.c:139 #: ../src/xmleditor.c:140
msgid "Save" msgid "Save"
msgstr "Enregistrer" msgstr "Enregistrer"
#: ../src/xmleditor.c:140 #: ../src/xmleditor.c:141
msgid "Save as" msgid "Save as"
msgstr "Enregistrer sous" msgstr "Enregistrer sous"
#: ../src/xmleditor.c:144 #: ../src/xmleditor.c:145
msgid "Preferences" msgid "Preferences"
msgstr "Préférences" msgstr "Préférences"
#: ../src/xmleditor.c:212 #: ../src/xmleditor.c:215
msgid "Name" msgid "Name"
msgstr "Nom" msgstr "Nom"
#: ../src/xmleditor.c:216 #: ../src/xmleditor.c:219
msgid "Entity" msgid "Entity"
msgstr "Entité" msgstr "Entité"
#: ../src/xmleditor.c:220 #: ../src/xmleditor.c:223
msgid "Data" msgid "Data"
msgstr "Données" msgstr "Données"
#: ../src/xmleditor.c:241 #: ../src/xmleditor.c:244
msgid "XML editor - " msgid "XML editor - "
msgstr "Éditeur XML - " msgstr "Éditeur XML - "
#: ../src/xmleditor.c:242 #: ../src/xmleditor.c:245
msgid "(Untitled)" msgid "(Untitled)"
msgstr "(Sans titre)" msgstr "(Sans titre)"
#: ../src/xmleditor.c:302 ../src/xmleditor.c:307 #: ../src/xmleditor.c:305 ../src/xmleditor.c:310
msgid "Error" msgid "Error"
msgstr "Erreur" msgstr "Erreur"
#: ../src/xmleditor.c:333 ../src/xmleditor.c:343 ../src/xmleditor.c:527 #: ../src/xmleditor.c:336 ../src/xmleditor.c:346 ../src/xmleditor.c:555
#: ../src/xmleditor.c:532 #: ../src/xmleditor.c:560
msgid "Warning" msgid "Warning"
msgstr "Avertissement" msgstr "Avertissement"
#: ../src/xmleditor.c:337 #: ../src/xmleditor.c:340
msgid "" msgid ""
"There are unsaved changes.\n" "There are unsaved changes.\n"
"Are you sure you want to close?" "Are you sure you want to close?"
msgstr "" msgstr ""
#: ../src/xmleditor.c:431 #: ../src/xmleditor.c:446
msgid "Open file..." msgid "Open file..."
msgstr "Ouvrir un fichier..." msgstr "Ouvrir un fichier..."
#: ../src/xmleditor.c:531 #: ../src/xmleditor.c:559
msgid "This file already exists. Overwrite?" msgid "This file already exists. Overwrite?"
msgstr "Ce fichier existe déjà. Écraser?" msgstr "Ce fichier existe déjà. Écraser?"
#: ../src/xmleditor.c:550 #: ../src/xmleditor.c:578
msgid "Save as..." msgid "Save as..."
msgstr "Enregistrer sous..." msgstr "Enregistrer sous..."

View File

@ -36,7 +36,8 @@ static char const _license[] =
/* private */ /* private */
/* types */ /* types */
typedef enum _XMLEditorColumn { typedef enum _XMLEditorColumn {
XEC_TAGNAME = 0, XEC_DATA, XEC_ENTITY XEC_TAGNAME = 0, XEC_ATTRIBUTE_NAME, XEC_ATTRIBUTE_VALUE, XEC_DATA,
XEC_ENTITY
} XMLEditorColumn; } XMLEditorColumn;
#define XEC_LAST XEC_ENTITY #define XEC_LAST XEC_ENTITY
#define XEC_COUNT (XEC_LAST + 1) #define XEC_COUNT (XEC_LAST + 1)
@ -195,9 +196,11 @@ XMLEditor * xmleditor_new(void)
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget), gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
xmleditor->store = gtk_tree_store_new(XEC_COUNT, xmleditor->store = gtk_tree_store_new(XEC_COUNT,
G_TYPE_STRING, /* XEC_TAGNAME */ G_TYPE_STRING, /* XEC_TAGNAME */
G_TYPE_STRING, /* XEC_DATA */ G_TYPE_STRING, /* XEC_ATTRIBUTE_NAME */
G_TYPE_STRING); /* XEC_ENTITY */ 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->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(
xmleditor->store)); xmleditor->store));
#if 0 #if 0
@ -395,6 +398,7 @@ static void _open_document_node(XMLEditor * xmleditor, XMLNode * node,
{ {
size_t i; size_t i;
GtkTreeIter iter; GtkTreeIter iter;
GtkTreeIter child;
if(node == NULL) if(node == NULL)
return; 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_append(xmleditor->store, &iter, parent);
gtk_tree_store_set(xmleditor->store, &iter, XEC_TAGNAME, gtk_tree_store_set(xmleditor->store, &iter, XEC_TAGNAME,
node->tag.name, -1); 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++) for(i = 0; i < node->tag.childs_cnt; i++)
_open_document_node(xmleditor, _open_document_node(xmleditor,
node->tag.childs[i], &iter); node->tag.childs[i], &iter);
@ -477,6 +492,8 @@ static void _save_do(XMLEditor * xmleditor, FILE * fp, GtkTreeIter * parent)
GtkTreeIter child; GtkTreeIter child;
gchar * name; gchar * name;
gboolean valid; gboolean valid;
gchar * aname;
gchar * avalue;
gchar * tag; gchar * tag;
gchar * data; gchar * data;
gchar * entity; gchar * entity;
@ -485,7 +502,18 @@ static void _save_do(XMLEditor * xmleditor, FILE * fp, GtkTreeIter * parent)
fprintf(fp, "<%s", name); fprintf(fp, "<%s", name);
/* attributes */ /* attributes */
gtk_tree_model_iter_children(model, &child, parent); 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, ">"); fprintf(fp, ">");
/* content */ /* content */
gtk_tree_model_iter_children(model, &child, parent); gtk_tree_model_iter_children(model, &child, parent);