mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
	
	
		
			58 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from Res import *
							 | 
						|||
| 
								 | 
							
								from 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.<2E>.rsrc', '::foo.rsrc')
							 |