-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Minimal KISS compliant browser
--   
--   Minimal KISS compliant browser
@package hbro
@version 1.1.2.2


-- | Key bindings model. Designed to be imported as <tt>qualified</tt>.
module Hbro.Keys

-- | A tree implementation that labels edges
data Tree edge leaf
Empty :: Tree edge leaf
Leaf :: leaf -> Tree edge leaf
Branch :: (Map edge (Tree edge leaf)) -> Tree edge leaf

-- | A single keystroke, i.e. a set of modifiers and a single key (its
--   string description)
type Stroke = (Set Modifier, String)

-- | List of keys bound to actions
type Bindings m = Tree Stroke (m ())
data Mode
Normal :: Mode
Insert :: Mode

-- | Global state
data Status
Status :: Mode -> [Stroke] -> Status

-- | Current mode
_mode :: Status -> Mode

-- | Previous keystrokes
_strokes :: Status -> [Stroke]
mode :: Lens' Status Mode
strokes :: Lens' Status [Stroke]

-- | <tt>MonadReader</tt> for <a>Status</a>
class StatusReader m
readStatus :: StatusReader m => Simple Lens Status a -> m a

-- | <tt>MonadWriter</tt> for <a>Status</a>
class StatusWriter m
writeStatus :: StatusWriter m => Simple Lens Status a -> a -> m ()

-- | <tt>MonadState</tt> for <a>Status</a>
type StatusState m = (StatusReader m, StatusWriter m)
mkStroke :: [Modifier] -> KeyVal -> Maybe Stroke

-- | In case of conflicts, the rightmost operand is preferred
merge :: Ord a => Tree a b -> Tree a b -> Tree a b
lookup :: Ord a => [a] -> Tree a b -> Maybe (Tree a b)

-- | Parse a <a>String</a> representation of a keystrokes chain
deserialize :: String -> Maybe [Stroke]
prefixMod :: Modifier -> [Stroke] -> Maybe [Stroke]
serialize :: Stroke -> String
toString :: KeyVal -> Maybe String
mkBinding :: String -> m () -> Maybe (Bindings m)
toBindings :: [(String, m ())] -> Bindings m
instance Ord Modifier
instance (Show edge, Show leaf) => Show (Tree edge leaf)
instance Eq Mode
instance Ord Mode
instance Default Status

module Hbro.Util

-- | Alias for <tt>liftIO</tt>
io :: MonadBase IO m => IO a -> m a

-- | Like <a>forkIO</a> using <a>MVar</a> as thread control
fork :: MonadBaseControl IO m => m () -> m (MVar ())

-- | Like '(<a>/</a>)' with first argument in IO to build
--   platform-dependent paths.
(>/>) :: MonadBase IO m => IO FilePath -> FilePath -> m FilePath

-- | Run external command and won't kill when parent process exit.
spawn :: MonadBase IO m => String -> [String] -> m ()

-- | Return the list of process IDs corresponding to all running instances
--   of the browser.
getAllProcessIDs :: MonadBase IO m => m [ProcessID]
allItalic :: PangoAttribute
allBold :: PangoAttribute
postGUISync' :: MonadBaseControl IO m => m a -> m a


-- | Designed to be imported as <tt>qualified</tt>.
module Hbro.IPC
data IPC
IPC :: Context -> Socket Rep -> IPC
_context :: IPC -> Context
_receiver :: IPC -> Socket Rep

-- | <tt>MonadReader</tt> for <a>IPC</a>
class IPCReader m
readIPC :: IPCReader m => Simple Lens IPC a -> m a
receiver :: Lens' IPC (Socket Rep)
context :: Lens' IPC Context
newtype CommandsMap m
CommandsMap :: Map String ([String] -> m String) -> CommandsMap m
unwrap :: CommandsMap m -> Map String ([String] -> m String)

-- | Send message through given socket
send :: (MonadBase IO m, Sender a) => Socket a -> String -> m ()

