Got rid of macfs and FSSpecs in general (pathnames or FSRefs are now
used everywhere).
diff --git a/Mac/Tools/IDE/MacPrefs.py b/Mac/Tools/IDE/MacPrefs.py
index 6c7c553..25dda4f 100644
--- a/Mac/Tools/IDE/MacPrefs.py
+++ b/Mac/Tools/IDE/MacPrefs.py
@@ -1,8 +1,7 @@
-import macfs
 import marshal
 import types
-
-from MACFS import kOnSystemDisk
+from Carbon import Folder
+from Carbon import Folders
 
 class PrefObject:
 	
@@ -71,8 +70,7 @@
 				prefdict[key] = value
 		marshal.dump(prefdict, open(self.__path, 'wb'))
 		try:
-			fss = macfs.FSSpec(macfs.FSRef(self.__path))
-			fss.SetCreatorType(self.__creator, 'pref')
+			MacOS.SetCreatorAndType(self.__path, self.__creator, 'pref')
 		except:
 			pass
 	
@@ -98,9 +96,8 @@
 	if _prefscache.has_key(prefname):
 		return _prefscache[prefname]
 	# Find the preferences folder and our prefs file, create if needed.
-	vrefnum, dirid = macfs.FindFolder(kOnSystemDisk, 'pref', 0)
-	prefsfolder_fss = macfs.FSSpec((vrefnum, dirid, ''))
-	prefsfolder = macfs.FSRef(prefsfolder_fss).as_fsspec().as_pathname()
+	fsr = Folder.FSFindFolder(Folders.kOnSystemDisk, 'pref', 1)
+	prefsfolder = fsr.as_pathname()
 	path = os.path.join(prefsfolder, prefname)
 	head, tail = os.path.split(path)
 	# make sure the folder(s) exist
diff --git a/Mac/Tools/IDE/ProfileBrowser.py b/Mac/Tools/IDE/ProfileBrowser.py
index c7a81cc..a19641c 100644
--- a/Mac/Tools/IDE/ProfileBrowser.py
+++ b/Mac/Tools/IDE/ProfileBrowser.py
@@ -83,7 +83,6 @@
 		stats = pstats.Stats(i)
 		browser = ProfileBrowser(stats)
 	else:
-		import macfs
 		filename = EasyDialogs.AskFileForOpen(message='Profiler data')
 		if not filename: sys.exit(0)
 		stats = pstats.Stats(filename)
diff --git a/Mac/Tools/IDE/PyBrowser.py b/Mac/Tools/IDE/PyBrowser.py
index d81c46f..19ddbef 100644
--- a/Mac/Tools/IDE/PyBrowser.py
+++ b/Mac/Tools/IDE/PyBrowser.py
@@ -322,9 +322,7 @@
 					editor.select()
 					return
 				elif os.path.exists(value) and os.path.isfile(value):
