{-# LANGUAGE FlexibleContexts #-} -- | Designed to be imported as @qualified@. module Hbro.Webkit.WebSettings where -- {{{ Imports --import Hbro.Core import Hbro.Types import Hbro.Util import Control.Monad.IO.Class import Control.Monad.Reader import Graphics.UI.Gtk.WebKit.WebSettings import Graphics.UI.Gtk.WebKit.WebView import System.Glib.Attributes --- }}} modify :: (MonadIO m, MonadReader r m, HasWebView r) => Attr WebSettings a -> (a -> a) -> m a modify element modifier = do webView <- asks _webview settings <- io $ webViewGetWebSettings webView oldValue <- io $ get settings element io $ set settings [element := modifier oldValue] io $ webViewSetWebSettings webView settings return oldValue toggle :: (MonadIO m, MonadReader r m, HasWebView r) => Attr WebSettings Bool -> m Bool toggle = (`modify` not)