[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r1299 - gnunet-gtk/src/plugins/fs
From: |
grothoff |
Subject: |
[GNUnet-SVN] r1299 - gnunet-gtk/src/plugins/fs |
Date: |
Wed, 6 Jul 2005 14:43:07 -0700 (PDT) |
Author: grothoff
Date: 2005-07-06 14:43:05 -0700 (Wed, 06 Jul 2005)
New Revision: 1299
Modified:
gnunet-gtk/src/plugins/fs/namespace.c
Log:
more code for namespaces and collections
Modified: gnunet-gtk/src/plugins/fs/namespace.c
===================================================================
--- gnunet-gtk/src/plugins/fs/namespace.c 2005-07-06 21:40:56 UTC (rev
1298)
+++ gnunet-gtk/src/plugins/fs/namespace.c 2005-07-06 21:43:05 UTC (rev
1299)
@@ -38,7 +38,7 @@
typedef struct NL {
struct NL * next;
GtkWidget * treeview;
- GtkWidget * searchpage;
+ GtkWidget * namespacepage;
GtkTreeModel * model;
GtkWidget * anonymityButton;
char * name;
@@ -48,6 +48,8 @@
static NamespaceList * head;
+static GladeXML * metaXML;
+
static GtkWidget * makeNamespaceFrame(GtkWidget ** treeview,
GtkWidget ** anonSpin) {
GtkWidget * window;
@@ -340,7 +342,7 @@
list->name = STRDUP(namespaceName);
list->id = *namespaceId;
list->meta = ECRS_dupMetaData(md);
- list->searchpage
+ list->namespacepage
= makeNamespaceFrame(&list->treeview,
&spin);
list->anonymityButton
@@ -357,7 +359,7 @@
= glade_xml_get_widget(getMainXML(),
"localNamespacesNotebook");
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
- list->searchpage,
+ list->namespacepage,
label);
gtk_widget_show(notebook);
@@ -370,13 +372,92 @@
}
/**
- * FIXME: refactor code to share keyword/metadata list
+ * FIXME: somehow this function is not called
+ * when the button is clicked.
+ */
+void
+on_namespacemetaDataDialogKeywordAddButton_clicked(gpointer dummy,
+ GtkWidget * uploadButton) {
+ GtkWidget * keywordList;
+ GtkWidget * entryLine;
+ const char * keyword;
+ GtkListStore * keymodel;
+ GtkTreeIter iter;
+
+ keywordList = glade_xml_get_widget(metaXML,
+ "namespaceMetaDataDialogKeywordList");
+ keymodel
+ = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(keywordList)));
+
+ entryLine = glade_xml_get_widget(metaXML,
+ "namespaceKeywordEntry");
+ keyword = gtk_entry_get_text(GTK_ENTRY(entryLine));
+ gtk_list_store_append(keymodel,
+ &iter);
+ gtk_list_store_set(keymodel,
+ &iter,
+ 0, keyword,
+ -1);
+ gtk_entry_set_text(GTK_ENTRY(entryLine), "");
+}
+
+/**
+ * FIXME: somehow this function is not called
+ * when the button is clicked.
+ */
+void
+on_namespacemetaDataDialogMetaDataAddButton_clicked(gpointer dummy,
+ GtkWidget * uploadButton) {
+ GtkWidget * metaList;
+ GtkWidget * entryLine;
+ GtkWidget * typeCB;
+ const char * value;
+ EXTRACTOR_KeywordType type;
+ GtkListStore * metamodel;
+ GtkListStore * typemodel;
+ GtkTreeIter iter;
+ char * stype;
+
+ metaList = glade_xml_get_widget(metaXML,
+ "namespaceMetaDataDialogMetaDataList");
+ metamodel
+ = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(metaList)));
+
+ entryLine = glade_xml_get_widget(metaXML,
+ "namespaceMetaDataValueEntry");
+ value = gtk_entry_get_text(GTK_ENTRY(entryLine));
+ typeCB = glade_xml_get_widget(metaXML,
+ "namespaceMetaDataDialogMetaTypeComboBox");
+ typemodel
+ = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(typeCB)));
+ if (! gtk_combo_box_get_active_iter(GTK_COMBO_BOX(typeCB),
+ &iter))
+ return; /* oops */
+ gtk_tree_model_get(GTK_TREE_MODEL(typemodel),
+ &iter,
+ META_STYPE, &stype,
+ META_TYPE, &type,
+ -1);
+ gtk_list_store_append(metamodel,
+ &iter);
+ gtk_list_store_set(metamodel,
+ &iter,
+ META_TYPE, type,
+ META_STYPE, stype,
+ META_VALUE, value,
+ -1);
+ gtk_entry_set_text(GTK_ENTRY(entryLine), "");
+}
+
+
+
+/**
+ * CLEANUP: refactor code to share keyword/metadata list
* and model creation with upload and collection!
*/
void create_namespace_clicked(GtkWidget * dummy1,
GtkWidget * dummy2) {
const char * namespaceName;
- GladeXML * metaXML;
GtkWidget * nameLine;
GtkWidget * metaList;
GtkWidget * keywordList;
@@ -432,7 +513,7 @@
GTK_TREE_MODEL(metamodel));
keymodel
= gtk_list_store_new(1,
- G_TYPE_STRING);
+ G_TYPE_STRING);
keywordList = glade_xml_get_widget(metaXML,
"namespaceMetaDataDialogKeywordList");
renderer = gtk_cell_renderer_text_new();
@@ -474,7 +555,7 @@
0);
gtk_dialog_set_default_response(GTK_DIALOG(dialog),
GTK_RESPONSE_OK);
- if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL) {
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
meta = ECRS_createMetaData();
if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(metamodel),
&iter)) {
@@ -519,12 +600,19 @@
GROW(keywords,
ksize,
0);
- spin = glade_xml_get_widget(getMainXML(),
+ spin = glade_xml_get_widget(metaXML,
"namespaceAnonymityspinbutton");
- nameLine = glade_xml_get_widget(getMainXML(),
+ nameLine = glade_xml_get_widget(metaXML,
+ "namespaceRootEntry");
+ namespaceName = gtk_entry_get_text(GTK_ENTRY(nameLine));
+ if (namespaceName == NULL)
+ namespaceName = "root"; /* do NOT translate "root"! */
+ hash(namespaceName,
+ strlen(namespaceName),
+ &rootEntry);
+ nameLine = glade_xml_get_widget(metaXML,
"namespaceNameEntry");
namespaceName = gtk_entry_get_text(GTK_ENTRY(nameLine));
- hash("FIXME", 5, &rootEntry); /* FIXME: need to fix glade file! */
root = NULL;
if (OK == FSUI_createNamespace(ctx,
gtk_spin_button_get_value_as_int
@@ -542,7 +630,20 @@
meta,
0);
} else {
- /* FIXME: give user feedback on failure! */
+ GtkWidget * dialog;
+
+ dialog = gtk_message_dialog_new
+ (NULL,
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("Failed to create namespace '%s'."
+ "Consult logs, most likely error is"
+ " that a namespace with that name "
+ "already exists."),
+ namespaceName);
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
}
ECRS_freeUri(root);
ECRS_freeMetaData(meta);
@@ -555,13 +656,166 @@
void namespaceDelete_clicked(GtkWidget * dummy1,
GtkWidget * dummy2) {
+ GtkWidget * notebook;
+ NamespaceList * list;
+ NamespaceList * prev;
+ gint num;
+ GtkWidget * page;
+ GtkWidget * dialog;
+ gint ret;
+
+ notebook
+ = glade_xml_get_widget(getMainXML(),
+ "localNamespacesNotebook");
+ num
+ = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
+ if (num == -1) {
+ /* IMPROVE-ME: disable the menu item
+ as long as this may happen! */
+ dialog = gtk_message_dialog_new
+ (NULL,
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _("No local namespaces available that could be deleted!"));
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ return;
+ }
+ page
+ = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook),
+ num);
+ list
+ = head;
+ prev
+ = NULL;
+ while ( (list != NULL) &&
+ (list->namespacepage != page) ) {
+ prev = list;
+ list = list->next;
+ }
+ if (list == NULL) {
+ BREAK();
+ return;
+ }
+ /* open window to ask for confirmation,
+ only then delete */
+
+ dialog = gtk_message_dialog_new
+ (NULL,
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_YES_NO,
+ _("Should the namespace '%s' really be deleted?"),
+ list->name);
+ ret = gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ if (GTK_RESPONSE_YES != ret)
+ return;
+
+ gtk_notebook_remove_page(GTK_NOTEBOOK(notebook),
+ num);
+ if (prev == NULL)
+ head = list->next;
+ else
+ prev->next = list->next;
+ FSUI_deleteNamespace(list->name);
+ FREE(list->name);
+ ECRS_freeMetaData(list->meta);
+ FREE(list);
+}
+
+
+
+void on_namespaceInsertButton_clicked(GtkWidget * dummy1,
+ GtkWidget * dummy2) {
+ const char * identifierName;
+ GtkWidget * nameLine;
+ GtkWidget * metaList;
+ GtkWidget * dialog;
+ GtkWidget * spin;
+ GtkListStore * metamodel;
+ GtkCellRenderer * renderer;
+ GtkTreeIter iter;
+ struct ECRS_MetaData * meta;
+ EXTRACTOR_KeywordType type;
+ char * mvalue;
+ HashCode512 identifier;
+
/* FIXME */
- /* find currently active namespace,
- open window to ask for confirmation,
- then delete */
+ metaXML
+ = glade_xml_new(getGladeFileName(),
+ "namespaceMetaDataDialog",
+ NULL);
+ connectGladeWithPlugins(metaXML);
+ dialog = glade_xml_get_widget(metaXML,
+ "namespaceMetaDataDialog");
+ metamodel
+ = gtk_list_store_new(META_NUM,
+ G_TYPE_INT,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+ metaList = glade_xml_get_widget(metaXML,
+ "namespaceMetaDataDialogMetaDataList");
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(metaList),
+ -1,
+ _("Category"),
+ renderer,
+ "text", META_STYPE,
+ NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(metaList),
+ -1,
+ _("Value"),
+ renderer,
+ "text", META_VALUE,
+ NULL);
+ gtk_tree_view_set_model(GTK_TREE_VIEW(metaList),
+ GTK_TREE_MODEL(metamodel));
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog),
+ GTK_RESPONSE_OK);
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
+ meta = ECRS_createMetaData();
+ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(metamodel),
+ &iter)) {
+ do {
+ gtk_tree_model_get(GTK_TREE_MODEL(metamodel),
+ &iter,
+ META_TYPE, &type,
+ META_VALUE, &mvalue,
+ -1);
+ ECRS_addToMetaData(meta,
+ type,
+ mvalue);
+ } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(metamodel),
+ &iter));
+ }
+ spin = glade_xml_get_widget(metaXML,
+ "namespaceAnonymityspinbutton");
+ nameLine = glade_xml_get_widget(metaXML,
+ "namespaceContentIdentifierEntry");
+ identifierName = gtk_entry_get_text(GTK_ENTRY(nameLine));
+ if (identifierName == NULL)
+ identifierName = "";
+ hash(identifierName,
+ strlen(identifierName),
+ &identifier);
+
+
+ }
+ gtk_widget_destroy(dialog);
+ UNREF(metaXML);
+ metaXML = NULL;
}
+void on_namespaceUpdateButton_clicked(GtkWidget * dummy1,
+ GtkWidget * dummy2) {
+ /* FIXME */
+}
+
+
void fs_namespace_start() {
GtkWidget * contentList;
GtkListStore * model;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r1299 - gnunet-gtk/src/plugins/fs,
grothoff <=