1
1
mirror of https://github.com/Yvee1/hascard.git synced 2024-10-26 07:41:15 +03:00

Small adjustments to appearance of start screens

This commit is contained in:
Steven van den Broek 2020-07-17 13:28:00 +02:00
parent 8471316f9e
commit f33dba7b37
3 changed files with 21 additions and 23 deletions

View File

@ -5,12 +5,12 @@ import Brick.Widgets.Center
import Data.Text (pack)
import Lens.Micro
-- hCenteredStrWrap :: String -> Widget ()
-- hCenteredStrWrap = myStrWrap'
hCenteredStrWrap :: String -> Widget n
hCenteredStrWrap p = Widget Greedy Fixed $ do
hCenteredStrWrap = hCenteredStrWrapWithAttr id
hCenteredStrWrapWithAttr :: (Widget n -> Widget n) -> String -> Widget n
hCenteredStrWrapWithAttr attr p = Widget Greedy Fixed $ do
c <- getContext
let w = c^.availWidthL
let result = vBox $ map (hCenter . txt) $ wrapTextToLines defaultWrapSettings w (pack p)
let result = vBox $ map (hCenter . attr . txt) $ wrapTextToLines (WrapSettings {preserveIndentation=False, breakLongWords=True}) w (pack p)
render result

View File

@ -2,6 +2,7 @@
module CardSelectorUI (runCardSelectorUI, getRecents, getRecentsFile, addRecent) where
import Brick
import BrickHelpers
import Brick.Widgets.Border
import Brick.Widgets.Border.Style
import Brick.Widgets.Center
@ -45,7 +46,7 @@ drawUI s =
[ drawMenu s <=> drawException s]
title :: Widget Name
title = withAttr titleAttr $ str "Select a deck of flashcards"
title = withAttr titleAttr $ hCenteredStrWrap "Select a deck of flashcards"
drawMenu :: State -> Widget Name
drawMenu s =
@ -55,22 +56,19 @@ drawMenu s =
border $
-- hLimit 21 $
hLimitPercent 60 $
hCenter title <=>
title <=>
hBorder <=>
hCenter (drawList s)
drawList :: State -> Widget Name
drawList s = hLimit 23 $
vLimit 5 $
drawList s =
-- hLimit 23 $
vLimit 6 $
L.renderListWithIndex (drawListElement l) True l
where l = s ^. list
drawListElement :: L.List Name String -> Int -> Bool -> String -> Widget Name
drawListElement l i selected text =
hCenter $
wAttr1 $
wAttr2 $
str text
drawListElement l i selected = hCenteredStrWrapWithAttr (wAttr1 . wAttr2)
where wAttr1 = if selected then withDefAttr selectedAttr else id
wAttr2 = if i == length l - 1 then withAttr lastElementAttr else id

View File

@ -1,6 +1,7 @@
module MainMenuUI (runMainMenuUI) where
import Brick
import BrickHelpers
import Brick.Widgets.Border
import Brick.Widgets.Border.Style
import Brick.Widgets.Center
@ -40,20 +41,17 @@ drawMenu s =
border $
-- hLimit 21 $
hLimitPercent 60 $
hLimit 40 $
hCenter title <=>
hBorder <=>
hCenter (drawList s)
drawList s
drawList :: State -> Widget Name
drawList s = hLimit 11 $
vLimit 3 $
drawList s = vLimit 4 $
L.renderList drawListElement True s
drawListElement :: Bool -> String -> Widget Name
drawListElement selected text =
hCenter $
attr $
str text
drawListElement selected = hCenteredStrWrapWithAttr attr
where attr = if selected then withAttr selectedAttr else id
titleAttr :: AttrName
@ -78,7 +76,8 @@ handleEvent l (VtyEvent e) =
Just 0 -> suspendAndResume $ do runCardSelectorUI
return l
Just 1 -> undefined
Just 2 -> halt l
Just 2 -> undefined
Just 3 -> halt l
_ -> undefined
ev -> continue =<< L.handleListEventVi L.handleListEvent ev l
@ -86,8 +85,9 @@ handleEvent l _ = continue l
runMainMenuUI :: IO ()
runMainMenuUI = do
let options = Vec.fromList [ "Start"
let options = Vec.fromList [ "Select"
, "Info"
, "Settings"
, "Quit" ]
let initialState = L.list () options 1