Updating branch refs/heads/aria2-xml-rpc to fd103e266cf3e8b0f8aba5dd5fd0594a8bbd6cf5 (commit) from 32127e76efd4aa52c4fd4969a5f33e205197176a (commit)
commit fd103e266cf3e8b0f8aba5dd5fd0594a8bbd6cf5 Author: Mike Massonnet <mmasson...@xfce.org> Date: Wed Feb 10 01:25:57 2010 +0100 Add comments and switch Gtk.TreeIter#get/set_value against Gtk.TreeIter#[] src/eataria2.rb | 8 ++++++++ src/eatmanager.rb | 42 +++++++++++++++++++++++++----------------- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/eataria2.rb b/src/eataria2.rb index 468978f..e07b88a 100644 --- a/src/eataria2.rb +++ b/src/eataria2.rb @@ -164,6 +164,10 @@ class Eat::Aria2 < GLib::Object end end +=begin + spawn_server: + Execute an aria2c process in background and wait for a positive response. +=end def spawn_server(command) pid = Process.spawn(command, :pgroup=>true, :chdir=>ENV['HOME'], STDOUT=>"/dev/null", STDIN=>"/dev/null") @@ -183,6 +187,10 @@ class Eat::Aria2 < GLib::Object pid end +=begin + call: + Make an XML-RPC call to the server. Try to connect if the connection is broken. +=end def call(method, *args) begin result = @@client.call(method, *args) diff --git a/src/eatmanager.rb b/src/eatmanager.rb index fea43f2..fecb8d4 100644 --- a/src/eatmanager.rb +++ b/src/eatmanager.rb @@ -119,6 +119,7 @@ class Eat::Manager end def set_sensitive(sensitive) + # Set/Unset sensitivity of widgets that need aria2 @treeview.set_sensitive(sensitive) @action_add.set_sensitive(sensitive) @action_pause.set_sensitive(sensitive) @@ -134,59 +135,62 @@ class Eat::Manager result = @aria2.tell_status(gid) return if result.empty? + # Find gid in model @liststore.each do |model, path, iter| - next unless iter.get_value(0) == gid_i + next unless iter[0] == gid_i row_iter = iter break end + # Add inexistent gid if !row_iter # Avoid adding rows with incomplete information return if result["totalLength"] == "0" or result["status"] != "active" # Add unknown active download to liststore row_iter = @liststore.append - @liststore.set_value(row_iter, 0, gid_i) + row_iter[0] = gid_i uris = @aria2.get_uris(gid) p uris begin # TODO Torrent downloads don't have a URI - @liststore.set_value(row_iter, 10, uris[0]["uri"]) + row_iter[10] = uris[0]["uri"] rescue end end + # Update status of gid in the model case result["status"] when "active" then - @liststore.set_value(row_iter, 1, result["connections"].to_i) - @liststore.set_value(row_iter, 2, result["completedLength"].to_i) - @liststore.set_value(row_iter, 3, result["uploadLength"].to_i) - @liststore.set_value(row_iter, 4, result["totalLength"].to_i) - @liststore.set_value(row_iter, 5, result["downloadSpeed"].to_i) - @liststore.set_value(row_iter, 6, result["uploadSpeed"].to_i) - @liststore.set_value(row_iter, 7, result["infoHash"]) + row_iter[1] = result["connections"].to_i + row_iter[2] = result["completedLength"].to_i + row_iter[3] = result["uploadLength"].to_i + row_iter[4] = result["totalLength"].to_i + row_iter[5] = result["downloadSpeed"].to_i + row_iter[6] = result["uploadSpeed"].to_i + row_iter[7] = result["infoHash"] completed = result["completedLength"].to_i total = result["totalLength"].to_i percent = total > 0 ? 100 * completed / total : 0 - @liststore.set_value(row_iter, 8, percent) + row_iter[8] = percent result = @aria2.get_files(gid.to_s) if result != nil and !result[0]["path"].empty? - @liststore.set_value(row_iter, 9, File.basename(result[0]["path"])) + row_iter[9] = File.basename(result[0]["path"]) end when "complete" then - @liststore.set_value(row_iter, 8, 100) + row_iter[8] = 100 # Update the name, useful for very small files for which # this callback didn't run with the "active" state. result = @aria2.get_files(gid.to_s) if result != nil and !result[0]["path"].empty? - @liststore.set_value(row_iter, 9, File.basename(result[0]["path"])) + row_iter[9] = File.basename(result[0]["path"]) end when "removed" then # TODO mark as stopped/inactive when "error" then - @liststore.set_value(row_iter, 8, -1) + row_iter[8] = -1 end end @@ -295,13 +299,15 @@ class Eat::Manager end def action_pause() + # Remove gid from aria2 but keep them in model @treeview.selection.selected_each do |model, path, iter| - gid = iter.get_value(0) + gid = iter[0] @aria2.remove(gid.to_s) end end def action_resume() + # Resume gid that have been removed @treeview.selection.selected_each do |model, path, iter| gid = iter[0].to_s status = @aria2.tell_status(gid) @@ -331,7 +337,9 @@ class Eat::Manager def action_remove() @treeview.selection.selected_each do |model, path, iter| - gid = iter.get_value(0) + # TODO aria2 may respond to the remove request after the callback + # and thus re-add a new iter + gid = iter[0] @aria2.remove(gid.to_s) @liststore.remove(iter) end _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits