[Top][All Lists]
[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, ¬_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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r20646 - gnunet-gtk/src/gns,
gnunet <=