gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r20646 - gnunet-gtk/src/gns


From: gnunet
Subject: [GNUnet-SVN] r20646 - gnunet-gtk/src/gns
Date: Wed, 21 Mar 2012 14:24:58 +0100

Author: wachs
Date: 2012-03-21 14:24:58 +0100 (Wed, 21 Mar 2012)
New Revision: 20646

Modified:
   gnunet-gtk/src/gns/gnunet-gns-gtk.c
   gnunet-gtk/src/gns/gnunet-gns-gtk.h
   gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c
Log:
- expiration time


Modified: gnunet-gtk/src/gns/gnunet-gns-gtk.c
===================================================================
--- gnunet-gtk/src/gns/gnunet-gns-gtk.c 2012-03-21 13:23:50 UTC (rev 20645)
+++ gnunet-gtk/src/gns/gnunet-gns-gtk.c 2012-03-21 13:24:58 UTC (rev 20646)
@@ -434,6 +434,7 @@
   gns->main_window = GTK_WIDGET (get_object ("GNUNET_GNS_GTK_main_window"));
   gns->ts  = GTK_TREE_STORE (gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_treestore"));
   gns->ls =  GTK_LIST_STORE (gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_type_liststore"));
+  gns->tm = GTK_TREE_MODEL(gns->ts);
   gns->shorten_menu =  GTK_CHECK_MENU_ITEM(gtk_builder_get_object 
(gns->builder, "GNUNET_GNS_GTK_autoshort_imagemenuitem"));
   if (GNUNET_YES == GNUNET_CONFIGURATION_get_value_yesno (get_configuration (),
                                                             "gns",

Modified: gnunet-gtk/src/gns/gnunet-gns-gtk.h
===================================================================
--- gnunet-gtk/src/gns/gnunet-gns-gtk.h 2012-03-21 13:23:50 UTC (rev 20645)
+++ gnunet-gtk/src/gns/gnunet-gns-gtk.h 2012-03-21 13:24:58 UTC (rev 20646)
@@ -42,6 +42,7 @@
 
   GtkTreeStore *ts;
   GtkListStore *ls;
+  GtkTreeModel *tm;
 
   struct GNUNET_CRYPTO_RsaPrivateKey *pkey;
   struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pubkey;

Modified: gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c
===================================================================
--- gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c    2012-03-21 13:23:50 UTC (rev 
20645)
+++ gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c    2012-03-21 13:24:58 UTC (rev 
20646)
@@ -29,7 +29,7 @@
 #define NEW_NAME_STR "<new name>"
 #define NEW_RECORD_STR "<new record>"
 
-enum
+enum TREESTORE_COLUMNS
 {
   TREE_COL_NAME = 0,
   TREE_COL_IS_PUBLIC,
@@ -42,15 +42,24 @@
   TREE_COL_VAL_COLOR,
   TREE_COL_NAME_IS_VISIBLE,
   TREE_COL_IS_RECORD_ROW,
-  TREE_COL_NOT_DUMMY_ROW
+  TREE_COL_NOT_DUMMY_ROW,
+  TREE_COL_EXP_TIME_COLOR
 };
 
-enum
+enum LIST_COLUMNS
 {
   TYPE_LIST_TYPE = 0,
   TYPE_LIST_TYPENAME
 };
 
+
+void
+check_record_validity ()
+{
+  GNUNET_break (0);
+}
+
+
 /**
  * The user has selected a new record type.  Update the
  * model, possibly invalidating (marking 'red') the existing
@@ -138,6 +147,8 @@
       gtk_tree_store_set (gns->ts, &child, TREE_COL_VAL_COLOR, "red", -1);
   }
 
+  check_record_validity ();
+
 }
 
 
@@ -181,7 +192,59 @@
                                                      gchar *new_text,
                                                      gpointer user_data)
 {
-  GNUNET_break (0); // FIXME, not implemented
+  struct GNUNET_GNS_Context * gns = user_data;
+  GtkTreeIter it;
+  struct GNUNET_TIME_Relative reltime;
+  struct GNUNET_TIME_Absolute abstime;
+  gboolean is_rel;
+  char * time = new_text;
+  char * old_text;
+
+  if ((NULL != new_text))
+  {
+    gtk_tree_model_get_iter_from_string(gns->tm, &it, path);
+    gtk_tree_model_get(gns->tm, &it,
+                       TREE_COL_EXP_TIME_AS_STR, &old_text,
+                       TREE_COL_EXP_TIME_IS_REL, &is_rel,
+                       -1);
+    if (0 == strcmp(new_text, old_text))
+      return;
+    if ((0 == strcmp(new_text,"")) || (0 == strcmp(new_text,"end of time")))
+    {
+      time = "end of time";
+      abstime = GNUNET_TIME_absolute_get_forever();
+    }
+    else
+    {
+      if (GNUNET_SYSERR == GNUNET_STRINGS_fancy_time_to_relative (time, 
&reltime))
+      {
+        gtk_tree_store_set (gns->ts, &it,
+                            TREE_COL_EXP_TIME_AS_STR, new_text,
+                            TREE_COL_EXP_TIME_COLOR, "red",
+                            TREE_COL_EXP_TIME, 0,
+                            -1);
+        abstime = GNUNET_TIME_absolute_get_zero();
+        return;
+      }
+      /* TODO: fix this when we have relative time */
+      if (TRUE == is_rel)
+      {
+        abstime = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(), 
reltime);
+      }
+      else
+      {
+        abstime = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(), 
reltime);
+      }
+    }
+
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "New text for `%s' is `%s'\n", path, 
GNUNET_STRINGS_absolute_time_to_string(abstime));
+    gtk_tree_store_set (gns->ts, &it,
+                        TREE_COL_EXP_TIME_AS_STR, 
GNUNET_STRINGS_absolute_time_to_string(abstime),
+                        TREE_COL_EXP_TIME, abstime.abs_value,
+                        TREE_COL_EXP_TIME_COLOR, NULL,
+                        -1);
+  }
+  check_record_validity ();
 }
 
 
