module System.GIO.File.FileAttribute (
FileAttributeType (..),
FileAttributeInfo (..),
FileAttributeInfoFlags (..),
fileAttributeStandardType,
fileAttributeStandardIsHidden,
fileAttributeStandardIsBackup,
fileAttributeStandardIsSymlink,
fileAttributeStandardIsVirtual,
fileAttributeStandardName,
fileAttributeStandardDisplayName,
fileAttributeStandardEditName,
fileAttributeStandardCopyName,
fileAttributeStandardIcon,
fileAttributeStandardContentType,
fileAttributeStandardFastContentType,
fileAttributeStandardSize,
fileAttributeStandardSymlinkTarget,
fileAttributeStandardTargetURI,
fileAttributeStandardSortOrder,
fileAttributeEtagValue,
fileAttributeIDFile,
fileAttributeIDFilesystem,
fileAttributeAccessCanRead,
fileAttributeAccessCanWrite,
fileAttributeAccessCanExecute,
fileAttributeAccessCanDelete,
fileAttributeAccessCanTrash,
fileAttributeAccessCanRename,
fileAttributeMountableCanMount,
fileAttributeMountableCanUnmount,
fileAttributeMountableCanEject,
fileAttributeMountableUnixDevice,
fileAttributeMountableHalUDI,
fileAttributeTimeModified,
fileAttributeTimeModifiedUSec,
fileAttributeTimeAccess,
fileAttributeTimeAccessUSec,
fileAttributeTimeChanged,
fileAttributeTimeChangedUSec,
fileAttributeTimeCreated,
fileAttributeTimeCreatedUSec,
fileAttributeUnixDevice,
fileAttributeUnixInode,
fileAttributeUnixMode,
fileAttributeUnixNLink,
fileAttributeUnixUID,
fileAttributeUnixGID,
fileAttributeUnixRDev,
fileAttributeUnixBlockSize,
fileAttributeUnixBlocks,
fileAttributeDosIsArchive,
fileAttributeDosIsSystem,
fileAttributeOwnerUser,
fileAttributeOwnerUserReal,
fileAttributeOwnerGroup,
fileAttributeThumbnailPath,
fileAttributeThumbnailingFailed,
fileAttributeFilesystemSize,
fileAttributeFilesystemFree,
fileAttributeFilesystemType,
fileAttributeFilesystemReadonly,
fileAttributeGVfsBackend,
fileAttributeSELinuxContext,
fileAttributeTrashItemCount,
fileAttributeFilesystemUsePreview,
fileAttributeStandardDescription,
) where
import System.Glib.FFI
import System.Glib.UTFString
import System.GIO.Base
data FileAttributeType = FileAttributeTypeInvalid
| FileAttributeTypeString
| FileAttributeTypeByteString
| FileAttributeTypeBool
| FileAttributeTypeWord32
| FileAttributeTypeInt32
| FileAttributeTypeWord64
| FileAttributeTypeInt64
| FileAttributeTypeObject
deriving (Eq, Ord, Bounded, Show, Read)
instance Enum FileAttributeType where
toEnum 0 = FileAttributeTypeInvalid
toEnum 1 = FileAttributeTypeString
toEnum 2 = FileAttributeTypeByteString
toEnum 3 = FileAttributeTypeBool
toEnum 4 = FileAttributeTypeWord32
toEnum 5 = FileAttributeTypeInt32
toEnum 6 = FileAttributeTypeWord64
toEnum 7 = FileAttributeTypeInt64
toEnum 8 = FileAttributeTypeObject
fromEnum FileAttributeTypeInvalid = 0
fromEnum FileAttributeTypeString = 1
fromEnum FileAttributeTypeByteString = 2
fromEnum FileAttributeTypeBool = 3
fromEnum FileAttributeTypeWord32 = 4
fromEnum FileAttributeTypeInt32 = 5
fromEnum FileAttributeTypeWord64 = 6
fromEnum FileAttributeTypeInt64 = 7
fromEnum FileAttributeTypeObject = 8
data FileAttributeInfo =
FileAttributeInfo
{ fileAttributeInfoName :: String
, fileAttributeInfoType :: FileAttributeType
, fileAttributeInfoFlags :: [FileAttributeInfoFlags]
} deriving (Eq, Read, Show)
instance Storable FileAttributeInfo where
sizeOf _ = (12)
alignment _ = alignment (undefined :: Ptr ())
peek ptr = do
retName <- (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr >>= peekUTFString
retType <- ((\hsc_ptr -> peekByteOff hsc_ptr 4) ptr :: IO CInt) >>= return . cToEnum
retFlags <- ((\hsc_ptr -> peekByteOff hsc_ptr 8) ptr :: IO CInt) >>= return . cToFlags
return $ FileAttributeInfo
{ fileAttributeInfoName = retName
, fileAttributeInfoType = retType
, fileAttributeInfoFlags = retFlags }
poke _ = error "not implemented"
fileAttributeStandardType,
fileAttributeStandardIsHidden,
fileAttributeStandardIsBackup,
fileAttributeStandardIsSymlink,
fileAttributeStandardIsVirtual,
fileAttributeStandardName,
fileAttributeStandardDisplayName,
fileAttributeStandardEditName,
fileAttributeStandardCopyName,
fileAttributeStandardIcon,
fileAttributeStandardContentType,
fileAttributeStandardFastContentType,
fileAttributeStandardSize,
fileAttributeStandardSymlinkTarget,
fileAttributeStandardTargetURI,
fileAttributeStandardSortOrder,
fileAttributeEtagValue,
fileAttributeIDFile,
fileAttributeIDFilesystem,
fileAttributeAccessCanRead,
fileAttributeAccessCanWrite,
fileAttributeAccessCanExecute,
fileAttributeAccessCanDelete,
fileAttributeAccessCanTrash,
fileAttributeAccessCanRename,
fileAttributeMountableCanMount,
fileAttributeMountableCanUnmount,
fileAttributeMountableCanEject,
fileAttributeMountableUnixDevice,
fileAttributeMountableHalUDI,
fileAttributeTimeModified,
fileAttributeTimeModifiedUSec,
fileAttributeTimeAccess,
fileAttributeTimeAccessUSec,
fileAttributeTimeChanged,
fileAttributeTimeChangedUSec,
fileAttributeTimeCreated,
fileAttributeTimeCreatedUSec,
fileAttributeUnixDevice,
fileAttributeUnixInode,
fileAttributeUnixMode,
fileAttributeUnixNLink,
fileAttributeUnixUID,
fileAttributeUnixGID,
fileAttributeUnixRDev,
fileAttributeUnixBlockSize,
fileAttributeUnixBlocks,
fileAttributeDosIsArchive,
fileAttributeDosIsSystem,
fileAttributeOwnerUser,
fileAttributeOwnerUserReal,
fileAttributeOwnerGroup,
fileAttributeThumbnailPath,
fileAttributeThumbnailingFailed,
fileAttributeFilesystemSize,
fileAttributeFilesystemFree,
fileAttributeFilesystemType,
fileAttributeFilesystemReadonly,
fileAttributeGVfsBackend,
fileAttributeSELinuxContext,
fileAttributeTrashItemCount,
fileAttributeFilesystemUsePreview,
fileAttributeStandardDescription
:: String
fileAttributeStandardType = "standard::type"
fileAttributeStandardIsHidden = "standard::is-hidden"
fileAttributeStandardIsBackup = "standard::is-backup"
fileAttributeStandardIsSymlink = "standard::is-symlink"
fileAttributeStandardIsVirtual = "standard::is-virtual"
fileAttributeStandardName = "standard::name"
fileAttributeStandardDisplayName = "standard::display-name"
fileAttributeStandardEditName = "standard::edit-name"
fileAttributeStandardCopyName = "standard::copy-name"
fileAttributeStandardIcon = "standard::icon"
fileAttributeStandardContentType = "standard::content-type"
fileAttributeStandardFastContentType = "standard::fast-content-type"
fileAttributeStandardSize = "standard::size"
fileAttributeStandardSymlinkTarget = "standard::symlink-target"
fileAttributeStandardTargetURI = "standard::target-uri"
fileAttributeStandardSortOrder = "standard::sort-order"
fileAttributeEtagValue = "etag::value"
fileAttributeIDFile = "id::file"
fileAttributeIDFilesystem = "id::filesystem"
fileAttributeAccessCanRead = "access::can-read"
fileAttributeAccessCanWrite = "access::can-write"
fileAttributeAccessCanExecute = "access::can-execute"
fileAttributeAccessCanDelete = "access::can-delete"
fileAttributeAccessCanTrash = "access::can-trash"
fileAttributeAccessCanRename = "access::can-rename"
fileAttributeMountableCanMount = "mountable::can-mount"
fileAttributeMountableCanUnmount = "mountable::can-unmount"
fileAttributeMountableCanEject = "mountable::can-eject"
fileAttributeMountableUnixDevice = "mountable::unix-device"
fileAttributeMountableHalUDI = "mountable::hal-udi"
fileAttributeTimeModified = "time::modified"
fileAttributeTimeModifiedUSec = "time::modified-usec"
fileAttributeTimeAccess = "time::access"
fileAttributeTimeAccessUSec = "time::access-usec"
fileAttributeTimeChanged = "time::changed"
fileAttributeTimeChangedUSec = "time::changed-usec"
fileAttributeTimeCreated = "time::created"
fileAttributeTimeCreatedUSec = "time::created-usec"
fileAttributeUnixDevice = "unix::device"
fileAttributeUnixInode = "unix::inode"
fileAttributeUnixMode = "unix::mode"
fileAttributeUnixNLink = "unix::nlink"
fileAttributeUnixUID = "unix::uid"
fileAttributeUnixGID = "unix::gid"
fileAttributeUnixRDev = "unix::rdev"
fileAttributeUnixBlockSize = "unix::block-size"
fileAttributeUnixBlocks = "unix::blocks"
fileAttributeDosIsArchive = "dos::is-archive"
fileAttributeDosIsSystem = "dos::is-system"
fileAttributeOwnerUser = "owner::user"
fileAttributeOwnerUserReal = "owner::user-real"
fileAttributeOwnerGroup = "owner::group"
fileAttributeThumbnailPath = "thumbnail::path"
fileAttributeThumbnailingFailed = "thumbnail::failed"
fileAttributeFilesystemSize = "filesystem::size"
fileAttributeFilesystemFree = "filesystem::free"
fileAttributeFilesystemType = "filesystem::type"
fileAttributeFilesystemReadonly = "filesystem::readonly"
fileAttributeGVfsBackend = "gvfs::backend"
fileAttributeSELinuxContext = "selinux::context"
fileAttributeTrashItemCount = "trash::item-count"
fileAttributeFilesystemUsePreview = "filesystem::use-preview"
fileAttributeStandardDescription = "standard::description"