[pyatspi2] Addition of new 'Accessibility' D-Bus bus. The bus address



commit 3f1a8510875e24b0cac8a3ba2c39d62d7c633b27
Author: Mark Doffman <mark doffman codethink co uk>
Date:   Tue Dec 8 14:35:12 2009 -0800

    Addition of new 'Accessibility' D-Bus bus. The bus address
    is located using X properties.

 pyatspi/busutils/bus.py       |   45 +++++++++++++++++++++++++++++++++++++---
 tests/apps/test-application.c |    2 +-
 tests/pyatspi/testrunner      |    4 +++
 3 files changed, 46 insertions(+), 5 deletions(-)
---
diff --git a/pyatspi/busutils/bus.py b/pyatspi/busutils/bus.py
index 07c7658..8717e4c 100644
--- a/pyatspi/busutils/bus.py
+++ b/pyatspi/busutils/bus.py
@@ -17,10 +17,34 @@ import Queue as _queue
 import dbus.bus as _bus
 import dbus.connection as _connection
 
+import os as _os
+
 import gobject
 
 from proxy import AccessibilityProxy
 
+import sys
+import traceback
+
+def _get_accessibility_bus_address ():
+
+	from Xlib import display, Xatom
+
+	if "AT_SPI_DISPLAY" in _os.environ.keys():
+		dname = _os.environ["AT_SPI_DISPLAY"]
+	else:
+		dname = None
+
+	if dname:
+		d = display.Display(dname)
+	else:
+		d = display.Display()
+	a = d.get_atom ("AT_SPI_BUS")
+	s = d.screen().root
+	p = s.get_property (a, Xatom.STRING, 0, 100)
+
+	return p.value
+
 class _AccessibilityBus (_bus.BusConnection):
 	"""
 	The bus used for accessibility
@@ -37,12 +61,13 @@ class _AccessibilityBus (_bus.BusConnection):
 	normal during signal delivery.
 	"""
 
-	def __init__ (self):
-                _bus.BusConnection.__init__(self, _bus.BusConnection.TYPE_SESSION, mainloop=None)
+	def __new__ (cls, address, mainloop):
+		return _bus.BusConnection.__new__(cls, address, mainloop)
 
+	def __init__ (self, address, mainloop):
+		_bus.BusConnection.__init__(self, address, mainloop)
 		self._signal_queue = _queue.Queue ()
 
-
 	def _event_dispatch (self):
 		while not self._signal_queue.empty():
 			(func, args, kwargs) = self._signal_queue.get (False)
@@ -73,5 +98,17 @@ class AccessibilityBus (_AccessibilityBus):
 		if AccessibilityBus._shared_instance:
 			return AccessibilityBus._shared_instance
 		else:
-			AccessibilityBus._shared_instance = _AccessibilityBus.__new__ (cls)
+			try:
+				AccessibilityBus._shared_instance = _AccessibilityBus.__new__ (cls, _get_accessibility_bus_address(), None)
+			except Exception:
+				print "AT-SPI: Could not find accessibility bus, using session bus"
+				AccessibilityBus._shared_instance = _AccessibilityBus.__new__ (cls, _bus.BusConnection.TYPE_SESSION, None)
+			
 			return AccessibilityBus._shared_instance
+
+	def __init__ (self):
+		try:
+			_AccessibilityBus.__init__ (self, _get_accessibility_bus_address(), None)
+		except Exception:
+			print "AT-SPI: Could not find accessibility bus, using session bus"
+			_AccessibilityBus.__init__ (self, _bus.BusConnection.TYPE_SESSION, None)
diff --git a/tests/apps/test-application.c b/tests/apps/test-application.c
index 053606b..c503d3c 100644
--- a/tests/apps/test-application.c
+++ b/tests/apps/test-application.c
@@ -250,7 +250,7 @@ static GOptionEntry optentries[] =
   {"test-module", 0, 0, G_OPTION_ARG_STRING, &tmodule_path, "Module containing test scenario", NULL},
   {"test-atspi-library", 0, 0, G_OPTION_ARG_STRING, &amodule_path, "Gtk module with atk-atspi adaptor", NULL},
   {"test-data-directory", 0, 0, G_OPTION_ARG_STRING, &tdata_path, "Path to directory of test data", NULL},
-  {"atspi-dbus-name", 0, 0, G_OPTION_ARG_STRING, &bus_name, "Bus name", NULL},
+  {"test-dbus-name", 0, 0, G_OPTION_ARG_STRING, &bus_name, "Bus name", NULL},
   {NULL}
 };
 
diff --git a/tests/pyatspi/testrunner b/tests/pyatspi/testrunner
index 37670dd..6ff15c5 100755
--- a/tests/pyatspi/testrunner
+++ b/tests/pyatspi/testrunner
@@ -28,11 +28,15 @@ def run_test_app(module_name, dbus_name=None, wait_for_debug=False):
 	if (dbus_name):
 		print " ".join([test_application,
 			"--atspi-dbus-name", dbus_name,
+			"--atspi-no-register",
+			"--test-dbus-name", dbus_name,
 			"--test-atspi-library", test_atspi_library,
 			"--test-module", test_module,
 			"--test-data-directory", test_data_directory,])
 		pop = Popen([test_application,
 			"--atspi-dbus-name", dbus_name,
+			"--atspi-no-register",
+			"--test-dbus-name", dbus_name,
 			"--test-atspi-library", test_atspi_library,
 			"--test-module", test_module,
 			"--test-data-directory", test_data_directory,])



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]