# store the event source and increase the reference count since event
# sources are borrowed references; the AccessibleMixin automatically
# decrements it later
+ try:
+ event.source.ref()
+ except AttributeError:
+ pass
self.source = event.source
- self.source.ref()
# process any_data in a at-spi version independent manner
details = event.any_data.value()
self.any_data.ref()
except AttributeError:
pass
+ try:
+ # if we received a host application, be sure to increment the ref count
+ self.host_application.ref()
+ except AttributeError:
+ pass
def __str__(self):
'''
(self.type, self.detail1, self.detail2, self.any_data,
self.source, self.host_application)
-class EventType(object):
+class EventType(str):
'''
Wraps the AT-SPI event type string so its components can be accessed
individually as klass (can't use the keyword class), major, minor, and detail
@raise AttributeError: When the given event name is not a valid string
'''
# get rid of any leading and trailing ':' separators
- self.name = name.strip(':')
+ self.value = name.strip(':')
+ self.name = self.value # Backward compatability
self.klass = None
self.major = None
self.minor = None
self.detail = None
# split type according to delimiters
- split = self.name.split(':')
+ split = self.value.split(':', 3)
# loop over all the components
for i in xrange(len(split)):
# store values of attributes in this object
setattr(self, self.format[i], split[i])
- def __str__(self):
- '''
- @return: Full event name as human readable representation of this event
- type
- @rtype: string
- '''
- return self.name