module Hbro.Webkit.WebSettings where
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)