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()

Reply via email to