|
| 1 | +import os |
| 2 | +import sys |
1 | 3 | import string |
2 | | -from Tkinter import * |
3 | 4 | import linecache |
4 | 5 |
|
5 | 6 | from TreeWidget import TreeNode, TreeItem, ScrolledCanvas |
6 | 7 | from ObjectBrowser import ObjectTreeItem, make_objecttreeitem |
7 | 8 | from OldStackViewer import StackViewer, NamespaceViewer |
8 | 9 |
|
9 | | -def StackBrowser(root, flist=None, stack=None): |
10 | | - top = Toplevel(root) |
| 10 | +def StackBrowser(root, flist=None, tb=None, top=None): |
| 11 | + if top is None: |
| 12 | + from Tkinter import Toplevel |
| 13 | + top = Toplevel(root) |
11 | 14 | sc = ScrolledCanvas(top, bg="white", highlightthickness=0) |
12 | 15 | sc.frame.pack(expand=1, fill="both") |
13 | | - item = StackTreeItem(flist) |
| 16 | + item = StackTreeItem(flist, tb) |
14 | 17 | node = TreeNode(sc.canvas, None, item) |
15 | 18 | node.expand() |
16 | 19 |
|
17 | 20 | class StackTreeItem(TreeItem): |
18 | 21 |
|
19 | | - def __init__(self, flist=None): |
| 22 | + def __init__(self, flist=None, tb=None): |
20 | 23 | self.flist = flist |
21 | | - self.stack = get_stack() |
| 24 | + self.stack = get_stack(tb) |
22 | 25 | self.text = get_exception() |
23 | 26 |
|
24 | 27 | def GetText(self): |
@@ -71,8 +74,8 @@ def OnDoubleClick(self): |
71 | 74 | if self.flist: |
72 | 75 | frame, lineno = self.info |
73 | 76 | filename = frame.f_code.co_filename |
74 | | - edit = self.flist.open(filename) |
75 | | - edit.gotoline(lineno) |
| 77 | + if os.path.isfile(filename): |
| 78 | + self.flist.gotofileline(filename, lineno) |
76 | 79 |
|
77 | 80 | class VariablesTreeItem(ObjectTreeItem): |
78 | 81 |
|
@@ -129,7 +132,16 @@ def get_exception(type=None, value=None): |
129 | 132 | s = s + ": " + str(value) |
130 | 133 | return s |
131 | 134 |
|
132 | | -if __name__ == "__main__": |
| 135 | +def _test(): |
| 136 | + try: |
| 137 | + import testcode |
| 138 | + reload(testcode) |
| 139 | + except: |
| 140 | + sys.last_type, sys.last_value, sys.last_traceback = sys.exc_info() |
| 141 | + from Tkinter import Tk |
133 | 142 | root = Tk() |
134 | | - root.withdraw() |
135 | | - StackBrowser(root) |
| 143 | + StackBrowser(None, top=root) |
| 144 | + root.mainloop() |
| 145 | + |
| 146 | +if __name__ == "__main__": |
| 147 | + _test() |
0 commit comments