Added 'list_only' option (and modified 'run()' to respect it).
[python/dscho.git] / Mac / Tools / twit / mactwit_mod.py
blob8c54480d6f2770dcbe6258c2d22601125aaa4e1a
1 # A stab at a python debugger
2 import Res
3 import Qd
4 import Dlg
5 import Win
6 import FrameWork
7 import EasyDialogs
8 import sys
9 import TwitCore
10 from mac_widgets import MT_AnyList, MT_IconTextWidget
12 # Our dialogs
13 ID_MODULES=500
14 I_MODULES_TITLE=1
15 I_MODULES=2
16 I_VARS_TITLE=3
17 I_VARS=4
18 I_SOURCE_TITLE=5
19 I_SOURCE=6
20 I_RULER=7
21 I_EDIT=8
23 class ModuleBrowser(FrameWork.DialogWindow, TwitCore.ModuleBrowser):
24 """The module-browser dialog - mac-dependent part"""
25 def open(self, module):
26 FrameWork.DialogWindow.open(self, ID_MODULES)
27 self.SetPort()
28 Qd.TextFont(3)
29 Qd.TextSize(9)
31 tp, h, rect = self.wid.GetDialogItem(I_MODULES)
32 self.modules = MT_AnyList(self.wid, rect, 1)
33 tp, h, rect = self.wid.GetDialogItem(I_VARS)
34 self.vars = MT_AnyList(self.wid, rect, 2)
35 tp, h, rect = self.wid.GetDialogItem(I_SOURCE)
36 self.source = MT_IconTextWidget(self.wid, rect)
38 self.mi_open(module)
40 def setsource(self, msg):
41 tp, h, rect = self.wid.GetDialogItem(I_SOURCE_TITLE)
42 if self.cur_source:
43 Dlg.SetDialogItemText(h, self.cur_source)
44 else:
45 Dlg.SetDialogItemText(h, msg)
46 self.source.setcontent(self.cur_source)
48 def source_setbreaks(self, list):
49 self.source.setbreaks(list)
51 def source_setline(self, lineno, icon):
52 self.source.setcurline(lineno, icon)
54 def source_select(self, lineno):
55 self.source.select(lineno)
57 def setmodulenames(self):
58 self.modules.setcontent(self.cont_modules)
60 def module_select(self, number):
61 self.modules.select(number)
63 def setvars(self):
64 self.vars.setcontent(self.cont_varnames, self.cont_varvalues)
66 def do_itemhit(self, item, event):
67 (what, message, when, where, modifiers) = event
68 Qd.SetPort(self.wid)
69 where = Qd.GlobalToLocal(where)
71 if item == I_MODULES:
72 new_module, double = self.modules.click(where, 0)
73 self.click_module(new_module)
74 elif item == I_VARS:
75 new_var, double = self.vars.click(where, 0)
76 if double:
77 self.click_var(new_var)
78 elif item == I_SOURCE:
79 lineno, inborder = self.source.click(where, 0)
80 if lineno <> None and lineno >= 0:
81 self.click_source(lineno, inborder)
82 elif item == I_EDIT:
83 self.click_edit()
85 def do_rawupdate(self, window, event):
86 Qd.SetPort(self.wid)
87 rgn = self.wid.GetWindowPort().visRgn
88 tp, h, rect = self.wid.GetDialogItem(I_RULER)
89 Qd.MoveTo(rect[0], rect[1])
90 Qd.LineTo(rect[2], rect[1])
91 self.modules.update(rgn)
92 self.vars.update(rgn)
93 self.source.update(rgn)
95 def force_redraw(self):
96 Qd.SetPort(self.wid)
97 Win.InvalRgn(self.wid.GetWindowPort().visRgn)
99 def do_activate(self, activate, event):
100 self.modules.activate(activate)
101 self.vars.activate(activate)
102 self.source.activate(activate)
104 def close(self):
105 self.parent.module_dialog = None
106 self.source.close()
107 del self.modules
108 del self.vars
109 del self.source
110 self.do_postclose()
112 if __name__ == '__main__':
113 main()