ยปCore Development>Code coverage>Lib/idlelib/FileList.py

Python code coverage for Lib/idlelib/FileList.py

#countcontent
1n/aimport os
2n/afrom tkinter import *
3n/aimport tkinter.messagebox as tkMessageBox
4n/a
5n/a
6n/aclass FileList:
7n/a
8n/a # N.B. this import overridden in PyShellFileList.
9n/a from idlelib.EditorWindow import EditorWindow
10n/a
11n/a def __init__(self, root):
12n/a self.root = root
13n/a self.dict = {}
14n/a self.inversedict = {}
15n/a self.vars = {} # For EditorWindow.getrawvar (shared Tcl variables)
16n/a
17n/a def open(self, filename, action=None):
18n/a assert filename
19n/a filename = self.canonize(filename)
20n/a if os.path.isdir(filename):
21n/a # This can happen when bad filename is passed on command line:
22n/a tkMessageBox.showerror(
23n/a "File Error",
24n/a "%r is a directory." % (filename,),
25n/a master=self.root)
26n/a return None
27n/a key = os.path.normcase(filename)
28n/a if key in self.dict:
29n/a edit = self.dict[key]
30n/a edit.top.wakeup()
31n/a return edit
32n/a if action:
33n/a # Don't create window, perform 'action', e.g. open in same window
34n/a return action(filename)
35n/a else:
36n/a edit = self.EditorWindow(self, filename, key)
37n/a if edit.good_load:
38n/a return edit
39n/a else:
40n/a edit._close()
41n/a return None
42n/a
43n/a def gotofileline(self, filename, lineno=None):
44n/a edit = self.open(filename)
45n/a if edit is not None and lineno is not None:
46n/a edit.gotoline(lineno)
47n/a
48n/a def new(self, filename=None):
49n/a return self.EditorWindow(self, filename)
50n/a
51n/a def close_all_callback(self, *args, **kwds):
52n/a for edit in list(self.inversedict):
53n/a reply = edit.close()
54n/a if reply == "cancel":
55n/a break
56n/a return "break"
57n/a
58n/a def unregister_maybe_terminate(self, edit):
59n/a try:
60n/a key = self.inversedict[edit]
61n/a except KeyError:
62n/a print("Don't know this EditorWindow object. (close)")
63n/a return
64n/a if key:
65n/a del self.dict[key]
66n/a del self.inversedict[edit]
67n/a if not self.inversedict:
68n/a self.root.quit()
69n/a
70n/a def filename_changed_edit(self, edit):
71n/a edit.saved_change_hook()
72n/a try:
73n/a key = self.inversedict[edit]
74n/a except KeyError:
75n/a print("Don't know this EditorWindow object. (rename)")
76n/a return
77n/a filename = edit.io.filename
78n/a if not filename:
79n/a if key:
80n/a del self.dict[key]
81n/a self.inversedict[edit] = None
82n/a return
83n/a filename = self.canonize(filename)
84n/a newkey = os.path.normcase(filename)
85n/a if newkey == key:
86n/a return
87n/a if newkey in self.dict:
88n/a conflict = self.dict[newkey]
89n/a self.inversedict[conflict] = None
90n/a tkMessageBox.showerror(
91n/a "Name Conflict",
92n/a "You now have multiple edit windows open for %r" % (filename,),
93n/a master=self.root)
94n/a self.dict[newkey] = edit
95n/a self.inversedict[edit] = newkey
96n/a if key:
97n/a try:
98n/a del self.dict[key]
99n/a except KeyError:
100n/a pass
101n/a
102n/a def canonize(self, filename):
103n/a if not os.path.isabs(filename):
104n/a try:
105n/a pwd = os.getcwd()
106n/a except OSError:
107n/a pass
108n/a else:
109n/a filename = os.path.join(pwd, filename)
110n/a return os.path.normpath(filename)
111n/a
112n/a
113n/adef _test():
114n/a from idlelib.EditorWindow import fixwordbreaks
115n/a import sys
116n/a root = Tk()
117n/a fixwordbreaks(root)
118n/a root.withdraw()
119n/a flist = FileList(root)
120n/a if sys.argv[1:]:
121n/a for filename in sys.argv[1:]:
122n/a flist.open(filename)
123n/a else:
124n/a flist.new()
125n/a if flist.inversedict:
126n/a root.mainloop()
127n/a
128n/aif __name__ == '__main__':
129n/a _test()