# A stab at a python debugger import Res import Qd import Dlg import Win import FrameWork import EasyDialogs import sys import TwitCore from mac_widgets import MT_AnyList, MT_IconTextWidget # Our dialogs ID_MODULES=500 I_MODULES_TITLE=1 I_MODULES=2 I_VARS_TITLE=3 I_VARS=4 I_SOURCE_TITLE=5 I_SOURCE=6 I_RULER=7 I_EDIT=8 class ModuleBrowser(FrameWork.DialogWindow, TwitCore.ModuleBrowser): """The module-browser dialog - mac-dependent part""" def open(self, module): FrameWork.DialogWindow.open(self, ID_MODULES) self.SetPort() Qd.TextFont(3) Qd.TextSize(9) tp, h, rect = self.wid.GetDialogItem(I_MODULES) self.modules = MT_AnyList(self.wid, rect, 1) tp, h, rect = self.wid.GetDialogItem(I_VARS) self.vars = MT_AnyList(self.wid, rect, 2) tp, h, rect = self.wid.GetDialogItem(I_SOURCE) self.source = MT_IconTextWidget(self.wid, rect) self.mi_open(module) def setsource(self, msg): tp, h, rect = self.wid.GetDialogItem(I_SOURCE_TITLE) if self.cur_source: Dlg.SetDialogItemText(h, self.cur_source) else: Dlg.SetDialogItemText(h, msg) self.source.setcontent(self.cur_source) def source_setbreaks(self, list): self.source.setbreaks(list) def source_setline(self, lineno, icon): self.source.setcurline(lineno, icon) def source_select(self, lineno): self.source.select(lineno) def setmodulenames(self): self.modules.setcontent(self.cont_modules) def module_select(self, number): self.modules.select(number) def setvars(self): self.vars.setcontent(self.cont_varnames, self.cont_varvalues) def do_itemhit(self, item, event): (what, message, when, where, modifiers) = event Qd.SetPort(self.wid) where = Qd.GlobalToLocal(where) if item == I_MODULES: new_module, double = self.modules.click(where, 0) self.click_module(new_module) elif item == I_VARS: new_var, double = self.vars.click(where, 0) if double: self.click_var(new_var) elif item == I_SOURCE: lineno, inborder = self.source.click(where, 0) if lineno <> None and lineno >= 0: self.click_source(lineno, inborder) elif item == I_EDIT: self.click_edit() def do_rawupdate(self, window, event): Qd.SetPort(self.wid) rgn = self.wid.GetWindowPort().visRgn tp, h, rect = self.wid.GetDialogItem(I_RULER) Qd.MoveTo(rect[0], rect[1]) Qd.LineTo(rect[2], rect[1]) self.modules.update(rgn) self.vars.update(rgn) self.source.update(rgn) def force_redraw(self): Qd.SetPort(self.wid) Win.InvalRgn(self.wid.GetWindowPort().visRgn) def do_activate(self, activate, event): self.modules.activate(activate) self.vars.activate(activate) self.source.activate(activate) def close(self): self.parent.module_dialog = None self.source.close() del self.modules del self.vars del self.source self.do_postclose() if __name__ == '__main__': main()