[Xfce4-commits] <eatmonkey:aria2-xml-rpc> Add connected/disconnected signals
Mike Massonnet
noreply at xfce.org
Sat Jan 30 15:12:02 CET 2010
Updating branch refs/heads/aria2-xml-rpc
to 4f5695d31b402ba00bbf7c6d263bce84050b6f9a (commit)
from 04459dfb4480ab62495c368347adca374daeb196 (commit)
commit 4f5695d31b402ba00bbf7c6d263bce84050b6f9a
Author: Mike Massonnet <mmassonnet at xfce.org>
Date: Sat Jan 30 00:12:24 2010 +0100
Add connected/disconnected signals
Still needs further work. Aria2 needs to do the connection/shutdown/etc
in a thread so that it doesn't block the GUI because currently when the
local server is killed it will recreated a new one and the sensitivity
changes aren't visible.
src/config.rb | 4 ++++
src/eat.rb | 1 -
src/eataria2.rb | 10 ++++++++++
src/eatmanager.rb | 30 +++++++++++++++++++++++++-----
4 files changed, 39 insertions(+), 6 deletions(-)
diff --git a/src/config.rb b/src/config.rb
new file mode 100644
index 0000000..6b399bb
--- /dev/null
+++ b/src/config.rb
@@ -0,0 +1,4 @@
+#!/usr/bin/ruby -w
+
+PACKAGE_STRING = "Eatmonkey 0.1.0"
+PACKAGE_URL = "http://goodies.xfce.org/projects/applications/eatmonkey"
diff --git a/src/eat.rb b/src/eat.rb
index f8bfb7a..01857f2 100755
--- a/src/eat.rb
+++ b/src/eat.rb
@@ -17,7 +17,6 @@ if __FILE__ == $0
aria2.use_custom_server(settings["xmlrpc-host"], settings["xmlrpc-port"], settings["xmlrpc-user"], settings["xmlrpc-passwd"])
end
aria2.connect
- puts "Version: aria2 %s" % aria2.version
manager = Eat::Manager.new
manager.show
diff --git a/src/eataria2.rb b/src/eataria2.rb
index ddb19cb..ddad3ed 100644
--- a/src/eataria2.rb
+++ b/src/eataria2.rb
@@ -37,6 +37,10 @@ class Eat::Aria2 < GLib::Object
type_register
+ signal_new("connected", GLib::Signal::RUN_FIRST, nil,
+ nil) # Return type: void
+ signal_new("disconnected", GLib::Signal::RUN_FIRST, nil,
+ nil) # Return type: void
signal_new("download_status", GLib::Signal::RUN_FIRST, nil,
nil, # Return type: void
String) # Parameters: gid
@@ -50,6 +54,10 @@ class Eat::Aria2 < GLib::Object
nil, # Return type: void
String) # Parameters: gid
+ def signal_do_connected()
+ end
+ def signal_do_disconnected()
+ end
def signal_do_download_status(gid)
end
def signal_do_download_completed(gid)
@@ -151,6 +159,7 @@ class Eat::Aria2 < GLib::Object
rescue Errno::EPIPE => e
# Connection interrupted/timed out/server shutdown
return nil if !@is_connected
+ signal_emit("disconnected")
connect(true)
result = call(method, args)
rescue Errno::ECONNREFUSED => e
@@ -184,6 +193,7 @@ class Eat::Aria2 < GLib::Object
raise Exception.new("Unable to get an appropriate response to our request") if result == nil
@version = result["version"]
@is_connected = true
+ signal_emit("connected")
rescue Exception => e
@@client = nil
puts "Can't establish a connection"
diff --git a/src/eatmanager.rb b/src/eatmanager.rb
index bdca1ad..9ae67bf 100644
--- a/src/eatmanager.rb
+++ b/src/eatmanager.rb
@@ -3,6 +3,7 @@
require "gtk2"
require "pango"
+require "config"
require "eataria2"
require "eatsettings"
@@ -20,6 +21,8 @@ class Eat::Manager
def initialize()
# Setup aria2 listener
@aria2 = Eat::Aria2Listener.instance
+ @aria2.signal_connect("connected") { set_sensitive(true) }
+ @aria2.signal_connect("disconnected") { set_sensitive(false) }
@aria2.signal_connect("download_status") { |this, gid| update_row(gid) }
@aria2.signal_connect("download_completed") { |this, gid| update_row(gid) }
@aria2.signal_connect("download_removed") { |this, gid| update_row(gid) }
@@ -38,11 +41,16 @@ class Eat::Manager
@select_file = builder["select-file"]
@select_file_dialog = builder["filechooserdialog-new-download"]
+ @action_add = builder["action-add"]
+ @action_pause = builder["action-pause"]
+ @action_resume = builder["action-resume"]
+ @action_remove = builder["action-remove"]
+
# Setup actions
- builder["action-add"].signal_connect("activate") { action_add }
- builder["action-pause"].signal_connect("activate") { action_pause }
- builder["action-resume"].signal_connect("activate") { action_resume }
- builder["action-remove"].signal_connect("activate") { action_remove }
+ @action_add.signal_connect("activate") { action_add }
+ @action_pause.signal_connect("activate") { action_pause }
+ @action_resume.signal_connect("activate") { action_resume }
+ @action_remove.signal_connect("activate") { action_remove }
builder["action-settings"].signal_connect("activate") { show_settings_dialog }
builder["action-quit"].signal_connect("activate") { action_quit }
builder["action-about"].signal_connect("activate") { show_about_dialog }
@@ -65,7 +73,7 @@ class Eat::Manager
# Setup statusbar
@statuscontext = { "main" => @statusbar.get_context_id("main context"),
"menu" => @statusbar.get_context_id("menu context") }
- @statusbar.push(@statuscontext["main"], "Eatmonkey 0.1.0 - aria2 #{@aria2.version}")
+ @statusbar.push(@statuscontext["main"], "#{PACKAGE_STRING} - aria2 #{@aria2.version}")
# builder["menuitem-add"].signal_connect("select") do
# @statusbar.push(@statuscontext["menu"], "Add a new download")
@@ -74,6 +82,9 @@ class Eat::Manager
# @statusbar.pop(@statuscontext["menu"])
# end
+ # Set initial sensitivity
+ set_sensitive(@aria2.is_connected)
+
# Setup new download dialog
file_filter = builder["filefilter-new-download"]
file_filter.name = "Torrents, Metalinks"
@@ -92,6 +103,15 @@ class Eat::Manager
@window.show_all
end
+ def set_sensitive(sensitive)
+ @treeview.set_sensitive(sensitive)
+ @action_add.set_sensitive(sensitive)
+ @action_pause.set_sensitive(sensitive)
+ @action_resume.set_sensitive(sensitive)
+ @action_remove.set_sensitive(sensitive)
+ @statusbar.push(@statuscontext["main"], "#{PACKAGE_STRING} - aria2 #{@aria2.version}")
+ end
+
def update_row(gid)
row_iter = nil
gid_i = gid.to_i
More information about the Xfce4-commits
mailing list