Use the new macresource module to open the accompanying resource file (if needed).
diff --git a/Mac/Demo/PICTbrowse/ICONbrowse.py b/Mac/Demo/PICTbrowse/ICONbrowse.py
index 162fcb6..902b5c7 100644
--- a/Mac/Demo/PICTbrowse/ICONbrowse.py
+++ b/Mac/Demo/PICTbrowse/ICONbrowse.py
@@ -10,6 +10,7 @@
 import sys
 import struct
 from Carbon import Icn
+import macresource
 
 #
 # Resource definitions
@@ -26,14 +27,7 @@
 MAXHEIGHT=320
 
 def main():
-	try:
-		dummy = Res.GetResource('DLOG', ID_MAIN)
-	except Res.Error:
-		try:
-			Res.FSpOpenResFile("PICTbrowse.rsrc", 1)
-		except Res.Error, arg:
-			EasyDialogs.Message("Cannot open PICTbrowse.rsrc: "+arg[1])
-			sys.exit(1)	
+	macresource.need('DLOG', ID_MAIN, "PICTbrowse.rsrc")
 	ICONbrowse()
 
 class ICONbrowse(FrameWork.Application):
diff --git a/Mac/Demo/PICTbrowse/PICTbrowse.py b/Mac/Demo/PICTbrowse/PICTbrowse.py
index e45b18c..41ffa5c 100644
--- a/Mac/Demo/PICTbrowse/PICTbrowse.py
+++ b/Mac/Demo/PICTbrowse/PICTbrowse.py
@@ -9,6 +9,7 @@
 from Carbon import List
 import sys
 import struct
+import macresource
 
 #
 # Resource definitions
@@ -21,14 +22,7 @@
 TOP=64
 
 def main():
-	try:
-		dummy = Res.GetResource('DLOG', ID_MAIN)
-	except Res.Error:
-		try:
-			Res.FSpOpenResFile("PICTbrowse.rsrc", 1)
-		except Res.Error, arg:
-			EasyDialogs.Message("Cannot open PICTbrowse.rsrc: "+arg[1])
-			sys.exit(1)	
+	macresource.need('DLOG', ID_MAIN, "PICTbrowse.rsrc")
 	PICTbrowse()
 
 class PICTbrowse(FrameWork.Application):
diff --git a/Mac/Demo/PICTbrowse/PICTbrowse2.py b/Mac/Demo/PICTbrowse/PICTbrowse2.py
index 7e146ed..0e11681 100644
--- a/Mac/Demo/PICTbrowse/PICTbrowse2.py
+++ b/Mac/Demo/PICTbrowse/PICTbrowse2.py
@@ -9,6 +9,7 @@
 from Carbon import List
 import sys
 import struct
+import macresource
 
 #
 # Resource definitions
@@ -25,14 +26,7 @@
 MAXHEIGHT=320
 
 def main():
-	try:
-		dummy = Res.GetResource('DLOG', ID_MAIN)
-	except Res.Error:
-		try:
-			Res.FSpOpenResFile("PICTbrowse.rsrc", 1)
-		except Res.Error, arg:
-			EasyDialogs.Message("Cannot open PICTbrowse.rsrc: "+arg[1])
-			sys.exit(1)	
+	macresource.need('DLOG', ID_MAIN, "PICTbrowse.rsrc")
 	PICTbrowse()
 
 class PICTbrowse(FrameWork.Application):
diff --git a/Mac/Demo/PICTbrowse/cicnbrowse.py b/Mac/Demo/PICTbrowse/cicnbrowse.py
index 89f8218..561dcf9 100644
--- a/Mac/Demo/PICTbrowse/cicnbrowse.py
+++ b/Mac/Demo/PICTbrowse/cicnbrowse.py
@@ -10,6 +10,7 @@
 import sys
 import struct
 from Carbon import Icn
+import macresource
 
 #
 # Resource definitions
