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)

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to