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:
parent
8471316f9e
commit
f33dba7b37
@ -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
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user