[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r3555 - in gnunet-gtk: . src/plugins/fs
From: |
grothoff |
Subject: |
[GNUnet-SVN] r3555 - in gnunet-gtk: . src/plugins/fs |
Date: |
Wed, 25 Oct 2006 20:29:37 -0700 (PDT) |
Author: grothoff
Date: 2006-10-25 20:29:34 -0700 (Wed, 25 Oct 2006)
New Revision: 3555
Modified:
gnunet-gtk/TODO
gnunet-gtk/gnunet-gtk.glade
gnunet-gtk/src/plugins/fs/fs.c
gnunet-gtk/src/plugins/fs/fs.h
gnunet-gtk/src/plugins/fs/helper.c
gnunet-gtk/src/plugins/fs/search.c
gnunet-gtk/src/plugins/fs/search.h
Log:
fsui api fix
Modified: gnunet-gtk/TODO
===================================================================
--- gnunet-gtk/TODO 2006-10-26 03:28:16 UTC (rev 3554)
+++ gnunet-gtk/TODO 2006-10-26 03:29:34 UTC (rev 3555)
@@ -1,9 +1,12 @@
0.7.1:;
-- support new FSUI apis
-- namespace content list:
- avoid repeatedly calling slow gnunet-gtk iterator (see drupal)
-- support abort of search (without killing it)
-- fix custom gtk logger (via memory logger?)
+- support new FSUI apis:
+ * linking of search and downloads
+ * update event managements for upload
+ * complete UI options processing for search and download and upload;
+ including recursive download!
+ * test, test, test!
+ * support abort of search/download/upload (without killing it)
+ * check memory leaks!
- create directory from known file IDs [ medium ]
in Assemble Directory's Files Available/Selected
+ have sortability
@@ -11,16 +14,21 @@
+ print filenames as well
- disable inactive buttons (if no search/download
is selected to operate on) [ medium ]
+- highlight active downloads in search list [ easy ]
+- highlight completed downloads [ easy ]
- more help-texts (glade) [ easy ]
-- highlight active downloads in search list [ easy ]
+- disable advanced/namespace menus for now!
0.7.2:
-- various minor memory leaks (see
- #if 0 code in namespace.c)
+- various minor memory leaks (see #if 0 code in namespace.c)
+- proper namespace/collection support:
+ * avoid repeatedly calling slow gnunet-gtk iterator (see drupal)
+ * use new namespace APIs
+ * clean, short namespace search URIs
+- fix custom gtk logger (via memory logger?)
+- show content of current collection
0.7.3:
-- show content of current collection
-- highlight completed downloads [ easy ]
- pop-up dialogs / context menus (show extra information,
in particular full metadata) [ medium ]
- add right button popup menu operations for
Modified: gnunet-gtk/gnunet-gtk.glade
===================================================================
--- gnunet-gtk/gnunet-gtk.glade 2006-10-26 03:28:16 UTC (rev 3554)
+++ gnunet-gtk/gnunet-gtk.glade 2006-10-26 03:29:34 UTC (rev 3555)
@@ -915,7 +915,7 @@
<property name="use_stock">True</property>
<property
name="relief">GTK_RELIEF_NORMAL</property>
<property
name="focus_on_click">True</property>
- <signal name="clicked"
handler="on_abortSearchButton_clicked_" last_modification_time="Sun, 22 Oct
2006 06:07:10 GMT"/>
+ <signal name="clicked"
handler="on_abortSearchSummaryButton_clicked_" last_modification_time="Sun, 22
Oct 2006 06:07:10 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@@ -933,7 +933,7 @@
<property name="use_stock">True</property>
<property
name="relief">GTK_RELIEF_NORMAL</property>
<property
name="focus_on_click">True</property>
- <signal name="clicked"
handler="on_stopSearchButton_clicked_" last_modification_time="Sun, 22 Oct 2006
06:07:31 GMT"/>
+ <signal name="clicked"
handler="on_closeSearchSummaryButton_clicked_" last_modification_time="Sun, 22
Oct 2006 06:07:31 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@@ -4357,7 +4357,7 @@
<property name="fixed_height_mode">False</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
- <signal name="destroy"
handler="on_searchResults_destroy_" object="searchResults"
last_modification_time="Sat, 28 May 2005 13:55:09 GMT"/>
+ <signal name="destroy"
handler="on_closeSearchButton_clicked_" object="searchResults"
last_modification_time="Sat, 28 May 2005 13:55:09 GMT"/>
</widget>
</child>
</widget>
Modified: gnunet-gtk/src/plugins/fs/fs.c
===================================================================
--- gnunet-gtk/src/plugins/fs/fs.c 2006-10-26 03:28:16 UTC (rev 3554)
+++ gnunet-gtk/src/plugins/fs/fs.c 2006-10-26 03:29:34 UTC (rev 3555)
@@ -51,43 +51,86 @@
cls->ret = NULL;
DEBUG_BEGIN();
switch (event->type) {
+ /* search events */
+ case FSUI_search_started:
+ cls->ret = fs_search_started(event->data.SearchStarted.sc.pos,
+ event->data.SearchStarted.searchURI,
+ event->data.SearchStarted.anonymityLevel,
+ 0,
+ NULL);
+ break;
case FSUI_search_result:
- displaySearchResult(&event->data.SearchResult.fi,
- event->data.SearchResult.searchURI,
- NULL);
+ fs_search_result_received(event->data.SearchResult.sc.cctx,
+ &event->data.SearchResult.fi,
+ event->data.SearchResult.searchURI);
break;
case FSUI_search_error:
- GE_LOG(ectx,
- GE_ERROR,
- _("Error while searching: %s\n"),
- event->data.SearchError.message);
+ fs_search_aborted(event->data.SearchError.sc.cctx);
break;
+ case FSUI_search_aborted:
+ fs_search_aborted(event->data.SearchAborted.sc.cctx);
+ break;
+ case FSUI_search_completed:
+ // FIXME...
+ fs_search_aborted(event->data.SearchCompleted.sc.cctx);
+ break;
+ case FSUI_search_suspended:
+ fs_search_aborted(event->data.SearchSuspended.sc.cctx);
+ break;
+ case FSUI_search_resumed:
+ cls->ret = fs_search_started(event->data.SearchResumed.sc.pos,
+ event->data.SearchResumed.searchURI,
+ event->data.SearchResumed.anonymityLevel,
+ event->data.SearchResumed.fisSize,
+ event->data.SearchResumed.fis);
+ case FSUI_search_stopped:
+ fs_search_aborted(event->data.SearchError.sc.cctx);
+ break;
+
+
+ /* download events */
case FSUI_download_aborted:
+ fs_download_aborted(event->data.DownloadAborted.dc.cctx);
+ break;
+ case FSUI_download_error:
+ fs_download_aborted(event->data.DownloadAborted.dc.cctx);
+ break;
case FSUI_download_suspended:
- /* ignore for now */
+ fs_download_stopped(event->data.DownloadAborted.dc.cctx);
break;
case FSUI_download_progress:
- displayDownloadUpdate(event->data.DownloadProgress.uri,
- event->data.DownloadProgress.completed,
- event->data.DownloadProgress.last_block,
- event->data.DownloadProgress.last_size);
+ fs_download_update(event->data.DownloadProgress.dc.cctx,
+ event->data.DownloadProgress.completed,
+ event->data.DownloadProgress.last_block,
+ event->data.DownloadProgress.last_size);
break;
case FSUI_download_completed:
- displayDownloadComplete(event->data.DownloadProgress.uri,
- event->data.DownloadProgress.filename);
- addLogEntry(_("Download `%s' complete"),
- event->data.DownloadProgress.filename);
- gnunetgtk_notify(NOTIFY_NORMAL,
- _("Download `%s' complete"),
- event->data.DownloadProgress.filename);
+ fs_download_completed(event->data.DownloadCompleted.dc.cctx);
break;
- case FSUI_download_error:
- GE_BREAK(ectx, 0);
- GE_LOG(ectx,
- GE_ERROR,
- _("Error while downloading: %s\n"),
- event->data.DownloadError.message);
+ case FSUI_download_stopped:
+ fs_download_stopped(event->data.DownloadCompleted.dc.cctx);
break;
+ case FSUI_download_started:
+ cls->ret = fs_download_started(event->data.DownloadStarted.dc.pos,
+ event->data.DownloadStarted.total,
+ event->data.DownloadStarted.anonymityLevel,
+ &event->data.DownloadStarted.fi,
+ event->data.DownloadStarted.filename,
+ 0,
+ get_time());
+ break;
+ case FSUI_download_resumed:
+ cls->ret = fs_download_started(event->data.DownloadResumed.dc.pos,
+ event->data.DownloadResumed.total,
+ event->data.DownloadResumed.anonymityLevel,
+ &event->data.DownloadResumed.fi,
+ event->data.DownloadResumed.filename,
+ event->data.DownloadResumed.completed,
+ event->data.DownloadResumed.eta);
+ break;
+
+
+ /* upload */
case FSUI_upload_progress:
displayUploadUpdate(event->data.UploadProgress.uc.cctx,
event->data.UploadProgress.filename,
Modified: gnunet-gtk/src/plugins/fs/fs.h
===================================================================
--- gnunet-gtk/src/plugins/fs/fs.h 2006-10-26 03:28:16 UTC (rev 3554)
+++ gnunet-gtk/src/plugins/fs/fs.h 2006-10-26 03:29:34 UTC (rev 3555)
@@ -69,8 +69,7 @@
DOWNLOAD_URISTRING,
DOWNLOAD_URI,
DOWNLOAD_TREEPATH,
- DOWNLOAD_DIRPATH,
- DOWNLOAD_POS, // NEW!
+ DOWNLOAD_POS, /* struct DL */
DOWNLOAD_NUM
};
Modified: gnunet-gtk/src/plugins/fs/helper.c
===================================================================
--- gnunet-gtk/src/plugins/fs/helper.c 2006-10-26 03:28:16 UTC (rev 3554)
+++ gnunet-gtk/src/plugins/fs/helper.c 2006-10-26 03:29:34 UTC (rev 3555)
@@ -25,7 +25,10 @@
*/
#include "platform.h"
+#include "gnunetgtk_common.h"
#include "helper.h"
+#include "fs.h"
+#include "search.h"
/**
* Parse a time given in the form
@@ -220,7 +223,6 @@
GladeXML * searchXML;
int col;
- DEBUG_BEGIN();
searchXML
= glade_xml_new(getGladeFileName(),
"searchResultsFrame",
@@ -331,6 +333,5 @@
child);
gtk_widget_destroy(window);
UNREF(searchXML);
- DEBUG_END();
return child;
}
Modified: gnunet-gtk/src/plugins/fs/search.c
===================================================================
--- gnunet-gtk/src/plugins/fs/search.c 2006-10-26 03:28:16 UTC (rev 3554)
+++ gnunet-gtk/src/plugins/fs/search.c 2006-10-26 03:29:34 UTC (rev 3555)
@@ -22,11 +22,18 @@
* @file src/plugins/fs/search.c
* @brief code for searching with gnunet-gtk
* @author Christian Grothoff
+ *
+ *
+ * TODO:
+ * - figure out how to handle directories displayed on the
+ * search page (and how to communicate for downloads that
+ * they do or do not hang in the search page!)
*/
#include "platform.h"
#include "gnunetgtk_common.h"
#include "search.h"
+#include "helper.h"
#include "fs.h"
#include "meta.h"
#include <extractor.h>
@@ -46,14 +53,6 @@
struct FSUI_SearchList * fsui_list; /* FIXME: initialize! */
} SearchList;
-static SearchList * search_head;
-
-static GtkListStore * search_summary;
-
-static struct GE_Context * ectx;
-
-static struct GC_Configuration * cfg;
-
typedef struct DL {
struct DL * next;
struct ECRS_URI * uri;
@@ -63,23 +62,37 @@
struct FSUI_DownloadList * fsui_list;
} DownloadList;
+static SearchList * search_head;
+
static DownloadList * download_head;
+static GtkListStore * search_summary;
+
static GtkTreeStore * download_summary;
+static struct GE_Context * ectx;
+static struct GC_Configuration * cfg;
+
+
void on_fssearchbutton_clicked_fs(gpointer dummy2,
GtkWidget * searchButton) {
struct ECRS_URI * uri;
const char * ss;
const char * ns;
gint pages;
- char * tabtxt;
const char * descStr;
char * ustring;
gint i;
- gint pages;
SearchList * list;
+ GtkListStore * model;
+ GtkTreeModel * tmodel;
+ GtkTreeIter iter;
+ GtkWidget * searchKeywordGtkCB;
+ GtkWidget * searchNamespaceGtkCB;
+ GtkWidget * entry;
+ GtkWidget * notebook;
+ GtkWidget * page;
DEBUG_BEGIN();
searchKeywordGtkCB
@@ -152,6 +165,9 @@
if (uri == NULL)
return;
/* check if search is already running */
+ notebook
+ = glade_xml_get_widget(getMainXML(),
+ "downloadNotebook");
pages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook));
list = search_head;
while (list != NULL) {
@@ -171,42 +187,14 @@
}
list = list->next;
}
- if (ns == NULL) {
- tabtxt = STRDUP(ss);
- } else {
- GE_ASSERT(ectx, descStr != NULL);
- tabtxt = MALLOC(strlen(ss) + strlen(descStr) + 2);
- SNPRINTF(tabtxt,
- strlen(ss) + strlen(descStr) + 2,
- "%s/%s",
- descStr,
- ss);
- }
FSUI_startSearch(ctx,
getAnonymityLevel(getMainXML(),
- "searchAnonymitySelectionSpinButton");
+ "searchAnonymitySelectionSpinButton"),
1000, /* FIXME: max results */
99 * cronYEARS, /* FIXME: timeout */
uri);
}
-void on_searchResults_destroy_fs(GtkWidget * dummy,
- GtkWidget * treeview) {
- SearchList * list;
-
- DEBUG_BEGIN();
- list = search_head;
- while (list != NULL) {
- if (list->treeview == treeview)
- break;
- list = list->next;
- }
- GE_ASSERT(ectx, list != NULL);
- FSUI_stopSearch(ctx,
- list->fsui_list);
- DEBUG_END();
-}
-
void on_closeSearchButton_clicked_fs(GtkWidget * searchPage,
GtkWidget * closeButton) {
SearchList * list;
@@ -241,6 +229,60 @@
DEBUG_END();
}
+static void stopSearch(GtkTreeModel * model,
+ GtkTreePath * path,
+ GtkTreeIter * iter,
+ gpointer unused) {
+ struct FSUI_SearchList * s;
+
+ s = NULL;
+ gtk_tree_model_get(model,
+ iter,
+ SER_SUM_FSUI, &s,
+ -1);
+ if (s != NULL)
+ FSUI_stopSearch(ctx,
+ s);
+}
+
+void on_closeSearchSummaryButton_clicked_fs(GtkWidget * treeview,
+ GtkWidget * closeButton) {
+ GtkTreeSelection * selection;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+ gtk_tree_selection_selected_foreach
+ (selection,
+ &stopSearch,
+ NULL);
+}
+
+static void abortSearch(GtkTreeModel * model,
+ GtkTreePath * path,
+ GtkTreeIter * iter,
+ gpointer unused) {
+ struct FSUI_SearchList * s;
+
+ s = NULL;
+ gtk_tree_model_get(model,
+ iter,
+ SER_SUM_FSUI, &s,
+ -1);
+ if (s != NULL)
+ FSUI_abortSearch(ctx,
+ s);
+}
+
+void on_abortSearchSummaryButton_clicked_fs(GtkWidget * treeview,
+ GtkWidget * closeButton) {
+ GtkTreeSelection * selection;
+
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+ gtk_tree_selection_selected_foreach
+ (selection,
+ &abortSearch,
+ NULL);
+}
+
/**
* Add the given result to the model (search result
* list).
@@ -263,22 +305,22 @@
char * size_h;
GtkTreeStore * model;
GtkTreeIter iter;
- GtkTreeIter parent;
- GtkTreeIter * pparent;
+ unsigned int * file_count;
+ GtkWidget * tab_label;
+ const char * tab_title;
+ char * new_title;
+ struct ECRS_URI * euri;
DEBUG_BEGIN();
model = GTK_TREE_STORE
(gtk_tree_view_get_model
(GTK_TREE_VIEW(searchContext->treeview)));
- gtk_tree_store_append(model,
- &iter,
- NULL);
mime = ECRS_getFromMetaData(info->meta,
EXTRACTOR_MIMETYPE);
if (mime == NULL)
mime = STRDUP(_("unknown"));
mime = validate_utf8(mime);
- desc = ECRS_getFirstFromMetaData(meta,
+ desc = ECRS_getFirstFromMetaData(info->meta,
EXTRACTOR_DESCRIPTION,
EXTRACTOR_GENRE,
EXTRACTOR_ALBUM,
@@ -291,7 +333,7 @@
if (desc == NULL)
desc = STRDUP("");
desc = validate_utf8(desc);
- name = ECRS_getFirstFromMetaData(meta,
+ name = ECRS_getFirstFromMetaData(info->meta,
EXTRACTOR_FILENAME,
EXTRACTOR_TITLE,
EXTRACTOR_ARTIST,
@@ -316,7 +358,7 @@
else
size = 0;
thumb = NULL;
- ts = ECRS_getThumbnailFromMetaData(meta,
+ ts = ECRS_getThumbnailFromMetaData(info->meta,
&thumb);
if (ts != 0) {
loader = gdk_pixbuf_loader_new();
@@ -334,8 +376,11 @@
pixbuf = NULL;
}
size_h = string_get_fancy_byte_size(size);
+ gtk_tree_store_append(model,
+ &iter,
+ NULL);
gtk_tree_store_set(model,
- pos,
+ &iter,
SEARCH_NAME, name,
SEARCH_SIZE, size,
SEARCH_HSIZE, size_h,
@@ -354,12 +399,12 @@
/* update tab title with the number of results */
file_count = (unsigned int *)
- g_object_get_data(G_OBJECT(list->searchpage), "file_count");
+ g_object_get_data(G_OBJECT(searchContext->searchpage), "file_count");
(*file_count)++;
tab_label = (GtkWidget *)
- g_object_get_data(G_OBJECT(list->searchpage), "label");
- tab_title = (char *)
- g_object_get_data(G_OBJECT(list->searchpage), "title");
+ g_object_get_data(G_OBJECT(searchContext->searchpage), "label");
+ tab_title = (const char *)
+ g_object_get_data(G_OBJECT(searchContext->searchpage), "title");
new_title =
g_strdup_printf("%s%s%u%s",
tab_title, " (", *file_count, ")");
@@ -391,7 +436,7 @@
&iter));
}
-static SearchList *
+SearchList *
fs_search_started(struct FSUI_SearchList * fsui_list,
const struct ECRS_URI * uri,
unsigned int anonymityLevel,
@@ -404,6 +449,8 @@
char * tabtxt;
int i;
const char * dhead;
+ gint pages;
+ char * description;
notebook
= glade_xml_get_widget(getMainXML(),
@@ -411,7 +458,8 @@
list
= MALLOC(sizeof(SearchList));
list->searchpage
- = makeSearchResultFrame(&list->treeview,
+ = makeSearchResultFrame(cfg,
+ &list->treeview,
&list->anonymityButton);
list->uri
= ECRS_dupUri(uri);
@@ -424,7 +472,7 @@
description = ECRS_uriToString(uri);
if (description == NULL) {
GE_BREAK(ectx, 0);
- return SYSERR;
+ return NULL;
}
GE_ASSERT(ectx,
strlen(description) >= strlen(ECRS_URI_PREFIX));
@@ -449,6 +497,7 @@
-1);
label = buildSearchTabLabel(list->searchpage,
dhead);
+ pages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook));
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
list->searchpage,
label);
@@ -457,7 +506,7 @@
gtk_widget_show(notebook);
FREE(description);
for (i=0;i<resultCount;i++)
- fs_search_result_received(ret,
+ fs_search_result_received(list,
&results[i],
uri);
DEBUG_END();
@@ -526,12 +575,13 @@
index = i;
gtk_notebook_remove_page(GTK_NOTEBOOK(notebook),
index);
+#if 0
/* recursively free download tree */
if (gtk_tree_model_get_iter_first(list->model,
&iter))
freeIterSubtree(list->model,
&iter);
- freeSearchModel(list->model, NULL);
+#endif
if (! gtk_tree_model_get_iter_first(GTK_TREE_MODEL(search_summary),
&iter)) {
GE_BREAK(ectx, 0);
@@ -559,157 +609,13 @@
DEBUG_END();
}
-void fs_search_start(struct GE_Context * e,
- struct GC_Configuration * c) {
- GtkWidget * searchCB;
- GtkWidget * searchList;
- GtkListStore * model;
- GtkCellRenderer * renderer;
- GtkTreeViewColumn * column;
- int col;
- GtkWidget * downloadList;
-
- ectx = e;
- cfg = c;
- DEBUG_BEGIN();
- searchCB
- = glade_xml_get_widget(getMainXML(),
- "fssearchKeywordComboBoxEntry");
- model = gtk_list_store_new(NS_SEARCH_NUM,
- G_TYPE_STRING, /* what we show */
- G_TYPE_STRING, /* EncName of namespace */
- G_TYPE_POINTER, /* ECRS MetaData */
- G_TYPE_POINTER, /* FSUI search list */
- G_TYPE_INT); /* Meta-data about namespace */
- gtk_combo_box_set_model(GTK_COMBO_BOX(searchCB),
- GTK_TREE_MODEL(model));
- gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(searchCB),
- NS_SEARCH_DESCRIPTION);
- searchList = glade_xml_get_widget(getMainXML(),
- "activeSearchesSummary");
- search_summary =
- gtk_list_store_new(SER_SUM_NUM,
- G_TYPE_STRING, /* name */
- G_TYPE_INT, /* # results */
- G_TYPE_POINTER, /* internal: FSUI search list */
- G_TYPE_POINTER); /* internal: uri */
- gtk_tree_view_set_model(GTK_TREE_VIEW(searchList),
- GTK_TREE_MODEL(search_summary));
- renderer = gtk_cell_renderer_text_new();
- col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(searchList),
- -1,
- _("Query"),
- renderer,
- "text", SER_SUM_NAME,
- NULL);
- column = gtk_tree_view_get_column(GTK_TREE_VIEW(searchList),
- col - 1);
- gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_column_set_clickable(column, TRUE);
- gtk_tree_view_column_set_reorderable(column, TRUE);
- gtk_tree_view_column_set_sort_column_id(column, SER_SUM_NAME);
-
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(searchList),
- col - 1),
- TRUE);
- renderer = gtk_cell_renderer_text_new();
- col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(searchList),
- -1,
- _("Results"),
- renderer,
- "text", SER_SUM_COUNT,
- NULL);
- column = gtk_tree_view_get_column(GTK_TREE_VIEW(searchList),
- col - 1);
- gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_column_set_clickable(column, TRUE);
- gtk_tree_view_column_set_reorderable(column, TRUE);
- gtk_tree_view_column_set_sort_column_id(column, SER_SUM_COUNT);
-
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(searchList),
- col - 1),
- TRUE);
- downloadList = glade_xml_get_widget(getMainXML(),
- "activeDownloadsList");
- download_summary =
- gtk_tree_store_new(DOWNLOAD_NUM,
- G_TYPE_STRING, /* name (full-path file name) */
- G_TYPE_STRING, /* name (user-friendly name) */
- G_TYPE_UINT64, /* size */
- G_TYPE_STRING, /* human readable size */
- G_TYPE_INT, /* progress */
- G_TYPE_STRING, /* uri */
- G_TYPE_POINTER, /* url */
- G_TYPE_POINTER, /* internal: gtk tree path / NULL */
- G_TYPE_STRING); /* directory path if file is inside a
dir */
- gtk_tree_view_set_model(GTK_TREE_VIEW(downloadList),
- GTK_TREE_MODEL(download_summary));
- renderer = gtk_cell_renderer_progress_new();
- col =
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
- -1,
- _("Name"),
- renderer,
- "value", DOWNLOAD_PROGRESS,
- "text", DOWNLOAD_SHORTNAME,
- NULL);
- column = gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
- col - 1);
- gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_column_set_clickable(column, TRUE);
- gtk_tree_view_column_set_reorderable(column, TRUE);
- gtk_tree_view_column_set_sort_column_id(column, DOWNLOAD_PROGRESS);
- /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/
-
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
- col - 1),
- TRUE);
- renderer = gtk_cell_renderer_text_new();
- g_object_set (renderer, "xalign", 1.00, NULL);
- col =
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
- -1,
- _("Size"),
- renderer,
- "text", DOWNLOAD_HSIZE,
- NULL);
-
- column = gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
- col - 1);
- gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_column_set_clickable(column, TRUE);
- gtk_tree_view_column_set_reorderable(column, TRUE);
- gtk_tree_view_column_set_sort_column_id(column, DOWNLOAD_SIZE);
- /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/
-
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
- col - 1),
- TRUE);
- renderer = gtk_cell_renderer_text_new();
- col =
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
- -1,
- _("URI"),
- renderer,
- "text", DOWNLOAD_URISTRING,
- NULL);
- column = gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
- col - 1);
- gtk_tree_view_column_set_resizable(column, TRUE);
- gtk_tree_view_column_set_reorderable(column, TRUE);
- /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/
-
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
- col - 1),
- TRUE);
- DEBUG_END();
-}
-void fs_search_stop() {
-}
-
-
-
-
-
#if 0
static int addFilesToDirectory
(const ECRS_FileInfo * fi,
@@ -780,46 +686,59 @@
fs_download_started(struct FSUI_DownloadList * fsui_dl,
unsigned long long total,
unsigned int anonymityLevel,
- const struct ECRS_FileInfo * fi,
+ const ECRS_FileInfo * fi,
const char * filename,
unsigned long long completed,
cron_t eta) {
DownloadList * list;
GtkTreeIter iiter;
- GtkTreePath *dirTreePath;
unsigned long long size;
char * size_h;
- const char * idc_name;
+ const char * sname;
+ int progress;
+ char * uri_name;
/* setup visualization */
list = MALLOC(sizeof(DownloadList));
- list->download_list = fsui_dl;
+ list->fsui_list = fsui_dl;
list->rr = NULL;
list->model = NULL;
+#if 0
if (YES == ECRS_isDirectory(fi->meta)) {
list->rr = gtk_tree_row_reference_new(model, path);
list->model = model;
}
+#endif
list->uri = ECRS_dupUri(fi->uri);
list->filename = STRDUP(filename);
size = ECRS_fileSize(fi->uri);
size_h = string_get_fancy_byte_size(size);
- idc_name = "FIXME";
+ sname = &filename[strlen(filename)-1];
+ while ( (sname > filename) &&
+ (sname[-1] != '/') &&
+ (sname[-1] != '\\') )
+ sname--;
+ if (size != 0)
+ progress = completed * 100 / size;
+ else
+ progress = 100;
+ uri_name = ECRS_uriToString(fi->uri);
gtk_tree_store_append(download_summary,
- &iiter,
+ &iiter,
NULL);
gtk_tree_store_set(download_summary,
&iiter,
DOWNLOAD_FILENAME, filename,
- DOWNLOAD_SHORTNAME, idc_name,
+ DOWNLOAD_SHORTNAME, sname,
DOWNLOAD_SIZE, size,
DOWNLOAD_HSIZE, size_h,
- DOWNLOAD_PROGRESS, 0, /* progress */
+ DOWNLOAD_PROGRESS, progress,
DOWNLOAD_URISTRING, uri_name,
DOWNLOAD_URI, ECRS_dupUri(fi->uri),
DOWNLOAD_TREEPATH, list->rr, /* internal: row reference!
*/
- DOWNLOAD_DIRPATH, dirPath,
+ DOWNLOAD_POS, list,
-1);
+ FREE(uri_name);
FREE(size_h);
list->next = download_head;
download_head = list;
@@ -836,7 +755,6 @@
gpointer unused) {
char * uri_name;
char * final_download_dir;
- DownloadList * list;
GtkTreeIter iiter;
GtkWidget * spin;
const char * oname;
@@ -845,16 +763,12 @@
GtkTreePath *dirTreePath;
char *dirPath;
unsigned int dirPathLen;
- char * size_h;
- unsigned long long size;
-
struct ECRS_URI * idc_uri;
struct ECRS_MetaData * idc_meta;
const char * idc_name;
const char * idc_mime;
char * idc_final_download_destination;
unsigned int idc_anon;
- struct FSUI_SearchList * idc_ret;
struct SL * searchContext;
#ifdef WINDOWS
@@ -1020,9 +934,10 @@
addLogEntry(_("Downloading `%s'"), idc_name);
FSUI_startDownload(ctx,
- idc->anon,
+ idc_anon,
NO, /* FIXME: isRecursive */
idc_uri,
+ idc_meta,
idc_final_download_destination);
FREE(uri_name);
FREE(dirPath);
@@ -1048,19 +963,13 @@
GtkWidget * downloadButton) {
struct ECRS_URI * idc_uri;
struct ECRS_MetaData * idc_meta;
- const char * idc_name;
- const char * idc_mime;
char * idc_final_download_destination;
unsigned int idc_anon;
- struct FSUI_SearchList * idc_ret;
const char * uris;
char * urid;
GtkWidget * spin;
char * final_download_dir;
const char * dname;
- DownloadList * list;
- GtkTreeIter iiter;
- char * size_h;
uris = gtk_entry_get_text(GTK_ENTRY(entry));
urid = STRDUP(uris);
@@ -1097,33 +1006,6 @@
strcat(idc_final_download_destination, DIR_SEPARATOR_STR);
strcat(idc_final_download_destination, dname);
- /* setup visualization */
- list = MALLOC(sizeof(DownloadList));
- list->next = download_head;
- list->rr = NULL;
- list->model = NULL;
- list->uri = idc_uri;
- list->filename = idc_final_download_destination;
- list->finalName = STRDUP(idc_final_download_destination);
- download_head = list;
- size_h = string_get_fancy_byte_size(ECRS_fileSize(idc_uri));
- gtk_tree_store_insert(download_summary,
- &iiter,
- NULL,
- 0);
- gtk_tree_store_set(download_summary,
- &iiter,
- DOWNLOAD_FILENAME, idc_final_download_destination,
- DOWNLOAD_SHORTNAME, uris,
- DOWNLOAD_SIZE, ECRS_fileSize(idc_uri),
- DOWNLOAD_HSIZE, size_h,
- DOWNLOAD_PROGRESS, 0, /* progress */
- DOWNLOAD_URISTRING, uris,
- DOWNLOAD_URI, ECRS_dupUri(idc_uri),
- DOWNLOAD_TREEPATH, NULL, /* internal: row reference! */
- DOWNLOAD_DIRPATH, "",
- -1);
- FREE(size_h);
/* get anonymity level */
spin = glade_xml_get_widget(getMainXML(),
"fsstatusAnonymitySpin");
@@ -1135,11 +1017,14 @@
(GTK_SPIN_BUTTON(spin));
}
addLogEntry(_("Downloading `%s'"), uris);
+ idc_meta = ECRS_createMetaData();
FSUI_startDownload(ctx,
idc_anon,
NO, /* FIXME: isRecursive */
idc_uri,
+ idc_meta,
idc_final_download_destination);
+ ECRS_freeMetaData(idc_meta);
FREE(urid);
}
@@ -1151,7 +1036,7 @@
GtkTreeIter iter;
unsigned int val;
unsigned long long total;
- struct ECRS_URI * u;
+ struct DL * p;
struct ECRS_MetaData * meta;
DEBUG_BEGIN();
@@ -1161,11 +1046,9 @@
gtk_tree_model_get(GTK_TREE_MODEL(download_summary),
&iter,
DOWNLOAD_SIZE, &total,
- DOWNLOAD_URI, &u,
+ DOWNLOAD_POS, &p,
-1);
- if (u == NULL)
- return;
- if (ECRS_equalsUri(u, uri)) {
+ if (p == downloadContext) {
if (total != 0)
val = completed * 100 / total;
else
@@ -1179,15 +1062,17 @@
} while (gtk_tree_model_iter_next(GTK_TREE_MODEL(download_summary),
&iter));
}
+#if 0
meta = NULL;
ECRS_listDirectory(ectx,
data,
size,
&meta,
&addFilesToDirectory,
- (void*)uri);
+ downloadContext->uri);
if (meta != NULL)
ECRS_freeMetaData(meta);
+#endif
DEBUG_END();
}
@@ -1196,67 +1081,58 @@
char * data;
int fd;
struct ECRS_MetaData * meta;
- DownloadList * pos;
DEBUG_BEGIN();
GE_LOG(ectx,
GE_STATUS | GE_USER | GE_BULK,
_("Download '%s' complete.\n"),
- filename);
- pos = download_head;
- while (pos != NULL) {
- if (ECRS_equalsUri(uri,
- pos->uri))
- break;
- pos = pos->next;
- }
-
+ downloadContext->filename);
/* Not available for resumed downloads */
- if (pos != NULL) {
- if ( (pos->rr != NULL) &&
- (gtk_tree_row_reference_valid(pos->rr)) ) {
- /* update directory view (if applicable!) */
- if (OK == disk_file_size(ectx,
- filename,
- &size,
- YES)) {
- GE_LOG(ectx,
- GE_DEBUG,
- "Updating directory view of '%s'\n",
- filename);
-
- meta = NULL;
- fd = disk_file_open(ectx,
- filename,
- O_RDONLY);
- if (fd != -1) {
- data = MMAP(NULL,
- size,
- PROT_READ,
- MAP_SHARED,
- fd,
- 0);
- if (data == MAP_FAILED) {
- GE_LOG_STRERROR_FILE(ectx,
- GE_ERROR | GE_ADMIN | GE_BULK,
- "mmap",
- filename);
- } else {
- if (data != NULL) {
- ECRS_listDirectory(ectx,
- data,
- size,
- &meta,
- &addFilesToDirectory,
- (void*)uri);
- MUNMAP(data, size);
- }
+ if ( (downloadContext->rr != NULL) &&
+ (gtk_tree_row_reference_valid(downloadContext->rr)) ) {
+ /* update directory view (if applicable!) */
+ if (OK == disk_file_size(ectx,
+ downloadContext->filename,
+ &size,
+ YES)) {
+ GE_LOG(ectx,
+ GE_DEBUG,
+ "Updating directory view of '%s'\n",
+ downloadContext->filename);
+
+ meta = NULL;
+ fd = disk_file_open(ectx,
+ downloadContext->filename,
+ O_RDONLY);
+ if (fd != -1) {
+ data = MMAP(NULL,
+ size,
+ PROT_READ,
+ MAP_SHARED,
+ fd,
+ 0);
+ if (data == MAP_FAILED) {
+ GE_LOG_STRERROR_FILE(ectx,
+ GE_ERROR | GE_ADMIN | GE_BULK,
+ "mmap",
+ downloadContext->filename);
+ } else {
+#if 0
+ if (data != NULL) {
+ ECRS_listDirectory(ectx,
+ data,
+ size,
+ &meta,
+ &addFilesToDirectory,
+ downloadContext->uri);
+ MUNMAP(data, size);
}
- CLOSE(fd);
+#endif
}
- if (meta != NULL)
- ECRS_freeMetaData(meta);
+ CLOSE(fd);
}
+ if (meta != NULL)
+ ECRS_freeMetaData(meta);
}
}
DEBUG_END();
@@ -1264,9 +1140,7 @@
void fs_download_stopped(struct DL * downloadContext) {
GtkTreeIter iter;
- char * f;
- char * fn;
- struct ECRS_URI * u;
+ struct DL * d;
DEBUG_BEGIN();
if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(download_summary),
@@ -1274,15 +1148,9 @@
do {
gtk_tree_model_get(GTK_TREE_MODEL(download_summary),
&iter,
- DOWNLOAD_FILENAME, &f,
- DOWNLOAD_URI, &u,
+ DOWNLOAD_POS, &d,
-1);
-
- f = strrchr(f, DIR_SEPARATOR);
- fn = strrchr(filename, DIR_SEPARATOR);
-
- if ( (ECRS_equalsUri(u, uri)) &&
- (0 == strcmp(f, fn)) ) {
+ if (d == downloadContext) {
gtk_tree_store_remove(download_summary,
&iter);
break;
@@ -1291,7 +1159,7 @@
&iter));
}
DEBUG_END();
- return OK;
+ /* FIXME: free dl downloadContext! */
}
void on_clearCompletedDownloadsButton_clicked_fs(void * unused,
@@ -1302,7 +1170,7 @@
static void abortDownloadCallback(GtkTreeModel * model,
GtkTreePath * path,
GtkTreeIter * iter,
- GtkTreeStore * tree) {
+ gpointer unused) {
struct DL * dl;
GE_ASSERT(ectx, model == GTK_TREE_MODEL(download_summary));
@@ -1331,53 +1199,158 @@
}
-struct DL *
-fs_download_started(struct FSUI_DownloadList * fsui_dl,
- unsigned long long total,
- unsigned int anonymityLevel,
- const struct ECRS_FileInfo * fi,
- const char * filename,
- unsigned long long completed,
- cron_t eta) {
- GtkTreeIter iiter;
- int progress;
- char * uriname;
- const char * sname;
- char * size_h;
- struct DL * list;
+
+
+
+
+
+
+
+
+void fs_search_start(struct GE_Context * e,
+ struct GC_Configuration * c) {
+ GtkWidget * searchCB;
+ GtkWidget * searchList;
+ GtkListStore * model;
+ GtkCellRenderer * renderer;
+ GtkTreeViewColumn * column;
+ int col;
+ GtkWidget * downloadList;
+
+ ectx = e;
+ cfg = c;
DEBUG_BEGIN();
- if (filesize != 0)
- progress = bytesCompleted * 100 / filesize;
- else
- progress = 100;
- uriname = ECRS_uriToString(uri);
- gtk_tree_store_insert(download_summary,
- &iiter,
- NULL,
- 0);
- sname = &filename[strlen(filename)-1];
- while ( (sname > filename) &&
- (sname[-1] != '/') &&
- (sname[-1] != '\\') )
- sname--;
- size_h = string_get_fancy_byte_size(filesize);
- gtk_tree_store_set(download_summary,
- &iiter,
- DOWNLOAD_FILENAME, filename,
- DOWNLOAD_SHORTNAME, sname,
- DOWNLOAD_SIZE, filesize,
- DOWNLOAD_HSIZE, size_h,
- DOWNLOAD_PROGRESS, progress,
- DOWNLOAD_URISTRING, uriname,
- DOWNLOAD_URI, ECRS_dupUri(uri),
- DOWNLOAD_TREEPATH, NULL,
- DOWNLOAD_POS, list,
- -1);
- FREE(size_h);
- FREE(uriname);
+ searchCB
+ = glade_xml_get_widget(getMainXML(),
+ "fssearchKeywordComboBoxEntry");
+
+ model = gtk_list_store_new(NS_SEARCH_NUM,
+ G_TYPE_STRING, /* what we show */
+ G_TYPE_STRING, /* EncName of namespace */
+ G_TYPE_POINTER, /* ECRS MetaData */
+ G_TYPE_POINTER, /* FSUI search list */
+ G_TYPE_INT); /* Meta-data about namespace */
+ gtk_combo_box_set_model(GTK_COMBO_BOX(searchCB),
+ GTK_TREE_MODEL(model));
+ gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(searchCB),
+ NS_SEARCH_DESCRIPTION);
+ searchList = glade_xml_get_widget(getMainXML(),
+ "activeSearchesSummary");
+ search_summary =
+ gtk_list_store_new(SER_SUM_NUM,
+ G_TYPE_STRING, /* name */
+ G_TYPE_INT, /* # results */
+ G_TYPE_POINTER, /* internal: FSUI search list */
+ G_TYPE_POINTER); /* internal: uri */
+ gtk_tree_view_set_model(GTK_TREE_VIEW(searchList),
+ GTK_TREE_MODEL(search_summary));
+ renderer = gtk_cell_renderer_text_new();
+ col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(searchList),
+ -1,
+ _("Query"),
+ renderer,
+ "text", SER_SUM_NAME,
+ NULL);
+ column = gtk_tree_view_get_column(GTK_TREE_VIEW(searchList),
+ col - 1);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_clickable(column, TRUE);
+ gtk_tree_view_column_set_reorderable(column, TRUE);
+ gtk_tree_view_column_set_sort_column_id(column, SER_SUM_NAME);
+
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(searchList),
+ col - 1),
+ TRUE);
+ renderer = gtk_cell_renderer_text_new();
+ col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(searchList),
+ -1,
+ _("Results"),
+ renderer,
+ "text", SER_SUM_COUNT,
+ NULL);
+ column = gtk_tree_view_get_column(GTK_TREE_VIEW(searchList),
+ col - 1);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_clickable(column, TRUE);
+ gtk_tree_view_column_set_reorderable(column, TRUE);
+ gtk_tree_view_column_set_sort_column_id(column, SER_SUM_COUNT);
+
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(searchList),
+ col - 1),
+ TRUE);
+
+
+ downloadList = glade_xml_get_widget(getMainXML(),
+ "activeDownloadsList");
+ download_summary =
+ gtk_tree_store_new(DOWNLOAD_NUM,
+ G_TYPE_STRING, /* name (full-path file name) */
+ G_TYPE_STRING, /* name (user-friendly name) */
+ G_TYPE_UINT64, /* size */
+ G_TYPE_STRING, /* human readable size */
+ G_TYPE_INT, /* progress */
+ G_TYPE_STRING, /* uri */
+ G_TYPE_POINTER, /* url */
+ G_TYPE_POINTER, /* internal: gtk tree path / NULL */
+ G_TYPE_POINTER); /* directory path if file is inside a
dir */
+ gtk_tree_view_set_model(GTK_TREE_VIEW(downloadList),
+ GTK_TREE_MODEL(download_summary));
+ renderer = gtk_cell_renderer_progress_new();
+ col =
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
+ -1,
+ _("Name"),
+ renderer,
+ "value", DOWNLOAD_PROGRESS,
+ "text", DOWNLOAD_SHORTNAME,
+ NULL);
+ column = gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
+ col - 1);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_clickable(column, TRUE);
+ gtk_tree_view_column_set_reorderable(column, TRUE);
+ gtk_tree_view_column_set_sort_column_id(column, DOWNLOAD_PROGRESS);
+ /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/
+
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
+ col - 1),
+ TRUE);
+ renderer = gtk_cell_renderer_text_new();
+ g_object_set (renderer, "xalign", 1.00, NULL);
+ col =
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
+ -1,
+ _("Size"),
+ renderer,
+ "text", DOWNLOAD_HSIZE,
+ NULL);
+
+ column = gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
+ col - 1);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_clickable(column, TRUE);
+ gtk_tree_view_column_set_reorderable(column, TRUE);
+ gtk_tree_view_column_set_sort_column_id(column, DOWNLOAD_SIZE);
+ /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/
+
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
+ col - 1),
+ TRUE);
+ renderer = gtk_cell_renderer_text_new();
+ col =
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
+ -1,
+ _("URI"),
+ renderer,
+ "text", DOWNLOAD_URISTRING,
+ NULL);
+ column = gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
+ col - 1);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_reorderable(column, TRUE);
+ /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/
+
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(downloadList),
+ col - 1),
+ TRUE);
DEBUG_END();
- return list;
}
+void fs_search_stop() {
+}
+
+
/* end of search.c */
Modified: gnunet-gtk/src/plugins/fs/search.h
===================================================================
--- gnunet-gtk/src/plugins/fs/search.h 2006-10-26 03:28:16 UTC (rev 3554)
+++ gnunet-gtk/src/plugins/fs/search.h 2006-10-26 03:29:34 UTC (rev 3555)
@@ -38,7 +38,7 @@
fs_download_started(struct FSUI_DownloadList * fsui_dl,
unsigned long long total,
unsigned int anonymityLevel,
- const struct ECRS_FileInfo * fi,
+ const ECRS_FileInfo * fi,
const char * filename,
unsigned long long completed,
cron_t eta);
@@ -102,4 +102,8 @@
void fs_search_stop(void);
+void on_closeSearchButton_clicked_fs(GtkWidget * searchPage,
+ GtkWidget * closeButton);
+
+
#endif
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r3555 - in gnunet-gtk: . src/plugins/fs,
grothoff <=