44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
#
|
|
# Python GUI - File references and types - Cocoa
|
|
#
|
|
|
|
from struct import unpack
|
|
from Foundation import NSFileTypeForHFSTypeCode, \
|
|
NSFileManager, NSFileHFSCreatorCode, NSFileHFSTypeCode
|
|
from GUI.GFiles import FileRef as GFileRef, DirRef, FileType as GFileType
|
|
|
|
class FileType(GFileType):
|
|
|
|
def _ns_file_types(self):
|
|
# Return list of Cocoa file type specifications matched
|
|
# by this file type.
|
|
result = []
|
|
mac_type = self._mac_type
|
|
if mac_type:
|
|
result.append(NSFileTypeForHFSTypeCode(mac_type))
|
|
suffix = self._suffix
|
|
if suffix:
|
|
result.append(suffix)
|
|
return result
|
|
|
|
|
|
class FileRef(GFileRef):
|
|
|
|
def _set_type(self, file_type):
|
|
creator = file_type.mac_creator
|
|
type = file_type.mac_type
|
|
if creator is not None or type is not None:
|
|
fm = NSFileManager.defaultManager()
|
|
attrs = {}
|
|
if creator is not None:
|
|
attrs[NSFileHFSCreatorCode] = four_char_code(creator)
|
|
if type is not None:
|
|
attrs[NSFileHFSTypeCode] = four_char_code(type)
|
|
#print "FileRef: Setting attributes of %r to %s" % ( ###
|
|
# self.path, attrs) ###
|
|
fm.changeFileAttributes_atPath_(attrs, self.path)
|
|
|
|
|
|
def four_char_code(chars):
|
|
return unpack(">L", chars)[0]
|