[PEAK] Trellis: setting @maintain attributes / initialization
rollback
Sergey Schetinin
maluke at gmail.com
Wed Oct 8 16:47:55 EDT 2008
Consider this example:
class C(Component):
@maintain(optional=True)
def calc(self):
return 0
@maintain
def getx(self):
print 'get'
self.calc
@maintain
def set(self):
print 'set'
self.calc = 1
c = C()
Depending on luck (order of hashes of get / set attr names I suppose)
we either get InputConflict or not.
If the get rule runs first, set rule is a conflict because the Cell is
set by the calc rule.
If set gets to run first, there's no conflict because calc rule
doesn't need to run.
Is it possible to have calc / get rules rollback even when set runs last?
It matters for nested windows layouts. For example there a frame with
a panel and a button in that panel. One layout rule reads
frame.client_size and sets panel.size, another one reads
panel.client_size, sets button.size.
If the second rule runs first, the maintain rule for Panel.client_size
is initialized by reading wx values and the frame layout rule fails to
override it due to an InputConflict. If rules run in reverse order,
everything works fine. I'm not sure there's a good way to make inner
layout rule depend on the outer one, and if it's not clear why I can
explain.
--
Best Regards,
Sergey Schetinin
http://s3bk.com/ -- S3 Backup
http://word-to-html.com/ -- Word to HTML Converter
More information about the PEAK
mailing list