Mercurial > cpython-lru_cache-weakref
annotate Lib/idlelib/FileList.py @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | 788984b7da6f |
| children | bf92327eeda8 |
| rev | line source |
|---|---|
| 13975 | 1 import os |
|
47130
ef4cca2d6171
Tkinter, step 2: adapt imports.
Georg Brandl <georg@python.org>
parents:
43734
diff
changeset
|
2 from tkinter import * |
|
ef4cca2d6171
Tkinter, step 2: adapt imports.
Georg Brandl <georg@python.org>
parents:
43734
diff
changeset
|
3 import tkinter.messagebox as tkMessageBox |
| 13975 | 4 |
| 5 | |
| 6 class FileList: | |
| 7 | |
|
42714
2ec16b6b4d04
Switch to absolute imports to support direct execution of modules. Many
Kurt B. Kaiser <kbk@shore.net>
parents:
42324
diff
changeset
|
8 # N.B. this import overridden in PyShellFileList. |
|
2ec16b6b4d04
Switch to absolute imports to support direct execution of modules. Many
Kurt B. Kaiser <kbk@shore.net>
parents:
42324
diff
changeset
|
9 from idlelib.EditorWindow import EditorWindow |
| 13975 | 10 |
| 11 def __init__(self, root): | |
| 12 self.root = root | |
| 13 self.dict = {} | |
| 14 self.inversedict = {} | |
| 15 self.vars = {} # For EditorWindow.getrawvar (shared Tcl variables) | |
| 16 | |
| 17 def open(self, filename, action=None): | |
| 18 assert filename | |
| 19 filename = self.canonize(filename) | |
| 20 if os.path.isdir(filename): | |
|
33218
066c7890cd61
1. If user passes a non-existant filename on the commandline, just open
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
21 # This can happen when bad filename is passed on command line: |
| 13975 | 22 tkMessageBox.showerror( |
|
33218
066c7890cd61
1. If user passes a non-existant filename on the commandline, just open
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
23 "File Error", |
|
066c7890cd61
1. If user passes a non-existant filename on the commandline, just open
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
24 "%r is a directory." % (filename,), |
| 13975 | 25 master=self.root) |
| 26 return None | |
| 27 key = os.path.normcase(filename) | |
|
39634
d91585b2cdc1
Remove has_key() references from idlelib. IDLE still doesn't run due
Guido van Rossum <guido@python.org>
parents:
33218
diff
changeset
|
28 if key in self.dict: |
| 13975 | 29 edit = self.dict[key] |
|
33218
066c7890cd61
1. If user passes a non-existant filename on the commandline, just open
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
30 edit.top.wakeup() |
| 13975 | 31 return edit |
|
33218
066c7890cd61
1. If user passes a non-existant filename on the commandline, just open
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
32 if action: |
|
066c7890cd61
1. If user passes a non-existant filename on the commandline, just open
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
33 # Don't create window, perform 'action', e.g. open in same window |
|
066c7890cd61
1. If user passes a non-existant filename on the commandline, just open
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
34 return action(filename) |
|
066c7890cd61
1. If user passes a non-existant filename on the commandline, just open
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
35 else: |
|
43257
a4bd8a4805a8
1. Fail gracefully if the file fails to decode when loaded.
Kurt B. Kaiser <kbk@shore.net>
parents:
42714
diff
changeset
|
36 edit = self.EditorWindow(self, filename, key) |
|
a4bd8a4805a8
1. Fail gracefully if the file fails to decode when loaded.
Kurt B. Kaiser <kbk@shore.net>
parents:
42714
diff
changeset
|
37 if edit.good_load: |
|
a4bd8a4805a8
1. Fail gracefully if the file fails to decode when loaded.
Kurt B. Kaiser <kbk@shore.net>
parents:
42714
diff
changeset
|
38 return edit |
|
a4bd8a4805a8
1. Fail gracefully if the file fails to decode when loaded.
Kurt B. Kaiser <kbk@shore.net>
parents:
42714
diff
changeset
|
39 else: |
|
a4bd8a4805a8
1. Fail gracefully if the file fails to decode when loaded.
Kurt B. Kaiser <kbk@shore.net>
parents:
42714
diff
changeset
|
40 edit._close() |
|
a4bd8a4805a8
1. Fail gracefully if the file fails to decode when loaded.
Kurt B. Kaiser <kbk@shore.net>
parents:
42714
diff
changeset
|
41 return None |
| 13975 | 42 |
|
18583
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
43 def gotofileline(self, filename, lineno=None): |
|
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
44 edit = self.open(filename) |
|
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
45 if edit is not None and lineno is not None: |
|
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
46 edit.gotoline(lineno) |
|
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
47 |
|
29362
f82b6d2b73f1
SF 748973 Guido van Rossum patch
Kurt B. Kaiser <kbk@shore.net>
parents:
18583
diff
changeset
|
48 def new(self, filename=None): |
|
f82b6d2b73f1
SF 748973 Guido van Rossum patch
Kurt B. Kaiser <kbk@shore.net>
parents:
18583
diff
changeset
|
49 return self.EditorWindow(self, filename) |
| 13975 | 50 |
|
66781
788984b7da6f
Fix for issue #10107: Without this patch IDLE on OSX doesn't warn about unsaved files when quitting.
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
47130
diff
changeset
|
51 def close_all_callback(self, *args, **kwds): |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40775
diff
changeset
|
52 for edit in list(self.inversedict): |
| 13975 | 53 reply = edit.close() |
| 54 if reply == "cancel": | |
| 55 break | |
| 56 return "break" | |
| 57 | |
|
43734
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43257
diff
changeset
|
58 def unregister_maybe_terminate(self, edit): |
| 13975 | 59 try: |
| 60 key = self.inversedict[edit] | |
| 61 except KeyError: | |
|
40775
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
39634
diff
changeset
|
62 print("Don't know this EditorWindow object. (close)") |
| 13975 | 63 return |
| 64 if key: | |
| 65 del self.dict[key] | |
| 66 del self.inversedict[edit] | |
| 67 if not self.inversedict: | |
| 68 self.root.quit() | |
| 69 | |
| 70 def filename_changed_edit(self, edit): | |
| 71 edit.saved_change_hook() | |
| 72 try: | |
| 73 key = self.inversedict[edit] | |
| 74 except KeyError: | |
|
40775
4cdf21a0dbbc
Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents:
39634
diff
changeset
|
75 print("Don't know this EditorWindow object. (rename)") |
| 13975 | 76 return |
| 77 filename = edit.io.filename | |
| 78 if not filename: | |
| 79 if key: | |
| 80 del self.dict[key] | |
| 81 self.inversedict[edit] = None | |
| 82 return | |
| 83 filename = self.canonize(filename) | |
| 84 newkey = os.path.normcase(filename) | |
| 85 if newkey == key: | |
| 86 return | |
|
39634
d91585b2cdc1
Remove has_key() references from idlelib. IDLE still doesn't run due
Guido van Rossum <guido@python.org>
parents:
33218
diff
changeset
|
87 if newkey in self.dict: |
| 13975 | 88 conflict = self.dict[newkey] |
| 89 self.inversedict[conflict] = None | |
| 90 tkMessageBox.showerror( | |
| 91 "Name Conflict", | |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29367
diff
changeset
|
92 "You now have multiple edit windows open for %r" % (filename,), |
| 13975 | 93 master=self.root) |
| 94 self.dict[newkey] = edit | |
| 95 self.inversedict[edit] = newkey | |
| 96 if key: | |
| 97 try: | |
| 98 del self.dict[key] | |
| 99 except KeyError: | |
| 100 pass | |
| 101 | |
| 102 def canonize(self, filename): | |
| 103 if not os.path.isabs(filename): | |
| 104 try: | |
| 105 pwd = os.getcwd() | |
| 106 except os.error: | |
| 107 pass | |
| 108 else: | |
| 109 filename = os.path.join(pwd, filename) | |
| 110 return os.path.normpath(filename) | |
| 111 | |
| 112 | |
|
18583
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
113 def _test(): |
|
42714
2ec16b6b4d04
Switch to absolute imports to support direct execution of modules. Many
Kurt B. Kaiser <kbk@shore.net>
parents:
42324
diff
changeset
|
114 from idlelib.EditorWindow import fixwordbreaks |
| 13975 | 115 import sys |
| 116 root = Tk() | |
| 117 fixwordbreaks(root) | |
| 118 root.withdraw() | |
| 119 flist = FileList(root) | |
| 120 if sys.argv[1:]: | |
| 121 for filename in sys.argv[1:]: | |
| 122 flist.open(filename) | |
| 123 else: | |
| 124 flist.new() | |
| 125 if flist.inversedict: | |
| 126 root.mainloop() | |
| 127 | |
| 128 if __name__ == '__main__': | |
|
18583
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
129 _test() |
