-- | Designed to be imported as @qualified@. module Hbro.Webkit.WebSettings where -- {{{ Imports import Hbro.Gui import Hbro.Util import Control.Monad import Control.Monad.Base import Graphics.UI.Gtk.WebKit.WebSettings import Graphics.UI.Gtk.WebKit.WebView import System.Glib.Attributes as G -- }}} set :: (MonadBase IO m, GUIReader n m) => Attr WebSettings a -> a -> m () set element newValue = modify_ element $ const newValue modify :: (MonadBase IO m, GUIReader n m) => Attr WebSettings a -> (a -> a) -> m a modify element modifier = do w <- readGUI webView settings <- io $ webViewGetWebSettings w oldValue <- io $ get settings element io $ G.set settings [element := modifier oldValue] io $ webViewSetWebSettings w settings return oldValue modify_ :: (MonadBase IO m, GUIReader n m) => Attr WebSettings a -> (a -> a) -> m () modify_ e m = void $ modify e m toggle :: (MonadBase IO m, GUIReader n m) => Attr WebSettings Bool -> m Bool toggle = (`modify` not) toggle_ :: (MonadBase IO m, GUIReader n m) => Attr WebSettings Bool -> m () toggle_ = (`modify_` not)