-- | Wait for a message to be received from given socket
read :: (MonadBase IO m, Receiver a) => Socket a -> m String

-- | Send a single command to the given socket (which must be <a>Rep</a>),
--   and return the answer
sendCommand :: (MonadBase IO m, IPCReader m) => String -> String -> m String

module Hbro.Notification
data NotificationBar
NotificationBar :: Label -> IORef (Maybe HandlerId) -> NotificationBar
_label :: NotificationBar -> Label
_timer :: NotificationBar -> IORef (Maybe HandlerId)
timer :: Lens' NotificationBar (IORef (Maybe HandlerId))
label :: Lens' NotificationBar Label

-- | <tt>MonadReader</tt> for <a>NotificationBar</a>
class NotificationReader m
readNotification :: NotificationReader m => Simple Lens NotificationBar a -> m a

-- | <tt>MonadWriter</tt> for <a>NotificationBar</a>
class Monad m => NotificationWriter m
writeNotification :: NotificationWriter m => Simple Lens NotificationBar a -> a -> m a

-- | <tt>MonadState</tt> for <a>NotificationBar</a>
type NotificationState m = (NotificationReader m, NotificationWriter m)
notify :: (Functor m, MonadBase IO m, NotificationReader m, Error e, MonadError e m) => Int -> String -> m ()


-- | Commandline options tools. Designed to be imported as
--   <tt>qualified</tt>.
module Hbro.Options

-- | Available commandline options (cf <tt>hbro -h</tt>).
data CliOptions

-- | <a>MonadReader</a> for <a>CliOptions</a>
class OptionsReader m
readOptions :: OptionsReader m => Simple Lens CliOptions a -> m a
startURI :: Lens' CliOptions (Maybe String)
socketPath :: Lens' CliOptions (Maybe FilePath)
help :: Lens' CliOptions Bool
quiet :: Lens' CliOptions Bool
uIFile :: Lens' CliOptions (Maybe FilePath)
verbose :: Lens' CliOptions Bool
version :: Lens' CliOptions Bool
vanilla :: Lens' CliOptions Bool
recompile :: Lens' CliOptions Bool
denyReconf :: Lens' CliOptions Bool
forceReconf :: Lens' CliOptions Bool
dyreDebug :: Lens' CliOptions Bool

-- | Usage text (cf <tt>hbro -h</tt>)
usage :: String

-- | Get and parse commandline options
get :: MonadBase IO m => m CliOptions
getStartURI :: (MonadBase IO m, OptionsReader m) => m (Maybe URI)

-- | Return socket URI used by this instance
getSocketURI :: (MonadBase IO m, OptionsReader m) => m String
instance OptionsReader ((->) CliOptions)
instance Monad m => OptionsReader (ReaderT CliOptions m)
instance Default CliOptions
instance Show CliOptions
instance Eq CliOptions

module Hbro.Gtk.ScrolledWindow
data Axis
Horizontal :: Axis
Vertical :: Axis
data Position
Absolute :: Double -> Position
Relative :: Double -> Position
getAdjustment :: MonadBase IO m => Axis -> ScrolledWindow -> m Adjustment

-- | General scrolling command.
scroll :: MonadBase IO m => Axis -> Position -> ScrolledWindow -> m ()

module Hbro.Error
data HError
CannotGoBack :: HError
CannotGoForward :: HError
EmptyCallback :: HError
EmptyClipboard :: HError
EmptyDownloadURI :: Download -> HError
EmptyRequestURI :: NetworkRequest -> HError
EmptySuggestedFileName :: Download -> HError
InvalidIconURI :: HError
InvalidPageTitle :: HError
InvalidPageURI :: HError
InvalidURI :: String -> HError
IOE :: IOError -> HError
OtherError :: String -> HError
instance Show HError
instance Error HError


-- | Designed to be imported as <tt>qualified</tt>.
module Hbro.Clipboard

