mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from Carbon.Res import *
 | |
| from Carbon.Resources import *
 | |
| import MacOS
 | |
| 
 | |
| READ = 1
 | |
| WRITE = 2
 | |
| smAllScripts = -3
 | |
| 
 | |
| def copyres(src, dst):
 | |
| 	"""Copy resource from src file to dst file."""
 | |
| 	
 | |
| 	cur = CurResFile()
 | |
| 	ctor, type = MacOS.GetCreatorAndType(src)
 | |
| 	input = FSpOpenResFile(src, READ)
 | |
| 	try:
 | |
| 		FSpCreateResFile(dst, ctor, type, smAllScripts)
 | |
| 	except:
 | |
| 		raw_input("%s already exists...  CR to write anyway! " % dst)
 | |
| 	output = FSpOpenResFile(dst, WRITE)
 | |
| 	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)
 | |
| 			res.LoadResource()
 | |
| 			id, type, name = res.GetResInfo()
 | |
| 			size = res.SizeResource()
 | |
| 			attrs = res.GetResAttrs()
 | |
| 			print id, type, name, size, hex(attrs)
 | |
| 			res.DetachResource()
 | |
| 			UseResFile(output)
 | |
| 			try:
 | |
| 				res2 = Get1Resource(type, id)
 | |
| 			except (RuntimeError, Res.Error), msg:
 | |
| 				res2 = None
 | |
| 			if res2:
 | |
| 				print "Duplicate type+id, not copied"
 | |
| 				print (res2.size, res2.data)
 | |
| 				print res2.GetResInfo()
 | |
| 				if res2.HomeResFile() == output:
 | |
| 					'OK'
 | |
| 				elif res2.HomeResFile() == input:
 | |
| 					'BAD!'
 | |
| 				else:
 | |
| 					print 'Home:', res2.HomeResFile()
 | |
| 			else:
 | |
| 				res.AddResource(type, id, name)
 | |
| 				#res.SetResAttrs(attrs)
 | |
| 				res.WriteResource()
 | |
| 			UseResFile(input)
 | |
| 	UseResFile(cur)
 | |
| 	CloseResFile(output)
 | |
| 	CloseResFile(input)
 | |
| 
 | |
| copyres('::python.ยน.rsrc', '::foo.rsrc')
 | 
