packages feed

gi-webkit2webextension-0.2.10.13: GI/WebKit2WebExtension/Objects/WebPage.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.WebKit2WebExtension.Objects.WebPage
    ( 

-- * Exported types
    WebPage(..)                             ,
    WebPageK                                ,
    toWebPage                               ,
    noWebPage                               ,


 -- * Methods
-- ** webPageGetDomDocument
    WebPageGetDomDocumentMethodInfo         ,
    webPageGetDomDocument                   ,


-- ** webPageGetEditor
    WebPageGetEditorMethodInfo              ,
    webPageGetEditor                        ,


-- ** webPageGetId
    WebPageGetIdMethodInfo                  ,
    webPageGetId                            ,


-- ** webPageGetMainFrame
    WebPageGetMainFrameMethodInfo           ,
    webPageGetMainFrame                     ,


-- ** webPageGetUri
    WebPageGetUriMethodInfo                 ,
    webPageGetUri                           ,




 -- * Properties
-- ** Uri
    WebPageUriPropertyInfo                  ,
    getWebPageUri                           ,




 -- * Signals
-- ** ContextMenu
    WebPageContextMenuCallback              ,
    WebPageContextMenuCallbackC             ,
    WebPageContextMenuSignalInfo            ,
    afterWebPageContextMenu                 ,
    mkWebPageContextMenuCallback            ,
    noWebPageContextMenuCallback            ,
    onWebPageContextMenu                    ,
    webPageContextMenuCallbackWrapper       ,
    webPageContextMenuClosure               ,


-- ** DocumentLoaded
    WebPageDocumentLoadedCallback           ,
    WebPageDocumentLoadedCallbackC          ,
    WebPageDocumentLoadedSignalInfo         ,
    afterWebPageDocumentLoaded              ,
    mkWebPageDocumentLoadedCallback         ,
    noWebPageDocumentLoadedCallback         ,
    onWebPageDocumentLoaded                 ,
    webPageDocumentLoadedCallbackWrapper    ,
    webPageDocumentLoadedClosure            ,


-- ** SendRequest
    WebPageSendRequestCallback              ,
    WebPageSendRequestCallbackC             ,
    WebPageSendRequestSignalInfo            ,
    afterWebPageSendRequest                 ,
    mkWebPageSendRequestCallback            ,
    noWebPageSendRequestCallback            ,
    onWebPageSendRequest                    ,
    webPageSendRequestCallbackWrapper       ,
    webPageSendRequestClosure               ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.WebKit2WebExtension.Types
import GI.WebKit2WebExtension.Callbacks
import qualified GI.GObject as GObject

newtype WebPage = WebPage (ForeignPtr WebPage)
foreign import ccall "webkit_web_page_get_type"
    c_webkit_web_page_get_type :: IO GType

type instance ParentTypes WebPage = WebPageParentTypes
type WebPageParentTypes = '[GObject.Object]

instance GObject WebPage where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_webkit_web_page_get_type
    

class GObject o => WebPageK o
instance (GObject o, IsDescendantOf WebPage o) => WebPageK o

toWebPage :: WebPageK o => o -> IO WebPage
toWebPage = unsafeCastTo WebPage

noWebPage :: Maybe WebPage
noWebPage = Nothing

type family ResolveWebPageMethod (t :: Symbol) (o :: *) :: * where
    ResolveWebPageMethod "bindProperty" o = GObject.ObjectBindPropertyMethodInfo
    ResolveWebPageMethod "bindPropertyFull" o = GObject.ObjectBindPropertyFullMethodInfo
    ResolveWebPageMethod "forceFloating" o = GObject.ObjectForceFloatingMethodInfo
    ResolveWebPageMethod "freezeNotify" o = GObject.ObjectFreezeNotifyMethodInfo
    ResolveWebPageMethod "isFloating" o = GObject.ObjectIsFloatingMethodInfo
    ResolveWebPageMethod "notify" o = GObject.ObjectNotifyMethodInfo
    ResolveWebPageMethod "notifyByPspec" o = GObject.ObjectNotifyByPspecMethodInfo
    ResolveWebPageMethod "ref" o = GObject.ObjectRefMethodInfo
    ResolveWebPageMethod "refSink" o = GObject.ObjectRefSinkMethodInfo
    ResolveWebPageMethod "replaceData" o = GObject.ObjectReplaceDataMethodInfo
    ResolveWebPageMethod "replaceQdata" o = GObject.ObjectReplaceQdataMethodInfo
    ResolveWebPageMethod "runDispose" o = GObject.ObjectRunDisposeMethodInfo
    ResolveWebPageMethod "stealData" o = GObject.ObjectStealDataMethodInfo
    ResolveWebPageMethod "stealQdata" o = GObject.ObjectStealQdataMethodInfo
    ResolveWebPageMethod "thawNotify" o = GObject.ObjectThawNotifyMethodInfo
    ResolveWebPageMethod "unref" o = GObject.ObjectUnrefMethodInfo
    ResolveWebPageMethod "watchClosure" o = GObject.ObjectWatchClosureMethodInfo
    ResolveWebPageMethod "getData" o = GObject.ObjectGetDataMethodInfo
    ResolveWebPageMethod "getDomDocument" o = WebPageGetDomDocumentMethodInfo
    ResolveWebPageMethod "getEditor" o = WebPageGetEditorMethodInfo
    ResolveWebPageMethod "getId" o = WebPageGetIdMethodInfo
    ResolveWebPageMethod "getMainFrame" o = WebPageGetMainFrameMethodInfo
    ResolveWebPageMethod "getProperty" o = GObject.ObjectGetPropertyMethodInfo
    ResolveWebPageMethod "getQdata" o = GObject.ObjectGetQdataMethodInfo
    ResolveWebPageMethod "getUri" o = WebPageGetUriMethodInfo
    ResolveWebPageMethod "setData" o = GObject.ObjectSetDataMethodInfo
    ResolveWebPageMethod "setProperty" o = GObject.ObjectSetPropertyMethodInfo
    ResolveWebPageMethod l o = MethodResolutionFailed l o

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

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

-- signal WebPage::context-menu
type WebPageContextMenuCallback =
    ContextMenu ->
    WebHitTestResult ->
    IO Bool

noWebPageContextMenuCallback :: Maybe WebPageContextMenuCallback
noWebPageContextMenuCallback = Nothing

type WebPageContextMenuCallbackC =
    Ptr () ->                               -- object
    Ptr ContextMenu ->
    Ptr WebHitTestResult ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWebPageContextMenuCallback :: WebPageContextMenuCallbackC -> IO (FunPtr WebPageContextMenuCallbackC)

webPageContextMenuClosure :: WebPageContextMenuCallback -> IO Closure
webPageContextMenuClosure cb = newCClosure =<< mkWebPageContextMenuCallback wrapped
    where wrapped = webPageContextMenuCallbackWrapper cb

webPageContextMenuCallbackWrapper ::
    WebPageContextMenuCallback ->
    Ptr () ->
    Ptr ContextMenu ->
    Ptr WebHitTestResult ->
    Ptr () ->
    IO CInt
webPageContextMenuCallbackWrapper _cb _ contextMenu hitTestResult _ = do
    contextMenu' <- (newObject ContextMenu) contextMenu
    hitTestResult' <- (newObject WebHitTestResult) hitTestResult
    result <- _cb  contextMenu' hitTestResult'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWebPageContextMenu :: (GObject a, MonadIO m) => a -> WebPageContextMenuCallback -> m SignalHandlerId
onWebPageContextMenu obj cb = liftIO $ connectWebPageContextMenu obj cb SignalConnectBefore
afterWebPageContextMenu :: (GObject a, MonadIO m) => a -> WebPageContextMenuCallback -> m SignalHandlerId
afterWebPageContextMenu obj cb = connectWebPageContextMenu obj cb SignalConnectAfter

connectWebPageContextMenu :: (GObject a, MonadIO m) =>
                             a -> WebPageContextMenuCallback -> SignalConnectMode -> m SignalHandlerId
connectWebPageContextMenu obj cb after = liftIO $ do
    cb' <- mkWebPageContextMenuCallback (webPageContextMenuCallbackWrapper cb)
    connectSignalFunPtr obj "context-menu" cb' after

-- signal WebPage::document-loaded
type WebPageDocumentLoadedCallback =
    IO ()

noWebPageDocumentLoadedCallback :: Maybe WebPageDocumentLoadedCallback
noWebPageDocumentLoadedCallback = Nothing

type WebPageDocumentLoadedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWebPageDocumentLoadedCallback :: WebPageDocumentLoadedCallbackC -> IO (FunPtr WebPageDocumentLoadedCallbackC)

webPageDocumentLoadedClosure :: WebPageDocumentLoadedCallback -> IO Closure
webPageDocumentLoadedClosure cb = newCClosure =<< mkWebPageDocumentLoadedCallback wrapped
    where wrapped = webPageDocumentLoadedCallbackWrapper cb

webPageDocumentLoadedCallbackWrapper ::
    WebPageDocumentLoadedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
webPageDocumentLoadedCallbackWrapper _cb _ _ = do
    _cb 

onWebPageDocumentLoaded :: (GObject a, MonadIO m) => a -> WebPageDocumentLoadedCallback -> m SignalHandlerId
onWebPageDocumentLoaded obj cb = liftIO $ connectWebPageDocumentLoaded obj cb SignalConnectBefore
afterWebPageDocumentLoaded :: (GObject a, MonadIO m) => a -> WebPageDocumentLoadedCallback -> m SignalHandlerId
afterWebPageDocumentLoaded obj cb = connectWebPageDocumentLoaded obj cb SignalConnectAfter

connectWebPageDocumentLoaded :: (GObject a, MonadIO m) =>
                                a -> WebPageDocumentLoadedCallback -> SignalConnectMode -> m SignalHandlerId
connectWebPageDocumentLoaded obj cb after = liftIO $ do
    cb' <- mkWebPageDocumentLoadedCallback (webPageDocumentLoadedCallbackWrapper cb)
    connectSignalFunPtr obj "document-loaded" cb' after

-- signal WebPage::send-request
type WebPageSendRequestCallback =
    URIRequest ->
    URIResponse ->
    IO Bool

noWebPageSendRequestCallback :: Maybe WebPageSendRequestCallback
noWebPageSendRequestCallback = Nothing

type WebPageSendRequestCallbackC =
    Ptr () ->                               -- object
    Ptr URIRequest ->
    Ptr URIResponse ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWebPageSendRequestCallback :: WebPageSendRequestCallbackC -> IO (FunPtr WebPageSendRequestCallbackC)

webPageSendRequestClosure :: WebPageSendRequestCallback -> IO Closure
webPageSendRequestClosure cb = newCClosure =<< mkWebPageSendRequestCallback wrapped
    where wrapped = webPageSendRequestCallbackWrapper cb

webPageSendRequestCallbackWrapper ::
    WebPageSendRequestCallback ->
    Ptr () ->
    Ptr URIRequest ->
    Ptr URIResponse ->
    Ptr () ->
    IO CInt
webPageSendRequestCallbackWrapper _cb _ request redirectedResponse _ = do
    request' <- (newObject URIRequest) request
    redirectedResponse' <- (newObject URIResponse) redirectedResponse
    result <- _cb  request' redirectedResponse'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWebPageSendRequest :: (GObject a, MonadIO m) => a -> WebPageSendRequestCallback -> m SignalHandlerId
onWebPageSendRequest obj cb = liftIO $ connectWebPageSendRequest obj cb SignalConnectBefore
afterWebPageSendRequest :: (GObject a, MonadIO m) => a -> WebPageSendRequestCallback -> m SignalHandlerId
afterWebPageSendRequest obj cb = connectWebPageSendRequest obj cb SignalConnectAfter

connectWebPageSendRequest :: (GObject a, MonadIO m) =>
                             a -> WebPageSendRequestCallback -> SignalConnectMode -> m SignalHandlerId
connectWebPageSendRequest obj cb after = liftIO $ do
    cb' <- mkWebPageSendRequestCallback (webPageSendRequestCallbackWrapper cb)
    connectSignalFunPtr obj "send-request" cb' after

-- VVV Prop "uri"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable]

