diff options
author | Guido van Rossum <guido@python.org> | 1997-09-09 03:39:21 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1997-09-09 03:39:21 (GMT) |
commit | d7500fcbb4d0257f3bcd0c87d17ee61f3b1545e8 (patch) | |
tree | db4a6e4835e04851df721eb4595d7172d8e05c34 /Lib/stdwin/wdbframewin.py | |
parent | 045e688f6fc06c87cc93f84e42fb4767a04ba559 (diff) | |
download | cpython-d7500fcbb4d0257f3bcd0c87d17ee61f3b1545e8.zip cpython-d7500fcbb4d0257f3bcd0c87d17ee61f3b1545e8.tar.gz cpython-d7500fcbb4d0257f3bcd0c87d17ee61f3b1545e8.tar.bz2 |
These directories renamed: tkinter -> lib-tk, stdwin -> lib-stdwin.
Diffstat (limited to 'Lib/stdwin/wdbframewin.py')
-rwxr-xr-x | Lib/stdwin/wdbframewin.py | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/Lib/stdwin/wdbframewin.py b/Lib/stdwin/wdbframewin.py deleted file mode 100755 index 7a0ff39..0000000 --- a/Lib/stdwin/wdbframewin.py +++ /dev/null @@ -1,146 +0,0 @@ -# wdbframewin.py -- frame window for wdb.py - -# XXX To do: -# - display function name in window title -# - execute arbitrary statements instead of just evaluating expressions -# - allow setting variables by editing their values - - -import stdwin -from stdwinevents import * -import basewin -import sys - -WIDTH = 40 -MINHEIGHT = 8 -MAXHEIGHT = 16 - -class FrameWindow(basewin.BaseWindow): - - def __init__(self, debugger, frame, dict, name): - self.debugger = debugger - self.frame = frame # Not used except for identity tests - self.dict = dict - self.name = name - nl = max(MINHEIGHT, len(self.dict) + 5) - nl = min(nl, MAXHEIGHT) - width = WIDTH*stdwin.textwidth('0') - height = nl*stdwin.lineheight() - stdwin.setdefwinsize(width, height) - basewin.BaseWindow.__init__( - self, '--Frame ' + name + '--') - # XXX Should use current function name - self.initeditor() - self.displaylist = ['>>>', '', '-'*WIDTH] - self.refreshframe() - - def initeditor(self): - r = (stdwin.textwidth('>>> '), 0), (30000, stdwin.lineheight()) - self.editor = self.win.textcreate(r) - - def closeeditor(self): - self.editor.close() - - def dispatch(self, event): - type, win, detail = event - if type == WE_NULL: return # Dummy tested by mainloop - if type in (WE_DRAW, WE_COMMAND) \ - or not self.editor.event(event): - basewin.BaseWindow.dispatch(self, event) - - def close(self): - del self.debugger.framewindows[self.name] - del self.debugger, self.dict - self.closeeditor() - basewin.BaseWindow.close(self) - - def command(self, detail): - if detail == WC_RETURN: - self.re_eval() - else: - dummy = self.editor.event(WE_COMMAND, \ - self.win, detail) - - def mouse_down(self, detail): - (h, v), clicks, button, mask = detail - if clicks != 2: - return - i = v / stdwin.lineheight() - if 5 <= i < len(self.displaylist): - import string - name = string.splitfields(self.displaylist[i],' = ')[0] - if not self.dict.has_key(name): - stdwin.fleep() - return - value = self.dict[name] - if not hasattr(value, '__dict__'): - stdwin.fleep() - return - name = 'instance ' + `value` - if self.debugger.framewindows.has_key(name): - self.debugger.framewindows[name].popup() - else: - self.debugger.framewindows[name] = \ - FrameWindow(self.debugger, - self.frame, value.__dict__, - name) - return - stdwin.fleep() - - def re_eval(self): - import string, repr - expr = string.strip(self.editor.gettext()) - if expr == '': - output = '' - else: - globals = self.frame.f_globals - globals['__privileged__'] = 1 - locals = self.dict - try: - value = eval(expr, globals, locals) - output = repr.repr(value) - except: - if type(sys.exc_type) == type(''): - exc_type_name = sys.exc_type - else: exc_type_name = sys.exc_type.__name__ - output = exc_type_name + ': ' + `sys.exc_value` - self.displaylist[1] = output - lh = stdwin.lineheight() - r = (-10, 0), (30000, 2*lh) - self.win.change(r) - self.editor.setfocus(0, len(expr)) - - def draw(self, detail): - (left, top), (right, bottom) = detail - dummy = self.editor.draw(detail) - d = self.win.begindrawing() - try: - lh = d.lineheight() - h, v = 0, 0 - for line in self.displaylist: - if v+lh > top and v < bottom: - d.text((h, v), line) - v = v + lh - finally: - d.close() - - def refreshframe(self): - import repr - del self.displaylist[3:] - self.re_eval() - names = self.dict.keys() - for key, label in ('__args__', 'Args: '), \ - ('__return__', 'Return: '): - if self.dict.has_key(key): - names.remove(key) - value = self.dict[key] - label = label + repr.repr(value) - self.displaylist.append(label) - names.sort() - for name in names: - value = self.dict[name] - line = name + ' = ' + repr.repr(value) - self.displaylist.append(line) - self.win.setdocsize(0, \ - stdwin.lineheight() * len(self.displaylist)) - self.refreshall() # XXX Be more subtle later |