Re: Implement drag and drop between two TreeViews



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Tue, Oct 17, 2006 at 03:42:35PM +0100, Christopher Backhouse wrote:
Hi

I have two Treeviews (just lists, they use Liststore) and I want to be 
able to drag entries from one into the other. What is the correct way to 
do this?
I call enable_model_drag_source on one list and enable_model_drag_dest 
on the other - the gui behaves as if drag-and-drop will work and then 
doesn't actually do it. Fair enough, I wasn't expecting it to be that 
easy. So, I hook up to some of the more likely-looking signals and hack 
this together

def on_drag_data_recieved(self,widget,context,x,y,selection,myno,dunno):      
      (junk,paths)=context.get_source_widget().get_selection().get_selected_rows()

I have no clue about the Python bindings, but in C you have to implement
at least the "other side" (that is, the source) as a callback for the event
"drag_data_get", which then makes the content available (dispatching on
the content type, that's how source and destination negotiate what type
to use). You register those same content types in the call to
gtk_tree_view_enable_model_drag_source().

Note that whithin the same app you can pass (pointers to) internal data
structures, whereas for cross-app drag-and-drop you have to convert the
thing somehow. But maybe the Python bindings handle the marshalling for
you.

HTH
- -- tomÃs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFFNdvUBcgs9XrR2kYRAlNyAJ4tPXA0dstB01BlykqLPHFi6ysN4ACfULdi
m2a8hcBmOqJ8JgMwkfWowok=
=V9wk
-----END PGP SIGNATURE-----




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]