diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-08-07 21:46:01 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-08-07 21:46:01 +0000 |
commit | cd2b63beb8818417a4ed07a84623b6ff80a5fba3 (patch) | |
tree | a597968f820a303b342a48695b668c593fc86f8d | |
parent | e08400d9c4cd06c8619daa295a1e04990559982d (diff) | |
download | gnunet-gtk-cd2b63beb8818417a4ed07a84623b6ff80a5fba3.tar.gz gnunet-gtk-cd2b63beb8818417a4ed07a84623b6ff80a5fba3.zip |
done
-rw-r--r-- | src/common.h | 7 | ||||
-rw-r--r-- | src/gnunet-gtk.c | 15 | ||||
-rw-r--r-- | src/main_window_file_search.c | 128 |
3 files changed, 129 insertions, 21 deletions
diff --git a/src/common.h b/src/common.h index 818adcf3..571d0c05 100644 --- a/src/common.h +++ b/src/common.h | |||
@@ -99,6 +99,13 @@ GNUNET_GTK_get_le_plugins (void); | |||
99 | 99 | ||
100 | 100 | ||
101 | /** | 101 | /** |
102 | * Get cfg. | ||
103 | */ | ||
104 | const struct GNUNET_CONFIGURATION_Handle * | ||
105 | GNUNET_GTK_get_configuration (void); | ||
106 | |||
107 | |||
108 | /** | ||
102 | * Return handle for file-sharing operations. | 109 | * Return handle for file-sharing operations. |
103 | * @return NULL on error | 110 | * @return NULL on error |
104 | */ | 111 | */ |
diff --git a/src/gnunet-gtk.c b/src/gnunet-gtk.c index 215d4d8c..d4ce1b10 100644 --- a/src/gnunet-gtk.c +++ b/src/gnunet-gtk.c | |||
@@ -113,6 +113,11 @@ struct MainContext | |||
113 | GtkBuilder *builder; | 113 | GtkBuilder *builder; |
114 | 114 | ||
115 | /** | 115 | /** |
116 | * Our configuration. | ||
117 | */ | ||
118 | const struct GNUNET_CONFIGURATION_Handle *cfg; | ||
119 | |||
120 | /** | ||
116 | * Handle for file-sharing operations. | 121 | * Handle for file-sharing operations. |
117 | */ | 122 | */ |
118 | struct GNUNET_FS_Handle *fs; | 123 | struct GNUNET_FS_Handle *fs; |
@@ -326,6 +331,15 @@ GNUNET_GTK_get_le_plugins () | |||
326 | return mc->plugins; | 331 | return mc->plugins; |
327 | } | 332 | } |
328 | 333 | ||
334 | /** | ||
335 | * Get cfg. | ||
336 | */ | ||
337 | const struct GNUNET_CONFIGURATION_Handle * | ||
338 | GNUNET_GTK_get_configuration (void) | ||
339 | { | ||
340 | return mc->cfg; | ||
341 | } | ||
342 | |||
329 | 343 | ||
330 | /** | 344 | /** |
331 | * Callback invoked if the application is supposed to exit. | 345 | * Callback invoked if the application is supposed to exit. |
@@ -542,6 +556,7 @@ run (void *cls, | |||
542 | mc->gml = g_main_loop_new (NULL, TRUE); | 556 | mc->gml = g_main_loop_new (NULL, TRUE); |
543 | mc->gmc = g_main_loop_get_context (mc->gml); | 557 | mc->gmc = g_main_loop_get_context (mc->gml); |
544 | mc->sched = sched; | 558 | mc->sched = sched; |
559 | mc->cfg = cfg; | ||
545 | if (mc->builder == NULL) | 560 | if (mc->builder == NULL) |
546 | return; | 561 | return; |
547 | 562 | ||
diff --git a/src/main_window_file_search.c b/src/main_window_file_search.c index 9b5b9f9d..0de40d62 100644 --- a/src/main_window_file_search.c +++ b/src/main_window_file_search.c | |||
@@ -40,6 +40,11 @@ GNUNET_GTK_search_dialog_search_button_clicked_cb (GtkWidget * dummy, | |||
40 | const char *keywords; | 40 | const char *keywords; |
41 | char *emsg; | 41 | char *emsg; |
42 | struct GNUNET_FS_Uri *uri; | 42 | struct GNUNET_FS_Uri *uri; |
43 | GNUNET_HashCode *nsid; | ||
44 | GtkTreeModel *ls; | ||
45 | GtkTreeView *tv; | ||
46 | GtkTreeSelection *sel; | ||
47 | GtkTreeIter iter; | ||
43 | 48 | ||
44 | query = GTK_ENTRY (gtk_builder_get_object (builder, | 49 | query = GTK_ENTRY (gtk_builder_get_object (builder, |
45 | "GNUNET_GTK_search_dialog_keyword_entry")); | 50 | "GNUNET_GTK_search_dialog_keyword_entry")); |
@@ -48,29 +53,38 @@ GNUNET_GTK_search_dialog_search_button_clicked_cb (GtkWidget * dummy, | |||
48 | namespace = GTK_TREE_VIEW (gtk_builder_get_object (builder, | 53 | namespace = GTK_TREE_VIEW (gtk_builder_get_object (builder, |
49 | "GNUNET_GTK_search_dialog_namespace_tree_view")); | 54 | "GNUNET_GTK_search_dialog_namespace_tree_view")); |
50 | keywords = gtk_entry_get_text (query); | 55 | keywords = gtk_entry_get_text (query); |
51 | /* FIXME: check if namespace was selected */ | 56 | nsid = NULL; |
52 | #if 0 | 57 | tv = GTK_TREE_VIEW (gtk_builder_get_object (builder, |
58 | "GNUNET_GTK_search_dialog_namespace_tree_view")); | ||
59 | sel = gtk_tree_view_get_selection (tv); | ||
53 | if (TRUE == | 60 | if (TRUE == |
54 | gtk_list_model_get_active_iter (model, | 61 | gtk_tree_selection_get_selected (sel, |
55 | &iter)) | 62 | &ls, |
63 | &iter)) | ||
64 | gtk_tree_model_get (ls, &iter, | ||
65 | 2, &nsid, | ||
66 | -1); | ||
67 | if (nsid != NULL) | ||
56 | { | 68 | { |
57 | gtk_list_model_get (model, &iter, | 69 | uri = GNUNET_FS_uri_sks_create_from_nsid (nsid, |
58 | NS_SEARCH_DESCRIPTION, &descStr, | 70 | keywords); |
59 | NS_SEARCH_NAME, &nsName, | 71 | GNUNET_assert (uri != NULL); |
60 | -1); | 72 | } |
61 | // ... | 73 | else |
62 | } | ||
63 | #endif | ||
64 | emsg = NULL; | ||
65 | uri = GNUNET_FS_uri_ksk_create (keywords, &emsg); | ||
66 | if (uri == NULL) | ||
67 | { | 74 | { |
68 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 75 | emsg = NULL; |
69 | _("Invalid keyword string `%s': %s"), | 76 | uri = GNUNET_FS_uri_ksk_create (keywords, &emsg); |
70 | keywords, | 77 | if (uri == NULL) |
71 | emsg); | 78 | { |
72 | GNUNET_free_non_null (emsg); | 79 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
73 | return; | 80 | (nsid != NULL) |
81 | ? _("Invalid namespace identifier `%s': %s") | ||
82 | : _("Invalid keyword string `%s': %s"), | ||
83 | keywords, | ||
84 | emsg); | ||
85 | GNUNET_free_non_null (emsg); | ||
86 | return; | ||
87 | } | ||
74 | } | 88 | } |
75 | GNUNET_FS_search_start (GNUNET_GTK_get_fs_handle (), | 89 | GNUNET_FS_search_start (GNUNET_GTK_get_fs_handle (), |
76 | uri, | 90 | uri, |
@@ -81,6 +95,75 @@ GNUNET_GTK_search_dialog_search_button_clicked_cb (GtkWidget * dummy, | |||
81 | } | 95 | } |
82 | 96 | ||
83 | 97 | ||
98 | |||
99 | /** | ||
100 | * Add pseudonym data to list store | ||
101 | * | ||
102 | * @param cls closure (the 'GtkListStore') | ||
103 | * @param pseudonym hash code of public key of pseudonym | ||
104 | * @param md meta data known about the pseudonym | ||
105 | * @param rating the local rating of the pseudonym | ||
106 | * @return GNUNET_OK to continue iteration, GNUNET_SYSERR to abort | ||
107 | */ | ||
108 | static int | ||
109 | add_namespace_to_ls (void *cls, | ||
110 | const GNUNET_HashCode * | ||
111 | pseudonym, | ||
112 | const struct | ||
113 | GNUNET_CONTAINER_MetaData * md, | ||
114 | int rating) | ||
115 | { | ||
116 | GtkListStore *ls = cls; | ||
117 | char *root; | ||
118 | char *ns_name; | ||
119 | GNUNET_HashCode *nsid; | ||
120 | char *description; | ||
121 | char *uris; | ||
122 | char *emsg; | ||
123 | struct GNUNET_FS_Uri *uri; | ||
124 | GtkTreeIter iter; | ||
125 | |||
126 | ns_name = GNUNET_PSEUDONYM_id_to_name (GNUNET_GTK_get_configuration (), | ||
127 | pseudonym); | ||
128 | nsid = GNUNET_malloc (sizeof (GNUNET_HashCode)); | ||
129 | *nsid = *pseudonym; | ||
130 | root = NULL; | ||
131 | uris = GNUNET_CONTAINER_meta_data_get_by_type (md, | ||
132 | EXTRACTOR_METATYPE_URI); | ||
133 | if (uris != NULL) | ||
134 | { | ||
135 | emsg = NULL; | ||
136 | uri = GNUNET_FS_uri_parse (uris, &emsg); | ||
137 | if (uri == NULL) | ||
138 | GNUNET_free (emsg); | ||
139 | root = GNUNET_FS_uri_sks_get_content_id (uri); | ||
140 | GNUNET_FS_uri_destroy (uri); | ||
141 | } | ||
142 | description = GNUNET_CONTAINER_meta_data_get_first_by_types (md, | ||
143 | EXTRACTOR_METATYPE_TITLE, | ||
144 | EXTRACTOR_METATYPE_BOOK_TITLE, | ||
145 | EXTRACTOR_METATYPE_DESCRIPTION, | ||
146 | EXTRACTOR_METATYPE_SUMMARY, | ||
147 | EXTRACTOR_METATYPE_ALBUM, | ||
148 | EXTRACTOR_METATYPE_COMMENT, | ||
149 | EXTRACTOR_METATYPE_SUBJECT, | ||
150 | EXTRACTOR_METATYPE_KEYWORDS | ||
151 | -1); | ||
152 | gtk_list_store_insert_with_values (ls, | ||
153 | &iter, | ||
154 | G_MAXINT, | ||
155 | 0, ns_name, | ||
156 | 1, root, | ||
157 | 2, nsid, | ||
158 | 3, description, | ||
159 | -1); | ||
160 | GNUNET_free (ns_name); | ||
161 | GNUNET_free_non_null (root); | ||
162 | GNUNET_free_non_null (description); | ||
163 | return GNUNET_OK; | ||
164 | } | ||
165 | |||
166 | |||
84 | /** | 167 | /** |
85 | * Search selected in 'file' menu. | 168 | * Search selected in 'file' menu. |
86 | */ | 169 | */ |
@@ -99,8 +182,11 @@ GNUNET_GTK_main_menu_file_search_activate_cb (GtkWidget * dummy, | |||
99 | "GNUNET_GTK_search_dialog")); | 182 | "GNUNET_GTK_search_dialog")); |
100 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, | 183 | ls = GTK_LIST_STORE (gtk_builder_get_object (builder, |
101 | "GNUNET_GTK_namespace_list_store")); | 184 | "GNUNET_GTK_namespace_list_store")); |
102 | /* FIXME: populate 'ls' */ | 185 | GNUNET_PSEUDONYM_list_all (GNUNET_GTK_get_configuration (), |
186 | &add_namespace_to_ls, | ||
187 | ls); | ||
103 | gtk_dialog_run (GTK_DIALOG (ad)); | 188 | gtk_dialog_run (GTK_DIALOG (ad)); |
189 | /* FIXME: free nsids from 'ls' */ | ||
104 | gtk_widget_destroy (ad); | 190 | gtk_widget_destroy (ad); |
105 | g_object_unref (G_OBJECT (builder)); | 191 | g_object_unref (G_OBJECT (builder)); |
106 | builder = NULL; | 192 | builder = NULL; |