Sorry, I can't follow the thread because the other mails are on
another, machine...
Here is an example of a gtk.TreeView that accepts URIs dropped from
Nautilus.
--
Michele - www.micampe.it
Fortunately I've been adhering to a pretty strict,
uh, drug regimen to keep my mind, you know, limber.
-- The Dude, The Big Lebowsi
#!/usr/bin/env python2
import gobject, gtk
target = [('text/uri-list', 0, 0)]
class MyView(gtk.TreeView):
def __init__(self):
"""create a new BurnTreeView"""
self.store = gtk.ListStore(gobject.TYPE_STRING)
gtk.TreeView.__init__(self, self.store)
self.set_headers_visible(gtk.FALSE)
renderer = gtk.CellRendererText()
column = gtk.TreeViewColumn('Name', renderer, text=0)
self.append_column(column)
self.drag_dest_set(gtk.DEST_DEFAULT_ALL, target,
gtk.gdk.ACTION_COPY)
self.connect('drag_data_received', self.drag_data_received)
def drag_data_received(self, w, context, x, y, data, info, time):
if data and data.format == 8:
for uri in data.data.split('\r\n')[:-1]:
self.mount(uri)
context.finish(gtk.TRUE, gtk.FALSE, time)
def mount(self, uri, parent=None):
iter = self.store.append()
self.store.set(iter, 0, uri)
def main():
win = gtk.Dialog("DnD", None,
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE,))
win.set_default_size(300, 240)
vbox = gtk.VBox()
win.vbox.pack_start(vbox)
vbox.set_border_width(4)
vbox.set_spacing(8)
scrollwin = gtk.ScrolledWindow()
scrollwin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
tree = MyView()
scrollwin.add(tree)
vbox.pack_start(scrollwin, expand=gtk.TRUE)
win.show_all()
response = win.run()
win.destroy()
return response
if __name__ == '__main__':
main()