[pyatspi2] Modified interim focus tracker for gnome-shell magnifier.
- From: Joseph Scheuhammer <jscheuhamm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pyatspi2] Modified interim focus tracker for gnome-shell magnifier.
- Date: Thu, 30 Aug 2012 20:11:13 +0000 (UTC)
commit a8e3525e0d38c4f6f09e309425fa44b85e060ae3
Author: Joseph Scheuhammer <clown alum mit edu>
Date: Mon Aug 27 16:39:47 2012 -0400
Modified interim focus tracker for gnome-shell magnifier.
Modified focus tracker to:
1. check for presence of magnifier D-Bus service and exit if none,
2. not exit if the magnifier is disabled by GSettings,
3. register/deregister 'focus' handlers in sync with the
magnifier's enable/disable gsetting.
https://bugzilla.gnome.org/show_bug.cgi?id=682636
examples/magFocusTracker.py | 72 +++++++++++++++++++++++++------------------
1 files changed, 42 insertions(+), 30 deletions(-)
---
diff --git a/examples/magFocusTracker.py b/examples/magFocusTracker.py
index 8269f1b..47efe00 100755
--- a/examples/magFocusTracker.py
+++ b/examples/magFocusTracker.py
@@ -47,6 +47,7 @@ from gi.repository.Gio import Settings
_screenWidth = 0
_screenHeight = 0
+_magnifier = None
_zoomer = None
class RoiHandler:
@@ -220,39 +221,27 @@ def magnifyAccessible(event, obj=None, extents=None):
if haveSomethingToMagnify:
_setROICursorPush(x, y, width, height)
-def init():
- global _zoomer
+def startTracking():
global _screenWidth
global _screenHeight
+ global _magnifier
+ global _zoomer
- screen = Gdk.Screen.get_default()
- _screenWidth = screen.width()
- _screenHeight = screen.height()
-
- _dbusLoop = DBusGMainLoop()
- _bus = dbus.SessionBus(mainloop=_dbusLoop)
- _proxy_obj = _bus.get_object("org.gnome.Magnifier", "/org/gnome/Magnifier")
- _magnifier = dbus.Interface(_proxy_obj, "org.gnome.Magnifier")
- zoomerPaths = _magnifier.getZoomRegions()
- if not zoomerPaths:
- return
-
- zoomProxy = _bus.get_object('org.gnome.Magnifier', zoomerPaths[0])
- _zoomer = dbus.Interface(
- zoomProxy, dbus_interface='org.gnome.Magnifier.ZoomRegion')
+ if _magnifier and _zoomer:
+ screen = Gdk.Screen.get_default()
+ _screenWidth = screen.width()
+ _screenHeight = screen.height()
- pyatspi.Registry.registerEventListener(magnifyAccessible,
- "object:text-caret-moved",
- "object:state-changed:focused",
- "object:state-changed:selected")
- pyatspi.Registry.start()
+ pyatspi.Registry.registerEventListener(magnifyAccessible,
+ "object:text-caret-moved",
+ "object:state-changed:focused",
+ "object:state-changed:selected")
-def shutdown():
+def stopTracking():
pyatspi.Registry.deregisterEventListener(magnifyAccessible,
"object:text-caret-moved",
"object:state-changed:focused",
"object:state-changed:selected")
- pyatspi.Registry.stop()
def onEnabledChanged(gsetting, key):
if key != 'screen-magnifier-enabled':
@@ -260,17 +249,40 @@ def onEnabledChanged(gsetting, key):
enabled = gsetting.get_boolean(key)
if enabled:
- init()
+ startTracking()
else:
- shutdown()
+ stopTracking()
+
+def _initMagDbus():
+ global _magnifier
+ global _zoomer
+
+ available = False
+ try:
+ bus = dbus.SessionBus(mainloop=DBusGMainLoop())
+ proxy = \
+ bus.get_object('org.gnome.Magnifier', '/org/gnome/Magnifier')
+ _magnifier = dbus.Interface(proxy, 'org.gnome.Magnifier')
+ zoomerPaths = _magnifier.getZoomRegions()
+ if zoomerPaths:
+ proxy = bus.get_object('org.gnome.Magnifier', zoomerPaths[0])
+ _zoomer = dbus.Interface(proxy, 'org.gnome.Magnifier.ZoomRegion')
+ available = True
+ except:
+ available = False
+
+ return available
def main():
- a11yAppSettings = Settings('org.gnome.desktop.a11y.applications')
- if a11yAppSettings.get_boolean('screen-magnifier-enabled'):
+ magServiceAvailable = _initMagDbus()
+ if magServiceAvailable:
+ a11yAppSettings = Settings('org.gnome.desktop.a11y.applications')
a11yAppSettings.connect('changed', onEnabledChanged)
- init()
+ if a11yAppSettings.get_boolean('screen-magnifier-enabled'):
+ startTracking()
+ pyatspi.Registry.start()
else:
- print 'Magnification is not running. Exiting.'
+ print 'Magnification service not available. Exiting.'
return 0
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]