module Matterhorn.Events.ShowHelp where import Prelude () import Matterhorn.Prelude import Brick import qualified Graphics.Vty as Vty import Network.Mattermost.Types ( TeamId ) import Matterhorn.Constants import Matterhorn.Events.Keybindings import Matterhorn.Types onEventShowHelp :: TeamId -> Vty.Event -> MH Bool onEventShowHelp :: TeamId -> Event -> MH Bool onEventShowHelp TeamId tId = [Event -> MH Bool] -> Event -> MH Bool handleEventWith [ (KeyConfig -> KeyHandlerMap) -> Event -> MH Bool handleKeyboardEvent (TeamId -> KeyConfig -> KeyHandlerMap helpKeybindings TeamId tId) , TeamId -> Event -> MH Bool closeHelp TeamId tId ] closeHelp :: TeamId -> Vty.Event -> MH Bool closeHelp :: TeamId -> Event -> MH Bool closeHelp TeamId tId (Vty.EvKey {}) = do TeamId -> MH () popMode TeamId tId Bool -> MH Bool forall (m :: * -> *) a. Monad m => a -> m a return Bool True closeHelp TeamId _ Event _ = Bool -> MH Bool forall (m :: * -> *) a. Monad m => a -> m a return Bool False helpKeybindings :: TeamId -> KeyConfig -> KeyHandlerMap helpKeybindings :: TeamId -> KeyConfig -> KeyHandlerMap helpKeybindings TeamId tId = [KeyEventHandler] -> KeyConfig -> KeyHandlerMap mkKeybindings (TeamId -> [KeyEventHandler] helpKeyHandlers TeamId tId) helpKeyHandlers :: TeamId -> [KeyEventHandler] helpKeyHandlers :: TeamId -> [KeyEventHandler] helpKeyHandlers TeamId tId = [ KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent ScrollUpEvent Text "Scroll up" (MH () -> KeyEventHandler) -> MH () -> KeyEventHandler forall a b. (a -> b) -> a -> b $ EventM Name () -> MH () forall a. EventM Name a -> MH a mh (EventM Name () -> MH ()) -> EventM Name () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> Int -> EventM Name () forall n. ViewportScroll n -> Int -> EventM n () vScrollBy (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) (-Int 1) , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent ScrollDownEvent Text "Scroll down" (MH () -> KeyEventHandler) -> MH () -> KeyEventHandler forall a b. (a -> b) -> a -> b $ EventM Name () -> MH () forall a. EventM Name a -> MH a mh (EventM Name () -> MH ()) -> EventM Name () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> Int -> EventM Name () forall n. ViewportScroll n -> Int -> EventM n () vScrollBy (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) Int 1 , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent PageUpEvent Text "Page up" (MH () -> KeyEventHandler) -> MH () -> KeyEventHandler forall a b. (a -> b) -> a -> b $ EventM Name () -> MH () forall a. EventM Name a -> MH a mh (EventM Name () -> MH ()) -> EventM Name () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> Int -> EventM Name () forall n. ViewportScroll n -> Int -> EventM n () vScrollBy (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) (-Int 1 Int -> Int -> Int forall a. Num a => a -> a -> a * Int pageAmount) , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent PageDownEvent Text "Page down" (MH () -> KeyEventHandler) -> MH () -> KeyEventHandler forall a b. (a -> b) -> a -> b $ EventM Name () -> MH () forall a. EventM Name a -> MH a mh (EventM Name () -> MH ()) -> EventM Name () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> Int -> EventM Name () forall n. ViewportScroll n -> Int -> EventM n () vScrollBy (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) (Int 1 Int -> Int -> Int forall a. Num a => a -> a -> a * Int pageAmount) , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent CancelEvent Text "Close the help window" (MH () -> KeyEventHandler) -> MH () -> KeyEventHandler forall a b. (a -> b) -> a -> b $ TeamId -> MH () popMode TeamId tId , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent ScrollBottomEvent Text "Scroll to the end of the help" (MH () -> KeyEventHandler) -> MH () -> KeyEventHandler forall a b. (a -> b) -> a -> b $ EventM Name () -> MH () forall a. EventM Name a -> MH a mh (EventM Name () -> MH ()) -> EventM Name () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> EventM Name () forall n. ViewportScroll n -> EventM n () vScrollToEnd (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) , KeyEvent -> Text -> MH () -> KeyEventHandler mkKb KeyEvent ScrollTopEvent Text "Scroll to the beginning of the help" (MH () -> KeyEventHandler) -> MH () -> KeyEventHandler forall a b. (a -> b) -> a -> b $ EventM Name () -> MH () forall a. EventM Name a -> MH a mh (EventM Name () -> MH ()) -> EventM Name () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> EventM Name () forall n. ViewportScroll n -> EventM n () vScrollToBeginning (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) ]