diff options
Diffstat (limited to 'Lib/stdwin/Split.py')
-rwxr-xr-x | Lib/stdwin/Split.py | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/Lib/stdwin/Split.py b/Lib/stdwin/Split.py deleted file mode 100755 index 5ff9808..0000000 --- a/Lib/stdwin/Split.py +++ /dev/null @@ -1,211 +0,0 @@ -# Generic Split implementation. -# Use as a base class for other splits. -# Derived classes should at least implement the methods that call -# unimpl() below: getminsize(), getbounds() and setbounds(). - -Error = 'Split.Error' # Exception - -import rect -from stdwinevents import * - -class Split: - # - # Calls from creator - # NB derived classes may add parameters to create() - # - def create(self, parent): - parent.addchild(self) - self.parent = parent - self.children = [] - self.mouse_interest = [] - self.keybd_interest = [] - self.timer_interest = [] - self.altdraw_interest = [] - self.mouse_focus = None - self.keybd_focus = None - return self - # - # Downcalls from parent to child - # - def destroy(self): - self.parent = None - for child in self.children: - child.destroy() - del self.children[:] - del self.mouse_interest[:] - del self.keybd_interest[:] - del self.timer_interest[:] - del self.altdraw_interest[:] - self.mouse_focus = None - self.keybd_focus = None - # - def getminsize(self, m, (width, height)): - return unimpl() # Should ask children - def getbounds(self): - return unimpl() - def setbounds(self, bounds): - unimpl() # Should tell children - # - def realize(self): - for child in self.children: - child.realize() - # - def draw(self, d, detail): - # (Could avoid calls to children outside the area) - for child in self.children: - child.draw(d, detail) - # - def altdraw(self, detail): - for child in self.altdraw_interest: - child.altdraw(detail) - # - # Keyboard focus handling (used internally) - # XXX This is not enough if two levels of splits - # XXX surround text fields! - # - def set_keybd_focus(self, child): - if self.keybd_focus <> child: - if self.keybd_focus: - self.keybd_focus.deactivate() - self.keybd_focus = None - if child: - child.activate() - self.keybd_focus = child - def next_keybd_focus(self): - if not self.keybd_interest: - self.set_keybd_focus(None) - return - if self.keybd_focus in self.keybd_interest: - i = self.keybd_interest.index(self.keybd_focus) - i = (i+1) % len(self.keybd_interest) - else: - i = 0 - self.set_keybd_focus(self.keybd_interest[i]) - # - # Downcalls only made after certain upcalls - # - def mouse_down(self, detail): - if self.mouse_focus: - self.mouse_focus.mouse_down(detail) - return - p = detail[0] - for child in self.mouse_interest: - if rect.pointinrect(p, child.getbounds()): - self.mouse_focus = child - if child in self.keybd_interest: - self.set_keybd_focus(child) - child.mouse_down(detail) - def mouse_move(self, detail): - if self.mouse_focus: - self.mouse_focus.mouse_move(detail) - def mouse_up(self, detail): - if self.mouse_focus: - self.mouse_focus.mouse_up(detail) - self.mouse_focus = None - # - def activate(self): - if self.keybd_focus: - self.keybd_focus.activate() - else: - self.next_keybd_focus() - def deactivate(self): - if self.keybd_focus: - self.keybd_focus.deactivate() - # - def keybd(self, type, detail): - if not self.keybd_focus: - self.set_keybd_focus(self.keybd_interest[0]) - if type == WE_COMMAND and detail == WC_TAB and \ - len(self.keybd_interest) > 1: - self.next_keybd_focus() - return - self.keybd_focus.keybd(type, detail) - # - def timer(self): - for child in self.timer_interest: - child.timer() - # - # Upcalls from child to parent - # - def addchild(self, child): - if child in self.children: - raise Error, 'addchild: child already inlist' - self.children.append(child) - def delchild(self, child): - if child not in self.children: - raise Error, 'delchild: child not in list' - self.children.remove(child) - if child in self.mouse_interest: - self.mouse_interest.remove(child) - if child in self.keybd_interest: - self.keybd_interest.remove(child) - if child in self.timer_interest: - self.timer_interest.remove(child) - if child in self.altdraw_interest: - self.altdraw_interest.remove(child) - if child == self.mouse_focus: - self.mouse_focus = None - if child == self.keybd_focus: - self.keybd_focus = None - # - def need_mouse(self, child): - if child not in self.mouse_interest: - self.mouse_interest.append(child) - self.parent.need_mouse(self) - def no_mouse(self, child): - if child == self.mouse_focus: - self.mouse_focus = None - if child in self.mouse_interest: - self.mouse_interest.remove(child) - if not self.mouse_interest: - self.parent.no_mouse(self) - # - def need_keybd(self, child): - if child not in self.keybd_interest: - self.keybd_interest.append(child) - self.parent.need_keybd(self) - if not self.keybd_focus: - self.set_keybd_focus(child) - def no_keybd(self, child): - if child == self.keybd_focus: - self.keybd_focus = None # Don't call child.deactivate() - if child in self.keybd_interest: - self.keybd_interest.remove(child) - if not self.keybd_interest: - self.parent.no_keybd(self) - # - def need_timer(self, child): - if child not in self.timer_interest: - self.timer_interest.append(child) - self.parent.need_timer(self) - def no_timer(self, child): - if child in self.timer_interest: - self.timer_interest.remove(child) - if not self.timer_interest: - self.parent.no_timer(self) - # - def need_altdraw(self, child): - if child not in self.altdraw_interest: - self.altdraw_interest.append(child) - self.parent.need_altdraw(self) - def no_altdraw(self, child): - if child in self.altdraw_interest: - self.altdraw_interest.remove(child) - if not self.altdraw_interest: - self.parent.no_altdraw(self) - # - # The rest are transparent: - # - def begindrawing(self): - return self.parent.begindrawing() - def beginmeasuring(self): - return self.parent.beginmeasuring() - def getwindow(self): - return self.parent.getwindow() - # - def change(self, area): - self.parent.change(area) - def scroll(self, area, vector): - self.parent.scroll(area, vector) - def settimer(self, itimer): - self.parent.settimer(itimer) |