@@ -26,14 +27,7 @@
 MAXHEIGHT=320
 
 def main():
-	try:
-		dummy = Res.GetResource('DLOG', ID_MAIN)
-	except Res.Error:
-		try:
-			Res.FSpOpenResFile("PICTbrowse.rsrc", 1)
-		except Res.Error, arg:
-			EasyDialogs.Message("Cannot open PICTbrowse.rsrc: "+arg[1])
-			sys.exit(1)	
+	macresource.need('DLOG', ID_MAIN, "PICTbrowse.rsrc")
 	CIconbrowse()
 
 class CIconbrowse(FrameWork.Application):
@@ -119,9 +113,9 @@
 	def open(self, id, contents):
 		self.id = id
 		FrameWork.DialogWindow.open(self, ID_MAIN)
-		self.wid.SetDialogDefaultItem(MAIN_SHOW)
+		self.dlg.SetDialogDefaultItem(MAIN_SHOW)
 		self.contents = contents
-		self.ctl = self.wid.GetDialogItemAsControl(MAIN_LIST)
+		self.ctl = self.dlg.GetDialogItemAsControl(MAIN_LIST)
 		h = self.ctl.GetControlData_Handle(Controls.kControlListBoxPart, 
 				Controls.kControlListBoxListHandleTag)
 		self.list = List.as_List(h)
diff --git a/Mac/Demo/PICTbrowse/oldPICTbrowse.py b/Mac/Demo/PICTbrowse/oldPICTbrowse.py
index 01cf71c..dc1f5b4 100644
--- a/Mac/Demo/PICTbrowse/oldPICTbrowse.py
+++ b/Mac/Demo/PICTbrowse/oldPICTbrowse.py
@@ -8,6 +8,7 @@
 from Carbon import List
 import sys
 import struct
+import macresource
 
 #
 # Resource definitions
@@ -20,14 +21,7 @@
 TOP=64
 
 def main():
-	try:
-		dummy = Res.GetResource('DLOG', ID_MAIN)
-	except Res.Error:
-		try:
-			Res.FSpOpenResFile("oldPICTbrowse.rsrc", 0)
-		except Res.Error, arg:
-			EasyDialogs.Message("Cannot open PICTbrowse.rsrc: "+arg[1])
-			sys.exit(1)	
+	macresource.need('DLOG', ID_MAIN, "oldPICTbrowse.rsrc")
 	PICTbrowse()
 
 class PICTbrowse(FrameWork.Application):
diff --git a/Mac/Demo/example1/dnslookup-1.py b/Mac/Demo/example1/dnslookup-1.py
index 9a2ab28..2aa7c88 100644
--- a/Mac/Demo/example1/dnslookup-1.py
+++ b/Mac/Demo/example1/dnslookup-1.py
@@ -7,6 +7,7 @@
 import sys
 import socket
 import string
+import macresource
 #
 # Definitions for our resources
 ID_MAIN=512
@@ -15,15 +16,10 @@
 ITEM_RESULT=2
 ITEM_LOOKUP_BUTTON=3
 ITEM_QUIT_BUTTON=4
-    
-            
+
 def main():
     """Main routine: open resource file, call dialog handler"""
-    try:
-        Res.FSpOpenResFile("dnslookup-1.rsrc", 1)
-    except Res.Error:
-        EasyDialogs.Message("Cannot open dnslookup-1.rsrc")
-        sys.exit(1) 
+    macresource.need("DLOG", ID_MAIN, "dnslookup-1.rsrc")
     do_dialog()
 
 def do_dialog():
diff --git a/Mac/Demo/example2/dnslookup-2.py b/Mac/Demo/example2/dnslookup-2.py
index 20e7fa5..9747c4a 100644
--- a/Mac/Demo/example2/dnslookup-2.py
+++ b/Mac/Demo/example2/dnslookup-2.py
@@ -5,6 +5,7 @@
 import sys
 import socket
 import string
