1 # wdbsrcwin.py -- source window for wdb
4 from stdwinevents
import *
8 class DebuggerSourceWindow(srcwin
.SourceWindow
):
10 def __init__(self
, debugger
, filename
):
11 self
.debugger
= debugger
14 srcwin
.SourceWindow
.__init
__(self
, filename
)
17 del self
.debugger
.sourcewindows
[self
.filename
]
19 srcwin
.SourceWindow
.close(self
)
21 def dispatch(self
, event
):
22 type, win
, detail
= event
25 elif type == WE_COMMAND
:
27 elif type == WE_MOUSE_DOWN
:
28 self
.mouse_down(detail
)
30 srcwin
.SourceWindow
.dispatch(self
, event
)
32 def char(self
, detail
):
33 self
.debugger
.char(detail
)
35 def command(self
, detail
):
36 self
.debugger
.command(detail
)
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
))
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
49 f
= self
.debugger
.set_break
50 err
= f(self
.filename
, lineno
)
51 if err
: stdwin
.message(err
)
52 else: self
.changemark(lineno
)
56 def getmark(self
, lineno
):
58 if lineno
== self
.focus
:
62 if lineno
== self
.curlineno
:
66 br
= self
.debugger
.breaks
67 if br
.has_key(self
.filename
) and lineno
in br
[self
.filename
]:
74 return stdwin
.textwidth('[' + `self
.linecount
+1`
+ ']->B ')
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
)
83 self
.showline(newlineno
)
85 def resetlineno(self
):
88 def setfocus(self
, newfocus
):
89 if newfocus
!= self
.focus
:
92 self
.changemark(oldfocus
)
93 self
.changemark(newfocus
)
95 self
.showline(newfocus
)
100 # XXX Should get rid of focus stuff again