1 # A stab at a python debugger
10 from mac_widgets
import MT_AnyList
, MT_IndexList
, MT_IconTextWidget
33 class StackBrowser(FrameWork
.DialogWindow
, TwitCore
.StackBrowser
):
34 """The stack-browser dialog - mac-dependent part"""
36 FrameWork
.DialogWindow
.open(self
, ID_STACK
)
41 tp
, h
, rect
= self
.wid
.GetDialogItem(I_STACK
)
42 self
.stack
= MT_IndexList(self
.wid
, rect
, 2)
43 tp
, h
, rect
= self
.wid
.GetDialogItem(I_VARS
)
44 self
.vars = MT_AnyList(self
.wid
, rect
, 2)
45 tp
, h
, rect
= self
.wid
.GetDialogItem(I_SOURCE
)
46 self
.source
= MT_IconTextWidget(self
.wid
, rect
)
50 def setsource(self
, msg
):
51 tp
, h
, rect
= self
.wid
.GetDialogItem(I_SOURCE_TITLE
)
53 Dlg
.SetDialogItemText(h
, self
.cur_source
)
55 Dlg
.SetDialogItemText(h
, msg
)
56 self
.source
.setcontent(self
.cur_source
)
58 def source_setbreaks(self
, list):
59 self
.source
.setbreaks(list)
61 def source_setline(self
, lineno
, icon
):
62 self
.source
.setcurline(lineno
, icon
)
64 def source_select(self
, lineno
):
65 self
.source
.select(lineno
)
67 def stack_setcontent(self
, names
, locations
):
68 self
.stack
.setcontent(names
, locations
)
70 def stack_select(self
, number
):
71 self
.stack
.select(number
)
74 self
.vars.setcontent(self
.cont_varnames
, self
.cont_varvalues
)
76 def setexception(self
, name
, value
):
78 self
.wid
.HideDialogItem(I_EXC
)
79 self
.wid
.HideDialogItem(I_EXC_TITLE
)
82 self
.wid
.ShowDialogItem(I_EXC
)
83 self
.wid
.ShowDialogItem(I_EXC_TITLE
)
84 tp
, h
, rect
= self
.wid
.GetDialogItem(I_EXC
)
85 Dlg
.SetDialogItemText(h
, name
)
87 self
.wid
.HideDialogItem(I_EXCVALUE
)
88 self
.wid
.HideDialogItem(I_EXCVALUE_TITLE
)
90 self
.wid
.ShowDialogItem(I_EXCVALUE
)
91 self
.wid
.ShowDialogItem(I_EXCVALUE_TITLE
)
92 tp
, h
, rect
= self
.wid
.GetDialogItem(I_EXCVALUE
)
93 Dlg
.SetDialogItemText(h
, value
)
95 def setprogramstate(self
, msg
):
96 tp
, h
, rect
= self
.wid
.GetDialogItem(I_STATE
)
97 Dlg
.SetDialogItemText(h
, msg
)
99 def do_itemhit(self
, item
, event
):
100 (what
, message
, when
, where
, modifiers
) = event
102 where
= Qd
.GlobalToLocal(where
)
105 new_stackitem
, double
= self
.stack
.click(where
, 0)
106 self
.click_stack(new_stackitem
)
108 new_var
, double
= self
.vars.click(where
, 0)
110 self
.click_var(new_var
)
111 elif item
== I_SOURCE
:
112 lineno
, inborder
= self
.source
.click(where
, 0)
113 if lineno
<> None and lineno
>= 0:
114 self
.click_source(lineno
, inborder
)
115 elif item
== I_BROWSE
:
117 elif item
== I_SHOW_COMPLEX
:
118 self
.show_complex
= not self
.show_complex
120 elif item
== I_SHOW_SYSTEM
:
121 self
.show_system
= not self
.show_system
126 def set_var_buttons(self
):
127 tp
, h
, rect
= self
.wid
.GetDialogItem(I_SHOW_COMPLEX
)
128 h
.as_Control().SetControlValue(self
.show_complex
)
129 tp
, h
, rect
= self
.wid
.GetDialogItem(I_SHOW_SYSTEM
)
130 h
.as_Control().SetControlValue(self
.show_system
)
132 def do_rawupdate(self
, window
, event
):
134 rgn
= self
.wid
.GetWindowPort().visRgn
135 tp
, h
, rect
= self
.wid
.GetDialogItem(I_RULER1
)
136 Qd
.MoveTo(rect
[0], rect
[1])
137 Qd
.LineTo(rect
[2], rect
[1])
138 tp
, h
, rect
= self
.wid
.GetDialogItem(I_RULER2
)
139 Qd
.MoveTo(rect
[0], rect
[1])
140 Qd
.LineTo(rect
[2], rect
[1])
141 self
.stack
.update(rgn
)
142 self
.vars.update(rgn
)
143 self
.source
.update(rgn
)
145 def force_redraw(self
):
147 Win
.InvalRgn(self
.wid
.GetWindowPort().visRgn
)
149 def do_activate(self
, activate
, event
):
150 self
.stack
.activate(activate
)
151 self
.vars.activate(activate
)
152 self
.source
.activate(activate
)