[Dev] notifications about the collection itself
John Anderson
john at osafoundation.org
Fri Sep 9 20:39:07 PDT 2005
Maybe we should get rid collection notifications and use monitors
instead since notification don't do what we need -- what do you think?
John
Andi Vajda wrote:
>
>> John/Ted -
>> So right now the way notifications work is if any items in a collection
>> get modified/etc, then a notification goes out to subscribers.
>>
>> In the case of color, I'm actually interested in getting notified when
>> the 'color' attribute on the collection itself, not a member of the
>> collection, is changed. I can change it via a menu right now, but the
>> calendar code doesn't know the color changed, so it doesn't know to
>> redraw.
>>
>> what would you guys think about making notifications fire for both the
>> collection items, as well as changes to the collection itself?
>
>
> Don't use notifications for that, use a monitor.
> For example:
>
> class AlecsItem(Item):
>
> def aColorChangedSomewhere(self, op, item, attribute):
>
> if op == 'set' and isCollection(item) and attribute == 'color':
> print 'gosh, a colored collection changed to', item.color
>
> Attach the monitor:
>
> Monitors.attach(alecsItemInstance, 'aColorChangedSomewhere', 'set',
> 'color')
>
> Et voila. Monitors are persistent so you only need to set this up once.
> Collection notifications, as implemented today, are a UI-only device
> fired from the wx event loop's OnIdle() method. They are asynchronous
> and rather heavy as they are broadcast all subscribers of a set,
> indiscriminately.
>
> Monitors are synchronous and broadcast only to items monitoring the
> given op/attribute combination.
>
> Andi..
More information about the Dev
mailing list