getWebPageUri :: (MonadIO m, WebPageK o) => o -> m T.Text
getWebPageUri obj = liftIO $ getObjectPropertyString obj "uri"

data WebPageUriPropertyInfo
instance AttrInfo WebPageUriPropertyInfo where
    type AttrAllowedOps WebPageUriPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint WebPageUriPropertyInfo = (~) ()
    type AttrBaseTypeConstraint WebPageUriPropertyInfo = WebPageK
    type AttrGetType WebPageUriPropertyInfo = T.Text
    type AttrLabel WebPageUriPropertyInfo = "uri"
    attrGet _ = getWebPageUri
    attrSet _ = undefined
    attrConstruct _ = undefined

type instance AttributeList WebPage = WebPageAttributeList
type WebPageAttributeList = ('[ '("uri", WebPageUriPropertyInfo)] :: [(Symbol, *)])

data WebPageContextMenuSignalInfo
instance SignalInfo WebPageContextMenuSignalInfo where
    type HaskellCallbackType WebPageContextMenuSignalInfo = WebPageContextMenuCallback
    connectSignal _ = connectWebPageContextMenu

data WebPageDocumentLoadedSignalInfo
instance SignalInfo WebPageDocumentLoadedSignalInfo where
    type HaskellCallbackType WebPageDocumentLoadedSignalInfo = WebPageDocumentLoadedCallback
    connectSignal _ = connectWebPageDocumentLoaded

