From df73ea25148645c15b095abe1ead5289fc2a4f98 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 26 Jun 2012 15:28:30 +0000 Subject: -more cleanup --- contrib/gnunet_setup_gtk_main_window.glade | 2 +- src/setup/gnunet-setup-gns.c | 53 +++++++++++++++++------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/contrib/gnunet_setup_gtk_main_window.glade b/contrib/gnunet_setup_gtk_main_window.glade index ab699f1c..a0307c3a 100644 --- a/contrib/gnunet_setup_gtk_main_window.glade +++ b/contrib/gnunet_setup_gtk_main_window.glade @@ -4620,7 +4620,7 @@ True GNUNET_setup_gns_type_liststore 1 - + 10 diff --git a/src/setup/gnunet-setup-gns.c b/src/setup/gnunet-setup-gns.c index fe7ba60b..78aa3a0c 100644 --- a/src/setup/gnunet-setup-gns.c +++ b/src/setup/gnunet-setup-gns.c @@ -182,22 +182,17 @@ static char *zonekey_directory; static struct GNUNET_NAMESTORE_Handle *namestore; /** - * FIXME... + * Tree store with all of the values we're modifying for GNS. */ static GtkTreeStore *ts; /** - * FIXME... - */ -static GtkListStore *ls; - -/** - * FIXME... + * Tree model (same object as 'ts', just different type). */ static GtkTreeModel *tm; /** - * FIXME... + * The main tree view for 'gns' that shows the records. */ static GtkTreeView *tv; @@ -648,26 +643,32 @@ check_name_validity_and_remove (const gchar *path) * @param user_data unused */ void -GNUNET_setup_gns_type_cellrenderercombo_changed_cb (GtkCellRendererCombo *combo, - gchar *path, - GtkTreeIter *new_iter, - gpointer user_data) +GNUNET_setup_gns_type_cellrenderercombo_edited_cb (GtkCellRendererCombo *combo, + gchar *path, + gchar *new_text, + gpointer user_data) { + GtkTreeSelection *sel; GtkTreeIter it; GtkTreeIter child; guint type; - char *type_str; gboolean not_dummy_row; char *name_str; char *value_str; int is_valid; void *data; size_t data_size; + GtkTreePath *tp; + GtkTreeViewColumn *value_column; - gtk_tree_model_get (GTK_TREE_MODEL(ls), new_iter, - GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPE, &type, - GNS_TYPE_TO_NAME_LISTSTORE_COLUMN_TYPENAME, &type_str, - -1); + type = GNUNET_NAMESTORE_typename_to_number (new_text); + if (UINT32_MAX == type) + { + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Invalid or unsupported record type `%s'\n", + new_text); + return; + } /* check if this is a new record */ gtk_tree_model_get_iter_from_string(tm, &it, path); gtk_tree_model_get(tm, &it, @@ -690,18 +691,18 @@ GNUNET_setup_gns_type_cellrenderercombo_changed_cb (GtkCellRendererCombo *combo, /* Updating an existing record */ gtk_tree_store_set(ts, &it, GNS_TREESTORE_COL_RECORD_TYPE, type, - GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, type_str, + GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, new_text, GNS_TREESTORE_COL_VAL_COLOR, (GNUNET_NO == is_valid) ? "red" : NULL, -1); } else if ((NULL != name_str) && (0 != strcmp (NEW_NAME_STR, name_str))) { /* Adding a new record */ - gtk_tree_store_insert_with_values(ts, &child , &it, 0, + gtk_tree_store_insert_with_values(ts, &child , &it, -1, GNS_TREESTORE_COL_NAME, name_str, GNS_TREESTORE_COL_NAME_IS_VISIBLE, FALSE, GNS_TREESTORE_COL_RECORD_TYPE, type, - GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, type_str, + GNS_TREESTORE_COL_RECORD_TYPE_AS_STR, new_text, GNS_TREESTORE_COL_EXP_TIME_AS_STR, EXPIRE_NEVER_STRING, GNS_TREESTORE_COL_EXP_TIME, GNUNET_TIME_UNIT_FOREVER_ABS, GNS_TREESTORE_COL_EXP_TIME_IS_REL, FALSE, @@ -709,14 +710,23 @@ GNUNET_setup_gns_type_cellrenderercombo_changed_cb (GtkCellRendererCombo *combo, GNS_TREESTORE_COL_NOT_DUMMY_ROW, TRUE, GNS_TREESTORE_COL_VAL_COLOR, "red", -1); + /* select new row and start editing 'value' */ gtk_tree_view_expand_row (tv, gtk_tree_model_get_path(tm, &it), 0); + sel = gtk_tree_view_get_selection (tv); + gtk_tree_selection_select_iter (sel, &child); + value_column = GTK_TREE_VIEW_COLUMN (GNUNET_SETUP_get_object ("GNUNET_setup_gns_value_treeviewcolumn")); + tp = gtk_tree_model_get_path (tm, &child); + gtk_tree_view_set_cursor (tv, + tp, + value_column, + TRUE); + gtk_tree_path_free (tp); } else { /* type should not have been editable! */ GNUNET_break (0); } - GNUNET_free (type_str); GNUNET_free_non_null (value_str); GNUNET_free_non_null (name_str); check_name_validity_and_commit (path, NULL); @@ -1602,7 +1612,6 @@ GNUNET_SETUP_gns_init () return; } ts = GTK_TREE_STORE (GNUNET_SETUP_get_object ("GNUNET_setup_gns_treestore")); - ls = GTK_LIST_STORE (GNUNET_SETUP_get_object ("GNUNET_setup_gns_type_liststore")); tv = GTK_TREE_VIEW (GNUNET_SETUP_get_object ("GNUNET_setup_gns_main_treeview")); tm = GTK_TREE_MODEL(ts); zone_as_string = GNUNET_strdup ((char *) &shenc); -- cgit v1.2.3