ghc-debug-brick-0.8.0.0: src/GHC/Debug/Brick/Render/Command.hs
{-# LANGUAGE OverloadedStrings #-}
module GHC.Debug.Brick.Render.Command where
import Brick.Types
import Brick.Widgets.Core
import Data.Text (Text)
import qualified Data.Text as Text
import GHC.Debug.Brick.Lib (Version)
import GHC.Debug.Brick.Model (Command (..), isCmdDisabled)
import GHC.Debug.Brick.Namespace
import GHC.Debug.Brick.Render.Key (renderKey)
import GHC.Debug.Brick.Render.Utils (disabledMenuItem)
import qualified Graphics.Vty.Input as Vty
renderCommand :: Version -> Int -> Command -> Widget Name
renderCommand debuggeeVersion actual_width cmd =
mayDisableMenuItem $
renderCommandDesc actual_width (commandDescription cmd, commandKey cmd)
where
mayDisableMenuItem
| isCmdDisabled debuggeeVersion cmd = disabledMenuItem
| otherwise = id
renderCommandDesc :: Int -> (Text, Maybe Vty.Event) -> Widget Name
renderCommandDesc actual_width (desc, k) = txt (desc <> Text.replicate padding " " <> key)
where
key = maybe mempty renderKey k
padding = (actual_width - Text.length desc - Text.length key)