module Hbro.Types where
import Data.Map
import Graphics.UI.Gtk.Builder
import Graphics.UI.Gtk.Display.Label
import Graphics.UI.Gtk.Entry.Entry
import Graphics.UI.Gtk.Layout.HBox
import Graphics.UI.Gtk.Gdk.EventM
import Graphics.UI.Gtk.Scrolling.ScrolledWindow
import Graphics.UI.Gtk.WebKit.WebSettings
import Graphics.UI.Gtk.WebKit.WebView
import Graphics.UI.Gtk.Windows.Window
import Prelude
import System.Console.CmdArgs
import System.ZMQ
data Browser = Browser {
mOptions :: CliOptions,
mConfiguration :: Configuration,
mGUI :: GUI
}
data CliOptions = CliOptions {
mURI :: Maybe String
} deriving (Data, Typeable, Show, Eq)
data Configuration = Configuration {
mHomePage :: String,
mSocketDir :: String,
mUIFile :: String,
mKeys :: KeysList,
mWebSettings :: IO WebSettings,
mSetup :: Browser -> IO (),
mCommands :: CommandsList,
mError :: Maybe String
}
data GUI = GUI {
mWindow :: Window,
mInspectorWindow :: Window,
mScrollWindow :: ScrolledWindow,
mWebView :: WebView,
mPromptLabel :: Label,
mPromptEntry :: Entry,
mStatusBox :: HBox,
mBuilder :: Builder
}
type KeysList = [(([Modifier], String), (Browser -> IO ()))]
type CommandsList = [(String, ([String] -> Socket Rep -> Browser -> IO ()))]
type CommandsMap = Map String ([String] -> Socket Rep -> Browser -> IO ())