[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r19589 - gnunet-gtk/src/fs
From: |
gnunet |
Subject: |
[GNUnet-SVN] r19589 - gnunet-gtk/src/fs |
Date: |
Wed, 1 Feb 2012 00:48:22 +0100 |
Author: grothoff
Date: 2012-02-01 00:48:22 +0100 (Wed, 01 Feb 2012)
New Revision: 19589
Modified:
gnunet-gtk/src/fs/gnunet-fs-gtk-event_handler.c
Log:
-misc code cleanup
Modified: gnunet-gtk/src/fs/gnunet-fs-gtk-event_handler.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk-event_handler.c 2012-01-31 23:22:19 UTC
(rev 19588)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk-event_handler.c 2012-01-31 23:48:22 UTC
(rev 19589)
@@ -163,11 +163,12 @@
* somewhere else, at least until application restart, or maybe even
* between application restarts).
*
- * Fills the @buffer up to @size bytes, returns a pointer to it.
+ * Fills the 'buffer' up to 'size' bytes, returns a pointer to it.
*/
static char *
get_default_download_directory (char *buffer, size_t size)
{
+ /* FIXME: implement... */
return NULL;
}
@@ -208,6 +209,8 @@
const char *basename;
char *dot;
+ /* FIXME: this function is likely responsible for not always
+ suggesting the best filename... To be investigated some more... */
gtk_tree_model_get (tm, iter, 0, &meta,
15, &local_filename,
16, &downloaded_anonymity,
@@ -289,8 +292,8 @@
* @param is_recursive was the request for a recursive download?
*/
static void
-start_download (GtkTreeView * tree_view,
- GtkTreePath * path,
+start_download (GtkTreeView *tree_view,
+ GtkTreePath *path,
struct SearchTab *tab,
int is_recursive)
{
@@ -346,7 +349,9 @@
local_parents = GNUNET_YES;
anonymity = -1;
filename_is_absolute = GNUNET_NO;
- filename = get_suggested_filename_anonymity (tm, &iter, GNUNET_YES,
&local_parents, &anonymity, &filename_is_absolute);
+ filename = get_suggested_filename_anonymity (tm, &iter, GNUNET_YES,
+ &local_parents, &anonymity,
+ &filename_is_absolute);
have_a_suggestion = GNUNET_NO;
if (NULL != download_directory)
{
@@ -397,7 +402,8 @@
dc->anonymity = anonymity;
dc->is_recursive = is_recursive;
dc->tab = tab;
- if (local_parents && have_a_suggestion)
+ if ( (GNUNET_YES == local_parents) &&
+ (GNUNET_YES == have_a_suggestion) )
/* Skip the dialog, call directly */
GNUNET_FS_GTK_download_context_start_download (dc);
else
@@ -406,8 +412,7 @@
/**
- * An item was selected from the context menu; destroy
- * the menu shell.
+ * An item was selected from the context menu; destroy the menu shell.
*
* @param menushell menu to destroy
* @parma user_data the 'struct DownloadEntry' for the menu (unused)
@@ -423,7 +428,6 @@
}
-
/**
* This function is called when the user double-clicks on a search
* result. Begins the download, if necessary by opening the "save as"
@@ -523,10 +527,10 @@
/**
- * Copy current URI to clipboard.
+ * Copy current URI to clipboard was selected in the current context menu.
*
* @param item the 'copy-to-clipboard' menu item
- * @parma user_data the 'struct DownloadEntry' to copy from
+ * @parma user_data NULL
*/
static void
copy_uri_to_clipboard_ctx_menu (GtkMenuItem *item, gpointer user_data)
@@ -573,89 +577,73 @@
}
+/**
+ * Context menu was requested for a search result list.
+ * Compute which menu items are applicable and display
+ * an appropriate menu.
+ *
+ * @param tm tree model underlying the tree view where the event happened
+ * @param tab tab where the event happened
+ * @param event_button the event
+ * @return FALSE if no menu could be popped up,
+ * TRUE if there is now a pop-up menu
+ */
static gboolean
-search_list_popup (GtkTreeView *tv, struct SearchTab *tab, GdkEventButton
*event_button)
+search_list_popup (GtkTreeModel *tm,
+ struct SearchTab *tab,
+ gint init_button,
+ guint32 event_time,
+ GtkTreeIter *iter)
{
GtkMenu *menu;
GtkWidget *child;
- GtkTreeSelection *sel;
GtkTreePath *path;
- GtkTreeModel *tm;
- GtkTreeIter iter;
struct SearchResult *sr;
struct GNUNET_FS_Uri *uri;
- gboolean got_selection;
- gint init_button;
- guint32 event_time;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Creating a menu for SR=%p, DE=%p\n",
+ sr,
+ sr->download);
+
+ /* FIXME: move these to some menu context struct
+ (de-globalize) */
current_context_search_tab = tab;
if (current_context_row_reference != NULL)
{
gtk_tree_row_reference_free (current_context_row_reference);
current_context_row_reference = NULL;
}
- path = NULL;
- if (event_button != NULL)
- {
- got_selection =
- gtk_tree_view_get_path_at_pos (tv, event_button->x, event_button->y,
- &path, NULL, NULL, NULL);
- if (got_selection)
- {
- tm = gtk_tree_view_get_model (tv);
- got_selection = gtk_tree_model_get_iter (tm, &iter, path);
- current_context_row_reference = gtk_tree_row_reference_new (tm, path);
- gtk_tree_path_free (path);
- }
- init_button = event_button->button;
- event_time = event_button->time;
- }
- else
- {
- sel = gtk_tree_view_get_selection (tv);
- got_selection = gtk_tree_selection_get_selected (sel, &tm, &iter);
- path = gtk_tree_model_get_path (tm, &iter);
- current_context_row_reference = gtk_tree_row_reference_new (tm, path);
- gtk_tree_path_free (path);
- init_button = 0;
- event_time = gtk_get_current_event_time ();
- }
- if (!got_selection)
- {
- /* nothing selected or model empty? */
- current_context_search_tab = NULL;
- return FALSE;
- }
- gtk_tree_model_get (tm, &iter, 1, &uri, 9, &sr, -1);
+ path = gtk_tree_model_get_path (tm, iter);
+ current_context_row_reference = gtk_tree_row_reference_new (tm, path);
+ gtk_tree_path_free (path);
+ gtk_tree_model_get (tm, iter, 1, &uri, 9, &sr, -1);
+
menu = GTK_MENU (gtk_menu_new ());
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Creating a menu for SR=%p, DE=%p\n", sr, sr->download);
- if (sr->download == NULL)
+ if ( (NULL == sr->download) &&
+ (NULL != uri) )
{
- if (NULL != uri)
- {
- /* only display download menus if there is a URI */
- child = gtk_menu_item_new_with_label (_("_Download"));
- g_signal_connect (child, "activate",
- G_CALLBACK (start_download_ctx_menu), NULL);
- gtk_label_set_use_underline (GTK_LABEL
- (gtk_bin_get_child (GTK_BIN (child))),
- TRUE);
- gtk_widget_show (child);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), child);
-
- child = gtk_menu_item_new_with_label (_("Download _recursively"));
- g_signal_connect (child, "activate",
- G_CALLBACK (start_download_recursively_ctx_menu),
NULL);
- gtk_label_set_use_underline (GTK_LABEL
- (gtk_bin_get_child (GTK_BIN (child))),
- TRUE);
- gtk_widget_show (child);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), child);
- }
+ /* only display download menus if there is a URI */
+ child = gtk_menu_item_new_with_label (_("_Download"));
+ g_signal_connect (child, "activate",
+ G_CALLBACK (start_download_ctx_menu), NULL);
+ gtk_label_set_use_underline (GTK_LABEL
+ (gtk_bin_get_child (GTK_BIN (child))),
+ TRUE);
+ gtk_widget_show (child);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), child);
+
+ child = gtk_menu_item_new_with_label (_("Download _recursively"));
+ g_signal_connect (child, "activate",
+ G_CALLBACK (start_download_recursively_ctx_menu), NULL);
+ gtk_label_set_use_underline (GTK_LABEL
+ (gtk_bin_get_child (GTK_BIN (child))),
+ TRUE);
+ gtk_widget_show (child);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), child);
}
- else
+ if (NULL != sr->download)
{
child = gtk_menu_item_new_with_label (_("_Abort download"));
g_signal_connect (child, "activate",
@@ -666,31 +654,100 @@
gtk_widget_show (child);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), child);
}
-
- child = gtk_menu_item_new_with_label (_("_Copy URI to Clipboard"));
- g_signal_connect (child, "activate",
- G_CALLBACK (copy_uri_to_clipboard_ctx_menu), NULL);
- gtk_label_set_use_underline (GTK_LABEL
- (gtk_bin_get_child (GTK_BIN (child))), TRUE);
- gtk_widget_show (child);
-
+ if (NULL != uri)
+ {
+ child = gtk_menu_item_new_with_label (_("_Copy URI to Clipboard"));
+ g_signal_connect (child, "activate",
+ G_CALLBACK (copy_uri_to_clipboard_ctx_menu), NULL);
+ gtk_label_set_use_underline (GTK_LABEL
+ (gtk_bin_get_child (GTK_BIN (child))), TRUE);
+ gtk_widget_show (child);
+ }
g_signal_connect (menu, "selection-done",
- G_CALLBACK (search_list_popup_selection_done), NULL);
-
+ G_CALLBACK (search_list_popup_selection_done), NULL);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), child);
gtk_menu_popup (menu, NULL, NULL, NULL, NULL, init_button, event_time);
return TRUE;
}
-static void
-closure_notify_free (gpointer data, GClosure *closure)
+/**
+ * We got a 'popup-menu' event, display the context menu.
+ *
+ * @param widget the tree view where the event happened
+ * @param user_data the 'struct SearchTab' of the tree view
+ * @return FALSE if no menu could be popped up,
+ * TRUE if there is now a pop-up menu
+ */
+static gboolean
+search_list_on_popup (GtkWidget *widget, gpointer user_data)
{
- GNUNET_free (data);
+ GtkTreeView *tv = GTK_TREE_VIEW (widget);
+ struct SearchTab *tab = user_data;
+ GtkTreeSelection *sel;
+ GtkTreeIter iter;
+ GtkTreeModel *tm;
+
+ sel = gtk_tree_view_get_selection (tv);
+ if (! gtk_tree_selection_get_selected (sel, &tm, &iter))
+ return FALSE; /* nothing selected */
+ return search_list_popup (tm, tab, 0, gtk_get_current_event_time (), &iter);
}
+
+/**
+ * We got a right-click on the search result list. Display the context
+ * menu.
+ *
+ * @param widget the GtkTreeView with the search result list
+ * @param event the event, we only care about button events
+ * @param user_data the 'struct SearchTab' the widget is in
+ * @return FALSE if no menu could be popped up,
+ * TRUE if there is now a pop-up menu
+ */
+static gboolean
+search_list_on_menu (GtkWidget * widget,
+ GdkEvent * event,
+ gpointer user_data)
+{
+ GtkTreeView *tv = GTK_TREE_VIEW (widget);
+ GdkEventButton *event_button = (GdkEventButton *) event;
+ struct SearchTab *tab = user_data;
+ GtkTreeModel *tm;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+
+ if ( (event->type != GDK_BUTTON_PRESS) ||
+ (event_button->button != 3) )
+ return FALSE; /* not a right-click */
+ if (! gtk_tree_view_get_path_at_pos (tv,
+ event_button->x, event_button->y,
+ &path, NULL, NULL, NULL))
+ return FALSE; /* click outside of area with values, ignore */
+ tm = gtk_tree_view_get_model (tv);
+ if (! gtk_tree_model_get_iter (tm, &iter, path))
+ return FALSE; /* not sure how we got a path but no iter... */
+ gtk_tree_path_free (path);
+ return search_list_popup (tm, tab,
+ event_button->button,
+ event_button->time,
+ &iter);
+}
+
+
+
+
+
+/* FIXME: go over code from here on and document & clean up... */
+
+
+
+
+
+
static struct DownloadEntry *
-change_download_colour (struct DownloadEntry *de, const char *colour)
+change_download_colour (struct DownloadEntry *de,
+ const char *colour)
{
GtkTreeIter iter;
GtkTreePath *path;
@@ -782,7 +839,7 @@
{
/**
- *
+ * FIXME
*/
struct DownloadEntry *de;
@@ -1243,42 +1300,8 @@
-static gboolean
-search_list_on_popup (GtkWidget *widget, gpointer user_data)
-{
- GtkTreeView *tv;
- struct SearchTab *tab = user_data;
- tv = GTK_TREE_VIEW (widget);
- return search_list_popup (tv, tab, NULL);
-}
-
-
-
/**
- * We got a right-click on the search result list. Display the context
- * menu.
- */
-static int
-search_list_on_menu (GtkWidget * widget, GdkEvent * event, gpointer user_data)
-{
- GdkEventButton *event_button;
- struct SearchTab *tab = user_data;
- GtkTreeView *tv;
-
- tv = GTK_TREE_VIEW (widget);
- if (event->type == GDK_BUTTON_PRESS)
- {
- event_button = (GdkEventButton *) event;
- if (event_button->button == 3)
- {
- return search_list_popup (tv, tab, event_button);
- }
- }
- return FALSE;
-}
-
-/**
* Selected row has changed, update preview and metadata
* areas.
*/
@@ -1574,6 +1597,16 @@
/**
+ * FIXME: what exactly are we freeing here on 'row_activated'?
+ */
+static void
+closure_notify_free (gpointer data, GClosure *closure)
+{
+ GNUNET_free (data);
+}
+
+
+/**
* Setup a new search tab.
*
* @param sc context with FS for the search
@@ -1688,7 +1721,7 @@
/**
- * Setup an inner search.
+ * Setup an inner search. FIXME: explain what an 'inner' search is...
*
* @param sc context with FS for the search
* @param parent parent search tab
@@ -1716,7 +1749,6 @@
}
-
/**
* Add a search result to the given search tab.
*
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r19589 - gnunet-gtk/src/fs,
gnunet <=