-- | Write given string to primary clipboard
insert :: MonadBase IO m => String -> m ()

-- | Feed given function with primary cliboard's content
with :: (MonadBaseControl IO m, MonadError HError m) => (String -> m a) -> m ()

-- | Wrapping around <a>clipboardRequestText</a> to be able to use any
--   monad based on IO as callback
requestText :: (MonadBaseControl IO m, ClipboardClass a, MonadError HError m) => a -> (String -> m b) -> m ()


-- | Functions from <a>URI</a> rewritten with <a>MonadError</a> instead of
--   <a>Maybe</a>.
module Hbro.Network
parseURIReference :: MonadError HError m => String -> m URI
parseURI :: MonadError HError m => String -> m URI


-- | Rewrite many <a>WebView</a> functions in a monadic way. Designed to be
--   imported as <tt>qualified</tt>.
module Hbro.Webkit.WebView
init :: MonadBase IO m => WebView -> m ()
getUri :: (MonadBase IO m, MonadError HError m) => WebView -> m URI
getTitle :: (MonadBase IO m, MonadError HError m) => WebView -> m String
getIconUri :: (MonadBase IO m, MonadError HError m) => WebView -> m URI
networkRequestGetUri :: NetworkRequest -> forall m. (MonadBase IO m, MonadError HError m) => m URI
downloadGetUri :: (MonadBase IO m, MonadError HError m) => Download -> m URI
downloadGetSuggestedFilename :: (MonadBase IO m, MonadError HError m) => Download -> m String


-- | Designed to be imported as <tt>qualified</tt>.
module Hbro.Prompt
data PromptBar m
PromptBar :: HBox -> Label -> Entry -> IORef (String -> m ()) -> IORef (String -> m ()) -> PromptBar m
_box :: PromptBar m -> HBox
_description :: PromptBar m -> Label
_entry :: PromptBar m -> Entry
_onChanged :: PromptBar m -> IORef (String -> m ())
_onValidated :: PromptBar m -> IORef (String -> m ())
onChanged :: Lens' (PromptBar m_arIC) (IORef (String -> m_arIC ()))
onValidated :: Lens' (PromptBar m_arIC) (IORef (String -> m_arIC ()))
entry :: Lens' (PromptBar m_arIC) Entry
description :: Lens' (PromptBar m_arIC) Label
box :: Lens' (PromptBar m_arIC) HBox
class (Monad m, Monad n) => PromptReader n m | m -> n
readPrompt :: PromptReader n m => Simple Lens (PromptBar n) a -> m a
init :: (MonadBase IO m, MonadBaseControl IO m, NotificationReader m, Error e, Show e, MonadError e m) => PromptBar m -> m ()
open :: (Functor m, MonadBase IO m, PromptReader n m, MonadWriter String m) => String -> String -> m ()
hide :: (MonadBase IO m, PromptReader n m) => m ()

-- | Close prompt, clean its content and callbacks
clean :: (MonadBase IO m, PromptReader n m) => m ()

-- | Open prompt bar with given description and default value, and register
--   a callback to trigger at validation.
read :: (MonadBaseControl IO m, PromptReader m m, Error e, MonadError e m, MonadWriter String m) => String -> String -> (String -> m ()) -> m ()

-- | Same as <a>read</a>, but callback is triggered for each change in
--   prompt's entry.
incrementalRead :: (MonadBase IO m, MonadBaseControl IO m, PromptReader m m, Error e, MonadError e m, MonadWriter String m) => String -> String -> (String -> m ()) -> m ()

-- | Alias for <a>incrementalRead</a>.
iread :: (MonadBaseControl IO m, PromptReader m m, Error e, MonadError e m, MonadWriter String m) => String -> String -> (String -> m ()) -> m ()

-- | Same as <a>read</a> for URI values
readURI :: (MonadBase IO m, PromptReader m m, MonadError HError m, MonadWriter String m) => String -> String -> (URI -> m ()) -> m ()
getEntryValue :: (MonadBase IO m, PromptReader n m) => m String

