Changeset 79

Show
Ignore:
Timestamp:
12/06/07 15:15:22
Author:
slee
Message:

more

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • action_groups/trunk/ActionBrowser.py

    r78 r79  
    4444    def __init__(self, *args, **kwargs): 
    4545      klass.__init__(self,gtk.WINDOW_TOPLEVEL) 
    46       self.acc = getApp(kwargs['app']) 
     46      app = getApp(kwargs['app']) 
     47      self.acc = app 
    4748      self.init() 
    4849      self._onGenerate(None) 
     
    100101 
    101102  def _onGenerate(self, button): 
    102     self.groups_tree.set_top_acc(self.acc) 
    103     self.groups_tree.next() 
     103    if self.acc is not None: 
     104      app = self.acc.getApplication() 
     105      self.groups_tree.set_top_acc(app, self.acc) 
     106      self.groups_tree.next() 
    104107 
    105108  def _onExamine(self, button): 
     
    150153class ActionTree(gtk.TreeView): 
    151154  EVENTS = ('object', 'window', 'focus') 
    152   EVENTS = ('focus') 
    153155   
    154156  def __init__(self): 
     
    169171    self.append_column(tvc) 
    170172 
    171     pyatspi.Registry.registerEventListener(self._onATSPIEvent, *ActionTree.EVENTS) 
     173    self.app = None 
    172174    #self.set_property('fixed-height-mode', True) # speed display 
    173175 
     
    205207    return acc 
    206208 
    207   def set_top_acc(self, acc): 
     209  def set_top_acc(self, app, acc): 
     210    if self.app is not None: 
     211      pyatspi.Registry.deregisterEventListener(self._onATSPIEvent, *ActionTree.EVENTS) 
     212    self.app = app 
    208213    model = ActionModel(acc) 
    209214    model.popLevel(None) # top 
    210215    self.set_model(model) 
     216    pyatspi.Registry.registerEventListener(self._onATSPIEvent, *ActionTree.EVENTS) 
    211217 
    212218  def _onDestroy(self, object): 
     
    235241 
    236242  def _onATSPIEvent(self, event): 
    237     if event.source.getApplication() == self.get_acc_from_path(0).getApplication(): 
    238       gobject.idle_add(self._processEventOnIdle, event) 
    239  
    240   def _processEventOnIdle(self, event): 
     243    if event.source.getApplication() == self.app: 
     244      s = formatEvent(event) 
     245      gobject.idle_add(self._processEventOnIdle, event, s) 
     246 
     247  def _processEventOnIdle(self, event, ev_string): 
     248    print ev_string 
     249     
     250    try: 
     251      parent = event.source.parent 
     252    except LookupError: 
     253      return False  # its dead now 
     254    
     255    from AccDecorator import AccDecorator 
     256    ev_acc = AccDecorator(event.source) 
     257     
    241258    if not self.get_model(): 
    242259      return 
     
    244261    if acc is None:  
    245262      return 
    246  
    247     printEvent(event) 
    248263     
    249264    if event.source.getRole() == pyatspi.ROLE_WINDOW \ 
     
    291306          acc.generateClick() 
    292307        else: 
    293           acc.generateClick() 
    294           #acc.doAction() 
     308          #acc.generateClick() 
     309          acc.doAction() 
    295310 
    296311      if acc.isHyperlink(): 
     
    379394    return True 
    380395 
    381 def printEvent(event): 
     396def formatEvent(event): 
    382397  from os import times 
     398  try: 
     399    parent = str(event.source.parent) 
     400  except LookupError: 
     401    parent = '[DEAD]' 
     402     
    383403  t = int(os.times()[-1] % 10000) 
    384   print t, event.type, event.detail1, event.detail2, \ 
    385         (str(event.any_data) if event.any_data else ''), \ 
    386         '\n\t', event.host_application, event.source, repr(event.source_role)  
    387   if isinstance(event.any_data, pyatspi.Accessibility.BoundingBox): 
    388     ad = event.any_data 
    389     print '\t', ad.x, ad.y, ad.width, ad.height 
     404  ad = event.any_data 
     405  if isinstance(ad, pyatspi.Accessibility.BoundingBox): 
     406    sad = '\n\t%s,%s,%s,%s' % (ad.x, ad.y, ad.width, ad.height) 
     407  elif ad: 
     408    sad = str(ad) 
     409  else: 
     410    sad = '' 
     411  s = '%s: %30s %1s %1s %s %s %s' % (t, event.type, event.detail1, event.detail2, 
     412                                   event.source, parent, sad)  
     413  return s 
    390414 
    391415def dumpAcc(acc, level=0): 
    392   #if level == 0: 
    393   #  print 'Dumping' 
    394   #print ' ' * level + str(acc) 
     416  if level == 0: 
     417    print 'Dumping' 
     418  print ' ' * level + str(acc) 
    395419  level += 1 
    396420  for child_acc in acc: