Implement #342 drag n' drop on the main window

This commit is contained in:
Andrew Resch 2008-07-21 00:01:04 +00:00
parent e73edcef8d
commit a02e8f7603
2 changed files with 17 additions and 0 deletions

View File

@ -36,10 +36,12 @@ pygtk.require('2.0')
import gtk, gtk.glade import gtk, gtk.glade
import gobject import gobject
import pkg_resources import pkg_resources
from urlparse import urlparse
from deluge.ui.client import aclient as client from deluge.ui.client import aclient as client
import deluge.component as component import deluge.component as component
from deluge.configmanager import ConfigManager from deluge.configmanager import ConfigManager
from deluge.ui.gtkui.ipcinterface import process_args
import deluge.common import deluge.common
@ -65,10 +67,14 @@ class MainWindow(component.Component):
# UI when it is minimized. # UI when it is minimized.
self.is_minimized = False self.is_minimized = False
self.window.drag_dest_set(gtk.DEST_DEFAULT_ALL, [('text/uri-list', 0,
80)], gtk.gdk.ACTION_COPY)
# Connect events # Connect events
self.window.connect("window-state-event", self.on_window_state_event) self.window.connect("window-state-event", self.on_window_state_event)
self.window.connect("configure-event", self.on_window_configure_event) self.window.connect("configure-event", self.on_window_configure_event)
self.window.connect("delete-event", self.on_window_delete_event) self.window.connect("delete-event", self.on_window_delete_event)
self.window.connect("drag-data-received", self.on_drag_data_received_event)
self.vpaned.connect("notify::position", self.on_vpaned_position_event) self.vpaned.connect("notify::position", self.on_vpaned_position_event)
if not(self.config["start_in_tray"] and \ if not(self.config["start_in_tray"] and \
@ -183,3 +189,9 @@ class MainWindow(component.Component):
self.config.set("window_pane_position", self.config.set("window_pane_position",
self.config["window_height"] - self.vpaned.get_position()) self.config["window_height"] - self.vpaned.get_position())
def on_drag_data_received_event(self, widget, drag_context, x, y, selection_data, info, timestamp):
args = []
for uri in selection_data.data.split():
args.append(urlparse(uri).path)
process_args(args)
drag_context.finish(True, True)

View File

@ -184,6 +184,8 @@ class TorrentView(listview.ListView, component.Component):
# changes. # changes.
self.treeview.get_selection().connect("changed", self.treeview.get_selection().connect("changed",
self.on_selection_changed) self.on_selection_changed)
self.treeview.connect("drag-drop", self.on_drag_drop)
def start(self): def start(self):
"""Start the torrentview""" """Start the torrentview"""
@ -458,3 +460,6 @@ class TorrentView(listview.ListView, component.Component):
component.get("ToolBar").update_buttons() component.get("ToolBar").update_buttons()
component.get("MenuBar").update_menu() component.get("MenuBar").update_menu()
def on_drag_drop(self, widget, drag_context, x, y, timestamp):
widget.stop_emission("drag-drop")