packages feed

gi-gtk-0.3.18.14: GI/Gtk/Structs/FileFilterInfo.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

A #GtkFileFilterInfo-struct is used to pass information about the
tested file to gtk_file_filter_filter().
-}

module GI.Gtk.Structs.FileFilterInfo
    ( 

-- * Exported types
    FileFilterInfo(..)                      ,
    newZeroFileFilterInfo                   ,
    noFileFilterInfo                        ,


 -- * Properties
-- ** Contains
    fileFilterInfoContains                  ,
    fileFilterInfoReadContains              ,
    fileFilterInfoWriteContains             ,


-- ** DisplayName
    fileFilterInfoClearDisplayName          ,
    fileFilterInfoDisplayName               ,
    fileFilterInfoReadDisplayName           ,
    fileFilterInfoWriteDisplayName          ,


-- ** Filename
    fileFilterInfoClearFilename             ,
    fileFilterInfoFilename                  ,
    fileFilterInfoReadFilename              ,
    fileFilterInfoWriteFilename             ,


-- ** MimeType
    fileFilterInfoClearMimeType             ,
    fileFilterInfoMimeType                  ,
    fileFilterInfoReadMimeType              ,
    fileFilterInfoWriteMimeType             ,


-- ** Uri
    fileFilterInfoClearUri                  ,
    fileFilterInfoReadUri                   ,
    fileFilterInfoUri                       ,
    fileFilterInfoWriteUri                  ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gtk.Types
import GI.Gtk.Callbacks

newtype FileFilterInfo = FileFilterInfo (ForeignPtr FileFilterInfo)
-- | Construct a `FileFilterInfo` struct initialized to zero.
newZeroFileFilterInfo :: MonadIO m => m FileFilterInfo
newZeroFileFilterInfo = liftIO $ callocBytes 40 >>= wrapPtr FileFilterInfo

instance tag ~ 'AttrSet => Constructible FileFilterInfo tag where
    new _ attrs = do
        o <- newZeroFileFilterInfo
        GI.Attributes.set o attrs
        return o


noFileFilterInfo :: Maybe FileFilterInfo
noFileFilterInfo = Nothing

fileFilterInfoReadContains :: MonadIO m => FileFilterInfo -> m [FileFilterFlags]
fileFilterInfoReadContains s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = wordToGFlags val
    return val'

fileFilterInfoWriteContains :: MonadIO m => FileFilterInfo -> [FileFilterFlags] -> m ()
fileFilterInfoWriteContains s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = gflagsToWord val
    poke (ptr `plusPtr` 0) (val' :: CUInt)

data FileFilterInfoContainsFieldInfo
instance AttrInfo FileFilterInfoContainsFieldInfo where
    type AttrAllowedOps FileFilterInfoContainsFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint FileFilterInfoContainsFieldInfo = (~) [FileFilterFlags]
    type AttrBaseTypeConstraint FileFilterInfoContainsFieldInfo = (~) FileFilterInfo
    type AttrGetType FileFilterInfoContainsFieldInfo = [FileFilterFlags]
    type AttrLabel FileFilterInfoContainsFieldInfo = "contains"
    attrGet _ = fileFilterInfoReadContains
    attrSet _ = fileFilterInfoWriteContains
    attrConstruct = undefined
    attrClear _ = undefined

fileFilterInfoContains :: AttrLabelProxy "contains"
fileFilterInfoContains = AttrLabelProxy


fileFilterInfoReadFilename :: MonadIO m => FileFilterInfo -> m (Maybe T.Text)
fileFilterInfoReadFilename s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO CString
    result <- convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

fileFilterInfoWriteFilename :: MonadIO m => FileFilterInfo -> CString -> m ()
fileFilterInfoWriteFilename s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 8) (val :: CString)

fileFilterInfoClearFilename :: MonadIO m => FileFilterInfo -> m ()
fileFilterInfoClearFilename s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 8) (nullPtr :: CString)

data FileFilterInfoFilenameFieldInfo
instance AttrInfo FileFilterInfoFilenameFieldInfo where
    type AttrAllowedOps FileFilterInfoFilenameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint FileFilterInfoFilenameFieldInfo = (~) CString
    type AttrBaseTypeConstraint FileFilterInfoFilenameFieldInfo = (~) FileFilterInfo
    type AttrGetType FileFilterInfoFilenameFieldInfo = Maybe T.Text
    type AttrLabel FileFilterInfoFilenameFieldInfo = "filename"
    attrGet _ = fileFilterInfoReadFilename
    attrSet _ = fileFilterInfoWriteFilename
    attrConstruct = undefined
    attrClear _ = fileFilterInfoClearFilename

fileFilterInfoFilename :: AttrLabelProxy "filename"
fileFilterInfoFilename = AttrLabelProxy


fileFilterInfoReadUri :: MonadIO m => FileFilterInfo -> m (Maybe T.Text)
fileFilterInfoReadUri s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO CString
    result <- convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

