packages feed

gi-gtk-0.3.18.15: GI/Gtk/Structs/RecentFilterInfo.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 GtkRecentFilterInfo struct is used
to pass information about the tested file to gtk_recent_filter_filter().
-}

module GI.Gtk.Structs.RecentFilterInfo
    ( 

-- * Exported types
    RecentFilterInfo(..)                    ,
    newZeroRecentFilterInfo                 ,
    noRecentFilterInfo                      ,


 -- * Properties
-- ** Age
    recentFilterInfoAge                     ,
    recentFilterInfoReadAge                 ,
    recentFilterInfoWriteAge                ,


-- ** Applications
    recentFilterInfoApplications            ,
    recentFilterInfoClearApplications       ,
    recentFilterInfoReadApplications        ,
    recentFilterInfoWriteApplications       ,


-- ** Contains
    recentFilterInfoContains                ,
    recentFilterInfoReadContains            ,
    recentFilterInfoWriteContains           ,


-- ** DisplayName
    recentFilterInfoClearDisplayName        ,
    recentFilterInfoDisplayName             ,
    recentFilterInfoReadDisplayName         ,
    recentFilterInfoWriteDisplayName        ,


-- ** Groups
    recentFilterInfoClearGroups             ,
    recentFilterInfoGroups                  ,
    recentFilterInfoReadGroups              ,
    recentFilterInfoWriteGroups             ,


-- ** MimeType
    recentFilterInfoClearMimeType           ,
    recentFilterInfoMimeType                ,
    recentFilterInfoReadMimeType            ,
    recentFilterInfoWriteMimeType           ,


-- ** Uri
    recentFilterInfoClearUri                ,
    recentFilterInfoReadUri                 ,
    recentFilterInfoUri                     ,
    recentFilterInfoWriteUri                ,




    ) 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 RecentFilterInfo = RecentFilterInfo (ForeignPtr RecentFilterInfo)
instance WrappedPtr RecentFilterInfo where
    wrappedPtrCalloc = callocBytes 56
    wrappedPtrCopy = copyPtr 56
    wrappedPtrFree = Just ptr_to_g_free

-- | Construct a `RecentFilterInfo` struct initialized to zero.
newZeroRecentFilterInfo :: MonadIO m => m RecentFilterInfo
newZeroRecentFilterInfo = liftIO $ wrappedPtrCalloc >>= wrapPtr RecentFilterInfo

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


noRecentFilterInfo :: Maybe RecentFilterInfo
noRecentFilterInfo = Nothing

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

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

data RecentFilterInfoContainsFieldInfo
instance AttrInfo RecentFilterInfoContainsFieldInfo where
    type AttrAllowedOps RecentFilterInfoContainsFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RecentFilterInfoContainsFieldInfo = (~) [RecentFilterFlags]
    type AttrBaseTypeConstraint RecentFilterInfoContainsFieldInfo = (~) RecentFilterInfo
    type AttrGetType RecentFilterInfoContainsFieldInfo = [RecentFilterFlags]
    type AttrLabel RecentFilterInfoContainsFieldInfo = "contains"
    attrGet _ = recentFilterInfoReadContains
    attrSet _ = recentFilterInfoWriteContains
    attrConstruct = undefined
    attrClear _ = undefined

recentFilterInfoContains :: AttrLabelProxy "contains"
recentFilterInfoContains = AttrLabelProxy


recentFilterInfoReadUri :: MonadIO m => RecentFilterInfo -> m (Maybe T.Text)
recentFilterInfoReadUri 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

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

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

data RecentFilterInfoUriFieldInfo
instance AttrInfo RecentFilterInfoUriFieldInfo where
    type AttrAllowedOps RecentFilterInfoUriFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RecentFilterInfoUriFieldInfo = (~) CString
    type AttrBaseTypeConstraint RecentFilterInfoUriFieldInfo = (~) RecentFilterInfo
    type AttrGetType RecentFilterInfoUriFieldInfo = Maybe T.Text
    type AttrLabel RecentFilterInfoUriFieldInfo = "uri"
    attrGet _ = recentFilterInfoReadUri
    attrSet _ = recentFilterInfoWriteUri
    attrConstruct = undefined
    attrClear _ = recentFilterInfoClearUri

recentFilterInfoUri :: AttrLabelProxy "uri"
recentFilterInfoUri = AttrLabelProxy


recentFilterInfoReadDisplayName :: MonadIO m => RecentFilterInfo -> m (Maybe T.Text)
recentFilterInfoReadDisplayName 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

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

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

data RecentFilterInfoDisplayNameFieldInfo
instance AttrInfo RecentFilterInfoDisplayNameFieldInfo where
    type AttrAllowedOps RecentFilterInfoDisplayNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RecentFilterInfoDisplayNameFieldInfo = (~) CString
    type AttrBaseTypeConstraint RecentFilterInfoDisplayNameFieldInfo = (~) RecentFilterInfo
    type AttrGetType RecentFilterInfoDisplayNameFieldInfo = Maybe T.Text
    type AttrLabel RecentFilterInfoDisplayNameFieldInfo = "display_name"
    attrGet _ = recentFilterInfoReadDisplayName
    attrSet _ = recentFilterInfoWriteDisplayName
    attrConstruct = undefined
    attrClear _ = recentFilterInfoClearDisplayName

recentFilterInfoDisplayName :: AttrLabelProxy "displayName"
recentFilterInfoDisplayName = AttrLabelProxy


