[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r20655 - gnunet-gtk/src/gns
From: |
gnunet |
Subject: |
[GNUnet-SVN] r20655 - gnunet-gtk/src/gns |
Date: |
Wed, 21 Mar 2012 16:15:46 +0100 |
Author: wachs
Date: 2012-03-21 16:15:46 +0100 (Wed, 21 Mar 2012)
New Revision: 20655
Modified:
gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c
Log:
- validity check
Modified: gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c
===================================================================
--- gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c 2012-03-21 14:58:41 UTC (rev
20654)
+++ gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c 2012-03-21 15:15:46 UTC (rev
20655)
@@ -54,9 +54,101 @@
void
-check_record_validity ()
+check_name_validity_and_commit (struct GNUNET_GNS_Context *gns, gchar *path)
{
- GNUNET_break (0);
+ GtkTreeIter it;
+ GtkTreeIter parent;
+ int children;
+ int c;
+ int valid = GNUNET_YES;
+
+ char *n_name;
+ int n_type;
+ gboolean n_public;
+ char *n_exp_color;
+ guint64 n_exp_time;
+ char *n_exp_str;
+ gboolean n_is_relative;
+ char *n_value;
+ char *n_value_color;
+
+
+ gtk_tree_model_get_iter_from_string(gns->tm, &it, path);
+
+ if (TRUE == gtk_tree_model_iter_parent (gns->tm, &parent, &it))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Has parent\n");
+ }
+ else
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No parent\n");
+ parent = it;
+ }
+
+ children = gtk_tree_model_iter_n_children (gns->tm, &parent);
+ if (children < 1)
+ {
+ GNUNET_break (0);
+ return;
+ }
+
+ struct GNUNET_NAMESTORE_RecordData rd[children];
+
+ if (FALSE == gtk_tree_model_iter_children (gns->tm, &it, &parent))
+ {
+ GNUNET_break (0);
+ return;
+ }
+ for (c = 0; c < children; c++)
+ {
+ gtk_tree_model_get(gns->tm, &it,
+ TREE_COL_NAME, &n_name,
+ TREE_COL_RECORD_TYPE, &n_type,
+ TREE_COL_IS_PUBLIC, &n_public,
+ TREE_COL_EXP_TIME_COLOR, &n_exp_color,
+ TREE_COL_EXP_TIME, &n_exp_time,
+ TREE_COL_EXP_TIME_IS_REL, &n_is_relative,
+ TREE_COL_EXP_TIME_AS_STR, &n_exp_str,
+ TREE_COL_VAL_AS_STR, &n_value,
+ TREE_COL_VAL_COLOR, &n_value_color,
+ -1);
+
+ /* valid name */
+ if (NULL == n_name)
+ valid = GNUNET_NO;
+
+ /* valid record type */
+ if (0 == n_type)
+ valid = GNUNET_NO;
+
+ /* valid expiration */
+ if ((n_exp_color != NULL) || (NULL == n_exp_str) || (0 == n_exp_time))
+ valid = GNUNET_NO;
+
+ /* valid value */
+ if ((n_value_color != NULL) || (NULL == n_value))
+ valid = GNUNET_NO;
+
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Child [%u] is %s\n", c, (GNUNET_NO
== valid) ? "INVALID" : "VALID");
+
+ g_free (n_name);
+ g_free (n_exp_color);
+ g_free (n_exp_str);
+ g_free (n_value);
+ g_free (n_value_color);
+
+ if ((GNUNET_NO == valid) || (FALSE == gtk_tree_model_iter_next (gns->tm,
&it)))
+ break;
+ }
+
+ if (GNUNET_NO == valid)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Not valid\n");
+ }
+ else
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Valid\n");
+ }
}
@@ -147,8 +239,7 @@
gtk_tree_store_set (gns->ts, &child, TREE_COL_VAL_COLOR, "red", -1);
}
- check_record_validity ();
-
+ check_name_validity_and_commit (gns, path);
}
@@ -168,13 +259,13 @@
struct GNUNET_GNS_Context *gns = user_data;
GtkTreeIter it;
GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts);
- int value;
+ gboolean value;
gtk_tree_model_get_iter_from_string(tm, &it, path);
gtk_tree_model_get(tm, &it, TREE_COL_IS_PUBLIC, &value, -1);
gtk_tree_store_set(gns->ts, &it, TREE_COL_IS_PUBLIC, !value, -1);
- GNUNET_break (0); // FIXME, not implemented
+ check_name_validity_and_commit (gns, path);
}
@@ -243,8 +334,8 @@
TREE_COL_EXP_TIME, abstime.abs_value,
TREE_COL_EXP_TIME_COLOR, NULL,
-1);
+ check_name_validity_and_commit (gns, path);
}
- check_record_validity ();
}
@@ -282,14 +373,13 @@
{
gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_COLOR, NULL, -1);
gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_AS_STR, new_text, -1);
+ check_name_validity_and_commit (gns, path);
}
else
{
gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_COLOR, "red", -1);
gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_AS_STR, new_text, -1);
}
-
- check_record_validity ();
}
}
@@ -317,22 +407,25 @@
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "New text for `%s' is `%s'\n", path,
new_text);
if ((0 == strcmp (new_text, NEW_NAME_STR)) || (0 == strcmp (new_text, "")))
return;
+
gtk_tree_model_get_iter_from_string(tm, &it, path);
gtk_tree_model_get(tm, &it, TREE_COL_NOT_DUMMY_ROW, ¬_dummy, -1);
if (not_dummy == GNUNET_NO)
{
/* update name */
- gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1);
- gtk_tree_store_set (gns->ts, &it, TREE_COL_RECORD_TYPE_AS_STR,
_(NEW_RECORD_STR), -1);
- gtk_tree_store_set (gns->ts, &it, TREE_COL_NOT_DUMMY_ROW, GNUNET_YES, -1);
+ gtk_tree_store_set (gns->ts, &it,
+ TREE_COL_NAME, new_text,
+ TREE_COL_RECORD_TYPE, 0,
+ TREE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR),
+ TREE_COL_NOT_DUMMY_ROW, GNUNET_YES,
+ -1);
/* add a new dummy line */
gtk_tree_store_insert_with_values (gns->ts, &it,NULL, 0,
TREE_COL_NAME, _(NEW_NAME_STR),
TREE_COL_NAME_IS_VISIBLE, TRUE,
TREE_COL_RECORD_TYPE, 1,
- TREE_COL_NAME_IS_VISIBLE, 1,
TREE_COL_NOT_DUMMY_ROW, GNUNET_NO,
TREE_COL_IS_RECORD_ROW, GNUNET_NO,
-1);
@@ -342,6 +435,7 @@
/* update name */
gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1);
}
+ check_name_validity_and_commit (gns, path);
}
/**
@@ -600,9 +694,10 @@
GtkTreeSelection * ts = gtk_tree_view_get_selection(tv);
gtk_tree_selection_get_selected (ts, &tm, &it);
+
gtk_tree_model_get(tm, &it, TREE_COL_NOT_DUMMY_ROW, ¬_dummy, -1);
if (GNUNET_NO == not_dummy)
- return;
+ return; /* do not delete the dummy line */
/* Has parent? */
has_parent = gtk_tree_model_iter_parent (tm, &parent, &it);
@@ -712,6 +807,7 @@
gtk_tree_store_set(zc_ctx->gns->ts, &iter_name,
TREE_COL_NAME, name,
TREE_COL_NAME_IS_VISIBLE, TRUE,
+ TREE_COL_RECORD_TYPE, 0,
TREE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR),
TREE_COL_IS_RECORD_ROW, GNUNET_NO,
TREE_COL_NOT_DUMMY_ROW, GNUNET_YES,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r20655 - gnunet-gtk/src/gns,
gnunet <=