gi-gtk-0.3.18.14: GI/Gtk/Structs/RecentData.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)
Meta-data to be passed to gtk_recent_manager_add_full() when
registering a recently used resource.
-}
module GI.Gtk.Structs.RecentData
(
-- * Exported types
RecentData(..) ,
newZeroRecentData ,
noRecentData ,
-- * Properties
-- ** AppExec
recentDataAppExec ,
recentDataClearAppExec ,
recentDataReadAppExec ,
recentDataWriteAppExec ,
-- ** AppName
recentDataAppName ,
recentDataClearAppName ,
recentDataReadAppName ,
recentDataWriteAppName ,
-- ** Description
recentDataClearDescription ,
recentDataDescription ,
recentDataReadDescription ,
recentDataWriteDescription ,
-- ** DisplayName
recentDataClearDisplayName ,
recentDataDisplayName ,
recentDataReadDisplayName ,
recentDataWriteDisplayName ,
-- ** Groups
recentDataClearGroups ,
recentDataGroups ,
recentDataReadGroups ,
recentDataWriteGroups ,
-- ** IsPrivate
recentDataIsPrivate ,
recentDataReadIsPrivate ,
recentDataWriteIsPrivate ,
-- ** MimeType
recentDataClearMimeType ,
recentDataMimeType ,
recentDataReadMimeType ,
recentDataWriteMimeType ,
) 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 RecentData = RecentData (ForeignPtr RecentData)
-- | Construct a `RecentData` struct initialized to zero.
newZeroRecentData :: MonadIO m => m RecentData
newZeroRecentData = liftIO $ callocBytes 56 >>= wrapPtr RecentData
instance tag ~ 'AttrSet => Constructible RecentData tag where
new _ attrs = do
o <- newZeroRecentData
GI.Attributes.set o attrs
return o
noRecentData :: Maybe RecentData
noRecentData = Nothing
recentDataReadDisplayName :: MonadIO m => RecentData -> m (Maybe T.Text)
recentDataReadDisplayName s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CString
result <- convertIfNonNull val $ \val' -> do
val'' <- cstringToText val'
return val''
return result
recentDataWriteDisplayName :: MonadIO m => RecentData -> CString -> m ()
recentDataWriteDisplayName s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: CString)
recentDataClearDisplayName :: MonadIO m => RecentData -> m ()
recentDataClearDisplayName s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (nullPtr :: CString)
data RecentDataDisplayNameFieldInfo
instance AttrInfo RecentDataDisplayNameFieldInfo where
type AttrAllowedOps RecentDataDisplayNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint RecentDataDisplayNameFieldInfo = (~) CString
type AttrBaseTypeConstraint RecentDataDisplayNameFieldInfo = (~) RecentData
type AttrGetType RecentDataDisplayNameFieldInfo = Maybe T.Text
type AttrLabel RecentDataDisplayNameFieldInfo = "display_name"
attrGet _ = recentDataReadDisplayName
attrSet _ = recentDataWriteDisplayName
attrConstruct = undefined
attrClear _ = recentDataClearDisplayName
recentDataDisplayName :: AttrLabelProxy "displayName"
recentDataDisplayName = AttrLabelProxy
recentDataReadDescription :: MonadIO m => RecentData -> m (Maybe T.Text)
recentDataReadDescription 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
recentDataWriteDescription :: MonadIO m => RecentData -> CString -> m ()
recentDataWriteDescription s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (val :: CString)
recentDataClearDescription :: MonadIO m => RecentData -> m ()
recentDataClearDescription s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (nullPtr :: CString)
data RecentDataDescriptionFieldInfo
instance AttrInfo RecentDataDescriptionFieldInfo where
type AttrAllowedOps RecentDataDescriptionFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint RecentDataDescriptionFieldInfo = (~) CString
type AttrBaseTypeConstraint RecentDataDescriptionFieldInfo = (~) RecentData
type AttrGetType RecentDataDescriptionFieldInfo = Maybe T.Text
type AttrLabel RecentDataDescriptionFieldInfo = "description"
attrGet _ = recentDataReadDescription
attrSet _ = recentDataWriteDescription
attrConstruct = undefined
attrClear _ = recentDataClearDescription
recentDataDescription :: AttrLabelProxy "description"
recentDataDescription = AttrLabelProxy
recentDataReadMimeType :: MonadIO m => RecentData -> m (Maybe T.Text)
recentDataReadMimeType 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
recentDataWriteMimeType :: MonadIO m => RecentData -> CString -> m ()
recentDataWriteMimeType s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 16) (val :: CString)
recentDataClearMimeType :: MonadIO m => RecentData -> m ()
recentDataClearMimeType s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 16) (nullPtr :: CString)
data RecentDataMimeTypeFieldInfo
instance AttrInfo RecentDataMimeTypeFieldInfo where
type AttrAllowedOps RecentDataMimeTypeFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint RecentDataMimeTypeFieldInfo = (~) CString
type AttrBaseTypeConstraint RecentDataMimeTypeFieldInfo = (~) RecentData
type AttrGetType RecentDataMimeTypeFieldInfo = Maybe T.Text
type AttrLabel RecentDataMimeTypeFieldInfo = "mime_type"
attrGet _ = recentDataReadMimeType
attrSet _ = recentDataWriteMimeType
attrConstruct = undefined
attrClear _ = recentDataClearMimeType
recentDataMimeType :: AttrLabelProxy "mimeType"
recentDataMimeType = AttrLabelProxy
recentDataReadAppName :: MonadIO m => RecentData -> m (Maybe T.Text)
recentDataReadAppName 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
recentDataWriteAppName :: MonadIO m => RecentData -> CString -> m ()
recentDataWriteAppName s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 24) (val :: CString)
recentDataClearAppName :: MonadIO m => RecentData -> m ()
recentDataClearAppName s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 24) (nullPtr :: CString)
data RecentDataAppNameFieldInfo
instance AttrInfo RecentDataAppNameFieldInfo where
type AttrAllowedOps RecentDataAppNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint RecentDataAppNameFieldInfo = (~) CString
type AttrBaseTypeConstraint RecentDataAppNameFieldInfo = (~) RecentData
type AttrGetType RecentDataAppNameFieldInfo = Maybe T.Text
type AttrLabel RecentDataAppNameFieldInfo = "app_name"
attrGet _ = recentDataReadAppName
attrSet _ = recentDataWriteAppName
attrConstruct = undefined
attrClear _ = recentDataClearAppName
recentDataAppName :: AttrLabelProxy "appName"
recentDataAppName = AttrLabelProxy
recentDataReadAppExec :: MonadIO m => RecentData -> m (Maybe T.Text)
recentDataReadAppExec 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
recentDataWriteAppExec :: MonadIO m => RecentData -> CString -> m ()
recentDataWriteAppExec s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 32) (val :: CString)
recentDataClearAppExec :: MonadIO m => RecentData -> m ()
recentDataClearAppExec s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 32) (nullPtr :: CString)
data RecentDataAppExecFieldInfo
instance AttrInfo RecentDataAppExecFieldInfo where
type AttrAllowedOps RecentDataAppExecFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint RecentDataAppExecFieldInfo = (~) CString
type AttrBaseTypeConstraint RecentDataAppExecFieldInfo = (~) RecentData
type AttrGetType RecentDataAppExecFieldInfo = Maybe T.Text
type AttrLabel RecentDataAppExecFieldInfo = "app_exec"
attrGet _ = recentDataReadAppExec
attrSet _ = recentDataWriteAppExec
attrConstruct = undefined
attrClear _ = recentDataClearAppExec
recentDataAppExec :: AttrLabelProxy "appExec"
recentDataAppExec = AttrLabelProxy
recentDataReadGroups :: MonadIO m => RecentData -> m (Maybe [T.Text])
recentDataReadGroups 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
recentDataWriteGroups :: MonadIO m => RecentData -> Ptr CString -> m ()
recentDataWriteGroups s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 40) (val :: Ptr CString)
recentDataClearGroups :: MonadIO m => RecentData -> m ()
recentDataClearGroups s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 40) (nullPtr :: Ptr CString)
data RecentDataGroupsFieldInfo
instance AttrInfo RecentDataGroupsFieldInfo where
type AttrAllowedOps RecentDataGroupsFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint RecentDataGroupsFieldInfo = (~) (Ptr CString)
type AttrBaseTypeConstraint RecentDataGroupsFieldInfo = (~) RecentData
type AttrGetType RecentDataGroupsFieldInfo = Maybe [T.Text]
type AttrLabel RecentDataGroupsFieldInfo = "groups"
attrGet _ = recentDataReadGroups
attrSet _ = recentDataWriteGroups
attrConstruct = undefined
attrClear _ = recentDataClearGroups
recentDataGroups :: AttrLabelProxy "groups"
recentDataGroups = AttrLabelProxy
recentDataReadIsPrivate :: MonadIO m => RecentData -> m Bool
recentDataReadIsPrivate s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 48) :: IO CInt
let val' = (/= 0) val
return val'
recentDataWriteIsPrivate :: MonadIO m => RecentData -> Bool -> m ()
recentDataWriteIsPrivate s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = (fromIntegral . fromEnum) val
poke (ptr `plusPtr` 48) (val' :: CInt)
data RecentDataIsPrivateFieldInfo
instance AttrInfo RecentDataIsPrivateFieldInfo where
type AttrAllowedOps RecentDataIsPrivateFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint RecentDataIsPrivateFieldInfo = (~) Bool
type AttrBaseTypeConstraint RecentDataIsPrivateFieldInfo = (~) RecentData
type AttrGetType RecentDataIsPrivateFieldInfo = Bool
type AttrLabel RecentDataIsPrivateFieldInfo = "is_private"
attrGet _ = recentDataReadIsPrivate
attrSet _ = recentDataWriteIsPrivate
attrConstruct = undefined
attrClear _ = undefined
recentDataIsPrivate :: AttrLabelProxy "isPrivate"
recentDataIsPrivate = AttrLabelProxy
type instance AttributeList RecentData = RecentDataAttributeList
type RecentDataAttributeList = ('[ '("displayName", RecentDataDisplayNameFieldInfo), '("description", RecentDataDescriptionFieldInfo), '("mimeType", RecentDataMimeTypeFieldInfo), '("appName", RecentDataAppNameFieldInfo), '("appExec", RecentDataAppExecFieldInfo), '("groups", RecentDataGroupsFieldInfo), '("isPrivate", RecentDataIsPrivateFieldInfo)] :: [(Symbol, *)])
type family ResolveRecentDataMethod (t :: Symbol) (o :: *) :: * where
ResolveRecentDataMethod l o = MethodResolutionFailed l o
instance (info ~ ResolveRecentDataMethod t RecentData, MethodInfo info RecentData p) => IsLabelProxy t (RecentData -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveRecentDataMethod t RecentData, MethodInfo info RecentData p) => IsLabel t (RecentData -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif