diff options
Diffstat (limited to 'src/fs/gnunet-fs-gtk.c')
-rw-r--r-- | src/fs/gnunet-fs-gtk.c | 234 |
1 files changed, 145 insertions, 89 deletions
diff --git a/src/fs/gnunet-fs-gtk.c b/src/fs/gnunet-fs-gtk.c index 257fb311..896ae708 100644 --- a/src/fs/gnunet-fs-gtk.c +++ b/src/fs/gnunet-fs-gtk.c | |||
@@ -120,20 +120,26 @@ GNUNET_GTK_quit_cb (GObject * object, gpointer user_data) | |||
120 | { | 120 | { |
121 | GNUNET_GTK_tray_icon_destroy (); | 121 | GNUNET_GTK_tray_icon_destroy (); |
122 | GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_IDLE, | 122 | GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_IDLE, |
123 | &shutdown_task, NULL); | 123 | &shutdown_task, NULL); |
124 | } | 124 | } |
125 | 125 | ||
126 | 126 | ||
127 | void | 127 | void |
128 | main_window_search_namespace_dropdown_button_toggled_cb (GtkToggleButton *togglebutton, | 128 | main_window_search_namespace_dropdown_button_toggled_cb (GtkToggleButton * |
129 | gpointer user_data) | 129 | togglebutton, |
130 | gpointer user_data) | ||
130 | { | 131 | { |
131 | gboolean active; | 132 | gboolean active; |
132 | GtkBuilder *builder = GTK_BUILDER (user_data); | 133 | GtkBuilder *builder = GTK_BUILDER (user_data); |
133 | GtkWidget *namespace_selector_window; | 134 | GtkWidget *namespace_selector_window; |
134 | GtkWidget *namespace_selector_treeview; | 135 | GtkWidget *namespace_selector_treeview; |
135 | namespace_selector_window = GTK_WIDGET (gtk_builder_get_object (builder, "namespace_selector_window")); | 136 | |
136 | namespace_selector_treeview = GTK_WIDGET (gtk_builder_get_object (builder, "namespace_selector_treeview")); | 137 | namespace_selector_window = |
138 | GTK_WIDGET (gtk_builder_get_object | ||
139 | (builder, "namespace_selector_window")); | ||
140 | namespace_selector_treeview = | ||
141 | GTK_WIDGET (gtk_builder_get_object | ||
142 | (builder, "namespace_selector_treeview")); | ||
137 | g_object_get (G_OBJECT (togglebutton), "active", &active, NULL); | 143 | g_object_get (G_OBJECT (togglebutton), "active", &active, NULL); |
138 | if (active) | 144 | if (active) |
139 | { | 145 | { |
@@ -141,7 +147,8 @@ main_window_search_namespace_dropdown_button_toggled_cb (GtkToggleButton *toggle | |||
141 | GdkWindow *main_window_gdk; | 147 | GdkWindow *main_window_gdk; |
142 | gint mwg_x, mwg_y, tgb_x, tgb_y, popup_x, popup_y; | 148 | gint mwg_x, mwg_y, tgb_x, tgb_y, popup_x, popup_y; |
143 | 149 | ||
144 | gtk_widget_get_allocation (GTK_WIDGET (togglebutton), &togglebutton_allocation); | 150 | gtk_widget_get_allocation (GTK_WIDGET (togglebutton), |
151 | &togglebutton_allocation); | ||
145 | 152 | ||
146 | main_window_gdk = gtk_widget_get_window (GTK_WIDGET (togglebutton)); | 153 | main_window_gdk = gtk_widget_get_window (GTK_WIDGET (togglebutton)); |
147 | 154 | ||
@@ -172,14 +179,19 @@ gboolean | |||
172 | namespace_selector_window_leave_timeout_cb (gpointer user_data) | 179 | namespace_selector_window_leave_timeout_cb (gpointer user_data) |
173 | { | 180 | { |
174 | GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (user_data); | 181 | GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (user_data); |
182 | |||
175 | /* This will eventually hide the namespace selector */ | 183 | /* This will eventually hide the namespace selector */ |
176 | gtk_toggle_button_set_active (toggle_button, FALSE); | 184 | gtk_toggle_button_set_active (toggle_button, FALSE); |
177 | return FALSE; | 185 | return FALSE; |
178 | } | 186 | } |
179 | 187 | ||
180 | gboolean | 188 | gboolean |
181 | main_window_search_namespace_dropdown_button_enter_notify_event_cb ( | 189 | main_window_search_namespace_dropdown_button_enter_notify_event_cb (GtkWidget * |
182 | GtkWidget *widget, GdkEvent *event, gpointer user_data) | 190 | widget, |
191 | GdkEvent * | ||
192 | event, | ||
193 | gpointer | ||
194 | user_data) | ||
183 | { | 195 | { |
184 | if (namespace_selector_window_leave_timeout_source > 0) | 196 | if (namespace_selector_window_leave_timeout_source > 0) |
185 | g_source_remove (namespace_selector_window_leave_timeout_source); | 197 | g_source_remove (namespace_selector_window_leave_timeout_source); |
@@ -188,8 +200,9 @@ main_window_search_namespace_dropdown_button_enter_notify_event_cb ( | |||
188 | 200 | ||
189 | 201 | ||
190 | gboolean | 202 | gboolean |
191 | namespace_selector_window_leave_notify_event_cb (GtkWidget *widget, | 203 | namespace_selector_window_leave_notify_event_cb (GtkWidget * widget, |
192 | GdkEvent *event, gpointer user_data) | 204 | GdkEvent * event, |
205 | gpointer user_data) | ||
193 | { | 206 | { |
194 | GtkBuilder *builder; | 207 | GtkBuilder *builder; |
195 | GtkToggleButton *toggle_button; | 208 | GtkToggleButton *toggle_button; |
@@ -197,12 +210,17 @@ namespace_selector_window_leave_notify_event_cb (GtkWidget *widget, | |||
197 | 210 | ||
198 | builder = GTK_BUILDER (user_data); | 211 | builder = GTK_BUILDER (user_data); |
199 | 212 | ||
200 | toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "main_window_search_namespace_dropdown_button")); | 213 | toggle_button = |
214 | GTK_TOGGLE_BUTTON (gtk_builder_get_object | ||
215 | (builder, | ||
216 | "main_window_search_namespace_dropdown_button")); | ||
201 | 217 | ||
202 | /* Place a timeout to hide the window. It will be cancelled if the cursor | 218 | /* Place a timeout to hide the window. It will be cancelled if the cursor |
203 | * enters the namespace selector window or the toggle button within 100ms. | 219 | * enters the namespace selector window or the toggle button within 100ms. |
204 | */ | 220 | */ |
205 | timeout_id = g_timeout_add (100, &namespace_selector_window_leave_timeout_cb, toggle_button); | 221 | timeout_id = |
222 | g_timeout_add (100, &namespace_selector_window_leave_timeout_cb, | ||
223 | toggle_button); | ||
206 | if (namespace_selector_window_leave_timeout_source > 0) | 224 | if (namespace_selector_window_leave_timeout_source > 0) |
207 | g_source_remove (namespace_selector_window_leave_timeout_source); | 225 | g_source_remove (namespace_selector_window_leave_timeout_source); |
208 | namespace_selector_window_leave_timeout_source = timeout_id; | 226 | namespace_selector_window_leave_timeout_source = timeout_id; |
@@ -211,8 +229,8 @@ namespace_selector_window_leave_notify_event_cb (GtkWidget *widget, | |||
211 | } | 229 | } |
212 | 230 | ||
213 | gboolean | 231 | gboolean |
214 | GNUNET_GTK_get_tree_string (GtkTreeView *treeview, GtkTreePath *treepath, | 232 | GNUNET_GTK_get_tree_string (GtkTreeView * treeview, GtkTreePath * treepath, |
215 | guint column, gchar **value) | 233 | guint column, gchar ** value) |
216 | { | 234 | { |
217 | gboolean ok; | 235 | gboolean ok; |
218 | GtkTreeModel *model; | 236 | GtkTreeModel *model; |
@@ -222,6 +240,7 @@ GNUNET_GTK_get_tree_string (GtkTreeView *treeview, GtkTreePath *treepath, | |||
222 | return FALSE; | 240 | return FALSE; |
223 | 241 | ||
224 | GtkTreeIter iter; | 242 | GtkTreeIter iter; |
243 | |||
225 | ok = gtk_tree_model_get_iter (model, &iter, treepath); | 244 | ok = gtk_tree_model_get_iter (model, &iter, treepath); |
226 | if (!ok) | 245 | if (!ok) |
227 | return FALSE; | 246 | return FALSE; |
@@ -234,7 +253,8 @@ GNUNET_GTK_get_tree_string (GtkTreeView *treeview, GtkTreePath *treepath, | |||
234 | } | 253 | } |
235 | 254 | ||
236 | gboolean | 255 | gboolean |
237 | GNUNET_GTK_get_selected_anonymity_level (GtkBuilder *builder, gchar *combo_name, guint *p_level) | 256 | GNUNET_GTK_get_selected_anonymity_level (GtkBuilder * builder, |
257 | gchar * combo_name, guint * p_level) | ||
238 | { | 258 | { |
239 | GtkComboBox *combo; | 259 | GtkComboBox *combo; |
240 | GtkTreeIter iter; | 260 | GtkTreeIter iter; |
@@ -259,7 +279,8 @@ GNUNET_GTK_get_selected_anonymity_level (GtkBuilder *builder, gchar *combo_name, | |||
259 | } | 279 | } |
260 | 280 | ||
261 | gboolean | 281 | gboolean |
262 | GNUNET_GTK_select_anonymity_level (GtkBuilder *builder, gchar *combo_name, guint sel_level) | 282 | GNUNET_GTK_select_anonymity_level (GtkBuilder * builder, gchar * combo_name, |
283 | guint sel_level) | ||
263 | { | 284 | { |
264 | GtkComboBox *combo; | 285 | GtkComboBox *combo; |
265 | GtkTreeIter iter; | 286 | GtkTreeIter iter; |
@@ -275,9 +296,8 @@ GNUNET_GTK_select_anonymity_level (GtkBuilder *builder, gchar *combo_name, guint | |||
275 | if (!model) | 296 | if (!model) |
276 | return FALSE; | 297 | return FALSE; |
277 | 298 | ||
278 | for (go_on = gtk_tree_model_get_iter_first (model, &iter); | 299 | for (go_on = gtk_tree_model_get_iter_first (model, &iter); go_on; |
279 | go_on; | 300 | go_on = gtk_tree_model_iter_next (model, &iter)) |
280 | go_on = gtk_tree_model_iter_next (model, &iter)) | ||
281 | { | 301 | { |
282 | gtk_tree_model_get (model, &iter, 1, &level, -1); | 302 | gtk_tree_model_get (model, &iter, 1, &level, -1); |
283 | if (level == sel_level) | 303 | if (level == sel_level) |
@@ -290,9 +310,11 @@ GNUNET_GTK_select_anonymity_level (GtkBuilder *builder, gchar *combo_name, guint | |||
290 | } | 310 | } |
291 | 311 | ||
292 | gboolean | 312 | gboolean |
293 | get_selected_namespace_treepath_iter_model_widget (GtkBuilder *builder, | 313 | get_selected_namespace_treepath_iter_model_widget (GtkBuilder * builder, |
294 | GtkTreePath **p_treepath, GtkTreeIter *p_iter, GtkTreeModel **p_model, | 314 | GtkTreePath ** p_treepath, |
295 | GtkWidget **p_widget) | 315 | GtkTreeIter * p_iter, |
316 | GtkTreeModel ** p_model, | ||
317 | GtkWidget ** p_widget) | ||
296 | { | 318 | { |
297 | GtkTreeSelection *selection; | 319 | GtkTreeSelection *selection; |
298 | GtkTreeModel *model; | 320 | GtkTreeModel *model; |
@@ -300,7 +322,9 @@ get_selected_namespace_treepath_iter_model_widget (GtkBuilder *builder, | |||
300 | GtkTreePath *treepath; | 322 | GtkTreePath *treepath; |
301 | GtkWidget *widget; | 323 | GtkWidget *widget; |
302 | 324 | ||
303 | widget = GTK_WIDGET (gtk_builder_get_object (builder, "namespace_selector_treeview")); | 325 | widget = |
326 | GTK_WIDGET (gtk_builder_get_object | ||
327 | (builder, "namespace_selector_treeview")); | ||
304 | if (!widget) | 328 | if (!widget) |
305 | return FALSE; | 329 | return FALSE; |
306 | 330 | ||
@@ -338,8 +362,8 @@ get_selected_namespace_treepath_iter_model_widget (GtkBuilder *builder, | |||
338 | } | 362 | } |
339 | 363 | ||
340 | void | 364 | void |
341 | namespace_selector_treeview_cursor_changed_cb (GtkWidget *widget, | 365 | namespace_selector_treeview_cursor_changed_cb (GtkWidget * widget, |
342 | gpointer user_data) | 366 | gpointer user_data) |
343 | { | 367 | { |
344 | GtkBuilder *builder; | 368 | GtkBuilder *builder; |
345 | GtkToggleButton *toggle_button; | 369 | GtkToggleButton *toggle_button; |
@@ -352,15 +376,20 @@ namespace_selector_treeview_cursor_changed_cb (GtkWidget *widget, | |||
352 | 376 | ||
353 | builder = GTK_BUILDER (user_data); | 377 | builder = GTK_BUILDER (user_data); |
354 | 378 | ||
355 | toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "main_window_search_namespace_dropdown_button")); | 379 | toggle_button = |
380 | GTK_TOGGLE_BUTTON (gtk_builder_get_object | ||
381 | (builder, | ||
382 | "main_window_search_namespace_dropdown_button")); | ||
356 | if (!toggle_button) | 383 | if (!toggle_button) |
357 | return; | 384 | return; |
358 | 385 | ||
359 | search_entry = GTK_ENTRY (gtk_builder_get_object (builder, "main_window_search_entry")); | 386 | search_entry = |
387 | GTK_ENTRY (gtk_builder_get_object (builder, "main_window_search_entry")); | ||
360 | if (!search_entry) | 388 | if (!search_entry) |
361 | return; | 389 | return; |
362 | 390 | ||
363 | if (!get_selected_namespace_treepath_iter_model_widget (builder, &treepath, NULL, &model, NULL)) | 391 | if (!get_selected_namespace_treepath_iter_model_widget |
392 | (builder, &treepath, NULL, &model, NULL)) | ||
364 | return; | 393 | return; |
365 | ref = gtk_tree_row_reference_new (model, treepath); | 394 | ref = gtk_tree_row_reference_new (model, treepath); |
366 | old = g_object_get_data (G_OBJECT (toggle_button), "selected-row-reference"); | 395 | old = g_object_get_data (G_OBJECT (toggle_button), "selected-row-reference"); |
@@ -369,18 +398,20 @@ namespace_selector_treeview_cursor_changed_cb (GtkWidget *widget, | |||
369 | g_object_set_data (G_OBJECT (toggle_button), "selected-row-reference", ref); | 398 | g_object_set_data (G_OBJECT (toggle_button), "selected-row-reference", ref); |
370 | 399 | ||
371 | 400 | ||
372 | sel_namespace_label = GTK_LABEL (gtk_builder_get_object (builder, "main_window_search_selected_namespace_label")); | 401 | sel_namespace_label = |
402 | GTK_LABEL (gtk_builder_get_object | ||
403 | (builder, "main_window_search_selected_namespace_label")); | ||
373 | if (!sel_namespace_label) | 404 | if (!sel_namespace_label) |
374 | return; | 405 | return; |
375 | 406 | ||
376 | if (GNUNET_GTK_get_tree_string (GTK_TREE_VIEW (widget), treepath, 0, | 407 | if (GNUNET_GTK_get_tree_string (GTK_TREE_VIEW (widget), treepath, 0, &value) |
377 | &value) && value != NULL) | 408 | && value != NULL) |
378 | { | 409 | { |
379 | gtk_label_set_text (sel_namespace_label, value); | 410 | gtk_label_set_text (sel_namespace_label, value); |
380 | g_free (value); | 411 | g_free (value); |
381 | } | 412 | } |
382 | if (GNUNET_GTK_get_tree_string (GTK_TREE_VIEW (widget), treepath, 2, | 413 | if (GNUNET_GTK_get_tree_string (GTK_TREE_VIEW (widget), treepath, 2, &value) |
383 | &value) && value != NULL) | 414 | && value != NULL) |
384 | { | 415 | { |
385 | gtk_entry_set_text (search_entry, value); | 416 | gtk_entry_set_text (search_entry, value); |
386 | g_free (value); | 417 | g_free (value); |
@@ -393,7 +424,7 @@ namespace_selector_treeview_cursor_changed_cb (GtkWidget *widget, | |||
393 | } | 424 | } |
394 | 425 | ||
395 | GtkTreeRowReference * | 426 | GtkTreeRowReference * |
396 | get_ns_selected_row (GtkTreeView *tree) | 427 | get_ns_selected_row (GtkTreeView * tree) |
397 | { | 428 | { |
398 | GtkTreeSelection *sel; | 429 | GtkTreeSelection *sel; |
399 | GList *rows, *row; | 430 | GList *rows, *row; |
@@ -414,8 +445,9 @@ get_ns_selected_row (GtkTreeView *tree) | |||
414 | } | 445 | } |
415 | 446 | ||
416 | gboolean | 447 | gboolean |
417 | namespace_selector_treeview_button_press_event_cb (GtkWidget *widget, | 448 | namespace_selector_treeview_button_press_event_cb (GtkWidget * widget, |
418 | GdkEvent *event, gpointer user_data) | 449 | GdkEvent * event, |
450 | gpointer user_data) | ||
419 | { | 451 | { |
420 | GtkTreeRowReference *ref = NULL; | 452 | GtkTreeRowReference *ref = NULL; |
421 | 453 | ||
@@ -423,6 +455,7 @@ namespace_selector_treeview_button_press_event_cb (GtkWidget *widget, | |||
423 | if (ref != NULL) | 455 | if (ref != NULL) |
424 | { | 456 | { |
425 | gpointer old = g_object_get_data (G_OBJECT (widget), "pushed-rowreference"); | 457 | gpointer old = g_object_get_data (G_OBJECT (widget), "pushed-rowreference"); |
458 | |||
426 | if (old) | 459 | if (old) |
427 | gtk_tree_row_reference_free (old); | 460 | gtk_tree_row_reference_free (old); |
428 | g_object_set_data (G_OBJECT (widget), "pushed-rowreference", ref); | 461 | g_object_set_data (G_OBJECT (widget), "pushed-rowreference", ref); |
@@ -431,8 +464,9 @@ namespace_selector_treeview_button_press_event_cb (GtkWidget *widget, | |||
431 | } | 464 | } |
432 | 465 | ||
433 | gboolean | 466 | gboolean |
434 | namespace_selector_treeview_button_release_event_cb (GtkWidget *widget, | 467 | namespace_selector_treeview_button_release_event_cb (GtkWidget * widget, |
435 | GdkEvent *event, gpointer user_data) | 468 | GdkEvent * event, |
469 | gpointer user_data) | ||
436 | { | 470 | { |
437 | GtkTreeRowReference *ref = NULL; | 471 | GtkTreeRowReference *ref = NULL; |
438 | gpointer old = g_object_get_data (G_OBJECT (widget), "pushed-rowreference"); | 472 | gpointer old = g_object_get_data (G_OBJECT (widget), "pushed-rowreference"); |
@@ -441,6 +475,7 @@ namespace_selector_treeview_button_release_event_cb (GtkWidget *widget, | |||
441 | if (ref && old) | 475 | if (ref && old) |
442 | { | 476 | { |
443 | GtkTreePath *path_ref, *path_old; | 477 | GtkTreePath *path_ref, *path_old; |
478 | |||
444 | path_ref = gtk_tree_row_reference_get_path (ref); | 479 | path_ref = gtk_tree_row_reference_get_path (ref); |
445 | path_old = gtk_tree_row_reference_get_path (old); | 480 | path_old = gtk_tree_row_reference_get_path (old); |
446 | if (gtk_tree_path_compare (path_ref, path_old) == 0) | 481 | if (gtk_tree_path_compare (path_ref, path_old) == 0) |
@@ -459,7 +494,7 @@ namespace_selector_treeview_button_release_event_cb (GtkWidget *widget, | |||
459 | } | 494 | } |
460 | 495 | ||
461 | void | 496 | void |
462 | main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data) | 497 | main_window_search_button_clicked_cb (GtkButton * button, gpointer user_data) |
463 | { | 498 | { |
464 | GtkBuilder *builder; | 499 | GtkBuilder *builder; |
465 | GtkTreePath *namespace_treepath = NULL; | 500 | GtkTreePath *namespace_treepath = NULL; |
@@ -481,19 +516,22 @@ main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data) | |||
481 | 516 | ||
482 | builder = GTK_BUILDER (user_data); | 517 | builder = GTK_BUILDER (user_data); |
483 | 518 | ||
484 | toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, | 519 | toggle_button = |
485 | "main_window_search_namespace_dropdown_button")); | 520 | GTK_TOGGLE_BUTTON (gtk_builder_get_object |
521 | (builder, | ||
522 | "main_window_search_namespace_dropdown_button")); | ||
486 | 523 | ||
487 | if (!GNUNET_GTK_get_selected_anonymity_level (builder, | 524 | if (!GNUNET_GTK_get_selected_anonymity_level |
488 | "main_window_search_anonymity_combobox", &anonymity_level)) | 525 | (builder, "main_window_search_anonymity_combobox", &anonymity_level)) |
489 | return; | 526 | return; |
490 | 527 | ||
491 | mime_combo = GTK_COMBO_BOX (GNUNET_FS_GTK_get_main_window_object | 528 | mime_combo = |
492 | ("main_window_search_mime_combobox")); | 529 | GTK_COMBO_BOX (GNUNET_FS_GTK_get_main_window_object |
530 | ("main_window_search_mime_combobox")); | ||
493 | mime_model = gtk_combo_box_get_model (mime_combo); | 531 | mime_model = gtk_combo_box_get_model (mime_combo); |
494 | mime_keyword = NULL; | 532 | mime_keyword = NULL; |
495 | if (mime_model && gtk_combo_box_get_active_iter (mime_combo, &iter)) | 533 | if (mime_model && gtk_combo_box_get_active_iter (mime_combo, &iter)) |
496 | gtk_tree_model_get (mime_model, &iter, 0, &mime_keyword, -1); | 534 | gtk_tree_model_get (mime_model, &iter, 0, &mime_keyword, -1); |
497 | if (strcmp (mime_keyword, " ") == 0) | 535 | if (strcmp (mime_keyword, " ") == 0) |
498 | { | 536 | { |
499 | g_free (mime_keyword); | 537 | g_free (mime_keyword); |
@@ -505,14 +543,17 @@ main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data) | |||
505 | { | 543 | { |
506 | namespace_model = gtk_tree_row_reference_get_model (ref); | 544 | namespace_model = gtk_tree_row_reference_get_model (ref); |
507 | namespace_treepath = gtk_tree_row_reference_get_path (ref); | 545 | namespace_treepath = gtk_tree_row_reference_get_path (ref); |
508 | if ( (NULL != namespace_treepath) && | 546 | if ((NULL != namespace_treepath) && |
509 | (TRUE == gtk_tree_model_get_iter (namespace_model, &iter, namespace_treepath)) ) | 547 | (TRUE == |
548 | gtk_tree_model_get_iter (namespace_model, &iter, namespace_treepath))) | ||
510 | gtk_tree_model_get (namespace_model, &iter, 1, &nsid, -1); | 549 | gtk_tree_model_get (namespace_model, &iter, 1, &nsid, -1); |
511 | } | 550 | } |
512 | query_entry = GTK_ENTRY (gtk_builder_get_object (builder, | 551 | query_entry = |
513 | "main_window_search_entry")); | 552 | GTK_ENTRY (gtk_builder_get_object (builder, "main_window_search_entry")); |
514 | entry_keywords = gtk_entry_get_text (query_entry); | 553 | entry_keywords = gtk_entry_get_text (query_entry); |
515 | keywords = g_strdup_printf ("%s %s%s", entry_keywords, mime_keyword ? "+" : "", mime_keyword ? mime_keyword : ""); | 554 | keywords = |
555 | g_strdup_printf ("%s %s%s", entry_keywords, mime_keyword ? "+" : "", | ||
556 | mime_keyword ? mime_keyword : ""); | ||
516 | g_free (mime_keyword); | 557 | g_free (mime_keyword); |
517 | if (nsid != NULL) | 558 | if (nsid != NULL) |
518 | { | 559 | { |
@@ -525,14 +566,14 @@ main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data) | |||
525 | uri = GNUNET_FS_uri_ksk_create (keywords, &emsg); | 566 | uri = GNUNET_FS_uri_ksk_create (keywords, &emsg); |
526 | if (uri == NULL) | 567 | if (uri == NULL) |
527 | { | 568 | { |
528 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 569 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Invalid keyword string `%s': %s"), |
529 | _("Invalid keyword string `%s': %s"), keywords, emsg); | 570 | keywords, emsg); |
530 | GNUNET_free_non_null (emsg); | 571 | GNUNET_free_non_null (emsg); |
531 | return; | 572 | return; |
532 | } | 573 | } |
533 | } | 574 | } |
534 | GNUNET_FS_search_start (GNUNET_FS_GTK_get_fs_handle (), uri, | 575 | GNUNET_FS_search_start (GNUNET_FS_GTK_get_fs_handle (), uri, anonymity_level, |
535 | anonymity_level, GNUNET_FS_SEARCH_OPTION_NONE, NULL); | 576 | GNUNET_FS_SEARCH_OPTION_NONE, NULL); |
536 | 577 | ||
537 | g_free (keywords); | 578 | g_free (keywords); |
538 | GNUNET_FS_uri_destroy (uri); | 579 | GNUNET_FS_uri_destroy (uri); |
@@ -540,16 +581,19 @@ main_window_search_button_clicked_cb (GtkButton *button, gpointer user_data) | |||
540 | 581 | ||
541 | 582 | ||
542 | gboolean | 583 | gboolean |
543 | main_window_search_entry_key_press_event_cb (GtkWidget *widget, | 584 | main_window_search_entry_key_press_event_cb (GtkWidget * widget, |
544 | GdkEventKey *event, gpointer user_data) | 585 | GdkEventKey * event, |
586 | gpointer user_data) | ||
545 | { | 587 | { |
546 | GtkBuilder *builder; | 588 | GtkBuilder *builder; |
589 | |||
547 | builder = GTK_BUILDER (user_data); | 590 | builder = GTK_BUILDER (user_data); |
548 | 591 | ||
549 | if (event->keyval == GDK_KEY_Return) | 592 | if (event->keyval == GDK_KEY_Return) |
550 | { | 593 | { |
551 | GtkWidget *find = GTK_WIDGET (gtk_builder_get_object (builder, | 594 | GtkWidget *find = GTK_WIDGET (gtk_builder_get_object (builder, |
552 | "main_window_search_button")); | 595 | "main_window_search_button")); |
596 | |||
553 | main_window_search_button_clicked_cb (GTK_BUTTON (find), user_data); | 597 | main_window_search_button_clicked_cb (GTK_BUTTON (find), user_data); |
554 | return TRUE; | 598 | return TRUE; |
555 | } | 599 | } |
@@ -567,7 +611,7 @@ main_window_search_entry_key_press_event_cb (GtkWidget *widget, | |||
567 | */ | 611 | */ |
568 | static int | 612 | static int |
569 | add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym, | 613 | add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym, |
570 | const struct GNUNET_CONTAINER_MetaData *md, int rating) | 614 | const struct GNUNET_CONTAINER_MetaData *md, int rating) |
571 | { | 615 | { |
572 | GtkTreeStore *ts = cls; | 616 | GtkTreeStore *ts = cls; |
573 | char *root; | 617 | char *root; |
@@ -611,7 +655,10 @@ add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym, | |||
611 | else | 655 | else |
612 | { | 656 | { |
613 | char *utf8_desc = NULL; | 657 | char *utf8_desc = NULL; |
614 | utf8_desc = GNUNET_FS_GTK_dubious_meta_to_utf8 (EXTRACTOR_METAFORMAT_UTF8, description, strlen (description)); | 658 | |
659 | utf8_desc = | ||
660 | GNUNET_FS_GTK_dubious_meta_to_utf8 (EXTRACTOR_METAFORMAT_UTF8, | ||
661 | description, strlen (description)); | ||
615 | GNUNET_free (description); | 662 | GNUNET_free (description); |
616 | if (utf8_desc != NULL) | 663 | if (utf8_desc != NULL) |
617 | description = utf8_desc; | 664 | description = utf8_desc; |
@@ -619,7 +666,7 @@ add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym, | |||
619 | description = NULL; | 666 | description = NULL; |
620 | } | 667 | } |
621 | gtk_tree_store_insert_with_values (ts, &iter, NULL, G_MAXINT, 0, ns_name, 1, | 668 | gtk_tree_store_insert_with_values (ts, &iter, NULL, G_MAXINT, 0, ns_name, 1, |
622 | nsid, 2, root, 3, description, -1); | 669 | nsid, 2, root, 3, description, -1); |
623 | GNUNET_free (ns_name); | 670 | GNUNET_free (ns_name); |
624 | GNUNET_free_non_null (root); | 671 | GNUNET_free_non_null (root); |
625 | GNUNET_free_non_null (description); | 672 | GNUNET_free_non_null (description); |
@@ -627,7 +674,7 @@ add_namespace_to_ts (void *cls, const GNUNET_HashCode * pseudonym, | |||
627 | } | 674 | } |
628 | 675 | ||
629 | void | 676 | void |
630 | GNUNET_GTK_main_window_realize_cb (GtkWidget *widget, gpointer user_data) | 677 | GNUNET_GTK_main_window_realize_cb (GtkWidget * widget, gpointer user_data) |
631 | { | 678 | { |
632 | GtkTreeIter iter; | 679 | GtkTreeIter iter; |
633 | GtkTreeView *namespace_tree; | 680 | GtkTreeView *namespace_tree; |
@@ -638,15 +685,19 @@ GNUNET_GTK_main_window_realize_cb (GtkWidget *widget, gpointer user_data) | |||
638 | 685 | ||
639 | builder = GTK_BUILDER (user_data); | 686 | builder = GTK_BUILDER (user_data); |
640 | 687 | ||
641 | namespace_treestore = GTK_TREE_STORE (GNUNET_FS_GTK_get_main_window_object | 688 | namespace_treestore = |
642 | ("main_window_search_namespace_treestore")); | 689 | GTK_TREE_STORE (GNUNET_FS_GTK_get_main_window_object |
643 | namespace_tree = GTK_TREE_VIEW (GNUNET_FS_GTK_get_main_window_object | 690 | ("main_window_search_namespace_treestore")); |
644 | ("namespace_selector_treeview")); | 691 | namespace_tree = |
645 | metadata_tree = GTK_TREE_VIEW (GNUNET_FS_GTK_get_main_window_object | 692 | GTK_TREE_VIEW (GNUNET_FS_GTK_get_main_window_object |
646 | ("GNUNET_GTK_main_window_metadata_treeview")); | 693 | ("namespace_selector_treeview")); |
694 | metadata_tree = | ||
695 | GTK_TREE_VIEW (GNUNET_FS_GTK_get_main_window_object | ||
696 | ("GNUNET_GTK_main_window_metadata_treeview")); | ||
647 | 697 | ||
648 | /* Allow multiple selection in metadata view */ | 698 | /* Allow multiple selection in metadata view */ |
649 | gtk_tree_selection_set_mode (gtk_tree_view_get_selection (metadata_tree), GTK_SELECTION_MULTIPLE); | 699 | gtk_tree_selection_set_mode (gtk_tree_view_get_selection (metadata_tree), |
700 | GTK_SELECTION_MULTIPLE); | ||
650 | 701 | ||
651 | /* FIXME: find a way to manage pseudonyms. | 702 | /* FIXME: find a way to manage pseudonyms. |
652 | * Right now the list will be filled with ALL and ANY pseudonyms that we | 703 | * Right now the list will be filled with ALL and ANY pseudonyms that we |
@@ -657,33 +708,40 @@ GNUNET_GTK_main_window_realize_cb (GtkWidget *widget, gpointer user_data) | |||
657 | * drag them around to change the order in which they appear in the list. | 708 | * drag them around to change the order in which they appear in the list. |
658 | * All that is not possible with a simple "files in a directory" concept. | 709 | * All that is not possible with a simple "files in a directory" concept. |
659 | */ | 710 | */ |
660 | gtk_tree_store_insert_with_values (namespace_treestore, &iter, NULL, | 711 | gtk_tree_store_insert_with_values (namespace_treestore, &iter, NULL, G_MAXINT, |
661 | G_MAXINT, 0, "Any", 1, NULL, 2, "", 3, | 712 | 0, "Any", 1, NULL, 2, "", 3, |
662 | "Do not search in any particular namespace", -1); | 713 | "Do not search in any particular namespace", |
714 | -1); | ||
663 | /* | 715 | /* |
664 | GNUNET_PSEUDONYM_list_all (GNUNET_FS_GTK_get_configuration (), | 716 | * GNUNET_PSEUDONYM_list_all (GNUNET_FS_GTK_get_configuration (), |
665 | &add_namespace_to_ts, namespace_treestore); | 717 | * &add_namespace_to_ts, namespace_treestore); |
666 | */ | 718 | */ |
667 | GNUNET_PSEUDONYM_discovery_callback_register ( | 719 | GNUNET_PSEUDONYM_discovery_callback_register (GNUNET_FS_GTK_get_configuration |
668 | GNUNET_FS_GTK_get_configuration (), | 720 | (), &add_namespace_to_ts, |
669 | &add_namespace_to_ts, namespace_treestore); | 721 | namespace_treestore); |
670 | 722 | ||
671 | /* FIXME: read currently selected namespace from somewhere instead of selecting 0th item */ | 723 | /* FIXME: read currently selected namespace from somewhere instead of selecting 0th item */ |
672 | if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (namespace_treestore), &iter)) | 724 | if (gtk_tree_model_get_iter_first |
725 | (GTK_TREE_MODEL (namespace_treestore), &iter)) | ||
673 | { | 726 | { |
674 | gchar *value; | 727 | gchar *value; |
675 | GtkLabel *sel_namespace_label; | 728 | GtkLabel *sel_namespace_label; |
676 | GtkTreePath *treepath = gtk_tree_path_new_first (); | 729 | GtkTreePath *treepath = gtk_tree_path_new_first (); |
677 | gtk_tree_selection_select_iter (gtk_tree_view_get_selection ( | 730 | |
678 | namespace_tree), &iter); | 731 | gtk_tree_selection_select_iter (gtk_tree_view_get_selection |
679 | sel_namespace_label = GTK_LABEL (gtk_builder_get_object (builder, "main_window_search_selected_namespace_label")); | 732 | (namespace_tree), &iter); |
733 | sel_namespace_label = | ||
734 | GTK_LABEL (gtk_builder_get_object | ||
735 | (builder, "main_window_search_selected_namespace_label")); | ||
680 | if (GNUNET_GTK_get_tree_string (namespace_tree, treepath, 0, &value)) | 736 | if (GNUNET_GTK_get_tree_string (namespace_tree, treepath, 0, &value)) |
681 | gtk_label_set_text (sel_namespace_label, value); | 737 | gtk_label_set_text (sel_namespace_label, value); |
682 | gtk_tree_path_free (treepath); | 738 | gtk_tree_path_free (treepath); |
683 | } | 739 | } |
684 | 740 | ||
685 | /* How the window (to trigger certain events) and immediately hide it */ | 741 | /* How the window (to trigger certain events) and immediately hide it */ |
686 | namespace_selector_window = GTK_WIDGET (gtk_builder_get_object (builder, "namespace_selector_window")); | 742 | namespace_selector_window = |
743 | GTK_WIDGET (gtk_builder_get_object | ||
744 | (builder, "namespace_selector_window")); | ||
687 | gtk_widget_show (namespace_selector_window); | 745 | gtk_widget_show (namespace_selector_window); |
688 | gtk_widget_hide (namespace_selector_window); | 746 | gtk_widget_hide (namespace_selector_window); |
689 | 747 | ||
@@ -714,10 +772,8 @@ run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
714 | 772 | ||
715 | /* initialize file-sharing */ | 773 | /* initialize file-sharing */ |
716 | plugins = EXTRACTOR_plugin_add_defaults (EXTRACTOR_OPTION_DEFAULT_POLICY); | 774 | plugins = EXTRACTOR_plugin_add_defaults (EXTRACTOR_OPTION_DEFAULT_POLICY); |
717 | fs = GNUNET_FS_start (GNUNET_GTK_main_loop_get_configuration (ml), | 775 | fs = GNUNET_FS_start (GNUNET_GTK_main_loop_get_configuration (ml), "gnunet-gtk", &GNUNET_GTK_fs_event_handler, NULL, GNUNET_FS_FLAGS_NONE /* | GNUNET_FS_FLAGS_PERSISTENCE | |
718 | "gnunet-gtk", &GNUNET_GTK_fs_event_handler, NULL, | 776 | * GNUNET_FS_FLAGS_DO_PROBES */ , |
719 | GNUNET_FS_FLAGS_NONE /* | GNUNET_FS_FLAGS_PERSISTENCE | | ||
720 | GNUNET_FS_FLAGS_DO_PROBES*/, | ||
721 | GNUNET_FS_OPTIONS_END); | 777 | GNUNET_FS_OPTIONS_END); |
722 | if (fs != NULL) | 778 | if (fs != NULL) |
723 | { | 779 | { |