[Xfce4-commits] <eatmonkey:aria2-xml-rpc> Add DND support on treeview

Mike Massonnet noreply at xfce.org
Sat Feb 13 12:38:01 CET 2010


Updating branch refs/heads/aria2-xml-rpc
         to 63958684896dac38fc0154265039dca17cf7405a (commit)
       from 58b19415898d4c76c2bce4b44d9749e6a09cb429 (commit)

commit 63958684896dac38fc0154265039dca17cf7405a
Author: Mike Massonnet <mmassonnet at xfce.org>
Date:   Sat Feb 13 12:08:49 2010 +0100

    Add DND support on treeview
    
    The code from action_add has been moved into a new method called
    add_new_download. This way the method can be called by different
    meanings and setting directly the URI field.

 src/eatmanager.rb |   80 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 48 insertions(+), 32 deletions(-)

diff --git a/src/eatmanager.rb b/src/eatmanager.rb
index 2085632..077263b 100644
--- a/src/eatmanager.rb
+++ b/src/eatmanager.rb
@@ -108,6 +108,16 @@ class Eat::Manager
 		column.pack_start(cell, true)
 		column.add_attribute(cell, :text, 9)
 
+		# Setup DND on tree view
+		Drag.dest_set(@treeview, Drag::DEST_DEFAULT_ALL, nil, Gdk::DragContext::ACTION_COPY)
+		Drag.dest_add_uri_targets(@treeview)
+		@treeview.signal_connect("drag-data-received") { |this, context, x, y, selection_data, info, time|
+			selection_data.uris.each do |uri|
+				add_new_download(uri)
+			end
+			Drag.finish(context, true, false, time)
+		}
+
 		# Setup statusbar
 		@statuscontext = { "main" => @statusbar.get_context_id("main context"),
 				"menu" => @statusbar.get_context_id("menu context") }
@@ -176,7 +186,7 @@ class Eat::Manager
 			uris = @aria2.get_uris(gid)
 			p "uris:", uris
 			begin
-				# TODO Torrent downloads don't have a URI
+				# TODO Torrent downloads don't have a URI -- try to read from parent
 				row_iter[11] = uris[0]["uri"]
 			rescue
 			end
@@ -287,17 +297,49 @@ class Eat::Manager
 		end
 	end
 
+	def add_new_download(uri=nil)
+		update_newdl_dialog
+		@file_uri.text = uri == nil ? "" : uri
+		@file_uri.grab_focus
+		res = @newdl_dialog.run
+		@newdl_dialog.hide
+		uri = @file_uri.text
+		if res == Dialog::RESPONSE_OK and !uri.empty?
+			# TODO check if it is a uri or a torrent/metalink file and use the right
+			# method addUri/addTorrent/addMetalink
+			puts "download file %s" % uri
+			options = {
+				"max-download-limit" => @file_max_download_speed.value_as_int.to_s,
+				"split" => @file_split.value_as_int.to_s,
+				"max-upload-limit" => @file_max_upload_speed.value_as_int.to_s,
+				"seed-ratio" => @file_seed_ratio.value.to_s,
+			}
+			options["dir"] = @file_download_dir.current_folder if @aria2.use_local_server?
+			gid = @aria2.add_uri(uri, options)
+			if gid != nil
+				puts "gid: %s" % gid
+				# Add new row to liststore
+				row_iter = @liststore.append
+				row_iter[0] = gid.to_i
+				row_iter[9] = File.basename(uri)
+				row_iter[11] = uri
+			end
+		end
+	end
+
 	private
 
 	def set_download_name_for_iter(iter, status)
 		return if iter[10] == true
 		name = get_download_name(status)
-		iter[9] = name
-		iter[10] = true
+		if name != nil
+			iter[9] = name
+			iter[10] = true
+		end
 	end
 
 	def get_download_name(status)
-		return nil if status == nil
+		return if status == nil
 
 		# Use the bittorrent array
 		if status['bittorrent'] != nil
@@ -305,8 +347,8 @@ class Eat::Manager
 		# Use the files array
 		elsif status['files'] != nil and !status['files'][0]['path'].empty?
 			return File.basename(status['files'][0]['path'])
+		# Fallback on the aria2.getFile XML-RPC method for older versions of aria2
 		else
-			# Fallback on the aria2.getFile XML-RPC method for older versions of aria2
 			result = @aria2.get_files(status['gid'])
 			if result != nil and !result[0]["path"].empty?
 				return File.basename(result[0]["path"])
@@ -337,33 +379,7 @@ class Eat::Manager
 	end
 
 	def action_add()
-		update_newdl_dialog
-		@file_uri.text = ""
-		@file_uri.grab_focus
-		res = @newdl_dialog.run
-		@newdl_dialog.hide
-		uri = @file_uri.text
-		if res == Dialog::RESPONSE_OK and !uri.empty?
-			# TODO check if it is a uri or a torrent/metalink file and use the right
-			# method addUri/addTorrent/addMetalink
-			puts "download file %s" % uri
-			options = {
-				"max-download-limit" => @file_max_download_speed.value_as_int.to_s,
-				"split" => @file_split.value_as_int.to_s,
-				"max-upload-limit" => @file_max_upload_speed.value_as_int.to_s,
-				"seed-ratio" => @file_seed_ratio.value.to_s,
-			}
-			options["dir"] = @file_download_dir.current_folder if @aria2.use_local_server?
-			gid = @aria2.add_uri(uri, options)
-			if gid != nil
-				puts "gid: %s" % gid
-				# Add new row to liststore
-				row_iter = @liststore.append
-				row_iter[0] = gid.to_i
-				row_iter[9] = File.basename(uri)
-				row_iter[11] = uri
-			end
-		end
+		add_new_download
 	end
 
 	def action_pause()



More information about the Xfce4-commits mailing list