data WebPageSendRequestSignalInfo
instance SignalInfo WebPageSendRequestSignalInfo where
    type HaskellCallbackType WebPageSendRequestSignalInfo = WebPageSendRequestCallback
    connectSignal _ = connectWebPageSendRequest

type instance SignalList WebPage = WebPageSignalList
type WebPageSignalList = ('[ '("contextMenu", WebPageContextMenuSignalInfo), '("documentLoaded", WebPageDocumentLoadedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("sendRequest", WebPageSendRequestSignalInfo)] :: [(Symbol, *)])

-- method WebPage::get_dom_document
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "WebKit2WebExtension" "WebPage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "WebKit2WebExtension" "DOMDocument"
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_page_get_dom_document" webkit_web_page_get_dom_document :: 
    Ptr WebPage ->                          -- _obj : TInterface "WebKit2WebExtension" "WebPage"
    IO (Ptr DOMDocument)


webPageGetDomDocument ::
    (MonadIO m, WebPageK a) =>
    a                                       -- _obj
    -> m DOMDocument                        -- result
webPageGetDomDocument _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_web_page_get_dom_document _obj'
    checkUnexpectedReturnNULL "webkit_web_page_get_dom_document" result
    result' <- (newObject DOMDocument) result
    touchManagedPtr _obj
    return result'

data WebPageGetDomDocumentMethodInfo
instance (signature ~ (m DOMDocument), MonadIO m, WebPageK a) => MethodInfo WebPageGetDomDocumentMethodInfo a signature where
    overloadedMethod _ = webPageGetDomDocument

-- method WebPage::get_editor
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "WebKit2WebExtension" "WebPage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "WebKit2WebExtension" "WebEditor"
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_page_get_editor" webkit_web_page_get_editor :: 
    Ptr WebPage ->                          -- _obj : TInterface "WebKit2WebExtension" "WebPage"
    IO (Ptr WebEditor)


webPageGetEditor ::
    (MonadIO m, WebPageK a) =>
    a                                       -- _obj
    -> m WebEditor                          -- result
webPageGetEditor _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_web_page_get_editor _obj'
    checkUnexpectedReturnNULL "webkit_web_page_get_editor" result
    result' <- (newObject WebEditor) result
    touchManagedPtr _obj
    return result'

data WebPageGetEditorMethodInfo
instance (signature ~ (m WebEditor), MonadIO m, WebPageK a) => MethodInfo WebPageGetEditorMethodInfo a signature where
    overloadedMethod _ = webPageGetEditor

-- method WebPage::get_id
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "WebKit2WebExtension" "WebPage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUInt64
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_page_get_id" webkit_web_page_get_id :: 
    Ptr WebPage ->                          -- _obj : TInterface "WebKit2WebExtension" "WebPage"
    IO Word64


webPageGetId ::
    (MonadIO m, WebPageK a) =>
    a                                       -- _obj
    -> m Word64                             -- result
webPageGetId _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_web_page_get_id _obj'
    touchManagedPtr _obj
    return result

data WebPageGetIdMethodInfo
instance (signature ~ (m Word64), MonadIO m, WebPageK a) => MethodInfo WebPageGetIdMethodInfo a signature where
    overloadedMethod _ = webPageGetId

-- method WebPage::get_main_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "WebKit2WebExtension" "WebPage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "WebKit2WebExtension" "Frame"
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_page_get_main_frame" webkit_web_page_get_main_frame :: 
    Ptr WebPage ->                          -- _obj : TInterface "WebKit2WebExtension" "WebPage"
    IO (Ptr Frame)


webPageGetMainFrame ::
    (MonadIO m, WebPageK a) =>
    a                                       -- _obj
    -> m Frame                              -- result
webPageGetMainFrame _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_web_page_get_main_frame _obj'
    checkUnexpectedReturnNULL "webkit_web_page_get_main_frame" result
    result' <- (newObject Frame) result
    touchManagedPtr _obj
    return result'

data WebPageGetMainFrameMethodInfo
instance (signature ~ (m Frame), MonadIO m, WebPageK a) => MethodInfo WebPageGetMainFrameMethodInfo a signature where
    overloadedMethod _ = webPageGetMainFrame

-- method WebPage::get_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "WebKit2WebExtension" "WebPage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_page_get_uri" webkit_web_page_get_uri :: 
    Ptr WebPage ->                          -- _obj : TInterface "WebKit2WebExtension" "WebPage"
    IO CString


webPageGetUri ::
    (MonadIO m, WebPageK a) =>
    a                                       -- _obj
    -> m T.Text                             -- result
webPageGetUri _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_web_page_get_uri _obj'
    checkUnexpectedReturnNULL "webkit_web_page_get_uri" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

data WebPageGetUriMethodInfo
instance (signature ~ (m T.Text), MonadIO m, WebPageK a) => MethodInfo WebPageGetUriMethodInfo a signature where
    overloadedMethod _ = webPageGetUri