81 lines
2.7 KiB
Haskell
81 lines
2.7 KiB
Haskell
{-# LANGUAGE CPP #-}
|
|
{-# LANGUAGE DataKinds #-}
|
|
{-# LANGUAGE FlexibleContexts #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE RankNTypes #-}
|
|
{-# OPTIONS_GHC -Wno-unused-record-wildcards #-}
|
|
{-# OPTIONS_GHC -Wno-unused-matches #-}
|
|
{-# LANGUAGE FlexibleInstances #-}
|
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
|
|
|
{-
|
|
A very simple information-only widget with no handler.
|
|
-}
|
|
|
|
module GHCup.Brick.Widgets.KeyInfo where
|
|
|
|
import GHCup.Types ( KeyBindings(..), KeyCombination(KeyCombination) )
|
|
import qualified GHCup.Brick.Common as Common
|
|
|
|
|
|
import Brick
|
|
( Padding(Max),
|
|
Widget(..),
|
|
(<+>),
|
|
(<=>))
|
|
import qualified Brick
|
|
import Brick.Widgets.Border ( borderWithLabel)
|
|
import Brick.Widgets.Border.Style ( unicode )
|
|
import Brick.Widgets.Center ( center, centerLayer )
|
|
import Data.List ( intercalate )
|
|
import Prelude hiding ( appendFile )
|
|
|
|
|
|
|
|
draw :: KeyBindings -> Widget Common.Name
|
|
draw KeyBindings {..} =
|
|
let
|
|
mkTextBox = Brick.hLimitPercent 70 . Brick.vBox . fmap (Brick.padRight Brick.Max)
|
|
keyToWidget (KeyCombination key mods) = Brick.str $ intercalate "+" (Common.showKey key : (Common.showMod <$> mods))
|
|
in centerLayer
|
|
$ Brick.hLimitPercent 75
|
|
$ Brick.vLimitPercent 50
|
|
$ Brick.withBorderStyle unicode
|
|
$ borderWithLabel (Brick.txt "Key Actions")
|
|
$ Brick.vBox [
|
|
center $
|
|
mkTextBox [
|
|
Brick.hBox [
|
|
Brick.txt "Press "
|
|
, keyToWidget bUp, Brick.txt " and ", keyToWidget bDown
|
|
, Brick.txtWrap " to navigate the list of tools"
|
|
]
|
|
, Brick.hBox [
|
|
Brick.txt "Press "
|
|
, keyToWidget bInstall
|
|
, Brick.txtWrap " to install the selected tool. Notice, you may need to set it as default afterwards"
|
|
]
|
|
, Brick.hBox [
|
|
Brick.txt "Press "
|
|
, keyToWidget bSet
|
|
, Brick.txtWrap " to set a tool as the one for use"
|
|
]
|
|
, Brick.hBox [
|
|
Brick.txt "Press "
|
|
, keyToWidget bUninstall
|
|
, Brick.txtWrap " to uninstall a tool"
|
|
]
|
|
, Brick.hBox [
|
|
Brick.txt "Press "
|
|
, keyToWidget bChangelog
|
|
, Brick.txtWrap " to open the tool's changelog. It will open a web browser"
|
|
]
|
|
, Brick.hBox [
|
|
Brick.txt "Press "
|
|
, keyToWidget bShowAllVersions
|
|
, Brick.txtWrap " to show older version of each tool"
|
|
]
|
|
]
|
|
]
|
|
<=> Brick.hBox [Brick.txt "Press q to return to Navigation" <+> Brick.padRight Brick.Max (Brick.txt " ") <+> Brick.txt "Press Enter to go to the Tutorial"]
|