fileFilterInfoWriteUri :: MonadIO m => FileFilterInfo -> CString -> m ()
fileFilterInfoWriteUri s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (val :: CString)

fileFilterInfoClearUri :: MonadIO m => FileFilterInfo -> m ()
fileFilterInfoClearUri s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (nullPtr :: CString)

data FileFilterInfoUriFieldInfo
instance AttrInfo FileFilterInfoUriFieldInfo where
    type AttrAllowedOps FileFilterInfoUriFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint FileFilterInfoUriFieldInfo = (~) CString
    type AttrBaseTypeConstraint FileFilterInfoUriFieldInfo = (~) FileFilterInfo
    type AttrGetType FileFilterInfoUriFieldInfo = Maybe T.Text
    type AttrLabel FileFilterInfoUriFieldInfo = "uri"
    attrGet _ = fileFilterInfoReadUri
    attrSet _ = fileFilterInfoWriteUri
    attrConstruct = undefined
    attrClear _ = fileFilterInfoClearUri

fileFilterInfoUri :: AttrLabelProxy "uri"
fileFilterInfoUri = AttrLabelProxy


fileFilterInfoReadDisplayName :: MonadIO m => FileFilterInfo -> m (Maybe T.Text)
fileFilterInfoReadDisplayName s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CString
    result <- convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

fileFilterInfoWriteDisplayName :: MonadIO m => FileFilterInfo -> CString -> m ()
fileFilterInfoWriteDisplayName s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 24) (val :: CString)

fileFilterInfoClearDisplayName :: MonadIO m => FileFilterInfo -> m ()
fileFilterInfoClearDisplayName s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 24) (nullPtr :: CString)

data FileFilterInfoDisplayNameFieldInfo
instance AttrInfo FileFilterInfoDisplayNameFieldInfo where
    type AttrAllowedOps FileFilterInfoDisplayNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint FileFilterInfoDisplayNameFieldInfo = (~) CString
    type AttrBaseTypeConstraint FileFilterInfoDisplayNameFieldInfo = (~) FileFilterInfo
    type AttrGetType FileFilterInfoDisplayNameFieldInfo = Maybe T.Text
    type AttrLabel FileFilterInfoDisplayNameFieldInfo = "display_name"
    attrGet _ = fileFilterInfoReadDisplayName
    attrSet _ = fileFilterInfoWriteDisplayName
    attrConstruct = undefined
    attrClear _ = fileFilterInfoClearDisplayName

fileFilterInfoDisplayName :: AttrLabelProxy "displayName"
fileFilterInfoDisplayName = AttrLabelProxy


fileFilterInfoReadMimeType :: MonadIO m => FileFilterInfo -> m (Maybe T.Text)
fileFilterInfoReadMimeType s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CString
    result <- convertIfNonNull val $ \val' -> do
        val'' <- cstringToText val'
        return val''
    return result

fileFilterInfoWriteMimeType :: MonadIO m => FileFilterInfo -> CString -> m ()
fileFilterInfoWriteMimeType s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 32) (val :: CString)

fileFilterInfoClearMimeType :: MonadIO m => FileFilterInfo -> m ()
fileFilterInfoClearMimeType s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 32) (nullPtr :: CString)

data FileFilterInfoMimeTypeFieldInfo
instance AttrInfo FileFilterInfoMimeTypeFieldInfo where
    type AttrAllowedOps FileFilterInfoMimeTypeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint FileFilterInfoMimeTypeFieldInfo = (~) CString
    type AttrBaseTypeConstraint FileFilterInfoMimeTypeFieldInfo = (~) FileFilterInfo
    type AttrGetType FileFilterInfoMimeTypeFieldInfo = Maybe T.Text
    type AttrLabel FileFilterInfoMimeTypeFieldInfo = "mime_type"
    attrGet _ = fileFilterInfoReadMimeType
    attrSet _ = fileFilterInfoWriteMimeType
    attrConstruct = undefined
    attrClear _ = fileFilterInfoClearMimeType

fileFilterInfoMimeType :: AttrLabelProxy "mimeType"
fileFilterInfoMimeType = AttrLabelProxy



type instance AttributeList FileFilterInfo = FileFilterInfoAttributeList
type FileFilterInfoAttributeList = ('[ '("contains", FileFilterInfoContainsFieldInfo), '("filename", FileFilterInfoFilenameFieldInfo), '("uri", FileFilterInfoUriFieldInfo), '("displayName", FileFilterInfoDisplayNameFieldInfo), '("mimeType", FileFilterInfoMimeTypeFieldInfo)] :: [(Symbol, *)])

type family ResolveFileFilterInfoMethod (t :: Symbol) (o :: *) :: * where
    ResolveFileFilterInfoMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveFileFilterInfoMethod t FileFilterInfo, MethodInfo info FileFilterInfo p) => IsLabelProxy t (FileFilterInfo -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveFileFilterInfoMethod t FileFilterInfo, MethodInfo info FileFilterInfo p) => IsLabel t (FileFilterInfo -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif