Mercurial > cpython-lru_cache-weakref
annotate Lib/idlelib/FileList.py @ 58765:2ba7677bfa95 legacy-trunk
testCopysign was defined twice in test_math; combine the definitions
| author | Mark Dickinson <dickinsm@gmail.com> |
|---|---|
| date | Sat, 06 Feb 2010 23:11:25 +0000 |
| parents | 684960fb1cbf |
| children | eab361617f6a |
| rev | line source |
|---|---|
| 13975 | 1 import os |
|
47183
b53604fad54b
Tkinter rename reversal: remove tkinter package, adapt imports and docs.
Georg Brandl <georg@python.org>
parents:
47101
diff
changeset
|
2 from Tkinter import * |
|
b53604fad54b
Tkinter rename reversal: remove tkinter package, adapt imports and docs.
Georg Brandl <georg@python.org>
parents:
47101
diff
changeset
|
3 import tkMessageBox |
| 13975 | 4 |
| 5 | |
| 6 class FileList: | |
| 7 | |
|
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
|
8 from EditorWindow import EditorWindow # class variable, may be overridden |
|
066c7890cd61
1. If user passes a non-existant filename on the commandline, just open
Kurt B. Kaiser <kbk@shore.net>
parents:
31515
diff
changeset
|
9 # e.g. by PyShellFileList |
| 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) | |
|
56436
684960fb1cbf
replace has_key with 'in' operator
Benjamin Peterson <benjamin@python.org>
parents:
47183
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: |
| 13975 | 36 return self.EditorWindow(self, filename, key) |
| 37 | |
|
18583
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
38 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
|
39 edit = self.open(filename) |
|
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
40 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
|
41 edit.gotoline(lineno) |
|
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
42 |
|
29362
f82b6d2b73f1
SF 748973 Guido van Rossum patch
Kurt B. Kaiser <kbk@shore.net>
parents:
18583
diff
changeset
|
43 def new(self, filename=None): |
|
f82b6d2b73f1
SF 748973 Guido van Rossum patch
Kurt B. Kaiser <kbk@shore.net>
parents:
18583
diff
changeset
|
44 return self.EditorWindow(self, filename) |
| 13975 | 45 |
| 46 def close_all_callback(self, event): | |
| 47 for edit in self.inversedict.keys(): | |
| 48 reply = edit.close() | |
| 49 if reply == "cancel": | |
| 50 break | |
| 51 return "break" | |
| 52 | |
|
43461
1b1a5652fed8
Clean up EditorWindow close.
Kurt B. Kaiser <kbk@shore.net>
parents:
33218
diff
changeset
|
53 def unregister_maybe_terminate(self, edit): |
| 13975 | 54 try: |
| 55 key = self.inversedict[edit] | |
| 56 except KeyError: | |
| 57 print "Don't know this EditorWindow object. (close)" | |
| 58 return | |
| 59 if key: | |
| 60 del self.dict[key] | |
| 61 del self.inversedict[edit] | |
| 62 if not self.inversedict: | |
| 63 self.root.quit() | |
| 64 | |
| 65 def filename_changed_edit(self, edit): | |
| 66 edit.saved_change_hook() | |
| 67 try: | |
| 68 key = self.inversedict[edit] | |
| 69 except KeyError: | |
| 70 print "Don't know this EditorWindow object. (rename)" | |
| 71 return | |
| 72 filename = edit.io.filename | |
| 73 if not filename: | |
| 74 if key: | |
| 75 del self.dict[key] | |
| 76 self.inversedict[edit] = None | |
| 77 return | |
| 78 filename = self.canonize(filename) | |
| 79 newkey = os.path.normcase(filename) | |
| 80 if newkey == key: | |
| 81 return | |
|
56436
684960fb1cbf
replace has_key with 'in' operator
Benjamin Peterson <benjamin@python.org>
parents:
47183
diff
changeset
|
82 if newkey in self.dict: |
| 13975 | 83 conflict = self.dict[newkey] |
| 84 self.inversedict[conflict] = None | |
| 85 tkMessageBox.showerror( | |
| 86 "Name Conflict", | |
|
31515
71a294bd7950
Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents:
29367
diff
changeset
|
87 "You now have multiple edit windows open for %r" % (filename,), |
| 13975 | 88 master=self.root) |
| 89 self.dict[newkey] = edit | |
| 90 self.inversedict[edit] = newkey | |
| 91 if key: | |
| 92 try: | |
| 93 del self.dict[key] | |
| 94 except KeyError: | |
| 95 pass | |
| 96 | |
| 97 def canonize(self, filename): | |
| 98 if not os.path.isabs(filename): | |
| 99 try: | |
| 100 pwd = os.getcwd() | |
| 101 except os.error: | |
| 102 pass | |
| 103 else: | |
| 104 filename = os.path.join(pwd, filename) | |
| 105 return os.path.normpath(filename) | |
| 106 | |
| 107 | |
|
18583
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
108 def _test(): |
| 13975 | 109 from EditorWindow import fixwordbreaks |
| 110 import sys | |
| 111 root = Tk() | |
| 112 fixwordbreaks(root) | |
| 113 root.withdraw() | |
| 114 flist = FileList(root) | |
| 115 if sys.argv[1:]: | |
| 116 for filename in sys.argv[1:]: | |
| 117 flist.open(filename) | |
| 118 else: | |
| 119 flist.new() | |
| 120 if flist.inversedict: | |
| 121 root.mainloop() | |
| 122 | |
| 123 if __name__ == '__main__': | |
|
18583
61e50d0aa59a
py-cvs-2000_07_13 (Rev 1.9) merge
Kurt B. Kaiser <kbk@shore.net>
parents:
18538
diff
changeset
|
124 _test() |
