[d-feet/listbox] Also show activatable bus names
- From: Thomas Bechtold <toabctl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [d-feet/listbox] Also show activatable bus names
- Date: Fri, 19 Jul 2013 12:38:37 +0000 (UTC)
commit f4783c379f49ba0523d95ff9d1639a6172f7b000
Author: Thomas Bechtold <thomasbechtold jpberlin de>
Date: Fri Jul 19 14:29:48 2013 +0200
Also show activatable bus names
TODO | 3 ---
src/dfeet/bus_watch.py | 36 ++++++++++++++++++++++++++++++++----
2 files changed, 32 insertions(+), 7 deletions(-)
---
diff --git a/TODO b/TODO
index 86e5a12..652e830 100644
--- a/TODO
+++ b/TODO
@@ -5,6 +5,3 @@
methods, properties and interfaces
* Add menu entry to start a service by name
(org.freedesktop.DBus.StartServiceByName)
-* Add a list with activateable services
- (org.freedesktop.DBus.ListActivatableNames)
-
diff --git a/src/dfeet/bus_watch.py b/src/dfeet/bus_watch.py
index f3ce182..cbc3d02 100644
--- a/src/dfeet/bus_watch.py
+++ b/src/dfeet/bus_watch.py
@@ -216,14 +216,38 @@ class BusWatch(object):
if old_owner:
self.__listbox_remove_bus_name(bus_name)
- def __listbox_remove_bus_name(self, bus_name):
- """remove the given busname from the listbox"""
+ def __listbox_find_bus_name(self, bus_name):
+ """find the given busname in the listbox or return None if not found"""
for listbox_child in self.__listbox.get_children():
if listbox_child.get_children()[0].bus_name == bus_name:
- self.__listbox.remove(listbox_child)
+ return listbox_child
+ #busname not found
+ return None
+
+ def __listbox_remove_bus_name(self, bus_name):
+ """remove the given busname from the listbox"""
+ obj = self.__listbox_find_bus_name(bus_name)
+ if obj:
+ self.__listbox.remove(obj)
+ #if bus is activatable, add the bus name again
+ if bus_name in self.__activatable_names:
+ bnb = BusNameBox(bus_name)
+ self.__listbox_add_bus_name(bnb)
+ else:
+ print("can not remove busname '{0}'. busname not found".format(bus_name))
def __listbox_add_bus_name(self, bus_name_box):
"""add the given busnamebox to the listbox and update the info"""
+ #first check if busname is already listed
+ #ie an activatable (but inactive) busname
+ bn = self.__listbox_find_bus_name(bus_name_box.bus_name)
+ if bn:
+ #bus name is already in the list - use this
+ bus_name_box = bn.get_children()[0]
+ else:
+ #add busnamebox to the list
+ self.__listbox.add(bus_name_box)
+
#update bus info stuff
self.bus_proxy.GetConnectionUnixProcessID(
'(s)', bus_name_box.bus_name,
@@ -235,7 +259,6 @@ class BusWatch(object):
bus_name_box.activatable = True
else:
bus_name_box.activatable = False
- self.__listbox.add(bus_name_box)
def __list_names_handler(self, obj, names, userdata):
for n in names:
@@ -246,7 +269,12 @@ class BusWatch(object):
print("error getting bus names: %s" % str(error))
def __list_act_names_handler(self, obj, act_names, userdata):
+ #remember the activatable bus names
self.__activatable_names = act_names
+ #add all activatable bus names to the list
+ for name in act_names:
+ bnb = BusNameBox(name)
+ self.__listbox_add_bus_name(bnb)
def __list_act_names_error_handler(self, obj, error, userdata):
self.__activatable_names = []
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]