Mercurial > cpython-lru_cache-weakref
annotate Lib/stdwin/wdbsrcwin.py @ 5817:48b94de85bf3 legacy-trunk
Extensive changes by AMK.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 17 Jul 1997 16:29:42 +0000 |
| parents | 560ec7030817 |
| children |
| rev | line source |
|---|---|
| 622 | 1 # wdbsrcwin.py -- source window for wdb |
| 2 | |
| 3 import stdwin | |
| 4 from stdwinevents import * | |
| 5 import srcwin | |
| 6 | |
| 7 | |
| 8 class DebuggerSourceWindow(srcwin.SourceWindow): | |
| 9 | |
|
1435
560ec7030817
* Mass change: get rid of all init() methods, in favor of __init__()
Guido van Rossum <guido@python.org>
parents:
648
diff
changeset
|
10 def __init__(self, debugger, filename): |
| 622 | 11 self.debugger = debugger |
| 12 self.curlineno = 0 | |
| 13 self.focus = 0 | |
|
1435
560ec7030817
* Mass change: get rid of all init() methods, in favor of __init__()
Guido van Rossum <guido@python.org>
parents:
648
diff
changeset
|
14 srcwin.SourceWindow.__init__(self, filename) |
| 622 | 15 |
| 16 def close(self): | |
| 17 del self.debugger.sourcewindows[self.filename] | |
| 18 del self.debugger | |
| 19 srcwin.SourceWindow.close(self) | |
| 20 | |
| 21 def dispatch(self, event): | |
| 22 type, win, detail = event | |
| 23 if type == WE_CHAR: | |
| 24 self.char(detail) | |
| 25 elif type == WE_COMMAND: | |
| 26 self.command(detail) | |
| 27 elif type == WE_MOUSE_DOWN: | |
| 28 self.mouse_down(detail) | |
| 29 else: | |
| 30 srcwin.SourceWindow.dispatch(self, event) | |
| 31 | |
| 32 def char(self, detail): | |
| 33 self.debugger.char(detail) | |
| 34 | |
| 35 def command(self, detail): | |
| 36 self.debugger.command(detail) | |
| 37 | |
| 38 def mouse_down(self, detail): | |
| 39 (h, v), clicks, button, mask = detail | |
| 40 if h >= self.leftmargin: | |
| 41 srcwin.SourceWindow.dispatch(self, \ | |
| 42 (WE_MOUSE_DOWN, self.win, detail)) | |
| 43 return | |
| 44 lineno = v/self.lineheight + 1 | |
| 45 if 1 <= lineno <= self.linecount: | |
| 46 if self.debugger.get_break(self.filename, lineno): | |
| 47 f = self.debugger.clear_break | |
| 48 else: | |
| 49 f = self.debugger.set_break | |
| 50 err = f(self.filename, lineno) | |
| 51 if err: stdwin.message(err) | |
| 52 else: self.changemark(lineno) | |
| 53 else: | |
| 54 stdwin.fleep() | |
| 55 | |
| 56 def getmark(self, lineno): | |
| 57 s = `lineno` | |
| 58 if lineno == self.focus: | |
| 59 s = '[' + s + ']' | |
| 60 else: | |
| 61 s = ' ' + s + ' ' | |
| 62 if lineno == self.curlineno: | |
| 63 s = s + '->' | |
| 64 else: | |
| 65 s = s + ' ' | |
| 66 br = self.debugger.breaks | |
| 67 if br.has_key(self.filename) and lineno in br[self.filename]: | |
| 68 s = s + 'B' | |
| 69 else: | |
| 70 s = s + ' ' | |
| 71 return s | |
| 72 | |
|
648
f6cc7aa31de6
Adde getmargin() method to calculate the width of the margin.
Guido van Rossum <guido@python.org>
parents:
622
diff
changeset
|
73 def getmargin(self): |
|
f6cc7aa31de6
Adde getmargin() method to calculate the width of the margin.
Guido van Rossum <guido@python.org>
parents:
622
diff
changeset
|
74 return stdwin.textwidth('[' + `self.linecount+1` + ']->B ') |
|
f6cc7aa31de6
Adde getmargin() method to calculate the width of the margin.
Guido van Rossum <guido@python.org>
parents:
622
diff
changeset
|
75 |
| 622 | 76 def setlineno(self, newlineno): |
| 77 if newlineno != self.curlineno: | |
| 78 oldlineno = self.curlineno | |
| 79 self.curlineno = newlineno | |
| 80 self.changemark(oldlineno) | |
| 81 self.changemark(newlineno) | |
| 82 if newlineno != 0: | |
| 83 self.showline(newlineno) | |
| 84 | |
| 85 def resetlineno(self): | |
| 86 self.setlineno(0) | |
| 87 | |
| 88 def setfocus(self, newfocus): | |
| 89 if newfocus != self.focus: | |
| 90 oldfocus = self.focus | |
| 91 self.focus = newfocus | |
| 92 self.changemark(oldfocus) | |
| 93 self.changemark(newfocus) | |
| 94 if newfocus != 0: | |
| 95 self.showline(newfocus) | |
| 96 | |
| 97 def resetfocus(self): | |
| 98 self.setfocus(0) | |
| 99 | |
| 100 # XXX Should get rid of focus stuff again |
