Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e9d7f07

Browse files
committed
Refactored, with some future plans in mind.
This now uses the new gotofileline() method defined in FileList.py.
1 parent 6cb7a21 commit e9d7f07

1 file changed

Lines changed: 23 additions & 11 deletions

File tree

Tools/idle/StackViewer.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
1+
import os
2+
import sys
13
import string
2-
from Tkinter import *
34
import linecache
45

56
from TreeWidget import TreeNode, TreeItem, ScrolledCanvas
67
from ObjectBrowser import ObjectTreeItem, make_objecttreeitem
78
from OldStackViewer import StackViewer, NamespaceViewer
89

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)
1114
sc = ScrolledCanvas(top, bg="white", highlightthickness=0)
1215
sc.frame.pack(expand=1, fill="both")
13-
item = StackTreeItem(flist)
16+
item = StackTreeItem(flist, tb)
1417
node = TreeNode(sc.canvas, None, item)
1518
node.expand()
1619

1720
class StackTreeItem(TreeItem):
1821

19-
def __init__(self, flist=None):
22+
def __init__(self, flist=None, tb=None):
2023
self.flist = flist
21-
self.stack = get_stack()
24+
self.stack = get_stack(tb)
2225
self.text = get_exception()
2326

2427
def GetText(self):
@@ -71,8 +74,8 @@ def OnDoubleClick(self):
7174
if self.flist:
7275
frame, lineno = self.info
7376
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)
7679

7780
class VariablesTreeItem(ObjectTreeItem):
7881

@@ -129,7 +132,16 @@ def get_exception(type=None, value=None):
129132
s = s + ": " + str(value)
130133
return s
131134

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
133142
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

Comments
 (0)