[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