+import macresource
 #
 # Definitions for our resources
 ID_MAIN=512
@@ -15,14 +16,7 @@
 ITEM_LOOKUP_BUTTON=3
 
 def main():
-    try:
-        dummy = Res.GetResource('DLOG', ID_MAIN)
-    except Res.Error:
-        try:
-            Res.FSpOpenResFile("dnslookup-2.rsrc", 1)
-        except Res.Error:
-            EasyDialogs.Message("Cannot open dnslookup-2.rsrc")
-            sys.exit(1) 
+    macresource.need("DLOG", ID_MAIN, "dnslookup-2.rsrc")
     DNSLookup()
     
 class DNSLookup(FrameWork.Application):
diff --git a/Mac/Tools/IDE/PythonIDE.py b/Mac/Tools/IDE/PythonIDE.py
index bc22e79..5ebe97a 100644
--- a/Mac/Tools/IDE/PythonIDE.py
+++ b/Mac/Tools/IDE/PythonIDE.py
@@ -13,25 +13,17 @@
 	from Carbon import Qd, QuickDraw
 	Qd.SetCursor(Qd.GetCursor(QuickDraw.watchCursor).data)
 	
-	from Carbon import Res
+	import macresource
 	import sys, os
-	try:
-		Res.GetResource('DITL', 468)
-	except Res.Error:
-		# we're not an applet
-		Res.FSpOpenResFile(os.path.join(sys.exec_prefix, ":Mac:Tools:IDE:PythonIDE.rsrc"), 1)
-		Res.FSpOpenResFile(os.path.join(sys.exec_prefix, ":Mac:Tools:IDE:Widgets.rsrc"), 1)
+	macresource.need('DITL', 468, "PythonIDE.rsrc")
+	widgetresfile = os.path.join(sys.exec_prefix, ":Mac:Tools:IDE:Widgets.rsrc")
+	refno = macresource.need('CURS', 468, widgetresfile)
+	if refno:
+		# We're not a fullblown application
 		ide_path = os.path.join(sys.exec_prefix, ":Mac:Tools:IDE")
 	else:
-		# we're an applet
-		try:
-			Res.GetResource('CURS', 468)
-		except Res.Error:
-			Res.FSpOpenResFile(os.path.join(sys.exec_prefix, ":Mac:Tools:IDE:Widgets.rsrc"), 1)
-			ide_path = os.path.join(sys.exec_prefix, ":Mac:Tools:IDE")
-		else:
-			# we're a full blown applet
-			ide_path = sys.argv[0]
+		# We are a fully frozen application
+		ide_path = sys.argv[0]
 	if ide_path not in sys.path:
 		sys.path.insert(0, ide_path)
 
diff --git a/Mac/Tools/macfreeze/macfreezegui.py b/Mac/Tools/macfreeze/macfreezegui.py
index a834138..7921a29 100644
--- a/Mac/Tools/macfreeze/macfreezegui.py
+++ b/Mac/Tools/macfreeze/macfreezegui.py
@@ -6,6 +6,7 @@
 import os
 import string
 from Carbon import Res
+import macresource
 
 ID_MAINDIALOG=512
 
@@ -54,17 +55,8 @@
 	dirname = os.path.join(dirname, 'build.'+basebase)
 	
 	# Get the dialog, possibly opening the resource file (if needed)
-	try:
-		d = Dlg.GetNewDialog(ID_MAINDIALOG, -1)
-	except Dlg.Error:
-		d = None
-	if d == None:
-		try:
-			Res.FSpOpenResFile('macfreeze.rsrc', 1)
-		except Res.Error:
-			d = None
-		else:
-			d = Dlg.GetNewDialog(ID_MAINDIALOG, -1)
+	macresource.need('DLOG', ID_MAINDIALOG, 'macfreeze.rsrc')
+	d = Dlg.GetNewDialog(ID_MAINDIALOG, -1)
 	if d == None:
 		EasyDialogs.Message("Dialog resource not found or faulty")
 		sys.exit(1)
