    {-# LINE 2 "./Graphics/UI/Gtk/WebKit/WebNavigationAction.chs" #-}
    -- -*-haskell-*-
    -----------------------------------------------------------------------------
    -- Module : Graphics.UI.Gtk.WebKit.WebNavigationAction
    -- Author : Andy Stewart
    -- Copyright : (c) 2010 Andy Stewart <lazycat.manatee@gmail.com>
    --
    -- This library is free software; you can redistribute it and/or
    -- modify it under the terms of the GNU Lesser General Public
    -- License as published by the Free Software Foundation; either
    -- version 2.1 of the License, or (at your option) any later version.
    --
    -- This library is distributed in the hope that it will be useful,
    -- but WITHOUT ANY WARRANTY; without even the implied warranty of
    -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    -- Lesser General Public License for more details.
    --
    -- |
    -- Maintainer : gtk2hs-users@lists.sourceforge.net
    -- Stability : provisional
    -- Portability : portable (depends on GHC)
    --
    -- Access to the WebKit NavigationAction
    -----------------------------------------------------------------------------

    module Graphics.UI.Gtk.WebKit.WebNavigationAction (
    -- * Description
    -- | 'WebNavigationAction' is used in signals to provide details about what led the navigation to
    -- happen. This includes, for instance, if the user clicked a link to start that navigation, and what
    -- mouse button was used.

    -- * Types
      WebNavigationAction,
      WebNavigationActionClass,

    -- * Enums
      NavigationReason(..),

    -- * Methods
      webNavigationActionGetButton,
      webNavigationActionGetModifierState,
      webNavigationActionGetOriginalUri,
      webNavigationActionSetOriginalUri,
      webNavigationActionGetReason,
      webNavigationActionSetReason,
      webNavigationActionGetTargetFrame,
    ) where

    import Control.Monad (liftM)

    import System.Glib.FFI
    import System.Glib.UTFString
    import System.Glib.GList
    import System.Glib.GError
    import Graphics.UI.Gtk.Gdk.Events

    import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
    import Graphics.UI.Gtk.WebKit.Types
    {-# LINE 59 "./Graphics/UI/Gtk/WebKit/WebNavigationAction.chs" #-}
    import System.Glib.GObject
    {-# LINE 60 "./Graphics/UI/Gtk/WebKit/WebNavigationAction.chs" #-}

    {-# LINE 62 "./Graphics/UI/Gtk/WebKit/WebNavigationAction.chs" #-}

    -- * Enums

    data NavigationReason = WebNavigationReasonLinkClicked
                          | WebNavigationReasonFormSubmitted
                          | WebNavigationReasonBackForward
                          | WebNavigationReasonReload
                          | WebNavigationReasonFormResubmitted
                          | WebNavigationReasonOther
                          deriving (Enum)

    {-# LINE 66 "./Graphics/UI/Gtk/WebKit/WebNavigationAction.chs" #-}

    -- * Methods

    -- | Returns the DOM identifier for the mouse button used to click.
    -- DOM button values are 0, 1 and 2 for left, middle and right buttons.
    -- If the action was not initiated by a mouse click, returns -1.
    webNavigationActionGetButton ::
       WebNavigationActionClass self => self
     -> IO Int
    webNavigationActionGetButton action =
        liftM fromIntegral $ (\(WebNavigationAction arg1) -> withForeignPtr arg1 $ \argPtr1 ->webkit_web_navigation_action_get_button argPtr1) (toWebNavigationAction action)

    -- | Returns a bitmask with the the state of the modifier keys.
    webNavigationActionGetModifierState ::
       WebNavigationActionClass self => self
     -> IO Int
    webNavigationActionGetModifierState action =
        liftM fromIntegral $ (\(WebNavigationAction arg1) -> withForeignPtr arg1 $ \argPtr1 ->webkit_web_navigation_action_get_modifier_state argPtr1) (toWebNavigationAction action)

    -- | Returns the URI that was originally requested.
    -- This may differ from the navigation target, for instance because of a redirect.
    webNavigationActionGetOriginalUri ::
       WebNavigationActionClass self => self
     -> IO String
    webNavigationActionGetOriginalUri action =
        (\(WebNavigationAction arg1) -> withForeignPtr arg1 $ \argPtr1 ->webkit_web_navigation_action_get_original_uri argPtr1) (toWebNavigationAction action) >>= peekCString

    -- | Returns the reason why WebKit is requesting a navigation.
    webNavigationActionGetReason ::
       WebNavigationActionClass self => self
     -> IO NavigationReason
    webNavigationActionGetReason action =
        liftM (toEnum . fromIntegral) $ (\(WebNavigationAction arg1) -> withForeignPtr arg1 $ \argPtr1 ->webkit_web_navigation_action_get_reason argPtr1) (toWebNavigationAction action)

    -- | Returns the target frame of the action.
    webNavigationActionGetTargetFrame ::
       WebNavigationActionClass self => self
     -> IO String
    webNavigationActionGetTargetFrame action =
        (\(WebNavigationAction arg1) -> withForeignPtr arg1 $ \argPtr1 ->webkit_web_navigation_action_get_target_frame argPtr1) (toWebNavigationAction action) >>= peekCString

    -- | Sets the URI that was originally requested.
    -- This may differ from the navigation target, for instance because of a redirect.
    webNavigationActionSetOriginalUri ::
       WebNavigationActionClass self => self
     -> String
     -> IO ()
    webNavigationActionSetOriginalUri action uri =
        withCString uri $ \uriPtr ->
            (\(WebNavigationAction arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->webkit_web_navigation_action_set_original_uri argPtr1 arg2)
    {-# LINE 116 "./Graphics/UI/Gtk/WebKit/WebNavigationAction.chs" #-}
            (toWebNavigationAction action)
            uriPtr

    -- | Sets the reason why WebKit is requesting a navigation.
    webNavigationActionSetReason ::
       WebNavigationActionClass self => self
     -> NavigationReason
     -> IO ()
    webNavigationActionSetReason action reason =
        (\(WebNavigationAction arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->webkit_web_navigation_action_set_reason argPtr1 arg2) (toWebNavigationAction action) (fromIntegral (fromEnum reason))

    foreign import ccall safe "webkit_web_navigation_action_get_button"
      webkit_web_navigation_action_get_button :: ((Ptr WebNavigationAction) -> (IO CInt))

    foreign import ccall safe "webkit_web_navigation_action_get_modifier_state"
      webkit_web_navigation_action_get_modifier_state :: ((Ptr WebNavigationAction) -> (IO CInt))

    foreign import ccall safe "webkit_web_navigation_action_get_original_uri"
      webkit_web_navigation_action_get_original_uri :: ((Ptr WebNavigationAction) -> (IO (Ptr CChar)))

    foreign import ccall safe "webkit_web_navigation_action_get_reason"
      webkit_web_navigation_action_get_reason :: ((Ptr WebNavigationAction) -> (IO CInt))

    foreign import ccall safe "webkit_web_navigation_action_get_target_frame"
      webkit_web_navigation_action_get_target_frame :: ((Ptr WebNavigationAction) -> (IO (Ptr CChar)))

    foreign import ccall safe "webkit_web_navigation_action_set_original_uri"
      webkit_web_navigation_action_set_original_uri :: ((Ptr WebNavigationAction) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall safe "webkit_web_navigation_action_set_reason"
      webkit_web_navigation_action_set_reason :: ((Ptr WebNavigationAction) -> (CInt -> (IO ())))