From dd3628e042fd98286bd0606f0245f38c70420881 Mon Sep 17 00:00:00 2001 From: Sebastian Droege Date: Tue, 7 Mar 2006 20:35:32 +0000 Subject: * use the service type database for services to browse git-svn-id: file:///home/lennart/svn/public/service-discovery-applet/trunk@99 3be567f1-68ff-0310-b24a-ad7cc433fd2f --- src/service-discovery-applet.in | 39 ++++++------------ src/service-discovery-config.glade | 23 ----------- src/service-discovery-config.in | 83 ++++++++++---------------------------- 3 files changed, 33 insertions(+), 112 deletions(-) diff --git a/src/service-discovery-applet.in b/src/service-discovery-applet.in index 7bf7eb0..449a328 100755 --- a/src/service-discovery-applet.in +++ b/src/service-discovery-applet.in @@ -55,28 +55,6 @@ try: except ImportError, e: pass -############################################################################### -# -# SERVICES THAT WILL BE ADDED TO GCONF ON THE FIRST RUN -# -# default browsing value -try: - first_run_services = {} - for (stype, desc) in avahi.ServiceTypeDatabase.ServiceTypeDatabase().items(): - first_run_services[stype] = False - - first_run_services["_http._tcp"] = True - first_run_services["_https._tcp"] = True - first_run_services["_ssh._tcp"] = True - first_run_services["_sftp-ssh._tcp"] = True - first_run_services["_ftp._tcp"] = True - first_run_services["_webdav._tcp"] = True - first_run_services["_webdavs._tcp"] = True -except: - error_msg(_("You need at least avahi 0.6.9")) - sys.exit() - - ############################################################################### # # ServiceTypeDatabase @@ -113,12 +91,19 @@ class SDAGconf: self.gc_client.notify_add (self.gc_services, self.gc_services_cb) self.gc_client.notify_add (self.gc_options, self.gc_options_cb) + self.plugin = sdapplet.pluginloader.PluginLoader("@pluginsdir@") - # init first run browsing services - if self.gc_client.get_bool ("%s/%s" % (self.gc_options,"first_run")): - self.gc_client.set_bool("%s/%s" % (self.gc_options, "first_run"), False) - for service_type, enabled in first_run_services.iteritems(): - self.gc_client.set_bool("%s/%s" % (self.gc_services, service_type), enabled) + try: + for (stype, desc) in avahi.ServiceTypeDatabase.ServiceTypeDatabase().items(): + if not self.gc_client.get("%s/%s" % (self.gc_services, stype)): + if self.plugin.plugins.has_key(stype): + enabled = True + else: + enabled = False + self.gc_client.set_bool("%s/%s" % (self.gc_services, stype), enabled) + except: + error_msg(_("You need at least avahi 0.6.9")) + sys.exit() def get_services(self): services = [] diff --git a/src/service-discovery-config.glade b/src/service-discovery-config.glade index 45321a1..c165098 100644 --- a/src/service-discovery-config.glade +++ b/src/service-discovery-config.glade @@ -187,29 +187,6 @@ True GTK_BUTTONBOX_DEFAULT_STYLE 0 - - - - True - True - gtk-add - True - GTK_RELIEF_NORMAL - True - - - - - - True - True - True - gtk-remove - True - GTK_RELIEF_NORMAL - True - - 0 diff --git a/src/service-discovery-config.in b/src/service-discovery-config.in index 4ea66ae..6c979c8 100755 --- a/src/service-discovery-config.in +++ b/src/service-discovery-config.in @@ -36,6 +36,7 @@ try: import gobject import gconf import avahi + import avahi.ServiceTypeDatabase except ImportError, e: error_msg(_("A required python module is missing!\n%s") % (e)) sys.exit() @@ -45,10 +46,8 @@ from avahi.SimpleGladeApp import SimpleGladeApp ( COLUMN_ENABLED, COLUMN_SERVICE, - COLUMN_NAME, - COLUMN_ACTION, - COLUMN_EDITABLE -) = range(5) + COLUMN_NAME +) = range(3) glade_dir = "@interfacesdir@" @@ -57,6 +56,7 @@ gc_services = "/apps/service-discovery-applet/services" class Config_window(SimpleGladeApp): def __init__(self, path="service-discovery-config.glade", root="sda-prefs-dialog", domain=None, **kwargs): + self.stype_database = avahi.ServiceTypeDatabase.ServiceTypeDatabase() path = os.path.join(glade_dir, path) SimpleGladeApp.__init__(self, path, root, domain, **kwargs) @@ -64,9 +64,7 @@ class Config_window(SimpleGladeApp): lstore = gtk.ListStore( gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, - gobject.TYPE_STRING, - gobject.TYPE_BOOLEAN, - gobject.TYPE_BOOLEAN) + gobject.TYPE_STRING) gc_entries = self.gc_client.all_entries(gc_services) for gc_entry in gc_entries: @@ -77,11 +75,16 @@ class Config_window(SimpleGladeApp): lstore.set(iter, COLUMN_ENABLED, svc_enabled, COLUMN_SERVICE, svc_type, - COLUMN_NAME, None, - COLUMN_ACTION, False, - COLUMN_EDITABLE, True) + COLUMN_NAME, self.__get_service_type_description(svc_type)) + lstore.set_sort_column_id(COLUMN_SERVICE, gtk.SORT_ASCENDING) return lstore + def __get_service_type_description(self, stype): + if self.stype_database.has_key(stype): + return self.stype_database[stype] + else: + return None + def __add_columns(self, treeview): model = treeview.get_model() @@ -100,60 +103,20 @@ class Config_window(SimpleGladeApp): # column for service type renderer = gtk.CellRendererText() - renderer.connect("edited", self.on_cell_edited, model) renderer.set_data("column", COLUMN_SERVICE) column = gtk.TreeViewColumn(_("Service type"), renderer, - text=COLUMN_SERVICE, editable=COLUMN_EDITABLE) + text=COLUMN_SERVICE) treeview.append_column(column) # columns for service name -# column = gtk.TreeViewColumn('Service Name', gtk.CellRendererText(), -# text=COLUMN_NAME) -# column.set_sort_column_id(COLUMN_NAME) -# treeview.append_column(column) - - # column for action scripts -# renderer = gtk.CellRendererToggle() -# column = gtk.TreeViewColumn('Action', renderer, active=COLUMN_ACTION) -# column.set_sort_column_id(COLUMN_ACTION) -# treeview.append_column(column) - - def on_cell_edited(self, cell, path_string, service_type, model): - - iter = model.get_iter_from_string(path_string) - path = model.get_path(iter)[0] - column = cell.get_data("column") - - if column == COLUMN_SERVICE: - old_service_type = model.get_value(iter, column) - old_service_enabled= model.get_value(iter, COLUMN_ENABLED) - self.gc_client.unset("%s/%s" % (gc_services, old_service_type)) - self.gc_client.suggest_sync() - model.set(iter, column, service_type) - self.gc_client.set_bool("%s/%s" % (gc_services, service_type), old_service_enabled) - - def on_add_service_clicked(self, button, model): - iter = model.append() - model.set (iter, - COLUMN_ENABLED, False, - COLUMN_SERVICE, _("_service._protocol"), - COLUMN_NAME, None, - COLUMN_ACTION, False, - COLUMN_EDITABLE, True) - - def on_del_service_clicked(self, button, treeview): - - selection = treeview.get_selection() - model, iter = selection.get_selected() - - if iter: - path = model.get_path(iter)[0] - service_type = model.get_value(iter,COLUMN_SERVICE) - self.gc_client.unset("%s/%s" % (gc_services, service_type)) - self.gc_client.suggest_sync() - model.remove(iter) - #FIXME remove entry from gconf + renderer = gtk.CellRendererText() + renderer.set_data("column", COLUMN_NAME) + + column = gtk.TreeViewColumn('Service Name', renderer, + text=COLUMN_NAME) + column.set_sort_column_id(COLUMN_NAME) + treeview.append_column(column) def enabled_toggled(self, cell, path, model): # get toggled iter @@ -198,10 +161,6 @@ class Config_window(SimpleGladeApp): self.treeview_services.set_model(model) self.__add_columns(self.treeview_services) - # connect add/remove service buttons - self.button_add_service.connect("clicked", self.on_add_service_clicked, model) - self.button_del_service.connect("clicked", self.on_del_service_clicked, self.treeview_services) - def main(): config_window = Config_window() -- cgit