diff --git a/Mac/scripts/BuildApplication.py b/Mac/scripts/BuildApplication.py
index ee82b7a..a7c8f40 100644
--- a/Mac/scripts/BuildApplication.py
+++ b/Mac/scripts/BuildApplication.py
@@ -18,6 +18,7 @@
 from Carbon import Dlg
 import EasyDialogs
 import buildtools
+import macresource
 
 # Hmmm...
 MACFREEZEPATH = os.path.join(sys.prefix, ":Mac:Tools:macfreeze")
@@ -38,13 +39,7 @@
 PPC_ONLY=1
 
 
-try:
-	Res.GetResource('DITL', DLG_ID)
-except Res.Error:
-	Res.FSpOpenResFile("BuildApplication.rsrc", 1)
-else:
-	pass # we're an applet
-
+macresource.need('DITL', DLG_ID, "BuildApplication.rsrc")
 
 def main():
 	try:
diff --git a/Mac/scripts/EditPythonPrefs.py b/Mac/scripts/EditPythonPrefs.py
index 00119e0..833e607 100644
--- a/Mac/scripts/EditPythonPrefs.py
+++ b/Mac/scripts/EditPythonPrefs.py
@@ -15,6 +15,7 @@
 import sys
 from Carbon import Res # For Res.Error
 import pythonprefs
+import macresource
 import EasyDialogs
 try:
 	from Carbon import Help
@@ -195,10 +196,7 @@
 		handler.save(result)
 
 def main():
-	try:
-		h = FSpOpenResFile('EditPythonPrefs.rsrc', 1)
-	except Res.Error:
-		pass	# Assume we already have acces to our own resource
+	macresource.need('DLOG', DIALOG_ID, 'EditPythonPrefs.rsrc')
 	
 	MacOS.SchedParams(1, 0)
 	if len(sys.argv) <= 1:
diff --git a/Mac/scripts/MkDistr_ui.py b/Mac/scripts/MkDistr_ui.py
index 3ea78a9..5386950 100644
--- a/Mac/scripts/MkDistr_ui.py
+++ b/Mac/scripts/MkDistr_ui.py
@@ -23,6 +23,7 @@
 import macfs
 import os
 import sys
+import macresource
 
 # Resource IDs
 ID_MAIN = 514
@@ -321,7 +322,7 @@
 			
 def InitUI():
 	"""Initialize stuff needed by UI (a resource file)"""
-	Res.FSpOpenResFile('MkDistr.rsrc', 1)
+	macresource.need('DLOG', ID_MAIN, 'MkDistr.rsrc', modname=__name__)
 
 class _testerhelp:
 	def __init__(self, which):
@@ -340,7 +341,7 @@
 class _test:
 	def __init__(self):
 		import sys
-		Res.FSpOpenResFile('MkDistr.rsrc', 1)
+		InitUI()
 		self.inc = _testerhelp('include')
 		self.exc = _testerhelp('exclude')
 		self.ui = MkDistrUI(self)
diff --git a/Mac/scripts/fullbuild.py b/Mac/scripts/fullbuild.py
index f5ccfc9..8954739 100644
--- a/Mac/scripts/fullbuild.py
+++ b/Mac/scripts/fullbuild.py
@@ -19,6 +19,7 @@
 import re
 import string
 import genpluginprojects
+import macresource
 
 import aetools
 from Carbon import AppleEvents
@@ -369,11 +370,7 @@
 	fp.close()
 				
 def main():
-	try:
-		h = Res.FSpOpenResFile('fullbuild.rsrc', 1)
-	except Res.Error:
-		pass	# Assume we already have acces to our own resource
-
+	macresource.need('DLOG', DIALOG_ID, 'fullbuild.rsrc')
 	dir, ok = macfs.GetDirectory('Python source folder:')
 	if not ok:
 		sys.exit(0)