[Xfce4-commits] r27229 - xarchiver/trunk/src

Giuseppe Torelli colossus at xfce.org
Mon Jul 7 17:45:26 CEST 2008


Author: colossus
Date: 2008-07-07 15:45:25 +0000 (Mon, 07 Jul 2008)
New Revision: 27229

Modified:
   xarchiver/trunk/src/archive.c
   xarchiver/trunk/src/archive.h
   xarchiver/trunk/src/interface.c
   xarchiver/trunk/src/main.c
Log:
Initial support for dragging files from Thunar to the sidepane.
Fixed missed definition of variable tar when gtar is found in path. Thanks to Landry Breuil.


Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c	2008-07-07 13:01:40 UTC (rev 27228)
+++ xarchiver/trunk/src/archive.c	2008-07-07 15:45:25 UTC (rev 27229)
@@ -899,3 +899,38 @@
 
 	return FALSE;
 }
+
+void xa_sidepane_drag_data_received (GtkWidget *widget,GdkDragContext *context,int x,int y,GtkSelectionData *data, unsigned int info,unsigned int time,gpointer user_data)
+{
+	gchar **array = NULL;
+	gchar *filename = NULL;
+	gchar *dirname = NULL;
+	unsigned int len = 0;
+	GtkTreeIter iter;
+	GtkTreeSelection *selection;
+	GtkTreeModel *model;
+
+	array = gtk_selection_data_get_uris(data);
+	if (array == NULL || GTK_WIDGET_VISIBLE(viewport2))
+	{
+		response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Sorry, I could not perform the operation!"),"" );
+		gtk_drag_finish(context,FALSE,FALSE,time);
+		return;
+	}
+	gtk_drag_finish (context,TRUE,FALSE,time);
+
+	while (array[len])
+	{
+		filename = g_filename_from_uri (array[len],NULL,NULL);
+		g_print ("You sent: %s\n",filename);
+		g_free(filename);
+		len++;
+	}
+	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+	if (gtk_tree_selection_get_selected (selection,&model,&iter))
+	{
+		gtk_tree_model_get(model,&iter,1,&dirname,-1);
+		g_print ("Hai selezionato: %s\n",dirname);
+		g_free(dirname);
+	}
+}

Modified: xarchiver/trunk/src/archive.h
===================================================================
--- xarchiver/trunk/src/archive.h	2008-07-07 13:01:40 UTC (rev 27228)
+++ xarchiver/trunk/src/archive.h	2008-07-07 15:45:25 UTC (rev 27229)
@@ -153,5 +153,6 @@
 void xa_sidepane_row_selected(GtkTreeSelection *selection, gpointer data);
 void xa_sidepane_select_row(XEntry *entry);
 gboolean _xa_sidepane_select_row(GtkTreeModel *model,GtkTreePath *path,GtkTreeIter *iter,gpointer data);
+void xa_sidepane_drag_data_received (GtkWidget *widget,GdkDragContext *context,int x,int y,GtkSelectionData *data, unsigned int info,unsigned int time,gpointer user_data);
 XArchive *archive[100];
 #endif

Modified: xarchiver/trunk/src/interface.c
===================================================================
--- xarchiver/trunk/src/interface.c	2008-07-07 13:01:40 UTC (rev 27228)
+++ xarchiver/trunk/src/interface.c	2008-07-07 15:45:25 UTC (rev 27229)
@@ -385,7 +385,7 @@
 	if (show_location)
 		gtk_widget_show_all(toolbar2);
 
-	/* Create the paned widgets */
+	/* Create the sidepane */
 	hpaned1 = gtk_hpaned_new ();
 	gtk_widget_show (hpaned1);
   	gtk_box_pack_start (GTK_BOX (vbox1),hpaned1,TRUE,TRUE,0);
@@ -403,6 +403,8 @@
 	gtk_container_add (GTK_CONTAINER (scrolledwindow2), archive_dir_treeview);
 	gtk_widget_show(archive_dir_treeview);
 	gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(archive_dir_model),1,GTK_SORT_ASCENDING);
+	gtk_tree_view_enable_model_drag_dest(GTK_TREE_VIEW(archive_dir_treeview),drop_targets,1,GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK);
+	g_signal_connect (G_OBJECT (archive_dir_treeview), "drag-data-received",G_CALLBACK (xa_sidepane_drag_data_received), NULL);
 
 	GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (archive_dir_treeview));
 	g_signal_connect (sel,"changed",G_CALLBACK (xa_sidepane_row_selected),NULL);

Modified: xarchiver/trunk/src/main.c
===================================================================
--- xarchiver/trunk/src/main.c	2008-07-07 13:01:40 UTC (rev 27228)
+++ xarchiver/trunk/src/main.c	2008-07-07 15:45:25 UTC (rev 27229)
@@ -422,6 +422,8 @@
 			ArchiveSuffix = g_list_append(ArchiveSuffix, "*.tlz");
 		}
 	}
+	else
+		tar = "gtar";
 
 	absolute_path = g_find_program_in_path ("zip");
     if (absolute_path)



More information about the Xfce4-commits mailing list