Changeset 79
- Timestamp:
- 12/06/07 15:15:22
- Files:
-
- action_groups/trunk/ActionBrowser.py (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
action_groups/trunk/ActionBrowser.py
r78 r79 44 44 def __init__(self, *args, **kwargs): 45 45 klass.__init__(self,gtk.WINDOW_TOPLEVEL) 46 self.acc = getApp(kwargs['app']) 46 app = getApp(kwargs['app']) 47 self.acc = app 47 48 self.init() 48 49 self._onGenerate(None) … … 100 101 101 102 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() 104 107 105 108 def _onExamine(self, button): … … 150 153 class ActionTree(gtk.TreeView): 151 154 EVENTS = ('object', 'window', 'focus') 152 EVENTS = ('focus')153 155 154 156 def __init__(self): … … 169 171 self.append_column(tvc) 170 172 171 pyatspi.Registry.registerEventListener(self._onATSPIEvent, *ActionTree.EVENTS)173 self.app = None 172 174 #self.set_property('fixed-height-mode', True) # speed display 173 175 … … 205 207 return acc 206 208 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 208 213 model = ActionModel(acc) 209 214 model.popLevel(None) # top 210 215 self.set_model(model) 216 pyatspi.Registry.registerEventListener(self._onATSPIEvent, *ActionTree.EVENTS) 211 217 212 218 def _onDestroy(self, object): … … 235 241 236 242 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 241 258 if not self.get_model(): 242 259 return … … 244 261 if acc is None: 245 262 return 246 247 printEvent(event)248 263 249 264 if event.source.getRole() == pyatspi.ROLE_WINDOW \ … … 291 306 acc.generateClick() 292 307 else: 293 acc.generateClick()294 #acc.doAction()308 #acc.generateClick() 309 acc.doAction() 295 310 296 311 if acc.isHyperlink(): … … 379 394 return True 380 395 381 def printEvent(event):396 def formatEvent(event): 382 397 from os import times 398 try: 399 parent = str(event.source.parent) 400 except LookupError: 401 parent = '[DEAD]' 402 383 403 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 390 414 391 415 def 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) 395 419 level += 1 396 420 for child_acc in acc:
