summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Droege <slomo@ubuntu.com>2006-03-07 20:35:32 +0000
committerSebastian Droege <slomo@ubuntu.com>2006-03-07 20:35:32 +0000
commitdd3628e042fd98286bd0606f0245f38c70420881 (patch)
tree134446e7651b315c0136e3be9ca113be42faaff3
parent373f0bcdeb20743fbc2f47954182c4b6f014aefc (diff)
* 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
-rwxr-xr-xsrc/service-discovery-applet.in39
-rw-r--r--src/service-discovery-config.glade23
-rwxr-xr-xsrc/service-discovery-config.in83
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
@@ -57,28 +57,6 @@ except ImportError, e:
###############################################################################
#
-# 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
#
class 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 @@
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property>
<property name="spacing">0</property>
-
- <child>
- <widget class="GtkButton" id="button_add_service">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkButton" id="button_del_service">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- </widget>
- </child>
</widget>
<packing>
<property name="padding">0</property>
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()