-					import macfs
-					fss = macfs.FSSpec(value)
-					if fss.GetCreatorType()[1] == 'TEXT':
+					if MacOS.GetCreatorAndType(value)[1] in ('TEXT', '\0\0\0\0'):
 						W.getapplication().openscript(value)
 	
 	def itemrepr(self, (key, value, arrow, indent), str = str, double_repr = double_repr, 
diff --git a/Mac/Tools/IDE/PyConsole.py b/Mac/Tools/IDE/PyConsole.py
index 27fc0cd..2bad07d 100644
--- a/Mac/Tools/IDE/PyConsole.py
+++ b/Mac/Tools/IDE/PyConsole.py
@@ -85,7 +85,6 @@
 				self._inputstart = selstart
 	
 	def domenu_save_as(self, *args):
-		import macfs
 		filename = EasyDialogs.AskFileForSave(message='Save console text as:', 
 			savedFileName='console.txt')
 		if not filename:
@@ -93,7 +92,7 @@
 		f = open(filename, 'wb')
 		f.write(self.get())
 		f.close()
-		fss.SetCreatorType(W._signature, 'TEXT')
+		MacOS.SetCreatorAndType(filename, W._signature, 'TEXT')
 	
 	def write(self, text):
 		self._buf = self._buf + text
@@ -242,7 +241,6 @@
 	
 	def domenu_save_as(self, *args):
 		title = self._parentwindow.gettitle()
-		import macfs
 		filename = EasyDialogs.AskFileForSave(message='Save %s text as:' % title, 
 			savedFileName=title + '.txt')
 		if not filename:
@@ -250,7 +248,7 @@
 		f = open(filename, 'wb')
 		f.write(self.get())
 		f.close()
-		fss.SetCreatorType(W._signature, 'TEXT')
+		MacOS.SetCreatorAndType(filename, W._signature, 'TEXT')
 	
 	def domenu_cut(self, *args):
 		self.domenu_copy(*args)
diff --git a/Mac/Tools/IDE/PyDocSearch.py b/Mac/Tools/IDE/PyDocSearch.py
index 61d3959..f9d2cb5 100644
--- a/Mac/Tools/IDE/PyDocSearch.py
+++ b/Mac/Tools/IDE/PyDocSearch.py
@@ -1,6 +1,5 @@
 import re
 import W
-import macfs
 import os
 import MacPrefs
 import MacOS
diff --git a/Mac/Tools/IDE/PyEdit.py b/Mac/Tools/IDE/PyEdit.py
index cd3f3cc..aa2f808 100644
--- a/Mac/Tools/IDE/PyEdit.py
+++ b/Mac/Tools/IDE/PyEdit.py
@@ -4,14 +4,13 @@
 import Wtraceback
 from Wkeys import *
 
-import macfs
-import MACFS
 import MacOS
 import EasyDialogs
 from Carbon import Win
 from Carbon import Res
 from Carbon import Evt
 from Carbon import Qd
+from Carbon import File
 import os
 import imp
 import sys
@@ -19,6 +18,8 @@
 import marshal
 import re
 
+smAllScripts = -3
+
 if hasattr(Win, "FrontNonFloatingWindow"):
 	MyFrontWindow = Win.FrontNonFloatingWindow
 else:
@@ -61,8 +62,7 @@
 			f = open(path, "rb")
 			text = f.read()
 			f.close()
-			fss = macfs.FSSpec(path)
-			self._creator, filetype = fss.GetCreatorType()
+			self._creator, filetype = MacOS.GetCreatorAndType(path)
 		else:
 			raise IOError, "file '%s' does not exist" % path
 		self.path = path
@@ -134,7 +134,7 @@
 		try:
 			resref = Res.FSpOpenResFile(self.path, 3)
 		except Res.Error:
-			Res.FSpCreateResFile(self.path, self._creator, 'TEXT', MACFS.smAllScripts)
+			Res.FSpCreateResFile(self.path, self._creator, 'TEXT', smAllScripts)
 			resref = Res.FSpOpenResFile(self.path, 3)
 		try:
 			data = Res.Resource(marshal.dumps(self.settings))
@@ -389,8 +389,7 @@
 		fp = open(self.path, 'wb')  # open file in binary mode, data has '\r' line-endings
 		fp.write(data)
 		fp.close()
-		fss = macfs.FSSpec(self.path)
-		fss.SetCreatorType(self._creator, 'TEXT')
+		MacOS.SetCreatorAndType(self.path, self._creator, 'TEXT')
 		self.getsettings()
 		self.writewindowsettings()
 		self.editgroup.editor.changed = 0
@@ -419,8 +418,8 @@
 		app.makeopenwindowsmenu()
 		if hasattr(app, 'makescriptsmenu'):
 			app = W.getapplication()
-			fss, fss_changed = app.scriptsfolder.Resolve()
-			path = fss.as_pathname()
+			fsr, changed = app.scriptsfolder.FSResolveAlias(None)
+			path = fsr.as_pathname()
 			if path == self.path[:len(path)]:
 				W.getapplication().makescriptsmenu()
 	
@@ -546,14 +545,8 @@
 		interp_path = os.path.join(sys.exec_prefix, "bin", "python")
 		file_path = self.path
 		if not os.path.exists(interp_path):
-			# This "can happen" if we are running IDE under MacPython. Try
-			# the standard location.
-			interp_path = "/Library/Frameworks/Python.framework/Versions/2.3/bin/python"
-			try:
-				fsr = macfs.FSRef(interp_path)
-			except macfs.Error:
-				raise W.AlertError, "Can't find command-line Python"
-			file_path = macfs.FSRef(macfs.FSSpec(self.path)).as_pathname()
+			# This "can happen" if we are running IDE under MacPython-OS9.
+			raise W.AlertError, "Can't find command-line Python"
 		cmd = '"%s" "%s" ; exit' % (interp_path, file_path)
 		t = Terminal.Terminal()
 		t.do_script(with_command=cmd)
@@ -1368,8 +1361,10 @@
 
 def resolvealiases(path):
 	try:
-		return macfs.ResolveAliasFile(path)[0].as_pathname()
-	except (macfs.error, ValueError), (error, str):
+		fsr, d1, d2 = File.FSResolveAliasFile(path, 1)
+		path = fsr.as_pathname()
+		return path
+	except (File.Error, ValueError), (error, str):
 		if error <> -120:
 			raise
 		dir, file = os.path.split(path)
diff --git a/Mac/Tools/IDE/PythonIDEMain.py b/Mac/Tools/IDE/PythonIDEMain.py
index 765d988..365082d 100644
--- a/Mac/Tools/IDE/PythonIDEMain.py
+++ b/Mac/Tools/IDE/PythonIDEMain.py
@@ -7,9 +7,10 @@
 import W
 import os
 import sys
-import macfs
 import MacOS
 import EasyDialogs
+from Carbon import File
+from Carbon import Files
 
 if MacOS.runtimemodel == 'macho':
 	ELIPSES = '...'
@@ -23,6 +24,10 @@
 	value = gestalt("menu") & gestaltMenuMgrAquaLayoutMask
 	return not not value
 
+def getmodtime(file):
+	file = File.FSRef(file)
+	catinfo, d1, d2, d3 = file.FSGetCatalogInfo(Files.kFSCatInfoContentMod)
+	return catinfo.contentModDate
 
 class PythonIDE(Wapplication.Application):
 	
@@ -125,21 +130,21 @@
 		
 		prefs = self.getprefs()
 		try:
-			fss, fss_changed = macfs.RawAlias(prefs.scriptsfolder).Resolve()
-			self.scriptsfolder = fss.NewAlias()
+			fsr, d = File.Alias(rawdata=prefs.scriptsfolder).FSResolveAlias(None)
+			self.scriptsfolder = fsr.FSNewAliasMinimal()
 		except:
-			path = os.path.join(os.getcwd(), ":Mac:IDE scripts")
+			path = os.path.join(os.getcwd(), "Mac", "IDE scripts")
 			if not os.path.exists(path):
 				path = os.path.join(os.getcwd(), "Scripts")
 				if not os.path.exists(path):
 					os.mkdir(path)
 					f = open(os.path.join(path, "Place your scripts here"+ELIPSES), "w")
 					f.close()
-			fss = macfs.FSSpec(path)
-			self.scriptsfolder = fss.NewAlias()
-			self.scriptsfoldermodtime = fss.GetDates()[1]
+			fsr = File.FSRef(path)
+			self.scriptsfolder = fsr.FSNewAliasMinimal()
+			self.scriptsfoldermodtime = getmodtime(fsr)
 		else:
-			self.scriptsfoldermodtime = fss.GetDates()[1]
+			self.scriptsfoldermodtime = getmodtime(fsr)
 		prefs.scriptsfolder = self.scriptsfolder.data
 		self._scripts = {}
 		self.scriptsmenu = None
@@ -153,9 +158,9 @@
 	
 	def suspendresume(self, onoff):
 		if onoff:
-			fss, fss_changed = self.scriptsfolder.Resolve()
-			modtime = fss.GetDates()[1]
-			if self.scriptsfoldermodtime <> modtime or fss_changed:
+			fsr, changed = self.scriptsfolder.FSResolveAlias(None)
+			modtime = getmodtime(fsr)
+			if self.scriptsfoldermodtime <> modtime or changed:
 				self.scriptsfoldermodtime = modtime
 				W.SetCursor('watch')
 				self.makescriptsmenu()
@@ -171,12 +176,12 @@
 		if type(docs) <> type([]):
 			docs = [docs]
 		for doc in docs:
-			fss, a = doc.Resolve()
-			path = fss.as_pathname()
+			fsr, a = doc.FSResolveAlias(None)
+			path = fsr.as_pathname()
 			self.opendoc(path)
 	
 	def opendoc(self, path):
-		fcreator, ftype = macfs.FSSpec(path).GetCreatorType()
+		fcreator, ftype = MacOS.GetCreatorAndType(path)
 		if ftype == 'TEXT':
 			self.openscript(path)
 		elif ftype == '\0\0\0\0' and path[-3:] == '.py':
@@ -191,11 +196,11 @@
 		Splash.about()
 	
 	def do_setscriptsfolder(self, *args):
-		fss = EasyDialogs.AskFolder(message="Select Scripts Folder",
-			wanted=macfs.FSSpec)
-		if fss:
+		fsr = EasyDialogs.AskFolder(message="Select Scripts Folder",
+			wanted=File.FSRef)
+		if fsr:
 			prefs = self.getprefs()
-			alis = fss.NewAlias()
+			alis = fsr.FSNewAliasMinimal()
 			prefs.scriptsfolder = alis.data
 			self.scriptsfolder = alis
 			self.makescriptsmenu()
@@ -246,8 +251,8 @@
 		self.scriptsmenu = FrameWork.Menu(self.menubar, "Scripts")
 		#FrameWork.MenuItem(self.scriptsmenu, "New script", None, self.domenu_new)
 		#self.scriptsmenu.addseparator()
-		fss, fss_changed = self.scriptsfolder.Resolve()
-		self.scriptswalk(fss.as_pathname(), self.scriptsmenu)
+		fsr, d1 = self.scriptsfolder.FSResolveAlias(None)
+		self.scriptswalk(fsr.as_pathname(), self.scriptsmenu)
 	
 	def makeopenwindowsmenu(self):
 		for i in range(len(self.openwindowsmenu.items)):
diff --git a/Mac/Tools/IDE/Wapplication.py b/Mac/Tools/IDE/Wapplication.py
index 5ad5589..abeee60 100644
--- a/Mac/Tools/IDE/Wapplication.py
+++ b/Mac/Tools/IDE/Wapplication.py
@@ -8,6 +8,7 @@
 from types import *
 from Carbon import Menu; MenuToolbox = Menu; del Menu
 import macresource
+from Carbon import File
 
 if hasattr(Win, "FrontNonFloatingWindow"):
 	MyFrontWindow = Win.FrontNonFloatingWindow
@@ -273,7 +274,7 @@
 		if done.has_key(top):
 			return
 		done[top] = 1
-		import os, macfs, string
+		import os, string
 		try:
 			names = os.listdir(top)
 		except os.error:
@@ -285,11 +286,11 @@
 			if name == "CVS":
 				continue
 			try:
-				fss, isdir, isalias = macfs.ResolveAliasFile(name)
+				fsr, isdir, isalias = File.FSResolveAliasFile(name, 1)
 			except:
 				# maybe a broken alias
 				continue
-			path = fss.as_pathname()
+			path = fsr.as_pathname()
 			if done.has_key(path):
 				continue
 			name = string.strip(name)
@@ -301,7 +302,7 @@
 				submenu = FrameWork.SubMenu(menu, name)
 				self.scriptswalk(path, submenu, done)
 			else:
-				creator, type = fss.GetCreatorType()
+				creator, type = MacOS.GetCreatorAndType(path)
 				if type == 'TEXT':
 					if name[-3:] == '.py':
 						name = name[:-3]
diff --git a/Mac/Tools/IDE/Wquicktime.py b/Mac/Tools/IDE/Wquicktime.py
index 7170cd7..421d558 100644
--- a/Mac/Tools/IDE/Wquicktime.py
+++ b/Mac/Tools/IDE/Wquicktime.py
@@ -3,7 +3,7 @@
 from Carbon import Win
 from Carbon import Qt, QuickTime
 import W
-import macfs
+from Carbon import File
 from Carbon import Evt, Events
 
 _moviesinitialized = 0
@@ -33,14 +33,9 @@
 		if self.movie:
 			#self.GetWindow().InvalWindowRect(self.movie.GetMovieBox())
 			Qd.PaintRect(self.movie.GetMovieBox())
-		if type(path_or_fss) == type(''):
-			path = path_or_fss
-			fss = macfs.FSSpec(path)
-		else:
-			path = path_or_fss.as_pathname()
-			fss = path_or_fss
+		path = File.pathname(path)
 		self.movietitle = os.path.basename(path)
-		movieResRef = Qt.OpenMovieFile(fss, 1)
+		movieResRef = Qt.OpenMovieFile(path_or_fss, 1)
 		self.movie, dummy, dummy = Qt.NewMovieFromFile(movieResRef, 0, QuickTime.newMovieActive)
 		self.moviebox = self.movie.GetMovieBox()
 		self.calcmoviebox()