recentFilterInfoReadMimeType :: MonadIO m => RecentFilterInfo -> m (Maybe T.Text)
recentFilterInfoReadMimeType 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

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

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

data RecentFilterInfoMimeTypeFieldInfo
instance AttrInfo RecentFilterInfoMimeTypeFieldInfo where
    type AttrAllowedOps RecentFilterInfoMimeTypeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RecentFilterInfoMimeTypeFieldInfo = (~) CString
    type AttrBaseTypeConstraint RecentFilterInfoMimeTypeFieldInfo = (~) RecentFilterInfo
    type AttrGetType RecentFilterInfoMimeTypeFieldInfo = Maybe T.Text
    type AttrLabel RecentFilterInfoMimeTypeFieldInfo = "mime_type"
    attrGet _ = recentFilterInfoReadMimeType
    attrSet _ = recentFilterInfoWriteMimeType
    attrConstruct = undefined
    attrClear _ = recentFilterInfoClearMimeType

recentFilterInfoMimeType :: AttrLabelProxy "mimeType"
recentFilterInfoMimeType = AttrLabelProxy


recentFilterInfoReadApplications :: MonadIO m => RecentFilterInfo -> m (Maybe [T.Text])
recentFilterInfoReadApplications s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO (Ptr CString)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- unpackZeroTerminatedUTF8CArray val'
        return val''
    return result

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

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

data RecentFilterInfoApplicationsFieldInfo
instance AttrInfo RecentFilterInfoApplicationsFieldInfo where
    type AttrAllowedOps RecentFilterInfoApplicationsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RecentFilterInfoApplicationsFieldInfo = (~) (Ptr CString)
    type AttrBaseTypeConstraint RecentFilterInfoApplicationsFieldInfo = (~) RecentFilterInfo
    type AttrGetType RecentFilterInfoApplicationsFieldInfo = Maybe [T.Text]
    type AttrLabel RecentFilterInfoApplicationsFieldInfo = "applications"
    attrGet _ = recentFilterInfoReadApplications
    attrSet _ = recentFilterInfoWriteApplications
    attrConstruct = undefined
    attrClear _ = recentFilterInfoClearApplications

recentFilterInfoApplications :: AttrLabelProxy "applications"
recentFilterInfoApplications = AttrLabelProxy


recentFilterInfoReadGroups :: MonadIO m => RecentFilterInfo -> m (Maybe [T.Text])
recentFilterInfoReadGroups s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO (Ptr CString)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- unpackZeroTerminatedUTF8CArray val'
        return val''
    return result

recentFilterInfoWriteGroups :: MonadIO m => RecentFilterInfo -> Ptr CString -> m ()
recentFilterInfoWriteGroups s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 40) (val :: Ptr CString)

recentFilterInfoClearGroups :: MonadIO m => RecentFilterInfo -> m ()
recentFilterInfoClearGroups s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 40) (nullPtr :: Ptr CString)

data RecentFilterInfoGroupsFieldInfo
instance AttrInfo RecentFilterInfoGroupsFieldInfo where
    type AttrAllowedOps RecentFilterInfoGroupsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint RecentFilterInfoGroupsFieldInfo = (~) (Ptr CString)
    type AttrBaseTypeConstraint RecentFilterInfoGroupsFieldInfo = (~) RecentFilterInfo
    type AttrGetType RecentFilterInfoGroupsFieldInfo = Maybe [T.Text]
    type AttrLabel RecentFilterInfoGroupsFieldInfo = "groups"
    attrGet _ = recentFilterInfoReadGroups
    attrSet _ = recentFilterInfoWriteGroups
    attrConstruct = undefined
    attrClear _ = recentFilterInfoClearGroups

recentFilterInfoGroups :: AttrLabelProxy "groups"
recentFilterInfoGroups = AttrLabelProxy


recentFilterInfoReadAge :: MonadIO m => RecentFilterInfo -> m Int32
recentFilterInfoReadAge s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO Int32
    return val

recentFilterInfoWriteAge :: MonadIO m => RecentFilterInfo -> Int32 -> m ()
recentFilterInfoWriteAge s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 48) (val :: Int32)

data RecentFilterInfoAgeFieldInfo
instance AttrInfo RecentFilterInfoAgeFieldInfo where
    type AttrAllowedOps RecentFilterInfoAgeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint RecentFilterInfoAgeFieldInfo = (~) Int32
    type AttrBaseTypeConstraint RecentFilterInfoAgeFieldInfo = (~) RecentFilterInfo
    type AttrGetType RecentFilterInfoAgeFieldInfo = Int32
    type AttrLabel RecentFilterInfoAgeFieldInfo = "age"
    attrGet _ = recentFilterInfoReadAge
    attrSet _ = recentFilterInfoWriteAge
    attrConstruct = undefined
    attrClear _ = undefined

recentFilterInfoAge :: AttrLabelProxy "age"
recentFilterInfoAge = AttrLabelProxy



type instance AttributeList RecentFilterInfo = RecentFilterInfoAttributeList
type RecentFilterInfoAttributeList = ('[ '("contains", RecentFilterInfoContainsFieldInfo), '("uri", RecentFilterInfoUriFieldInfo), '("displayName", RecentFilterInfoDisplayNameFieldInfo), '("mimeType", RecentFilterInfoMimeTypeFieldInfo), '("applications", RecentFilterInfoApplicationsFieldInfo), '("groups", RecentFilterInfoGroupsFieldInfo), '("age", RecentFilterInfoAgeFieldInfo)] :: [(Symbol, *)])

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

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

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