packages feed

gi-poppler-0.0.34.15: GI/Poppler/Structs/ActionJavascript.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)
-}

module GI.Poppler.Structs.ActionJavascript
    ( 

-- * Exported types
    ActionJavascript(..)                    ,
    newZeroActionJavascript                 ,
    noActionJavascript                      ,


 -- * Properties
-- ** Script
    actionJavascriptClearScript             ,
    actionJavascriptReadScript              ,
    actionJavascriptScript                  ,
    actionJavascriptWriteScript             ,


-- ** Title
    actionJavascriptClearTitle              ,
    actionJavascriptReadTitle               ,
    actionJavascriptTitle                   ,
    actionJavascriptWriteTitle              ,


-- ** Type
    actionJavascriptReadType                ,
    actionJavascriptType                    ,
    actionJavascriptWriteType               ,




    ) 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.Poppler.Types
import GI.Poppler.Callbacks

newtype ActionJavascript = ActionJavascript (ForeignPtr ActionJavascript)
instance WrappedPtr ActionJavascript where
    wrappedPtrCalloc = callocBytes 24
    wrappedPtrCopy = copyPtr 24
    wrappedPtrFree = Just ptr_to_g_free

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

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


noActionJavascript :: Maybe ActionJavascript
noActionJavascript = Nothing

actionJavascriptReadType :: MonadIO m => ActionJavascript -> m ActionType
actionJavascriptReadType s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

actionJavascriptWriteType :: MonadIO m => ActionJavascript -> ActionType -> m ()
actionJavascriptWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
    let val' = (fromIntegral . fromEnum) val
    poke (ptr `plusPtr` 0) (val' :: CUInt)

data ActionJavascriptTypeFieldInfo
instance AttrInfo ActionJavascriptTypeFieldInfo where
    type AttrAllowedOps ActionJavascriptTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint ActionJavascriptTypeFieldInfo = (~) ActionType
    type AttrBaseTypeConstraint ActionJavascriptTypeFieldInfo = (~) ActionJavascript
    type AttrGetType ActionJavascriptTypeFieldInfo = ActionType
    type AttrLabel ActionJavascriptTypeFieldInfo = "type"
    attrGet _ = actionJavascriptReadType
    attrSet _ = actionJavascriptWriteType
    attrConstruct = undefined
    attrClear _ = undefined

actionJavascriptType :: AttrLabelProxy "type"
actionJavascriptType = AttrLabelProxy


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

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

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

data ActionJavascriptTitleFieldInfo
instance AttrInfo ActionJavascriptTitleFieldInfo where
    type AttrAllowedOps ActionJavascriptTitleFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ActionJavascriptTitleFieldInfo = (~) CString
    type AttrBaseTypeConstraint ActionJavascriptTitleFieldInfo = (~) ActionJavascript
    type AttrGetType ActionJavascriptTitleFieldInfo = Maybe T.Text
    type AttrLabel ActionJavascriptTitleFieldInfo = "title"
    attrGet _ = actionJavascriptReadTitle
    attrSet _ = actionJavascriptWriteTitle
    attrConstruct = undefined
    attrClear _ = actionJavascriptClearTitle

actionJavascriptTitle :: AttrLabelProxy "title"
actionJavascriptTitle = AttrLabelProxy


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

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

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

data ActionJavascriptScriptFieldInfo
instance AttrInfo ActionJavascriptScriptFieldInfo where
    type AttrAllowedOps ActionJavascriptScriptFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint ActionJavascriptScriptFieldInfo = (~) CString
    type AttrBaseTypeConstraint ActionJavascriptScriptFieldInfo = (~) ActionJavascript
    type AttrGetType ActionJavascriptScriptFieldInfo = Maybe T.Text
    type AttrLabel ActionJavascriptScriptFieldInfo = "script"
    attrGet _ = actionJavascriptReadScript
    attrSet _ = actionJavascriptWriteScript
    attrConstruct = undefined
    attrClear _ = actionJavascriptClearScript

actionJavascriptScript :: AttrLabelProxy "script"
actionJavascriptScript = AttrLabelProxy



type instance AttributeList ActionJavascript = ActionJavascriptAttributeList
type ActionJavascriptAttributeList = ('[ '("type", ActionJavascriptTypeFieldInfo), '("title", ActionJavascriptTitleFieldInfo), '("script", ActionJavascriptScriptFieldInfo)] :: [(Symbol, *)])

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

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

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