{-# LANGUAGE CPP #-} -- -*-haskell-*- ----------------------------------------------------------------------------- -- Module : Graphics.UI.Gtk.WebKit.Download -- Author : Cjacker Huang -- Copyright : (c) 2009 Cjacker Huang -- -- 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) -- -- The history of a 'WebView' ----------------------------------------------------------------------------- module Graphics.UI.Gtk.WebKit.WebBackForwardList ( -- * Types WebViewClass, WebBackForwardList, WebBackForwardListClass, -- * Constructors webBackForwardListNewWithWebView, -- * Methods webBackForwardListGoForward, webBackForwardListGoBack, webBackForwardListContainsItem, webBackForwardListGoToItem, webBackForwardListGetBackItem, webBackForwardListGetCurrentItem, webBackForwardListGetForwardItem, webBackForwardListGetNthItem, webBackForwardListGetBackLength, webBackForwardListGetForwardLength, webBackForwardListGetLimit, webBackForwardListSetLimit, webBackForwardListAddItem, webBackForwardListGetForwardListWithLimit, webBackForwardListGetBackListWithLimit, ) 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#} {#import System.Glib.GObject#} {#context lib="webkit" prefix ="webkit"#} ------------------ -- Constructors -- | Create an WebBackForwardList with a controlling WebView. webBackForwardListNewWithWebView :: (WebViewClass webview) => webview -> IO WebBackForwardList webBackForwardListNewWithWebView webview = wrapNewGObject mkWebBackForwardList $ {#call web_back_forward_list_new_with_web_view#} (toWebView webview) -- | Steps forward in the back forward list. webBackForwardListGoForward :: WebBackForwardListClass self => self -> IO() webBackForwardListGoForward webbackforwardlist = {#call web_back_forward_list_go_forward#} (toWebBackForwardList webbackforwardlist) -- | Steps back in the back forward list. webBackForwardListGoBack :: WebBackForwardListClass self => self -> IO() webBackForwardListGoBack webbackforwardlist = {#call web_back_forward_list_go_back#} (toWebBackForwardList webbackforwardlist) -- | Check if an history item in the back forward list. webBackForwardListContainsItem :: (WebBackForwardListClass self, WebHistoryItemClass item) => self -> item -> IO Bool webBackForwardListContainsItem webbackforwardlist webhistoryitem = liftM toBool $ {#call web_back_forward_list_contains_item#} (toWebBackForwardList webbackforwardlist) (toWebHistoryItem webhistoryitem) -- | Go to the specified history item in the back forward list. webBackForwardListGoToItem :: (WebBackForwardListClass self,WebHistoryItemClass item) => self -> item -> IO() webBackForwardListGoToItem webbackforwardlist webhistoryitem = {#call web_back_forward_list_go_to_item#} (toWebBackForwardList webbackforwardlist) (toWebHistoryItem webhistoryitem) -- | Return the history item that precedes the current history item. webBackForwardListGetBackItem :: WebBackForwardListClass self => self -> IO (Maybe WebHistoryItem) -- ^ A 'WebHistoryItem' or @Nothing@ -- if there is nothing precedes the current item. webBackForwardListGetBackItem webbackforwardlist = maybeNull (makeNewGObject mkWebHistoryItem) $ {#call web_back_forward_list_get_back_item#} (toWebBackForwardList webbackforwardlist) -- | Return the current history item of the back forward list webBackForwardListGetCurrentItem :: WebBackForwardListClass self => self -> IO WebHistoryItem webBackForwardListGetCurrentItem webbackforwardlist = makeNewGObject mkWebHistoryItem $ {#call web_back_forward_list_get_current_item#} (toWebBackForwardList webbackforwardlist) -- | Return the item that succeeds the current item webBackForwardListGetForwardItem :: WebBackForwardListClass self => self -> IO (Maybe WebHistoryItem) -- ^ A 'WebHistoryItem' or @Nothing@ -- if there is nothing succeeds the current item. webBackForwardListGetForwardItem webbackforwardlist = maybeNull (makeNewGObject mkWebHistoryItem) $ {#call web_back_forward_list_get_forward_item#} (toWebBackForwardList webbackforwardlist) -- | Return the history item at a given index relative to the current item. webBackForwardListGetNthItem :: WebBackForwardListClass self => self -- ^ @webbackforwardlist@ - a WebBackForwardList -> Int -- ^ @index@ - the index of the item -> IO WebHistoryItem webBackForwardListGetNthItem webbackforwardlist index = makeNewGObject mkWebHistoryItem $ {#call web_back_forward_list_get_nth_item#} (toWebBackForwardList webbackforwardlist) (fromIntegral index) -- | Return the number of items that preced the current item. webBackForwardListGetBackLength :: WebBackForwardListClass self => self -> IO Int webBackForwardListGetBackLength webbackforwardlist = liftM fromIntegral $ {#call web_back_forward_list_get_back_length#} (toWebBackForwardList webbackforwardlist) -- | Return the number of items that succeed the current item. webBackForwardListGetForwardLength :: WebBackForwardListClass self => self -> IO Int webBackForwardListGetForwardLength webbackforwardlist = liftM fromIntegral $ {#call web_back_forward_list_get_forward_length#} (toWebBackForwardList webbackforwardlist) -- | Return the maximum limit of the back forward list. webBackForwardListGetLimit :: WebBackForwardListClass self => self -> IO Int webBackForwardListGetLimit webbackforwardlist = liftM fromIntegral $ {#call web_back_forward_list_get_limit#} (toWebBackForwardList webbackforwardlist) -- | Set the maximum limit of the back forward list. -- -- if the back forward list exceeds its capacity, -- items will be removed everytime a new item had been added. -- webBackForwardListSetLimit :: WebBackForwardListClass self => self -> Int -> IO() webBackForwardListSetLimit webbackforwardlist limit = {#call web_back_forward_list_set_limit#} (toWebBackForwardList webbackforwardlist) (fromIntegral limit) -- | Add the item to the back forward list. webBackForwardListAddItem :: (WebBackForwardListClass self,WebHistoryItemClass item) => self -> item -> IO () webBackForwardListAddItem webbackforwardlist webhistoryitem = {#call web_back_forward_list_add_item#} (toWebBackForwardList webbackforwardlist) (toWebHistoryItem webhistoryitem) -- | Return a list of items that succeed the current item, limited by @limit@. webBackForwardListGetForwardListWithLimit :: WebBackForwardListClass self => self -> Int -- ^ the number of items to retrieve -> IO [WebHistoryItem] -- ^ a 'List' of items succeeding the current item, limited by limit. webBackForwardListGetForwardListWithLimit webbackforwardlist limit = {#call web_back_forward_list_get_forward_list_with_limit#} (toWebBackForwardList webbackforwardlist) (fromIntegral limit) >>= fromGList >>= mapM (makeNewGObject mkWebHistoryItem . return) -- | Return a list of items that preced the current item. -- limited by limit. webBackForwardListGetBackListWithLimit :: WebBackForwardListClass self => self -> Int -- ^ the number of items to retrieve -> IO [WebHistoryItem] -- ^ a 'List' of items preceding the current item, limited by limit webBackForwardListGetBackListWithLimit webbackforwardlist limit = {#call web_back_forward_list_get_back_list_with_limit#} (toWebBackForwardList webbackforwardlist) (fromIntegral limit) >>= fromGList >>= mapM (makeNewGObject mkWebHistoryItem . return)