gnunet-svn
[Top][All Lists]
Advanced

[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





reply via email to

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