[accerciser] * src/lib/accerciser/accessible_treeview.py:



commit 2dd4768bf6faabf992a164b54bea235a752eb46c
Author: Eitan Isaacson <eitan ascender com>
Date:   Sun May 24 16:42:14 2009 +0300

        * src/lib/accerciser/accessible_treeview.py:
        * plugins/interface_view.py: Added accessible name changed
        listeners to update the view accordingly (bug #582434).
---
 ChangeLog                                 |    6 ++++++
 plugins/interface_view.py                 |   21 +++++++++++++++++++++
 src/lib/accerciser/accessible_treeview.py |   25 +++++++++++++++++++++++++
 3 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a11ce84..ecad7eb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-05-24  Eitan Isaacson  <eitan ascender com>
+
+	* src/lib/accerciser/accessible_treeview.py:
+	* plugins/interface_view.py: Added accessible name changed
+	listeners to update the view accordingly (bug #582434).
+
 2009-05-15  Eitan Isaacson  <eitan ascender com>
 
 	* plugins/interface_view.py: Fixed editable text bug (bug #574223).
diff --git a/plugins/interface_view.py b/plugins/interface_view.py
index cba4647..a246ca2 100644
--- a/plugins/interface_view.py
+++ b/plugins/interface_view.py
@@ -88,6 +88,27 @@ class InterfaceViewer(ViewportPlugin):
         section = _InterfaceSection(ui_xml, self.node, iface_name)
         section.disable()
 
+    pyatspi.Registry.registerEventListener(
+        self.onAccNameChanged, 'object:property-change:accessible-name')
+
+  def onAccNameChanged(self, event):
+    '''
+    Listener for accessible name changes, if it is ours, change the name.
+
+    @param event: 'object:property-change:accessible-name' event.
+    @type acc: Accessibility.Event
+    '''
+    if event.source != self.node.acc: 
+      return
+
+    role = self.node.acc.getRoleName()
+    name = self.node.acc.name
+    if name:
+      role_name = '%s: %s' % (role, name)
+    else:
+      role_name = role
+    self.label_role.set_markup('<b>%s</b>' % markup_escape_text(role_name))
+      
   def onAccChanged(self, acc):
     '''
     Method that is invoked when the main accessible selection s changed.
diff --git a/src/lib/accerciser/accessible_treeview.py b/src/lib/accerciser/accessible_treeview.py
index 8527eb4..d02e204 100644
--- a/src/lib/accerciser/accessible_treeview.py
+++ b/src/lib/accerciser/accessible_treeview.py
@@ -422,9 +422,14 @@ class AccessibleTreeView(gtk.TreeView, Tools):
     selection.connect('changed', self._onSelectionChanged)
     selection.set_select_function(self._selectFunc)
     self.connect('row-expanded', self._onExpanded)
+
     pyatspi.Registry.registerEventListener(self._accEventChildChanged, 
                                            'object:children-changed')
 
+    pyatspi.Registry.registerEventListener(
+        self._accEventNameChanged, 
+        'object:property-change:accessible-name')
+
     self.action_group = gtk.ActionGroup('TreeActions')
     self.action_group.add_actions([
         ('RefreshAll', gtk.STOCK_REFRESH, _('_Refresh Registry'),
@@ -527,6 +532,26 @@ class AccessibleTreeView(gtk.TreeView, Tools):
     # populate this level
     self.model.popLevel(iter)
 
+  def _accEventNameChanged(self, event):
+    '''
+    Event handler for "object:property-change:accessible-name". 
+    Updates the treeview accordingly.
+    
+    @param event: The event which triggered this handler.
+    @type event: L{pyatspi.event.Event}
+    '''
+    if self.isMyApp(event.source) or event.source == self.desktop:
+      # Bad karma
+      return
+    if self.model.isInModel(event.source):
+      try:
+        path = self.model.getAccPath(event.source)
+        iter = self.model.get_iter(path)
+      except:
+          pass
+      else:
+          self.model[iter][COL_NAME] = event.source.name
+
   def _accEventChildChanged(self, event):
     '''
     Event handler for "object:children-changed". Updates the treeview accordingly.



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