module Hbro.Gui

-- | UI elements that can be built from a <tt>GtkBuilder</tt> object (that
--   is: an XML file)
class Buildable a
build :: (Buildable a, MonadBase IO m) => Builder -> m a
newtype StatusBar
StatusBar :: HBox -> StatusBar
data GUI m

-- | <tt>MonadReader</tt> for <a>GUI</a>
class Monad m => GUIReader n m | m -> n
readGUI :: GUIReader n m => Simple Lens (GUI n) a -> m a
mainWindow :: Lens' (GUI m_avMR) Window
inspectorWindow :: Lens' (GUI m_avMR) Window
scrollWindow :: Lens' (GUI m_avMR) ScrolledWindow
webView :: Lens' (GUI m_avMR) WebView
promptBar :: Lens (GUI m_avMR) (GUI m_avOk) (PromptBar m_avMR) (PromptBar m_avOk)
statusBar :: Lens' (GUI m_avMR) StatusBar
notificationBar :: Lens' (GUI m_avMR) NotificationBar
builder :: Lens' (GUI m_avMR) Builder

-- | Return the casted <a>GObject</a> corresponding to the given name (set
--   in the builder's XML file)
getObject :: (MonadBase IO m, GUIReader n m, GObjectClass a) => (GObject -> a) -> String -> m a

-- | Toggle a widget's visibility (provided for convenience).
toggleVisibility :: (MonadBase IO m, WidgetClass a) => a -> m ()
buildFrom :: (Monad n, MonadBase IO m) => FilePath -> m (GUI n)
init :: (MonadBase IO m, MonadBaseControl IO m, GUIReader m m, NotificationReader m, PromptReader m m, Error e, Show e, MonadError e m) => m ()
instance Monad m => Buildable (GUI m)
instance Buildable NotificationBar
instance Buildable StatusBar
instance Buildable (Window, VBox)
instance Buildable (WebView, ScrolledWindow)
instance Monad m => Buildable (PromptBar m)
instance WidgetClass StatusBar
instance ObjectClass StatusBar
instance GObjectClass StatusBar


-- | Designed to be imported as <tt>qualified</tt>.
module Hbro.Webkit.WebSettings
set :: (MonadBase IO m, GUIReader n m) => Attr WebSettings a -> a -> m ()
modify :: (MonadBase IO m, GUIReader n m) => Attr WebSettings a -> (a -> a) -> m a
modify_ :: (MonadBase IO m, GUIReader n m) => Attr WebSettings a -> (a -> a) -> m ()
toggle :: (MonadBase IO m, GUIReader n m) => Attr WebSettings Bool -> m Bool
toggle_ :: (MonadBase IO m, GUIReader n m) => Attr WebSettings Bool -> m ()

module Hbro.Config
data ResourceAction
Load :: ResourceAction
Download :: ResourceAction
data Verbosity
Quiet :: Verbosity
Normal :: Verbosity
Verbose :: Verbosity

-- | Custom settings provided by the user
data Config m
Config :: URI -> Verbosity -> Map Mode (Bindings m) -> (URI -> String -> Int -> m ()) -> ([Stroke] -> m ()) -> (MouseButton -> URI -> m ()) -> (URI -> m ()) -> m () -> (URI -> m ()) -> (URI -> String -> m ResourceAction) -> (String -> m ()) -> CommandsMap m -> Config m

-- | Startup page Parameters
_homePage :: Config m -> URI

-- | Logs verbosity Hooks
_verbosity :: Config m -> Verbosity

-- | Key bindings
_keyBindings :: Config m -> Map Mode (Bindings m)

-- | Callback triggered when a download is requested
_onDownload :: Config m -> URI -> String -> Int -> m ()

-- | Callback triggered when a key is pressed
_onKeyStroke :: Config m -> [Stroke] -> m ()

-- | Callback triggered when a link is clicked
_onLinkClicked :: Config m -> MouseButton -> URI -> m ()

-- | Callback triggered when a load is requested
_onLoadRequested :: Config m -> URI -> m ()

-- | Callback triggered when a load is finished
_onLoadFinished :: Config m -> m ()

-- | Callback triggered when a new window is requested
_onNewWindow :: Config m -> URI -> m ()

-- | Callback triggered when opening a non HTML resource
_onResourceOpened :: Config m -> URI -> String -> m ResourceAction

-- | Callback triggered when document title is changed
_onTitleChanged :: Config m -> String -> m ()

-- | Commands recognized through IPC system
_commands :: Config m -> CommandsMap m
verbosity :: Lens' (Config m_azRU) Verbosity
onTitleChanged :: Lens' (Config m_azRU) (String -> m_azRU ())
onResourceOpened :: Lens' (Config m_azRU) (URI -> String -> m_azRU ResourceAction)
onNewWindow :: Lens' (Config m_azRU) (URI -> m_azRU ())
onLoadRequested :: Lens' (Config m_azRU) (URI -> m_azRU ())
onLoadFinished :: Lens' (Config m_azRU) (m_azRU ())
onLinkClicked :: Lens' (Config m_azRU) (MouseButton -> URI -> m_azRU ())
onKeyStroke :: Lens' (Config m_azRU) ([Stroke] -> m_azRU ())
onDownload :: Lens' (Config m_azRU) (URI -> String -> Int -> m_azRU ())
keyBindings :: Lens' (Config m_azRU) (Map Mode (Bindings m_azRU))
homePage :: Lens' (Config m_azRU) URI
commands :: Lens' (Config m_azRU) (CommandsMap m_azRU)

-- | <tt>MonadReader</tt> for <a>Config</a>
class Monad m => ConfigReader n m | m -> n
readConfig :: ConfigReader n m => Simple Lens (Config n) a -> m a

-- | <tt>MonadWriter</tt> for <a>Config</a>
class Monad m => ConfigWriter n m | m -> n
writeConfig :: ConfigWriter n m => Simple Lens (Config n) a -> a -> m ()

-- | <tt>MonadState</tt> for <a>Config</a>
type ConfigState n m = (ConfigReader n m, ConfigWriter n m)
modifyConfig :: ConfigState n m => Simple Lens (Config n) a -> (a -> a) -> m ()

-- | Run an action unless verbosity is <a>Quiet</a>
unlessQuiet :: (MonadBase IO m, ConfigReader n m) => m () -> m ()

-- | Run an action when verbosity is <a>Verbose</a>
whenLoud :: (MonadBase IO m, ConfigReader n m) => m () -> m ()
log :: (MonadBase IO m, ConfigReader n m) => String -> m ()
logV :: (MonadBase IO m, ConfigReader n m) => String -> m ()

-- | Bind a keystrokes chain to a callback, in a given mode
bind :: (MonadBase IO m, ConfigState m m) => Mode -> String -> m () -> m ()
instance ConfigReader n ((->) (Config n))
instance Show (Config m)
instance Eq Verbosity
instance Show Verbosity

module Hbro.Core
newtype K a
K :: ErrorT HError (WriterT String (ReaderT CliOptions (ReaderT (IORef (Config K)) (ReaderT (GUI K) (ReaderT IPC (ReaderT (IORef Status) IO)))))) a -> K a
unKT :: K a -> ErrorT HError (WriterT String (ReaderT CliOptions (ReaderT (IORef (Config K)) (ReaderT (GUI K) (ReaderT IPC (ReaderT (IORef Status) IO)))))) a
runK :: CliOptions -> Config K -> GUI K -> IPC -> K a -> IO (Either HError a, String)
data CaseSensitivity
CaseSensitive :: CaseSensitivity
CaseInsensitive :: CaseSensitivity
data Direction
Forward :: Direction
Backward :: Direction
data Wrap
Wrap :: Wrap
NoWrap :: Wrap
data ZoomDirection
In :: ZoomDirection
Out :: ZoomDirection
defaultDownload :: URI -> String -> Int -> K ()
defaultLinkClicked :: (MonadBase IO m, MonadWriter String m, GUIReader n m) => MouseButton -> URI -> m ()
defaultKeyBindings :: Map Mode (Bindings K)

-- | Display content if webview can show the given MIME type, otherwise
--   download it.
defaultResourceOpened :: (MonadBase IO m, GUIReader n m) => URI -> String -> m ResourceAction
isCaseSensitive :: CaseSensitivity -> Bool
isForward :: Direction -> Bool
isWrapped :: Wrap -> Bool
getFaviconURI :: (MonadBase IO m, GUIReader n m, MonadError HError m) => m URI
getLoadProgress :: (MonadBase IO m, GUIReader n m) => m Double
getURI :: (MonadBase IO m, GUIReader n m, MonadError HError m) => m URI
getTitle :: (MonadBase IO m, GUIReader n m, MonadError HError m) => m String
goHome :: (MonadBase IO m, GUIReader n m, ConfigReader n' m, MonadWriter String m) => m ()
load :: (MonadBase IO m, GUIReader n m, MonadWriter String m) => URI -> m ()
reload :: (MonadBase IO m, GUIReader n m, MonadError HError m) => m ()
reloadBypassCache :: (MonadBase IO m, GUIReader n m, MonadError HError m) => m ()
stopLoading :: (MonadBase IO m, GUIReader n m, MonadWriter String m) => m ()
goBack :: (MonadBase IO m, GUIReader n m, MonadError HError m) => m ()
goForward :: (MonadBase IO m, GUIReader n m, MonadError HError m) => m ()

-- | Toggle source display. Current implementation forces a refresh of
--   current web page, which may be undesired.
toggleSourceMode :: (MonadBase IO m, GUIReader n m, MonadError HError m) => m ()
zoomIn :: (MonadBase IO m, GUIReader n m) => m ()
zoomOut :: (MonadBase IO m, GUIReader n m) => m ()
scroll :: (MonadBase IO m, GUIReader n m) => Axis -> Position -> m ()

-- | Show web inspector for current webpage.
inspect :: (MonadBase IO m, GUIReader n m) => m ()
searchText :: (MonadBase IO m, GUIReader n m) => CaseSensitivity -> Direction -> Wrap -> String -> m Bool
searchText_ :: (MonadBase IO m, GUIReader n m) => CaseSensitivity -> Direction -> Wrap -> String -> m ()
printPage :: (MonadBase IO m, GUIReader n m) => m ()
download :: (MonadBase IO m, ConfigReader m m) => URI -> m ()
quit :: MonadBase IO m => m ()

-- | Execute a javascript file on current webpage.
executeJSFile :: (MonadBase IO m, MonadReader r m, MonadWriter String m) => FilePath -> WebView -> m ()

-- | Save current web page to a file, along with all its resources in a
--   separated directory. Doesn't work for now, because
--   web_resource_get_data's binding is missing...
_savePage :: String -> WebView -> IO ()
instance Applicative K
instance Functor K
instance Monad K
instance MonadBase IO K
instance MonadError HError K
instance MonadWriter String K
instance Default (CommandsMap K)
instance Default (Config K)
instance StatusWriter K
instance StatusReader K
instance PromptReader K K
instance OptionsReader K
instance NotificationReader K
instance IPCReader K
instance GUIReader K K
instance ConfigWriter K K
instance ConfigReader K K
instance MonadBaseControl IO K

module Hbro.Boot

-- | Main function to call in the configuration file (cf file
--   <tt>Hbro/Main.hs</tt>). First, commandline options are parsed, then
--   configuration is dynamically applied.
hbro :: K () -> IO ()

module Hbro
