1 # changes by dscherer@cmu.edu
2 # - FileList.open() takes an optional 3rd parameter action, which is
3 # called instead of creating a new EditorWindow. This enables
4 # things like 'open in same window'.
12 #$ event <<open-new-window>>
14 #$ unix <Control-x><Control-n>
16 # (This is labeled as 'Exit'in the File menu)
17 #$ event <<close-all-windows>>
19 #$ unix <Control-x><Control-c>
23 from EditorWindow
import EditorWindow
24 EditorWindow
.Toplevel
= WindowList
.ListedToplevel
# XXX Patch it!
26 def __init__(self
, root
):
30 self
.vars = {} # For EditorWindow.getrawvar (shared Tcl variables)
32 def open(self
, filename
, action
=None):
34 filename
= self
.canonize(filename
)
35 if os
.path
.isdir(filename
):
36 tkMessageBox
.showerror(
38 "The path %s is a directory." % `filename`
,
41 key
= os
.path
.normcase(filename
)
42 if self
.dict.has_key(key
):
46 if not os
.path
.exists(filename
):
47 tkMessageBox
.showinfo(
49 "Opening non-existent file %s" % `filename`
,
52 return self
.EditorWindow(self
, filename
, key
)
54 return action(filename
)
56 def gotofileline(self
, filename
, lineno
=None):
57 edit
= self
.open(filename
)
58 if edit
is not None and lineno
is not None:
62 return self
.EditorWindow(self
)
64 def new_callback(self
, event
):
68 def close_all_callback(self
, event
):
69 for edit
in self
.inversedict
.keys():
75 def close_edit(self
, edit
):
77 key
= self
.inversedict
[edit
]
79 print "Don't know this EditorWindow object. (close)"
83 del self
.inversedict
[edit
]
84 if not self
.inversedict
:
87 def filename_changed_edit(self
, edit
):
88 edit
.saved_change_hook()
90 key
= self
.inversedict
[edit
]
92 print "Don't know this EditorWindow object. (rename)"
94 filename
= edit
.io
.filename
98 self
.inversedict
[edit
] = None
100 filename
= self
.canonize(filename
)
101 newkey
= os
.path
.normcase(filename
)
104 if self
.dict.has_key(newkey
):
105 conflict
= self
.dict[newkey
]
106 self
.inversedict
[conflict
] = None
107 tkMessageBox
.showerror(
109 "You now have multiple edit windows open for %s" % `filename`
,
111 self
.dict[newkey
] = edit
112 self
.inversedict
[edit
] = newkey
119 def canonize(self
, filename
):
120 if not os
.path
.isabs(filename
):
126 filename
= os
.path
.join(pwd
, filename
)
127 return os
.path
.normpath(filename
)
131 from EditorWindow
import fixwordbreaks
136 flist
= FileList(root
)
138 for filename
in sys
.argv
[1:]:
142 if flist
.inversedict
:
145 if __name__
== '__main__':