module System.Gnome.VFS.BasicTypes (
module System.Gnome.VFS.Constants,
Handle(..),
withHandle,
Result(..),
Error(..),
OpenMode(..),
SeekPosition(..),
FileInfo(..),
FileFlags(..),
FileInfoFields(..),
SetFileInfoMask(..),
FileInfoOptions(..),
FileSize,
FileOffset,
FileType(..),
InodeNumber,
IDs,
MonitorHandle(..),
withMonitorHandle,
MonitorCallback,
MonitorType,
MonitorEventType,
URI(..),
TextURI,
newURI,
withURI,
ToplevelURI(..),
newToplevelURI,
withToplevelURI,
URIHideOptions(..),
DirectoryHandle(..),
withDirectoryHandle,
MakeURIDirs(..),
DirectoryVisitOptions(..),
DirectoryVisitCallback,
DirectoryVisitResult(..),
FindDirectoryKind(..),
XferOptions(..),
XferProgressStatus(..),
XferOverwriteMode(..),
XferOverwriteAction(..),
XferErrorMode(..),
XferErrorAction(..),
XferPhase(..),
XferProgressInfo(..),
XferProgressCallback,
XferErrorCallback,
XferOverwriteCallback,
XferDuplicateCallback,
Cancellation(..),
newCancellation,
withCancellation,
VolumeOpSuccessCallback,
VolumeOpFailureCallback,
CVolumeOpCallback,
VolumeType(..),
DeviceType(..),
MIMEType,
DriveID,
newDrive,
withDrive,
VolumeID,
newVolume,
withVolume,
wrapVolumeMonitor,
withVolumeMonitor
) where
import Control.Exception (assert)
import Control.Monad
import Control.Monad.Reader
import Data.Typeable
import Data.Word (Word64)
import System.Glib.FFI
import System.Glib.Flags
import System.Glib.GObject (GObject(..),
GObjectClass,
toGObject,
unsafeCastGObject)
import System.Glib.GType (GType,
typeInstanceIsA)
import System.Gnome.VFS.Types
import System.Gnome.VFS.Constants
import System.Posix.Types (DeviceID, EpochTime)
gTypeCast :: (GObjectClass obj, GObjectClass obj') => GType -> String
-> (obj -> obj')
gTypeCast gtype objTypeName obj =
case toGObject obj of
gobj@(GObject objFPtr)
| typeInstanceIsA ((unsafeForeignPtrToPtr.castForeignPtr) objFPtr) gtype
-> unsafeCastGObject gobj
| otherwise -> error $ "Cannot cast object to " ++ objTypeName
data Result = Ok
| ErrorNotFound
| ErrorGeneric
| ErrorInternal
| ErrorBadParameters
| ErrorNotSupported
| ErrorIo
| ErrorCorruptedData
| ErrorWrongFormat
| ErrorBadFile
| ErrorTooBig
| ErrorNoSpace
| ErrorReadOnly
| ErrorInvalidUri
| ErrorNotOpen
| ErrorInvalidOpenMode
| ErrorAccessDenied
| ErrorTooManyOpenFiles
| ErrorEof
| ErrorNotADirectory
| ErrorInProgress
| ErrorInterrupted
| ErrorFileExists
| ErrorLoop
| ErrorNotPermitted
| ErrorIsDirectory
| ErrorNoMemory
| ErrorHostNotFound
| ErrorInvalidHostName
| ErrorHostHasNoAddress
| ErrorLoginFailed
| ErrorCancelled
| ErrorDirectoryBusy
| ErrorDirectoryNotEmpty
| ErrorTooManyLinks
| ErrorReadOnlyFileSystem
| ErrorNotSameFileSystem
| ErrorNameTooLong
| ErrorServiceNotAvailable
| ErrorServiceObsolete
| ErrorProtocolError
| ErrorNoMasterBrowser
| ErrorNoDefault
| ErrorNoHandler
| ErrorParse
| ErrorLaunch
| ErrorTimeout
| ErrorNameserver
| ErrorLocked
| ErrorDeprecatedFunction
| ErrorInvalidFilename
| ErrorNotASymbolicLink
| NumErrors
deriving (Enum,Eq,Bounded,Show,Typeable)
newtype Error = Error Result
deriving (Show, Typeable)
newtype Handle = Handle (ForeignPtr (Handle))
withHandle (Handle cHandle) = withForeignPtr cHandle
data SeekPosition = SeekStart
| SeekCurrent
| SeekEnd
deriving (Enum,Eq,Bounded,Show)
data OpenMode = OpenNone
| OpenRead
| OpenWrite
| OpenRandom
| OpenTruncate
deriving (Eq,Bounded,Show)
instance Enum OpenMode where
fromEnum OpenNone = 0
fromEnum OpenRead = 1
fromEnum OpenWrite = 2
fromEnum OpenRandom = 4
fromEnum OpenTruncate = 8
toEnum 0 = OpenNone
toEnum 1 = OpenRead
toEnum 2 = OpenWrite
toEnum 4 = OpenRandom
toEnum 8 = OpenTruncate
toEnum unmatched = error ("OpenMode.toEnum: Cannot match " ++ show unmatched)
succ OpenNone = OpenRead
succ OpenRead = OpenWrite
succ OpenWrite = OpenRandom
succ OpenRandom = OpenTruncate
succ _ = undefined
pred OpenRead = OpenNone
pred OpenWrite = OpenRead
pred OpenRandom = OpenWrite
pred OpenTruncate = OpenRandom
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x OpenTruncate
enumFromThen _ _ = error "Enum OpenMode: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum OpenMode: enumFromThenTo not implemented"
data FileInfo = FileInfo {
fileInfoName :: Maybe String,
fileInfoType :: Maybe FileType,
fileInfoPermissions :: Maybe [FilePermissions],
fileInfoFlags :: Maybe [FileFlags],
fileInfoDevice :: Maybe DeviceID,
fileInfoInode :: Maybe InodeNumber,
fileInfoLinkCount :: Maybe Int,
fileInfoIDs :: Maybe IDs,
fileInfoSize :: Maybe FileSize,
fileInfoBlockCount :: Maybe FileSize,
fileInfoIOBlockSize :: Maybe FileSize,
fileInfoATime :: Maybe EpochTime,
fileInfoMTime :: Maybe EpochTime,
fileInfoCTime :: Maybe EpochTime,
fileInfoSymlinkName :: Maybe String
,
fileInfoMIMEType :: Maybe MIMEType
} deriving (Eq, Show)
data FileInfoFields = FileInfoFieldsNone
| FileInfoFieldsType
| FileInfoFieldsPermissions
| FileInfoFieldsFlags
| FileInfoFieldsDevice
| FileInfoFieldsInode
| FileInfoFieldsLinkCount
| FileInfoFieldsSize
| FileInfoFieldsBlockCount
| FileInfoFieldsIoBlockSize
| FileInfoFieldsAtime
| FileInfoFieldsMtime
| FileInfoFieldsCtime
| FileInfoFieldsSymlinkName
| FileInfoFieldsMimeType
| FileInfoFieldsAccess
| FileInfoFieldsIds
| FileInfoFieldsAcl
| FileInfoFieldsSelinuxContext
deriving (Eq,Bounded,Show)
instance Enum FileInfoFields where
fromEnum FileInfoFieldsNone = 0
fromEnum FileInfoFieldsType = 1
fromEnum FileInfoFieldsPermissions = 2
fromEnum FileInfoFieldsFlags = 4
fromEnum FileInfoFieldsDevice = 8
fromEnum FileInfoFieldsInode = 16
fromEnum FileInfoFieldsLinkCount = 32
fromEnum FileInfoFieldsSize = 64
fromEnum FileInfoFieldsBlockCount = 128
fromEnum FileInfoFieldsIoBlockSize = 256
fromEnum FileInfoFieldsAtime = 512
fromEnum FileInfoFieldsMtime = 1024
fromEnum FileInfoFieldsCtime = 2048
fromEnum FileInfoFieldsSymlinkName = 4096
fromEnum FileInfoFieldsMimeType = 8192
fromEnum FileInfoFieldsAccess = 16384
fromEnum FileInfoFieldsIds = 32768
fromEnum FileInfoFieldsAcl = 65536
fromEnum FileInfoFieldsSelinuxContext = 131072
toEnum 0 = FileInfoFieldsNone
toEnum 1 = FileInfoFieldsType
toEnum 2 = FileInfoFieldsPermissions
toEnum 4 = FileInfoFieldsFlags
toEnum 8 = FileInfoFieldsDevice
toEnum 16 = FileInfoFieldsInode
toEnum 32 = FileInfoFieldsLinkCount
toEnum 64 = FileInfoFieldsSize
toEnum 128 = FileInfoFieldsBlockCount
toEnum 256 = FileInfoFieldsIoBlockSize
toEnum 512 = FileInfoFieldsAtime
toEnum 1024 = FileInfoFieldsMtime
toEnum 2048 = FileInfoFieldsCtime
toEnum 4096 = FileInfoFieldsSymlinkName
toEnum 8192 = FileInfoFieldsMimeType
toEnum 16384 = FileInfoFieldsAccess
toEnum 32768 = FileInfoFieldsIds
toEnum 65536 = FileInfoFieldsAcl
toEnum 131072 = FileInfoFieldsSelinuxContext
toEnum unmatched = error ("FileInfoFields.toEnum: Cannot match " ++ show unmatched)
succ FileInfoFieldsNone = FileInfoFieldsType
succ FileInfoFieldsType = FileInfoFieldsPermissions
succ FileInfoFieldsPermissions = FileInfoFieldsFlags
succ FileInfoFieldsFlags = FileInfoFieldsDevice
succ FileInfoFieldsDevice = FileInfoFieldsInode
succ FileInfoFieldsInode = FileInfoFieldsLinkCount
succ FileInfoFieldsLinkCount = FileInfoFieldsSize
succ FileInfoFieldsSize = FileInfoFieldsBlockCount
succ FileInfoFieldsBlockCount = FileInfoFieldsIoBlockSize
succ FileInfoFieldsIoBlockSize = FileInfoFieldsAtime
succ FileInfoFieldsAtime = FileInfoFieldsMtime
succ FileInfoFieldsMtime = FileInfoFieldsCtime
succ FileInfoFieldsCtime = FileInfoFieldsSymlinkName
succ FileInfoFieldsSymlinkName = FileInfoFieldsMimeType
succ FileInfoFieldsMimeType = FileInfoFieldsAccess
succ FileInfoFieldsAccess = FileInfoFieldsIds
succ FileInfoFieldsIds = FileInfoFieldsAcl
succ FileInfoFieldsAcl = FileInfoFieldsSelinuxContext
succ _ = undefined
pred FileInfoFieldsType = FileInfoFieldsNone
pred FileInfoFieldsPermissions = FileInfoFieldsType
pred FileInfoFieldsFlags = FileInfoFieldsPermissions
pred FileInfoFieldsDevice = FileInfoFieldsFlags
pred FileInfoFieldsInode = FileInfoFieldsDevice
pred FileInfoFieldsLinkCount = FileInfoFieldsInode
pred FileInfoFieldsSize = FileInfoFieldsLinkCount
pred FileInfoFieldsBlockCount = FileInfoFieldsSize
pred FileInfoFieldsIoBlockSize = FileInfoFieldsBlockCount
pred FileInfoFieldsAtime = FileInfoFieldsIoBlockSize
pred FileInfoFieldsMtime = FileInfoFieldsAtime
pred FileInfoFieldsCtime = FileInfoFieldsMtime
pred FileInfoFieldsSymlinkName = FileInfoFieldsCtime
pred FileInfoFieldsMimeType = FileInfoFieldsSymlinkName
pred FileInfoFieldsAccess = FileInfoFieldsMimeType
pred FileInfoFieldsIds = FileInfoFieldsAccess
pred FileInfoFieldsAcl = FileInfoFieldsIds
pred FileInfoFieldsSelinuxContext = FileInfoFieldsAcl
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x FileInfoFieldsSelinuxContext
enumFromThen _ _ = error "Enum FileInfoFields: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum FileInfoFields: enumFromThenTo not implemented"
data FileInfoOptions = FileInfoDefault
| FileInfoGetMimeType
| FileInfoForceFastMimeType
| FileInfoForceSlowMimeType
| FileInfoFollowLinks
| FileInfoGetAccessRights
| FileInfoNameOnly
| FileInfoGetAcl
| FileInfoGetSelinuxContext
deriving (Eq,Bounded,Show)
instance Enum FileInfoOptions where
fromEnum FileInfoDefault = 0
fromEnum FileInfoGetMimeType = 1
fromEnum FileInfoForceFastMimeType = 2
fromEnum FileInfoForceSlowMimeType = 4
fromEnum FileInfoFollowLinks = 8
fromEnum FileInfoGetAccessRights = 16
fromEnum FileInfoNameOnly = 32
fromEnum FileInfoGetAcl = 64
fromEnum FileInfoGetSelinuxContext = 128
toEnum 0 = FileInfoDefault
toEnum 1 = FileInfoGetMimeType
toEnum 2 = FileInfoForceFastMimeType
toEnum 4 = FileInfoForceSlowMimeType
toEnum 8 = FileInfoFollowLinks
toEnum 16 = FileInfoGetAccessRights
toEnum 32 = FileInfoNameOnly
toEnum 64 = FileInfoGetAcl
toEnum 128 = FileInfoGetSelinuxContext
toEnum unmatched = error ("FileInfoOptions.toEnum: Cannot match " ++ show unmatched)
succ FileInfoDefault = FileInfoGetMimeType
succ FileInfoGetMimeType = FileInfoForceFastMimeType
succ FileInfoForceFastMimeType = FileInfoForceSlowMimeType
succ FileInfoForceSlowMimeType = FileInfoFollowLinks
succ FileInfoFollowLinks = FileInfoGetAccessRights
succ FileInfoGetAccessRights = FileInfoNameOnly
succ FileInfoNameOnly = FileInfoGetAcl
succ FileInfoGetAcl = FileInfoGetSelinuxContext
succ _ = undefined
pred FileInfoGetMimeType = FileInfoDefault
pred FileInfoForceFastMimeType = FileInfoGetMimeType
pred FileInfoForceSlowMimeType = FileInfoForceFastMimeType
pred FileInfoFollowLinks = FileInfoForceSlowMimeType
pred FileInfoGetAccessRights = FileInfoFollowLinks
pred FileInfoNameOnly = FileInfoGetAccessRights
pred FileInfoGetAcl = FileInfoNameOnly
pred FileInfoGetSelinuxContext = FileInfoGetAcl
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x FileInfoGetSelinuxContext
enumFromThen _ _ = error "Enum FileInfoOptions: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum FileInfoOptions: enumFromThenTo not implemented"
data FileFlags = FileFlagsNone
| FileFlagsSymlink
| FileFlagsLocal
deriving (Eq,Bounded,Show)
instance Enum FileFlags where
fromEnum FileFlagsNone = 0
fromEnum FileFlagsSymlink = 1
fromEnum FileFlagsLocal = 2
toEnum 0 = FileFlagsNone
toEnum 1 = FileFlagsSymlink
toEnum 2 = FileFlagsLocal
toEnum unmatched = error ("FileFlags.toEnum: Cannot match " ++ show unmatched)
succ FileFlagsNone = FileFlagsSymlink
succ FileFlagsSymlink = FileFlagsLocal
succ _ = undefined
pred FileFlagsSymlink = FileFlagsNone
pred FileFlagsLocal = FileFlagsSymlink
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x FileFlagsLocal
enumFromThen _ _ = error "Enum FileFlags: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum FileFlags: enumFromThenTo not implemented"
data SetFileInfoMask = SetFileInfoNone
| SetFileInfoName
| SetFileInfoPermissions
| SetFileInfoOwner
| SetFileInfoTime
| SetFileInfoAcl
| SetFileInfoSelinuxContext
| SetFileInfoSymlinkName
deriving (Eq,Bounded,Show)
instance Enum SetFileInfoMask where
fromEnum SetFileInfoNone = 0
fromEnum SetFileInfoName = 1
fromEnum SetFileInfoPermissions = 2
fromEnum SetFileInfoOwner = 4
fromEnum SetFileInfoTime = 8
fromEnum SetFileInfoAcl = 16
fromEnum SetFileInfoSelinuxContext = 32
fromEnum SetFileInfoSymlinkName = 64
toEnum 0 = SetFileInfoNone
toEnum 1 = SetFileInfoName
toEnum 2 = SetFileInfoPermissions
toEnum 4 = SetFileInfoOwner
toEnum 8 = SetFileInfoTime
toEnum 16 = SetFileInfoAcl
toEnum 32 = SetFileInfoSelinuxContext
toEnum 64 = SetFileInfoSymlinkName
toEnum unmatched = error ("SetFileInfoMask.toEnum: Cannot match " ++ show unmatched)
succ SetFileInfoNone = SetFileInfoName
succ SetFileInfoName = SetFileInfoPermissions
succ SetFileInfoPermissions = SetFileInfoOwner
succ SetFileInfoOwner = SetFileInfoTime
succ SetFileInfoTime = SetFileInfoAcl
succ SetFileInfoAcl = SetFileInfoSelinuxContext
succ SetFileInfoSelinuxContext = SetFileInfoSymlinkName
succ _ = undefined
pred SetFileInfoName = SetFileInfoNone
pred SetFileInfoPermissions = SetFileInfoName
pred SetFileInfoOwner = SetFileInfoPermissions
pred SetFileInfoTime = SetFileInfoOwner
pred SetFileInfoAcl = SetFileInfoTime
pred SetFileInfoSelinuxContext = SetFileInfoAcl
pred SetFileInfoSymlinkName = SetFileInfoSelinuxContext
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x SetFileInfoSymlinkName
enumFromThen _ _ = error "Enum SetFileInfoMask: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum SetFileInfoMask: enumFromThenTo not implemented"
data FileType = FileTypeUnknown
| FileTypeRegular
| FileTypeDirectory
| FileTypeFifo
| FileTypeSocket
| FileTypeCharacterDevice
| FileTypeBlockDevice
| FileTypeSymbolicLink
deriving (Enum,Eq,Show)
instance Flags FileInfoOptions
instance Flags FileInfoFields
instance Flags FileFlags
instance Flags SetFileInfoMask
type FileSize = Word64
type FileOffset = Word64
type InodeNumber = Word64
type IDs = (Int, Int)
newtype URI = URI (ForeignPtr (URI))
newURI :: Ptr URI
-> IO URI
newURI cURI | cURI /= nullPtr =
liftM URI $ newForeignPtr cURI cURIFinalizer
wrapURI :: Ptr URI
-> IO URI
wrapURI cURI | cURI /= nullPtr =
liftM URI $ newForeignPtr_ cURI
foreign import ccall "&gnome_vfs_uri_unref"
cURIFinalizer :: FunPtr (Ptr URI -> IO ())
withURI (URI cURI) = withForeignPtr cURI
newtype ToplevelURI = ToplevelURI (ForeignPtr (ToplevelURI))
withToplevelURI (ToplevelURI cToplevelURI) = withForeignPtr cToplevelURI
newToplevelURI :: Ptr ToplevelURI
-> IO ToplevelURI
newToplevelURI cToplevelURI = liftM ToplevelURI $ newForeignPtr_ cToplevelURI
data URIHideOptions = URIHideNone
| URIHideUserName
| URIHidePassword
| URIHideHostName
| URIHideHostPort
| URIHideToplevelMethod
| URIHideFragmentIdentifier
deriving (Eq,Bounded,Show)
instance Enum URIHideOptions where
fromEnum URIHideNone = 0
fromEnum URIHideUserName = 1
fromEnum URIHidePassword = 2
fromEnum URIHideHostName = 4
fromEnum URIHideHostPort = 8
fromEnum URIHideToplevelMethod = 16
fromEnum URIHideFragmentIdentifier = 256
toEnum 0 = URIHideNone
toEnum 1 = URIHideUserName
toEnum 2 = URIHidePassword
toEnum 4 = URIHideHostName
toEnum 8 = URIHideHostPort
toEnum 16 = URIHideToplevelMethod
toEnum 256 = URIHideFragmentIdentifier
toEnum unmatched = error ("URIHideOptions.toEnum: Cannot match " ++ show unmatched)
succ URIHideNone = URIHideUserName
succ URIHideUserName = URIHidePassword
succ URIHidePassword = URIHideHostName
succ URIHideHostName = URIHideHostPort
succ URIHideHostPort = URIHideToplevelMethod
succ URIHideToplevelMethod = URIHideFragmentIdentifier
succ _ = undefined
pred URIHideUserName = URIHideNone
pred URIHidePassword = URIHideUserName
pred URIHideHostName = URIHidePassword
pred URIHideHostPort = URIHideHostName
pred URIHideToplevelMethod = URIHideHostPort
pred URIHideFragmentIdentifier = URIHideToplevelMethod
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x URIHideFragmentIdentifier
enumFromThen _ _ = error "Enum URIHideOptions: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum URIHideOptions: enumFromThenTo not implemented"
instance Flags URIHideOptions
type TextURI = String
newtype DirectoryHandle = DirectoryHandle (ForeignPtr (DirectoryHandle))
withDirectoryHandle (DirectoryHandle cDirectoryHandle) = withForeignPtr cDirectoryHandle
data DirectoryVisitOptions = DirectoryVisitDefault
| DirectoryVisitSamefs
| DirectoryVisitLoopcheck
| DirectoryVisitIgnoreRecurseError
deriving (Eq,Bounded,Show)
instance Enum DirectoryVisitOptions where
fromEnum DirectoryVisitDefault = 0
fromEnum DirectoryVisitSamefs = 1
fromEnum DirectoryVisitLoopcheck = 2
fromEnum DirectoryVisitIgnoreRecurseError = 4
toEnum 0 = DirectoryVisitDefault
toEnum 1 = DirectoryVisitSamefs
toEnum 2 = DirectoryVisitLoopcheck
toEnum 4 = DirectoryVisitIgnoreRecurseError
toEnum unmatched = error ("DirectoryVisitOptions.toEnum: Cannot match " ++ show unmatched)
succ DirectoryVisitDefault = DirectoryVisitSamefs
succ DirectoryVisitSamefs = DirectoryVisitLoopcheck
succ DirectoryVisitLoopcheck = DirectoryVisitIgnoreRecurseError
succ _ = undefined
pred DirectoryVisitSamefs = DirectoryVisitDefault
pred DirectoryVisitLoopcheck = DirectoryVisitSamefs
pred DirectoryVisitIgnoreRecurseError = DirectoryVisitLoopcheck
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x DirectoryVisitIgnoreRecurseError
enumFromThen _ _ = error "Enum DirectoryVisitOptions: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum DirectoryVisitOptions: enumFromThenTo not implemented"
instance Flags DirectoryVisitOptions
type DirectoryVisitCallback = String
-> FileInfo
-> Bool
-> IO DirectoryVisitResult
data DirectoryVisitResult = DirectoryVisitStop
| DirectoryVisitContinue
| DirectoryVisitRecurse
deriving (Eq, Enum)
data FindDirectoryKind = DirectoryKindDesktop
| DirectoryKindTrash
deriving (Eq,Show)
instance Enum FindDirectoryKind where
fromEnum DirectoryKindDesktop = 1000
fromEnum DirectoryKindTrash = 1001
toEnum 1000 = DirectoryKindDesktop
toEnum 1001 = DirectoryKindTrash
toEnum unmatched = error ("FindDirectoryKind.toEnum: Cannot match " ++ show unmatched)
succ DirectoryKindDesktop = DirectoryKindTrash
succ _ = undefined
pred DirectoryKindTrash = DirectoryKindDesktop
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x DirectoryKindTrash
enumFromThen _ _ = error "Enum FindDirectoryKind: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum FindDirectoryKind: enumFromThenTo not implemented"
data MakeURIDirs = MakeUriDirNone
| MakeUriDirHomedir
| MakeUriDirCurrent
deriving (Eq,Bounded,Show)
instance Enum MakeURIDirs where
fromEnum MakeUriDirNone = 0
fromEnum MakeUriDirHomedir = 1
fromEnum MakeUriDirCurrent = 2
toEnum 0 = MakeUriDirNone
toEnum 1 = MakeUriDirHomedir
toEnum 2 = MakeUriDirCurrent
toEnum unmatched = error ("MakeURIDirs.toEnum: Cannot match " ++ show unmatched)
succ MakeUriDirNone = MakeUriDirHomedir
succ MakeUriDirHomedir = MakeUriDirCurrent
succ _ = undefined
pred MakeUriDirHomedir = MakeUriDirNone
pred MakeUriDirCurrent = MakeUriDirHomedir
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x MakeUriDirCurrent
enumFromThen _ _ = error "Enum MakeURIDirs: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum MakeURIDirs: enumFromThenTo not implemented"
instance Flags MakeURIDirs
newtype MonitorHandle = MonitorHandle (ForeignPtr MonitorHandle, ((FunPtr ((Ptr ()) -> ((Ptr CChar) -> ((Ptr CChar) -> (CInt -> ((Ptr ()) -> (IO ())))))))))
withMonitorHandle (MonitorHandle (monitorHandleForeignPtr, _)) = withForeignPtr monitorHandleForeignPtr
type MonitorCallback = MonitorHandle
-> TextURI
-> TextURI
-> MonitorEventType
-> IO ()
data MonitorType = MonitorFile
| MonitorDirectory
deriving (Enum,Eq,Bounded,Show)
data MonitorEventType = MonitorEventChanged
| MonitorEventDeleted
| MonitorEventStartexecuting
| MonitorEventStopexecuting
| MonitorEventCreated
| MonitorEventMetadataChanged
deriving (Enum,Eq,Bounded,Show)
wrapMonitorHandle :: (Ptr MonitorHandle, ((FunPtr ((Ptr ()) -> ((Ptr CChar) -> ((Ptr CChar) -> (CInt -> ((Ptr ()) -> (IO ())))))))))
-> IO MonitorHandle
wrapMonitorHandle (cMonitorHandle, cMonitorCallback) =
do monitorHandleForeignPtr <- newForeignPtr_ cMonitorHandle
return $ MonitorHandle (monitorHandleForeignPtr, cMonitorCallback)
data XferOptions = XferDefault
| XferUnused1
| XferFollowLinks
| XferUnused2
| XferRecursive
| XferSamefs
| XferDeleteItems
| XferEmptyDirectories
| XferNewUniqueDirectory
| XferRemovesource
| XferUseUniqueNames
| XferLinkItems
| XferFollowLinksRecursive
| XferTargetDefaultPerms
deriving (Eq,Bounded,Show)
instance Enum XferOptions where
fromEnum XferDefault = 0
fromEnum XferUnused1 = 1
fromEnum XferFollowLinks = 2
fromEnum XferUnused2 = 4
fromEnum XferRecursive = 8
fromEnum XferSamefs = 16
fromEnum XferDeleteItems = 32
fromEnum XferEmptyDirectories = 64
fromEnum XferNewUniqueDirectory = 128
fromEnum XferRemovesource = 256
fromEnum XferUseUniqueNames = 512
fromEnum XferLinkItems = 1024
fromEnum XferFollowLinksRecursive = 2048
fromEnum XferTargetDefaultPerms = 4096
toEnum 0 = XferDefault
toEnum 1 = XferUnused1
toEnum 2 = XferFollowLinks
toEnum 4 = XferUnused2
toEnum 8 = XferRecursive
toEnum 16 = XferSamefs
toEnum 32 = XferDeleteItems
toEnum 64 = XferEmptyDirectories
toEnum 128 = XferNewUniqueDirectory
toEnum 256 = XferRemovesource
toEnum 512 = XferUseUniqueNames
toEnum 1024 = XferLinkItems
toEnum 2048 = XferFollowLinksRecursive
toEnum 4096 = XferTargetDefaultPerms
toEnum unmatched = error ("XferOptions.toEnum: Cannot match " ++ show unmatched)
succ XferDefault = XferUnused1
succ XferUnused1 = XferFollowLinks
succ XferFollowLinks = XferUnused2
succ XferUnused2 = XferRecursive
succ XferRecursive = XferSamefs
succ XferSamefs = XferDeleteItems
succ XferDeleteItems = XferEmptyDirectories
succ XferEmptyDirectories = XferNewUniqueDirectory
succ XferNewUniqueDirectory = XferRemovesource
succ XferRemovesource = XferUseUniqueNames
succ XferUseUniqueNames = XferLinkItems
succ XferLinkItems = XferFollowLinksRecursive
succ XferFollowLinksRecursive = XferTargetDefaultPerms
succ _ = undefined
pred XferUnused1 = XferDefault
pred XferFollowLinks = XferUnused1
pred XferUnused2 = XferFollowLinks
pred XferRecursive = XferUnused2
pred XferSamefs = XferRecursive
pred XferDeleteItems = XferSamefs
pred XferEmptyDirectories = XferDeleteItems
pred XferNewUniqueDirectory = XferEmptyDirectories
pred XferRemovesource = XferNewUniqueDirectory
pred XferUseUniqueNames = XferRemovesource
pred XferLinkItems = XferUseUniqueNames
pred XferFollowLinksRecursive = XferLinkItems
pred XferTargetDefaultPerms = XferFollowLinksRecursive
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x XferTargetDefaultPerms
enumFromThen _ _ = error "Enum XferOptions: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum XferOptions: enumFromThenTo not implemented"
instance Flags XferOptions
data XferProgressStatus = XferProgressStatusOk
| XferProgressStatusVfserror
| XferProgressStatusOverwrite
| XferProgressStatusDuplicate
deriving (Eq,Show)
instance Enum XferProgressStatus where
fromEnum XferProgressStatusOk = 0
fromEnum XferProgressStatusVfserror = 1
fromEnum XferProgressStatusOverwrite = 2
fromEnum XferProgressStatusDuplicate = 3
toEnum 0 = XferProgressStatusOk
toEnum 1 = XferProgressStatusVfserror
toEnum 2 = XferProgressStatusOverwrite
toEnum 3 = XferProgressStatusDuplicate
toEnum unmatched = error ("XferProgressStatus.toEnum: Cannot match " ++ show unmatched)
succ XferProgressStatusOk = XferProgressStatusVfserror
succ XferProgressStatusVfserror = XferProgressStatusOverwrite
succ XferProgressStatusOverwrite = XferProgressStatusDuplicate
succ _ = undefined
pred XferProgressStatusVfserror = XferProgressStatusOk
pred XferProgressStatusOverwrite = XferProgressStatusVfserror
pred XferProgressStatusDuplicate = XferProgressStatusOverwrite
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x XferProgressStatusDuplicate
enumFromThen _ _ = error "Enum XferProgressStatus: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum XferProgressStatus: enumFromThenTo not implemented"
data XferOverwriteMode = XferOverwriteModeAbort
| XferOverwriteModeQuery
| XferOverwriteModeReplace
| XferOverwriteModeSkip
deriving (Eq,Show)
instance Enum XferOverwriteMode where
fromEnum XferOverwriteModeAbort = 0
fromEnum XferOverwriteModeQuery = 1
fromEnum XferOverwriteModeReplace = 2
fromEnum XferOverwriteModeSkip = 3
toEnum 0 = XferOverwriteModeAbort
toEnum 1 = XferOverwriteModeQuery
toEnum 2 = XferOverwriteModeReplace
toEnum 3 = XferOverwriteModeSkip
toEnum unmatched = error ("XferOverwriteMode.toEnum: Cannot match " ++ show unmatched)
succ XferOverwriteModeAbort = XferOverwriteModeQuery
succ XferOverwriteModeQuery = XferOverwriteModeReplace
succ XferOverwriteModeReplace = XferOverwriteModeSkip
succ _ = undefined
pred XferOverwriteModeQuery = XferOverwriteModeAbort
pred XferOverwriteModeReplace = XferOverwriteModeQuery
pred XferOverwriteModeSkip = XferOverwriteModeReplace
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x XferOverwriteModeSkip
enumFromThen _ _ = error "Enum XferOverwriteMode: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum XferOverwriteMode: enumFromThenTo not implemented"
data XferOverwriteAction = XferOverwriteActionAbort
| XferOverwriteActionReplace
| XferOverwriteActionReplaceAll
| XferOverwriteActionSkip
| XferOverwriteActionSkipAll
deriving (Eq,Show)
instance Enum XferOverwriteAction where
fromEnum XferOverwriteActionAbort = 0
fromEnum XferOverwriteActionReplace = 1
fromEnum XferOverwriteActionReplaceAll = 2
fromEnum XferOverwriteActionSkip = 3
fromEnum XferOverwriteActionSkipAll = 4
toEnum 0 = XferOverwriteActionAbort
toEnum 1 = XferOverwriteActionReplace
toEnum 2 = XferOverwriteActionReplaceAll
toEnum 3 = XferOverwriteActionSkip
toEnum 4 = XferOverwriteActionSkipAll
toEnum unmatched = error ("XferOverwriteAction.toEnum: Cannot match " ++ show unmatched)
succ XferOverwriteActionAbort = XferOverwriteActionReplace
succ XferOverwriteActionReplace = XferOverwriteActionReplaceAll
succ XferOverwriteActionReplaceAll = XferOverwriteActionSkip
succ XferOverwriteActionSkip = XferOverwriteActionSkipAll
succ _ = undefined
pred XferOverwriteActionReplace = XferOverwriteActionAbort
pred XferOverwriteActionReplaceAll = XferOverwriteActionReplace
pred XferOverwriteActionSkip = XferOverwriteActionReplaceAll
pred XferOverwriteActionSkipAll = XferOverwriteActionSkip
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x XferOverwriteActionSkipAll
enumFromThen _ _ = error "Enum XferOverwriteAction: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum XferOverwriteAction: enumFromThenTo not implemented"
data XferErrorMode = XferErrorModeAbort
| XferErrorModeQuery
deriving (Eq,Show)
instance Enum XferErrorMode where
fromEnum XferErrorModeAbort = 0
fromEnum XferErrorModeQuery = 1
toEnum 0 = XferErrorModeAbort
toEnum 1 = XferErrorModeQuery
toEnum unmatched = error ("XferErrorMode.toEnum: Cannot match " ++ show unmatched)
succ XferErrorModeAbort = XferErrorModeQuery
succ _ = undefined
pred XferErrorModeQuery = XferErrorModeAbort
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x XferErrorModeQuery
enumFromThen _ _ = error "Enum XferErrorMode: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum XferErrorMode: enumFromThenTo not implemented"
data XferErrorAction = XferErrorActionAbort
| XferErrorActionRetry
| XferErrorActionSkip
deriving (Eq,Show)
instance Enum XferErrorAction where
fromEnum XferErrorActionAbort = 0
fromEnum XferErrorActionRetry = 1
fromEnum XferErrorActionSkip = 2
toEnum 0 = XferErrorActionAbort
toEnum 1 = XferErrorActionRetry
toEnum 2 = XferErrorActionSkip
toEnum unmatched = error ("XferErrorAction.toEnum: Cannot match " ++ show unmatched)
succ XferErrorActionAbort = XferErrorActionRetry
succ XferErrorActionRetry = XferErrorActionSkip
succ _ = undefined
pred XferErrorActionRetry = XferErrorActionAbort
pred XferErrorActionSkip = XferErrorActionRetry
pred _ = undefined
enumFromTo x y | fromEnum x == fromEnum y = [ y ]
| otherwise = x : enumFromTo (succ x) y
enumFrom x = enumFromTo x XferErrorActionSkip
enumFromThen _ _ = error "Enum XferErrorAction: enumFromThen not implemented"
enumFromThenTo _ _ _ = error "Enum XferErrorAction: enumFromThenTo not implemented"
data XferPhase = XferPhaseInitial
| XferCheckingDestination
| XferPhaseCollecting
| XferPhaseReadytogo
| XferPhaseOpensource
| XferPhaseOpentarget
| XferPhaseCopying
| XferPhaseMoving
| XferPhaseReadsource
| XferPhaseWritetarget
| XferPhaseClosesource
| XferPhaseClosetarget
| XferPhaseDeletesource
| XferPhaseSetattributes
| XferPhaseFilecompleted
| XferPhaseCleanup
| XferPhaseCompleted
| XferNumPhases
deriving (Enum,Eq,Show)
data XferProgressInfo = XferProgressInfo {
xferProgressInfoVFSStatus :: Result,
xferProgressInfoPhase :: XferPhase,
xferProgressInfoSourceName :: Maybe String,
xferProgressInfoTargetName :: Maybe String,
xferProgressInfoFileIndex :: Word,
xferProgressInfoFilesTotal :: Word,
xferProgressInfoBytesTotal :: FileSize,
xferProgressInfoFileSize :: FileSize,
xferProgressInfoBytesCopied :: FileSize,
xferProgressInfoTotalBytesCopied :: FileSize,
xferProgressInfoTopLevelItem :: Bool
} deriving (Eq)
type XferProgressCallback = XferProgressInfo
-> IO Bool
type XferErrorCallback = XferProgressInfo
-> IO XferErrorAction
type XferOverwriteCallback = XferProgressInfo
-> IO XferOverwriteAction
type XferDuplicateCallback = XferProgressInfo
-> String
-> Int
-> IO (Maybe String)
newtype Cancellation = Cancellation (ForeignPtr (Cancellation))
newCancellation :: Ptr Cancellation
-> IO Cancellation
newCancellation cCancellationPtr | cCancellationPtr /= nullPtr =
liftM Cancellation $ newForeignPtr cCancellationPtr cancellationFinalizer
foreign import ccall unsafe "&gnome_vfs_cancellation_destroy"
cancellationFinalizer :: FunPtr (Ptr Cancellation -> IO ())
withCancellation (Cancellation cCancellation) = withForeignPtr cCancellation
withVolume (Volume cVolume) = withForeignPtr cVolume
newVolume :: Ptr Volume
-> IO Volume
newVolume cVolume | cVolume /= nullPtr =
liftM Volume $ newForeignPtr cVolume volumeFinalizer
foreign import ccall unsafe "&gnome_vfs_volume_unref"
volumeFinalizer :: FunPtr (Ptr Volume -> IO ())
type VolumeOpSuccessCallback = IO ()
type VolumeOpFailureCallback = String
-> String
-> IO ()
data DeviceType = DeviceTypeUnknown
| DeviceTypeAudioCd
| DeviceTypeVideoDvd
| DeviceTypeHarddrive
| DeviceTypeCdrom
| DeviceTypeFloppy
| DeviceTypeZip
| DeviceTypeJaz
| DeviceTypeNfs
| DeviceTypeAutofs
| DeviceTypeCamera
| DeviceTypeMemoryStick
| DeviceTypeSmb
| DeviceTypeApple
| DeviceTypeMusicPlayer
| DeviceTypeWindows
| DeviceTypeLoopback
| DeviceTypeNetwork
deriving (Enum,Eq,Show)
data VolumeType = VolumeTypeMountpoint
| VolumeTypeVfsMount
| VolumeTypeConnectedServer
deriving (Enum,Eq,Show)
type CVolumeOpCallback = (CInt)
-> CString
-> CString
-> Ptr ()
-> IO ()
type DriveID = (CULong)
withDrive (Drive cDrive) = withForeignPtr cDrive
newDrive :: Ptr Drive
-> IO Drive
newDrive cDrive | cDrive /= nullPtr =
liftM Drive $ newForeignPtr cDrive driveFinalizer
foreign import ccall unsafe "&gnome_vfs_drive_unref"
driveFinalizer :: FunPtr (Ptr Drive -> IO ())
type VolumeID = (CULong)
withVolumeMonitor (VolumeMonitor cVolumeMonitor) = withForeignPtr cVolumeMonitor
wrapVolumeMonitor :: Ptr VolumeMonitor
-> IO VolumeMonitor
wrapVolumeMonitor cVolumeMonitor | cVolumeMonitor /= nullPtr =
liftM VolumeMonitor $ newForeignPtr_ cVolumeMonitor
type MIMEType = String