From a4b6330cc80ae27954c69ca53373d95b02cd277e Mon Sep 17 00:00:00 2001 From: Sebastien Estienne Date: Thu, 27 Oct 2005 20:52:48 +0000 Subject: * try to make sda compatible with api 0.5 and 0.6 git-svn-id: file:///home/lennart/svn/public/service-discovery-applet/trunk@70 3be567f1-68ff-0310-b24a-ad7cc433fd2f --- src/service-discovery-applet.in | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/service-discovery-applet.in b/src/service-discovery-applet.in index 5c5b334..7e22521 100755 --- a/src/service-discovery-applet.in +++ b/src/service-discovery-applet.in @@ -148,6 +148,7 @@ class ServiceDiscoveryApplet(gnomeapplet.Applet): self.server = dbus.Interface(self.system_bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) + self.avahi_version = self.server.GetVersionString() self.session_bus = dbus.SessionBus() obj = self.session_bus.get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications") self.notif = dbus.Interface(obj, "org.freedesktop.Notifications") @@ -167,7 +168,10 @@ class ServiceDiscoveryApplet(gnomeapplet.Applet): else: return self.server.GetNetworkInterfaceNameByIndex(interface) - def service_resolved(self, interface, protocol, name, type, domain, host, aprotocol, address, port, txt): + def service_resolved_old(self, interface, protocol, name, type, domain, host, aprotocol, address, port, txt): + service_resolved(self, interface, protocol, name, type, domain, host, aprotocol, address, port, txt, None) + + def service_resolved(self, interface, protocol, name, type, domain, host, aprotocol, address, port, txt, flags): print "Service data for service '%s' of type '%s' in domain '%s' on %s.%i:" % (name, type, domain, self.siocgifname(interface), protocol) print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, avahi.txt_array_to_string_array(txt)) @@ -180,8 +184,14 @@ class ServiceDiscoveryApplet(gnomeapplet.Applet): print "Error:", str(err) def menuitem_response(self, widget, interface, protocol, name, type, domain): - self.server.ResolveService(interface, protocol, name, type, domain, avahi.PROTO_INET, dbus.UInt32(0), reply_handler=self.service_resolved, error_handler=self.print_error) + if self.avahi_version == "avahi 0.6": + self.server.ResolveService(interface, protocol, name, type, domain, avahi.PROTO_INET, dbus.UInt32(0), reply_handler=self.service_resolved, error_handler=self.print_error) + else: + self.server.ResolveService(interface, protocol, name, type, domain, avahi.PROTO_INET, reply_handler=self.service_resolved_old, error_handler=self.print_error) + def new_service_old(self, interface, protocol, name, type, domain): + new_service(self, interface, protocol, name, type, domain, None) + def new_service(self, interface, protocol, name, type, domain, flags): print "Found service '%s' of type '%s' in domain '%s' on %s.%i." % (name, type, domain, self.siocgifname(interface), protocol) @@ -219,7 +229,9 @@ class ServiceDiscoveryApplet(gnomeapplet.Applet): self.display_service_notification(True, name, type) - + def remove_service_old(self, interface, protocol, name, type, domain): + remove_service(self, interface, protocol, name, type, domain, None) + def remove_service(self, interface, protocol, name, type, domain, flags): print "Service '%s' of type '%s' in domain '%s' on %s.%i disappeared." % (name, type, domain, self.siocgifname(interface), protocol) @@ -237,12 +249,19 @@ class ServiceDiscoveryApplet(gnomeapplet.Applet): return print "Browsing for services of type '%s' in domain '%s' on %s.%i ..." % (type, domain, self.siocgifname(interface), protocol) - - b = dbus.Interface(self.system_bus.get_object(avahi.DBUS_NAME, - self.server.ServiceBrowserNew(interface, protocol, type, domain, dbus.UInt32(0))) - , avahi.DBUS_INTERFACE_SERVICE_BROWSER) - b.connect_to_signal('ItemNew', self.new_service) - b.connect_to_signal('ItemRemove', self.remove_service) + + if self.avahi_version == "avahi 0.6": + b = dbus.Interface(self.system_bus.get_object(avahi.DBUS_NAME, + self.server.ServiceBrowserNew(interface, protocol, type, domain, dbus.UInt32(0))) + , avahi.DBUS_INTERFACE_SERVICE_BROWSER) + b.connect_to_signal('ItemNew', self.new_service) + b.connect_to_signal('ItemRemove', self.remove_service) + else: + b = dbus.Interface(self.system_bus.get_object(avahi.DBUS_NAME, + self.server.ServiceBrowserNew(interface, protocol, type, domain)) + , avahi.DBUS_INTERFACE_SERVICE_BROWSER) + b.connect_to_signal('ItemNew', self.new_service_old) + b.connect_to_signal('ItemRemove', self.remove_service_old) self.service_browsers[(interface, protocol, type, domain)] = b -- cgit