@@ -225,6 +288,8 @@
       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,7 +382,85 @@
   return TRUE;
 }
 
+void set_exp (struct GNUNET_GNS_Context *gns, char * exp)
+{
+  GtkTreeIter it;
+  GtkTreeIter parent;
+  GtkTreeIter child;
+  int not_dummy;
+  gboolean has_parent;
+  GtkCellRendererText *renderer;
+
+  char *path;
+
+  GtkTreeView *tv = GTK_TREE_VIEW(gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_main_treeview"));
+  GtkTreeModel *tm;
+  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, &not_dummy, -1);
+  if (GNUNET_NO == not_dummy)
+    return;
+
+  /* Has parent? */
+  has_parent = gtk_tree_model_iter_parent (tm, &parent, &it);
+
+  if (TRUE == has_parent)
+  {
+    /* this is a single record */
+    GNUNET_break (0);
+    renderer = GTK_CELL_RENDERER_TEXT((gtk_builder_get_object (gns->builder, 
"GNUNET_GNS_GTK_name_cellrenderertext")));
+    path = gtk_tree_model_get_string_from_iter (tm, &it);
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "PATH `%s'\n", path);
+    GNUNET_GNS_GTK_expiration_cellrenderertext_edited_cb (renderer,
+                                                          path,
+                                                          exp,
+                                                          gns);
+  }
+  else
+  {
+    GNUNET_break (0);
+  }
+}
+
+
 gboolean
+GNUNET_GNS_GTK_main_treeview_popup_menu_exp1d_cb (GtkWidget *widget,
+                                            gpointer user_data)
+{
+  GNUNET_break(0);
+  set_exp (user_data, "1 d");
+  return TRUE;
+}
+
+
+gboolean
+GNUNET_GNS_GTK_main_treeview_popup_menu_exp1w_cb (GtkWidget *widget,
+                                            gpointer user_data)
+{
+  set_exp (user_data, "7 d");
+  return TRUE;
+}
+
+gboolean
+GNUNET_GNS_GTK_main_treeview_popup_menu_exp1y_cb (GtkWidget *widget,
+                                            gpointer user_data)
+{
+  set_exp (user_data, "1 a");
+  return TRUE;
+}
+
+gboolean
+GNUNET_GNS_GTK_main_treeview_popup_menu_expinf_cb (GtkWidget *widget,
+                                            gpointer user_data)
+{
+  set_exp (user_data, "end of time");
+  return TRUE;
+}
+
+
+
+gboolean
 GNUNET_GNS_GTK_main_treeview_button_press_popup_menu_cb (GtkWidget *widget, 
GdkEventButton *event, gpointer user_data)
 {
   /* Check for right click*/
@@ -434,6 +577,7 @@
   return rd;
 }
 
+
 void GNUNET_GNS_GTK_delete_popup_menu_delete_cb (GtkMenuItem *menuitem,
                                                  gpointer user_data)
 {
@@ -494,7 +638,6 @@
       rcc->gns = gns;
       rcc->tm = tm;
       rcc->path = gtk_tree_model_get_string_from_iter (tm, &child);
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "CALLING\n");
       GNUNET_NAMESTORE_record_remove(gns->ns, gns->pkey, name,(const struct 
GNUNET_NAMESTORE_RecordData *) rd, &remove_proc, rcc);
       gtk_tree_model_iter_next (tm, &child);
     }
@@ -592,7 +735,7 @@
 
     if (GNUNET_YES == time_is_relative)
     {
-      /* FIX THIS WHEN WE HAVE RELATIVE TIME */
+      /* TODO: FIX THIS WHEN WE HAVE RELATIVE TIME */
       struct GNUNET_TIME_Relative rel_time = GNUNET_TIME_relative_get_zero();
       struct GNUNET_TIME_Absolute exp_abs;
       exp_abs = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(), rel_time);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]