From 8ea49f289cb33a68bd70b1a859244e00f23630e3 Mon Sep 17 00:00:00 2001 From: Sebastien Estienne Date: Sat, 1 Oct 2005 13:23:31 +0000 Subject: * convert the appler in an OOP git-svn-id: file:///home/lennart/svn/public/service-discovery-applet/trunk@21 3be567f1-68ff-0310-b24a-ad7cc433fd2f --- src/service-discovery-applet.in | 671 ++++++++++++++++++++-------------------- 1 file changed, 337 insertions(+), 334 deletions(-) diff --git a/src/service-discovery-applet.in b/src/service-discovery-applet.in index d86944f..5b77225 100755 --- a/src/service-discovery-applet.in +++ b/src/service-discovery-applet.in @@ -28,6 +28,7 @@ def error_msg(msg): d.destroy() try: + import gobject import avahi import dbus import gtk @@ -44,193 +45,279 @@ except ImportError, e: pass -# Gconf Paths -gc_options = "/apps/service-discovery-applet/options" -gc_services = "/apps/service-discovery-applet/services" #from gettext import gettext as _ -show_local_services = False -show_notifications = False -show_applet_name = False - -service_browsers = {} -service_menu = gtk.Menu() -zc_types = {} -zc_services = {} -zc_pretty_name = {'_ssh._tcp' : 'SSH Servers', - '_http._tcp' : 'Web Servers', - '_ftp._tcp' : 'Ftp Servers', - '_workstation._tcp': 'Workstations' - } - -def siocgifname(interface): - global server +class ServiceDiscoveryApplet(gnomeapplet.Applet): + def __init__(self, applet, iid): + self.__gobject_init__() + self.applet = applet + + self.service_browsers = {} + self.service_menu = gtk.Menu() + self.zc_types = {} + self.zc_services = {} + self.zc_pretty_name = {'_ssh._tcp' : 'SSH Servers', + '_http._tcp' : 'Web Servers', + '_ftp._tcp' : 'Ftp Servers', + '_workstation._tcp': 'Workstations' + } + + + # Gconf Paths + self.gc_options = "/apps/service-discovery-applet/options" + self.gc_services = "/apps/service-discovery-applet/services" + + # Gconf + self.gc_client = gconf.client_get_default () - if interface <= 0: - return "any" - else: - return server.GetNetworkInterfaceNameByIndex(interface) - -def service_resolved(interface, protocol, name, type, domain, host, aprotocol, address, port, txt): - print "Service data for service '%s' of type '%s' in domain '%s' on %s.%i:" % (name, type, domain, siocgifname(interface), protocol) - print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, avahi.txt_array_to_string_array(txt)) - if os.path.exists("@scriptsdir@/%s.sh" % type): - cmd = '@scriptsdir@/%s.sh "%s" %s %s %i "%s"' % (type, name, host, address, port," ".join(avahi.txt_array_to_string_array(txt))) - os.system(cmd) -# if type == "_http._tcp": -# -# url = "http://%s:%i" % (address,port) -# gnome.url_show(url) -# else: -# os.system(cmd) - -def print_error(err): - print "Error:", str(err) - -def menuitem_response(widget, interface, protocol, name, type, domain): - server.ResolveService(interface, protocol, name, type, domain, avahi.PROTO_UNSPEC, reply_handler=service_resolved, error_handler=print_error) - -def new_service(interface, protocol, name, type, domain): - global server, service_menu, zc_types, zc_pretty_name, zc_services, notif, show_notifications + self.gc_client.add_dir (self.gc_options, gconf.CLIENT_PRELOAD_NONE) + + self.show_local_services = self.gc_client.get_bool ("%s/%s" % (self.gc_options,"show_local_services")) + self.show_notifications = self.gc_client.get_bool ("%s/%s" % (self.gc_options,"show_notifications")) + self.show_applet_name = self.gc_client.get_bool ("%s/%s" % (self.gc_options,"show_applet_name")) + + + self.gc_client.add_dir (self.gc_services, gconf.CLIENT_PRELOAD_NONE) + self.gc_client.notify_add (self.gc_services, self.gc_services_cb,None) + + # Applet MenuItem + image = gtk.Image() + image.set_from_file("@iconsdir@/24x24/service-discovery-applet.png") + menuZC = gtk.ImageMenuItem() + zc_label = gtk.Label('ZeroConf') + if self.show_applet_name == False: + zc_label.set_no_show_all(True) + menuZC.add(zc_label) + menuZC.set_image(image) + menuZC.set_right_justified(True) + menuZC.set_submenu(self.service_menu); + + self.gc_client.notify_add (self.gc_options, self.gc_options_cb, zc_label) + + # Applet MenuBar + gtk.rc_parse_string(''' + style "service-discovery-applet-menubar-style" + { + GtkMenuBar::shadow-type = none + GtkMenuBar::internal-padding = 0 + } + widget "*.service-discovery-applet" style "service-discovery-applet-menubar-style"''') + + menubar = gtk.MenuBar() + menubar.set_name("service-discovery-applet") + menubar.connect("button-press-event", self.on_menubar_click) + menubar.connect("size-allocate", self.on_menubar_size_allocate) + menubar.add(menuZC) + + #self.eb = gtk.EventBox() + #self.eb.set_events(gtk.gdk.POINTER_MOTION_MASK) + #self.eb.connect("button-press-event", self.on_button_press) + ##self.eb.connect('motion-notify-event', self.on_applet_motion_notify_event) + ##self.eb.connect('leave-notify-event', self.on_applet_leave_notify_event) + #self.applet.add(self.eb) + + #zclabel = gtk.Label('ZeroConf') + #self.eb.add(zclabel) + + #expand the applet with the panel + self.applet.connect("change_background", self.on_change_background, menubar) + self.applet.set_applet_flags(gnomeapplet.EXPAND_MINOR) + self.applet.add(menubar) - print "Found service '%s' of type '%s' in domain '%s' on %s.%i." % (name, type, domain, siocgifname(interface), protocol) + # funky right-click menu + menuXml = """ + + + + + + + """ + + applet.setup_menu(menuXml, [ + ("SDA About", self.on_about), + ("SDA Config", self.on_config), + ("SDA Start", self.start_service_discovery), + ("SDA Stop", self.stop_service_discovery) + ], applet) + popup = applet.get_popup_component() + + #Start Service Discovery + self.domain = "" + self.system_bus = dbus.SystemBus() + self.server = dbus.Interface(self.system_bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), + avahi.DBUS_INTERFACE_SERVER) + + self.start_service_discovery(None, None, None) + + 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") + + self.applet.show_all() - if zc_types.has_key(type) == False: - menuitem = gtk.ImageMenuItem() - if zc_pretty_name.has_key(type): - pretty_name = zc_pretty_name[type] + + def on_button_press(self, widget, event): + if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3: + return False + elif event.type == gtk.gdk.BUTTON_PRESS and event.button == 1: + #self.echelon.toggle_window_visible() + print "on_button_press" + + def siocgifname(self, interface): + if interface <= 0: + return "any" else: - pretty_name = type - menuitem.add(gtk.Label(pretty_name)) - img = gtk.Image() - iconfile = "@iconsdir@/24x24/%s.png" % (type) - if not os.path.exists(iconfile): - iconfile = "@iconsdir@/24x24/service-discovery-applet.png" - img.set_from_file(iconfile) - menuitem.set_image(img) + return self.server.GetNetworkInterfaceNameByIndex(interface) + + def service_resolved(self, interface, protocol, name, type, domain, host, aprotocol, address, port, txt): + 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)) + if os.path.exists("@scriptsdir@/%s.sh" % type): + cmd = '@scriptsdir@/%s.sh "%s" %s %s %i "%s"' % (type, name, host, address, port," ".join(avahi.txt_array_to_string_array(txt))) + os.system(cmd) + + def print_error(self, err): + print "Error:", str(err) + + def menuitem_response(self, widget, interface, protocol, name, type, domain): + self.server.ResolveService(interface, protocol, name, type, domain, avahi.PROTO_UNSPEC, reply_handler=self.service_resolved, error_handler=self.print_error) + + def new_service(self, interface, protocol, name, type, domain): + print "Found service '%s' of type '%s' in domain '%s' on %s.%i." % (name, type, domain, self.siocgifname(interface), protocol) + + if self.zc_types.has_key(type) == False: + menuitem = gtk.ImageMenuItem() + if self.zc_pretty_name.has_key(type): + pretty_name = self.zc_pretty_name[type] + else: + pretty_name = type + menuitem.add(gtk.Label(pretty_name)) + img = gtk.Image() + iconfile = "@iconsdir@/24x24/%s.png" % (type) + if not os.path.exists(iconfile): + iconfile = "@iconsdir@/24x24/service-discovery-applet.png" + img.set_from_file(iconfile) + menuitem.set_image(img) - service_menu.add(menuitem) - zc_types[type] = gtk.Menu() - menuitem.set_submenu(zc_types[type]) + self.service_menu.add(menuitem) + self.zc_types[type] = gtk.Menu() + menuitem.set_submenu(self.zc_types[type]) + menuitem.show_all() + + menuitem = gtk.MenuItem(name) + self.zc_types[type].add(menuitem) + self.zc_services[(interface, protocol, name, type, domain)] = menuitem + menuitem.connect("activate", self.menuitem_response,interface, protocol, name, type, domain) menuitem.show_all() - menuitem = gtk.MenuItem(name) - zc_types[type].add(menuitem) - zc_services[(interface, protocol, name, type, domain)] = menuitem - menuitem.connect("activate", menuitem_response,interface, protocol, name, type, domain) - menuitem.show_all() - - iconfile = "@iconsdir@/48x48/%s.png" % (type) - if not os.path.exists(iconfile): - iconfile = "@iconsdir@/48x48/service-discovery-applet.png" - - pretty_name = type - if zc_pretty_name.has_key(type): - pretty_name = zc_pretty_name[type] - - message = "Name : %s\nType : %s (%s)" % (name,pretty_name, type) - try: - if show_notifications == True: - notif.Notify("Service Discovery Applet", - iconfile, dbus.UInt32(0),"",dbus.Byte(0), - "New Service found",message, - [iconfile],[""],[""],True,dbus.UInt32(3)) - except: - print "can't use notification daemon" - pass - - -def remove_service(interface, protocol, name, type, domain): - global zc_services, notif, show_notifications - - print "Service '%s' of type '%s' in domain '%s' on %s.%i disappeared." % (name, type, domain, siocgifname(interface), protocol) - - zc_types[type].remove(zc_services[(interface, protocol, name, type, domain)]) - - if zc_types[type].get_children() == []: - service_menu.remove(zc_types[type].get_attach_widget()) - del zc_types[type] - - iconfile = "@iconsdir@/48x48/%s.png" % (type) - if not os.path.exists(iconfile): - iconfile = "@iconsdir@/48x48/service-discovery-applet.png" - - pretty_name = type - if zc_pretty_name.has_key(type): - pretty_name = zc_pretty_name[type] - - message = "Name : %s\nType : %s (%s)" % (name, pretty_name, type) - try: - if show_notifications == True: - notif.Notify("Service Discovery Applet", - iconfile, dbus.UInt32(0),"",dbus.Byte(0), - "Service disappeared",message, - [iconfile],[""],[""],True,dbus.UInt32(3)) - except: - print "can't use notification daemon" - pass - -def add_service_type(interface, protocol, type, domain): - global server, service_browsers, system_bus + iconfile = "@iconsdir@/48x48/%s.png" % (type) + if not os.path.exists(iconfile): + iconfile = "@iconsdir@/48x48/service-discovery-applet.png" - # Are we already browsing this domain for this type? - if service_browsers.has_key((interface, protocol, type, domain)): - return + pretty_name = type + if self.zc_pretty_name.has_key(type): + pretty_name = self.zc_pretty_name[type] - print "Browsing for services of type '%s' in domain '%s' on %s.%i ..." % (type, domain, siocgifname(interface), protocol) - - b = dbus.Interface(system_bus.get_object(avahi.DBUS_NAME, - server.ServiceBrowserNew(interface, protocol, type, domain)) - , avahi.DBUS_INTERFACE_SERVICE_BROWSER) - b.connect_to_signal('ItemNew', new_service) - b.connect_to_signal('ItemRemove', remove_service) + message = "Name : %s\nType : %s (%s)" % (name,pretty_name, type) + try: + if self.show_notifications == True: + self.notif.Notify("Service Discovery Applet", + iconfile, dbus.UInt32(0),"",dbus.Byte(0), + "New Service found",message, + [iconfile],[""],[""],True,dbus.UInt32(3)) + except: + print "can't use notification daemon" + pass - service_browsers[(interface, protocol, type, domain)] = b -def del_service_type(interface, protocol, type, domain): + def remove_service(self, interface, protocol, name, type, domain): + print "Service '%s' of type '%s' in domain '%s' on %s.%i disappeared." % (name, type, domain, self.siocgifname(interface), protocol) - service = (interface, protocol, type, domain) - if not service_browsers.has_key(service): - return - sb = service_browsers[service] - sb.Free() - del service_browsers[service] - # delete the sub menu of service_type - if zc_types.has_key(type): - service_menu.remove(zc_types[type].get_attach_widget()) - del zc_types[type] + self.zc_types[type].remove(self.zc_services[(interface, protocol, name, type, domain)]) + if self.zc_types[type].get_children() == []: + self.service_menu.remove(self.zc_types[type].get_attach_widget()) + del self.zc_types[type] - # Callback: panel background changed -def on_change_background(panelapplet, backgroundtype, color, pixmap, menubar): - menubar.modify_bg(gtk.STATE_NORMAL, color) + iconfile = "@iconsdir@/48x48/%s.png" % (type) + if not os.path.exists(iconfile): + iconfile = "@iconsdir@/48x48/service-discovery-applet.png" + + pretty_name = type + if self.zc_pretty_name.has_key(type): + pretty_name = self.zc_pretty_name[type] + + message = "Name : %s\nType : %s (%s)" % (name, pretty_name, type) + try: + if self.show_notifications == True: + self.notif.Notify("Service Discovery Applet", + iconfile, dbus.UInt32(0),"",dbus.Byte(0), + "Service disappeared",message, + [iconfile],[""],[""],True,dbus.UInt32(3)) + except: + print "can't use notification daemon" + pass + + def add_service_type(self, interface, protocol, type, domain): + # Are we already browsing this domain for this type? + if self.service_browsers.has_key((interface, protocol, type, domain)): + return - if backgroundtype == gnomeapplet.PIXMAP_BACKGROUND: - print "PIXMAP_BACKGROUND" - s3 = menubar.get_style() - s3.bg_pixmap[gtk.STATE_NORMAL] = pixmap + 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)) + , avahi.DBUS_INTERFACE_SERVICE_BROWSER) + b.connect_to_signal('ItemNew', self.new_service) + b.connect_to_signal('ItemRemove', self.remove_service) + + self.service_browsers[(interface, protocol, type, domain)] = b - if backgroundtype == gnomeapplet.COLOR_BACKGROUND: - print "COLOR_BACKGROUND" + def del_service_type(self, interface, protocol, type, domain): - if backgroundtype == gnomeapplet.NO_BACKGROUND: - print "NO_BACKGROUND" + service = (interface, protocol, type, domain) + if not self.service_browsers.has_key(service): + return + sb = self.service_browsers[service] + sb.Free() + del self.service_browsers[service] + # delete the sub menu of service_type + if self.zc_types.has_key(type): + self.service_menu.remove(self.zc_types[type].get_attach_widget()) + del self.zc_types[type] + + + # Callback: panel background changed + def on_change_background(self, panelapplet, backgroundtype, color, pixmap, menubar): + menubar.modify_bg(gtk.STATE_NORMAL, color) + if backgroundtype == gnomeapplet.PIXMAP_BACKGROUND: + print "PIXMAP_BACKGROUND" + s3 = menubar.get_style() + s3.bg_pixmap[gtk.STATE_NORMAL] = pixmap + + if backgroundtype == gnomeapplet.COLOR_BACKGROUND: + print "COLOR_BACKGROUND" + if backgroundtype == gnomeapplet.NO_BACKGROUND: + print "NO_BACKGROUND" -def on_menubar_click(widget, event): - # allow Middle- and Right-Mouse-Button to go through to the applet window - if event.button != 1: - widget.emit_stop_by_name("button-press-event") - return False + + + def on_menubar_click(self, widget, event): + # allow Middle- and Right-Mouse-Button to go through to the applet window + if event.button != 1: + widget.emit_stop_by_name("button-press-event") + return False -# This little hack is required to get Fitt's Law compliance - -# i.e. to get the Menubar to be the full height of the panel. -def on_menubar_size_allocate(menubar, rect): + # This little hack is required to get Fitt's Law compliance - + # i.e. to get the Menubar to be the full height of the panel. + def on_menubar_size_allocate(self, menubar, rect): if (rect.x <= 0) or (rect.y <= 0): - return False + return False rect.x -= 1 rect.y -= 1 rect.width += 2 @@ -238,184 +325,100 @@ def on_menubar_size_allocate(menubar, rect): gtk.Widget.size_allocate(menubar, rect) return False -def on_about(component, verb, applet): - icon = gtk.Image() - icon.set_from_file("@iconsdir@/48x48/service-discovery-applet.png") - - fullname = "Service Discovery Applet" - copyright = "Copyright (C) 2005 Sebastien Estienne" - description = "An applet to quickly access your zeroconf services." - authors = ["Sebastien Estienne "] - - about = gnome.ui.About(fullname, "@version@", copyright, description, authors, None, None, icon.get_pixbuf()) - about.set_icon(icon.get_pixbuf()) - about.show() + def on_about(self, component, verb, applet): + icon = gtk.Image() + icon.set_from_file("@iconsdir@/48x48/service-discovery-applet.png") + + fullname = "Service Discovery Applet" + copyright = "Copyright (C) 2005 Sebastien Estienne" + description = "An applet to quickly access your zeroconf services." + authors = ["Sebastien Estienne "] + + about = gnome.ui.About(fullname, "@version@", copyright, description, authors, None, None, icon.get_pixbuf()) + about.set_icon(icon.get_pixbuf()) + about.show() -def on_config(component, verb, applet): - os.system("service-discovery-config") + def on_config(self, component, verb, applet): + os.system("service-discovery-config") #FIXME replace with gconf key -def start_service_discovery(component, verb, applet): - global system_bus, server, db , gc_client, domain, interface, protocol - - if len(domain) != 0: - return - - try: - domain = server.GetDomainName() - except: - print "Check that Avahi daemon is running!" - return + def start_service_discovery(self, component, verb, applet): + if len(self.domain) != 0: + return + + try: + self.domain = self.server.GetDomainName() + except: + print "Check that Avahi daemon is running!" + return - interface = avahi.IF_UNSPEC - protocol = avahi.PROTO_UNSPEC - - gc_entries = gc_client.all_entries(gc_services) - for gc_entry in gc_entries: - if gc_client.get_bool(gc_entry.key) == True: - service_type = os.path.basename(gc_entry.key) - add_service_type(interface, protocol, service_type, domain) - -def stop_service_discovery(component, verb, applet): - global domain - - if len(domain) == 0: - return - - for service in service_browsers.copy(): - del_service_type(service[0],service[1],service[2],service[3]) - domain = "" + self.interface = avahi.IF_UNSPEC + self.protocol = avahi.PROTO_UNSPEC + + gc_entries = self.gc_client.all_entries(self.gc_services) + for gc_entry in gc_entries: + if self.gc_client.get_bool(gc_entry.key) == True: + service_type = os.path.basename(gc_entry.key) + self.add_service_type(self.interface, self.protocol, service_type, self.domain) + + def stop_service_discovery(self, component, verb, applet): + if len(self.domain) == 0: + return + + for service in self.service_browsers.copy(): + del_service_type(service[0],service[1],service[2],service[3]) + domain = "" -# Callback called when a service is added/removed/enabled/disabled in gconf -def gc_services_cb (client, cnxn_id, gc_entry, data): - global interface, domain, protocol - - service_type = os.path.basename(gc_entry.key) - # FIXME unset key - if client.get_bool(gc_entry.key) == True: - # Browse for a new service - print "browse %s" % (service_type) - add_service_type(interface, protocol, service_type, domain) - else: - # Stop browsing for a service - print "remove %s" % (service_type) - del_service_type(interface, protocol, service_type, domain) - -def gc_options_cb (client, cnxn_id, gc_entry, zc_label): - global show_notifications, show_applet_name, show_local_services - - key = os.path.basename(gc_entry.key) - if key == "show_applet_name": - show_applet_name = client.get_bool(gc_entry.key) - if show_applet_name == False: - zc_label.hide() + # Callback called when a service is added/removed/enabled/disabled in gconf + def gc_services_cb (self, client, cnxn_id, gc_entry, data): + service_type = os.path.basename(gc_entry.key) + # FIXME unset key + if client.get_bool(gc_entry.key) == True: + # Browse for a new service + print "browse %s" % (service_type) + add_service_type(self.interface, self.protocol, service_type, self.domain) else: - zc_label.show() - if key == "show_notifications": - show_notifications = client.get_bool(gc_entry.key) - if key == "show_local_services": - show_local_services = client.get_bool(gc_entry.key) - -def ServiceDiscoveryApplet_factory(applet, iid): - global session_bus, notif, show_notifications, gc_client, server, system_bus, domain - - # Gconf - gc_client = gconf.client_get_default () - - gc_client.add_dir (gc_options, gconf.CLIENT_PRELOAD_NONE) - - show_local_services = gc_client.get_bool ("%s/%s" % (gc_options,"show_local_services")) - show_notifications = gc_client.get_bool ("%s/%s" % (gc_options,"show_notifications")) - show_applet_name = gc_client.get_bool ("%s/%s" % (gc_options,"show_applet_name")) - - - gc_client.add_dir (gc_services, gconf.CLIENT_PRELOAD_NONE) - gc_client.notify_add (gc_services, gc_services_cb,None) - - # Applet MenuItem - image = gtk.Image() - image.set_from_file("@iconsdir@/24x24/service-discovery-applet.png") - menuZC = gtk.ImageMenuItem() - zc_label = gtk.Label('ZeroConf') - if show_applet_name == False: - zc_label.set_no_show_all(True) - menuZC.add(zc_label) - menuZC.set_image(image) - menuZC.set_right_justified(True) - menuZC.set_submenu(service_menu); - - gc_client.notify_add (gc_options, gc_options_cb, zc_label) - - # Applet MenuBar - gtk.rc_parse_string(''' - style "service-discovery-applet-menubar-style" - { - GtkMenuBar::shadow-type = none - GtkMenuBar::internal-padding = 0 - } - widget "*.service-discovery-applet" style "service-discovery-applet-menubar-style"''') - - menubar = gtk.MenuBar() - menubar.set_name("service-discovery-applet") - menubar.connect("button-press-event", on_menubar_click) - menubar.connect("size-allocate", on_menubar_size_allocate) - menubar.add(menuZC) - - #expand the applet with the panel - applet.connect("change_background", on_change_background, menubar) - applet.set_applet_flags(gnomeapplet.EXPAND_MINOR) - applet.add(menubar) - applet.show_all() - - # funky right-click menu - menuXml = """ - - - - - - - """ - - applet.setup_menu(menuXml, [ - ("SDA About", on_about), - ("SDA Config", on_config), - ("SDA Start", start_service_discovery), - ("SDA Stop", stop_service_discovery) - ], applet) - popup = applet.get_popup_component() - - #Start Service Discovery - domain = "" - system_bus = dbus.SystemBus() - server = dbus.Interface(system_bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER), - avahi.DBUS_INTERFACE_SERVER) - - start_service_discovery(None, None, None) - - session_bus = dbus.SessionBus() - obj = session_bus.get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications") - notif = dbus.Interface(obj, "org.freedesktop.Notifications") - return True - - - -print "Starting Service Discovery Applet" - -if __name__ == '__main__': - if len(sys.argv) == 2 and sys.argv[1] == "-window": - main_window = gtk.Window(gtk.WINDOW_TOPLEVEL) - main_window.set_title("Service discovery applet") - main_window.connect("destroy", gtk.main_quit) - app = gnomeapplet.Applet() - ServiceDiscoveryApplet_factory(app, None) - app.reparent(main_window) - main_window.show_all() - gtk.main() - sys.exit() + # Stop browsing for a service + print "remove %s" % (service_type) + del_service_type(self.interface, self.protocol, service_type, self.domain) + + def gc_options_cb (self, client, cnxn_id, gc_entry, zc_label): + key = os.path.basename(gc_entry.key) + if key == "show_applet_name": + self.show_applet_name = client.get_bool(gc_entry.key) + if self.show_applet_name == False: + zc_label.hide() + else: + zc_label.show() + if key == "show_notifications": + self.show_notifications = client.get_bool(gc_entry.key) + if key == "show_local_services": + self.show_local_services = client.get_bool(gc_entry.key) + +def applet_factory(applet, iid): + #service-discovery-applet = + ServiceDiscoveryApplet(applet, iid) + #service-discovery-applet.show_all() + +def activate_factory(): + gnomeapplet.bonobo_factory("OAFIID:GNOME_ServiceDiscoveryApplet_Factory", + gnomeapplet.Applet.__gtype__, + "Service discovery applet", "0", applet_factory) + +def main(): + gobject.type_register(ServiceDiscoveryApplet) + if len(sys.argv) == 2 and sys.argv[1] == "-window": + applet_window = gtk.Window(gtk.WINDOW_TOPLEVEL) + applet_window.set_title("Service discovery applet") + applet_window.connect("destroy", gtk.main_quit) + gnome.init("Service discovery applet", "@version@") + applet = gnomeapplet.Applet() + applet_factory(applet, None) + applet.reparent(applet_window) + applet_window.show_all() + gtk.main() else: - gnomeapplet.bonobo_factory("OAFIID:GNOME_ServiceDiscoveryApplet_Factory", - gnomeapplet.Applet.__gtype__, - "Service discovery applet", "0", ServiceDiscoveryApplet_factory) + activate_factory() -print "Service Discovery Applet ended" +if __name__ == "__main__": + main() -- cgit