| # Abstract classes for parents and children. |
| # Do not use as base class -- this is for documentation only. |
| # Note that the tree must be built top down. |
| |
| class AbstractParent(): |
| # |
| # Upcalls from child to parent |
| # |
| def addchild(self, child): unimpl() |
| def delchild(self, child): unimpl() |
| # |
| def need_mouse(self, child): unimpl() |
| def no_mouse(self, child): unimpl() |
| # |
| def need_timer(self, child): unimpl() |
| def no_timer(self, child): unimpl() |
| # |
| # XXX need_kbd, no_kbd; focus??? |
| # |
| def begindrawing(self): return unimpl() |
| def beginmeasuring(self): return unimpl() |
| # |
| def change(self, area): unimpl() |
| def scroll(self, (area, (dh, dv))): unimpl() |
| def settimer(self, itimer): unimpl() |
| |
| class AbstractChild(): |
| # |
| # Downcalls from parent to child |
| # |
| def destroy(self): unimpl() |
| # |
| def minsize(self, m): return unimpl() |
| def getbounds(self): return unimpl() |
| def setbounds(self, bounds): unimpl() |
| def draw(self, (d, area)): unimpl() |
| # |
| # Downcalls only made after certain upcalls |
| # |
| def mouse_down(self, detail): unimpl() |
| def mouse_move(self, detail): unimpl() |
| def mouse_up(self, detail): unimpl() |
| # |
| def timer(self): unimpl() |
| |
| # A "Split" is a child that manages one or more children. |
| # (This terminology is due to DEC SRC, except for CSplits.) |
| # A child of a split may be another split, a button, a slider, etc. |
| # Certain upcalls and downcalls can be handled transparently, but |
| # for others (e.g., all geometry related calls) this is not possible. |
| |
| class AbstractSplit() = AbstractChild(), AbstractParent(): |
| pass |