real dialogs for warnings etc., copy applet.rsrc template too
diff --git a/Mac/mkapplet.py b/Mac/mkapplet.py
index a99effa..be20ecb 100644
--- a/Mac/mkapplet.py
+++ b/Mac/mkapplet.py
@@ -45,8 +45,7 @@
 		except IOError:
 			continue
 	else:
-		# XXX Ought to put up a dialog
-		print "Template", `template`, "not found"
+		die("Template %s not found" % `template`)
 		return
 	
 	# Ask for source text if not specified in sys.argv[1:]
@@ -79,15 +78,17 @@
 	try:
 		code = compile(text, filename, "exec")
 	except (SyntaxError, EOFError):
-		print "Syntax error in script", `filename`
+		die("Syntax error in script %s" % `filename`)
 		return
 	
 	# Set the destination file name
 	
 	if string.lower(filename[-3:]) == ".py":
 		destname = filename[:-3]
+		rsrcname = destname + '.rsrc'
 	else:
 		destname = filename + ".applet"
+		rsrcname = filename + '.rsrc'
 	
 	# Copy the data from the template (creating the file as well)
 	
@@ -100,16 +101,16 @@
 	tmpl.close()
 	
 	# Copy the creator of the template to the destination
-	# unless it already has one. Set type to APPL
+	# unless it already got one.  Set type to APPL
+	
 	tctor, ttype = MacOS.GetCreatorAndType(template)
 	ctor, type = MacOS.GetCreatorAndType(destname)
 	if type in undefs: type = 'APPL'
 	if ctor in undefs: ctor = tctor
 	MacOS.SetCreatorAndType(destname, ctor, type)
 	
-	# Open the input and output resource forks
+	# Open the output resource fork
 	
-	input = FSpOpenResFile(template, READ)
 	try:
 		output = FSpOpenResFile(destname, WRITE)
 	except MacOS.Error:
@@ -117,38 +118,22 @@
 		CreateResFile(destname)
 		output = FSpOpenResFile(destname, WRITE)
 	
-	# Copy the resources from the template,
-	# except a 'PYC ' resource named __main__
+	# Copy the resources from the template
 	
-	UseResFile(input)
-	ntypes = Count1Types()
-	for itype in range(1, 1+ntypes):
-		type = Get1IndType(itype)
-		nresources = Count1Resources(type)
-		for ires in range(1, 1+nresources):
-			res = Get1IndResource(type, ires)
-			id, type, name = res.GetResInfo()
-			if (type, name) == (RESTYPE, RESNAME):
-				continue # Don't copy __main__ from template
-			size = res.SizeResource()
-			attrs = res.GetResAttrs()
-			print id, type, name, size, hex(attrs)
-			res.LoadResource()
-			res.DetachResource()
-			UseResFile(output)
-			try:
-				res2 = Get1Resource(type, id)
-			except MacOS.Error:
-				res2 = None
-			if res2:
-				print "Overwriting..."
-				res2.RmveResource()
-			res.AddResource(type, id, name)
-			#res.SetResAttrs(attrs)
-			res.WriteResource()
-			UseResFile(input)
+	input = FSpOpenResFile(template, READ)
+	copyres(input, output)
 	CloseResFile(input)
 	
+	# Copy the resources from the target specific resource template, if any
+	
+	try:
+		input = FSpOpenResFile(rsrcname, READ)
+	except MacOS.Error:
+		pass
+	else:
+		copyres(input, output)
+		CloseResFile(input)
+	
 	# Make sure we're manipulating the output resource file now
 	
 	UseResFile(output)
@@ -177,11 +162,70 @@
 	res.WriteResource()
 	res.ReleaseResource()
 	
-	# Close the resource file
+	# Close the output file
 	
 	CloseResFile(output)
 	
-	print "Done with", `filename`, "..."
+	# Give positive feedback
+	
+	message("Applet %s created." % `destname`)
+
+
+# Copy resources between two resource file descriptors
+# Exception: don't copy a __main__ resource
+
+def copyres(input, output):
+	UseResFile(input)
+	ntypes = Count1Types()
+	for itype in range(1, 1+ntypes):
+		type = Get1IndType(itype)
+		nresources = Count1Resources(type)
+		for ires in range(1, 1+nresources):
+			res = Get1IndResource(type, ires)
+			id, type, name = res.GetResInfo()
+			if (type, name) == (RESTYPE, RESNAME):
+				continue # Don't copy __main__ from template
+			size = res.SizeResource()
+			attrs = res.GetResAttrs()
+			print id, type, name, size, hex(attrs)
+			res.LoadResource()
+			res.DetachResource()
+			UseResFile(output)
+			try:
+				res2 = Get1Resource(type, id)
+			except MacOS.Error:
+				res2 = None
+			if res2:
+				print "Overwriting..."
+				res2.RmveResource()
+			res.AddResource(type, id, name)
+			#res.SetResAttrs(attrs)
+			res.WriteResource()
+			UseResFile(input)
+
+
+# Show a message and exit
+
+def die(str):
+	message(str)
+	sys.exit(1)
+
+
+# Show a message
+
+def message(str, id = 256):
+	from Dlg import *
+	d = GetNewDialog(id, -1)
+	if not d:
+		print "Error:", `str`
+		print "DLOG id =", id, "not found."
+		return
+	tp, h, rect = d.GetDItem(2)
+	SetIText(h, str)
+	while 1:
+		n = ModalDialog(None)
+		if n == 1: break
+	del d
 
 
 if __name__ == '__main__':