hob-0.0.1.0: src/lib/Hob/Command/FindText.hs
module Hob.Command.FindText (
searchCommandHandler,
searchNextCommandHandler,
searchBackwardsCommandHandler,
searchPreview,
searchResetPreview,
searchMode,
) where
import Data.Monoid (mconcat)
import Graphics.UI.Gtk
import Hob.Context
import Hob.Ui.Editor
import Hob.Ui.Editor.Search
searchCommandHandler :: String -> CommandHandler
searchCommandHandler searchText = CommandHandler (Just $ PreviewCommandHandler (searchPreview searchText) searchResetPreview) (searchStart searchText)
searchNextCommandHandler :: CommandHandler
searchNextCommandHandler = CommandHandler Nothing searchNext
searchBackwardsCommandHandler :: CommandHandler
searchBackwardsCommandHandler = CommandHandler Nothing searchPrevious
searchPreview :: String -> App()
searchPreview text = invokeOnActiveEditor (`highlightSearchPreview` text)
searchReset :: App()
searchReset = invokeOnActiveEditor resetSearch
searchResetPreview :: App()
searchResetPreview = invokeOnActiveEditor resetSearchPreview
searchNext :: App()
searchNext = invokeOnActiveEditor findNext
searchPrevious :: App()
searchPrevious = invokeOnActiveEditor findPrevious
searchStart :: String -> App()
searchStart text = do
enterMode searchMode
invokeOnActiveEditor $ \editor -> do
findFirstFromCursor editor text
widgetGrabFocus editor
searchMode :: Mode
searchMode = Mode "search" matcher searchReset
where matcher = mconcat [
createMatcherForKeyBinding ([Control], "Down") searchNextCommandHandler,
createMatcherForKeyBinding ([Control], "Up") searchBackwardsCommandHandler]