module Hbro.Core (
goHome,
goTop,
goBottom,
goLeft,
goRight,
printPage,
executeJSFile
) where
import Hbro.Types
import Hbro.Util
import Data.Foldable
import Graphics.UI.Gtk.Misc.Adjustment
import Graphics.UI.Gtk.Scrolling.ScrolledWindow
import Graphics.UI.Gtk.WebKit.WebDataSource
import Graphics.UI.Gtk.WebKit.WebFrame
import Graphics.UI.Gtk.WebKit.WebView hiding(webViewGetUri, webViewLoadUri)
import Network.URI
import System.Console.CmdArgs
goHome :: WebView -> Config -> IO ()
goHome webView config@Config{ mHomePage = homeURI } = forM_ (parseURIReference homeURI) $ webViewLoadUri webView
goTop :: ScrolledWindow -> IO ()
goTop window = do
adjustment <- scrolledWindowGetVAdjustment window
lower <- adjustmentGetLower adjustment
adjustmentSetValue adjustment lower
goBottom :: ScrolledWindow -> IO ()
goBottom window = do
adjustment <- scrolledWindowGetVAdjustment window
upper <- adjustmentGetUpper adjustment
adjustmentSetValue adjustment upper
goLeft :: ScrolledWindow -> IO ()
goLeft window = do
adjustment <- scrolledWindowGetHAdjustment window
lower <- adjustmentGetLower adjustment
adjustmentSetValue adjustment lower
goRight :: ScrolledWindow -> IO ()
goRight window = do
adjustment <- scrolledWindowGetHAdjustment window
upper <- adjustmentGetUpper adjustment
adjustmentSetValue adjustment upper
printPage :: WebView -> IO ()
printPage webView = webViewGetMainFrame webView >>= webFramePrint
executeJSFile :: FilePath -> WebView -> IO ()
executeJSFile filePath webView = do
whenNormal $ putStrLn ("Executing Javascript file: " ++ filePath)
script <- readFile filePath
let script' = unwords . map (\line -> line ++ "\n") . lines $ script
webViewExecuteScript webView script'
_savePage :: String -> WebView -> IO ()
_savePage _path webView = do
frame <- webViewGetMainFrame webView
dataSource <- webFrameGetDataSource frame
_mainResource <- webDataSourceGetMainResource dataSource
_subResources <- webDataSourceGetSubresources dataSource
return ()