dev!: ui: Rename fields of UIOpts for consistency.

In code, either replace the name with the new name, or use the lenses
instead.

watch_ -> uoWatch
cliopts_ -> uoCliOpts
This commit is contained in:
Stephen Morgan 2021-08-27 00:09:07 +10:00 committed by Simon Michael
parent 7f7f1a2cdf
commit 765466c392
6 changed files with 25 additions and 24 deletions

View File

@ -49,7 +49,7 @@ accountsScreen = AccountsScreen{
asInit :: Day -> Bool -> UIState -> UIState
asInit d reset ui@UIState{
aopts=UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}},
aopts=UIOpts{uoCliOpts=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}},
ajournal=j,
aScreen=s@AccountsScreen{}
} =
@ -103,7 +103,7 @@ asInit d reset ui@UIState{
asInit _ _ _ = error "init function called with wrong screen type, should not happen" -- PARTIAL:
asDraw :: UIState -> [Widget Name]
asDraw UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}
asDraw UIState{aopts=_uopts@UIOpts{uoCliOpts=copts@CliOpts{reportspec_=rspec}}
,ajournal=j
,aScreen=s@AccountsScreen{}
,aMode=mode
@ -223,7 +223,7 @@ asDrawItem (acctwidth, balwidth) selected AccountsScreenItem{..} =
asHandle :: UIState -> BrickEvent Name AppEvent -> EventM Name (Next UIState)
asHandle ui0@UIState{
aScreen=scr@AccountsScreen{..}
,aopts=UIOpts{cliopts_=copts}
,aopts=UIOpts{uoCliOpts=copts}
,ajournal=j
,aMode=mode
} ev = do

View File

@ -21,6 +21,7 @@ import Data.Void (Void)
import Graphics.Vty (Event(..),Key(..),Modifier(..))
import Text.Megaparsec
import Text.Megaparsec.Char
import Lens.Micro ((^.))
import Hledger.Cli hiding (progname,prognameandversion)
import Hledger.UI.UIOptions
@ -42,7 +43,7 @@ esInit _ _ ui@UIState{aScreen=ErrorScreen{}} = ui
esInit _ _ _ = error "init function called with wrong screen type, should not happen" -- PARTIAL:
esDraw :: UIState -> [Widget Name]
esDraw UIState{aopts=UIOpts{cliopts_=copts@CliOpts{}}
esDraw UIState{aopts=UIOpts{uoCliOpts=copts}
,aScreen=ErrorScreen{..}
,aMode=mode
} =
@ -75,7 +76,7 @@ esDraw _ = error "draw function called with wrong screen type, should not happen
esHandle :: UIState -> BrickEvent Name AppEvent -> EventM Name (Next UIState)
esHandle ui@UIState{aScreen=ErrorScreen{..}
,aopts=UIOpts{cliopts_=copts}
,aopts=UIOpts{uoCliOpts=copts}
,ajournal=j
,aMode=mode
}
@ -181,8 +182,8 @@ uiReloadJournalIfChanged copts d j ui = do
-- fail, enter (or update) the error screen. Or if balance assertions
-- are disabled, do nothing.
uiCheckBalanceAssertions :: Day -> UIState -> UIState
uiCheckBalanceAssertions d ui@UIState{aopts=UIOpts{cliopts_=copts}, ajournal=j}
| ignore_assertions_ . balancingopts_ $ inputopts_ copts = ui
uiCheckBalanceAssertions d ui@UIState{ajournal=j}
| ui^.ignore_assertions = ui
| otherwise =
case journalCheckBalanceAssertions j of
Nothing -> ui

View File

@ -44,7 +44,7 @@ writeChan = BC.writeBChan
main :: IO ()
main = do
opts@UIOpts{cliopts_=copts@CliOpts{inputopts_=iopts,rawopts_=rawopts}} <- getHledgerUIOpts
opts@UIOpts{uoCliOpts=copts@CliOpts{inputopts_=iopts,rawopts_=rawopts}} <- getHledgerUIOpts
-- when (debug_ $ cliopts_ opts) $ printf "%s\n" prognameandversion >> printf "opts: %s\n" (show opts)
-- always generate forecasted periodic transactions; their visibility will be toggled by the UI.
@ -59,7 +59,7 @@ main = do
_ -> withJournalDo copts' (runBrickUi opts)
runBrickUi :: UIOpts -> Journal -> IO ()
runBrickUi uopts@UIOpts{cliopts_=copts@CliOpts{inputopts_=_iopts,reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}} j = do
runBrickUi uopts@UIOpts{uoCliOpts=copts@CliOpts{inputopts_=_iopts,reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}} j = do
d <- getCurrentDay
let
@ -102,7 +102,7 @@ runBrickUi uopts@UIOpts{cliopts_=copts@CliOpts{inputopts_=_iopts,reportspec_=rsp
-- It's cleaner and less conflicting to keep the former out of the latter.
uopts' = uopts{
cliopts_=copts{
uoCliOpts=copts{
reportspec_=rspec{
_rsQuery=filteredQuery $ _rsQuery rspec, -- query with depth/date parts removed
_rsReportOpts=ropts{
@ -168,7 +168,7 @@ runBrickUi uopts@UIOpts{cliopts_=copts@CliOpts{inputopts_=_iopts,reportspec_=rsp
-- print (length (show ui)) >> exitSuccess -- show any debug output to this point & quit
if not (watch_ uopts')
if not (uoWatch uopts')
then
void $ Brick.defaultMain brickapp ui

View File

@ -56,7 +56,7 @@ rsSetAccount a forceinclusive scr@RegisterScreen{} =
rsSetAccount _ _ scr = scr
rsInit :: Day -> Bool -> UIState -> UIState
rsInit d reset ui@UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}}, ajournal=j, aScreen=s@RegisterScreen{..}} =
rsInit d reset ui@UIState{aopts=_uopts@UIOpts{uoCliOpts=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}}, ajournal=j, aScreen=s@RegisterScreen{..}} =
ui{aScreen=s{rsList=newitems'}}
where
-- gather arguments and queries
@ -134,7 +134,7 @@ rsInit d reset ui@UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_
rsInit _ _ _ = error "init function called with wrong screen type, should not happen" -- PARTIAL:
rsDraw :: UIState -> [Widget Name]
rsDraw UIState{aopts=_uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}
rsDraw UIState{aopts=_uopts@UIOpts{uoCliOpts=copts@CliOpts{reportspec_=rspec}}
,aScreen=RegisterScreen{..}
,aMode=mode
} =
@ -275,7 +275,7 @@ rsDrawItem (datewidth,descwidth,acctswidth,changewidth,balwidth) selected Regist
rsHandle :: UIState -> BrickEvent Name AppEvent -> EventM Name (Next UIState)
rsHandle ui@UIState{
aScreen=s@RegisterScreen{..}
,aopts=UIOpts{cliopts_=copts}
,aopts=UIOpts{uoCliOpts=copts}
,ajournal=j
,aMode=mode
} ev = do

View File

@ -41,7 +41,7 @@ transactionScreen = TransactionScreen{
}
tsInit :: Day -> Bool -> UIState -> UIState
tsInit _d _reset ui@UIState{aopts=UIOpts{cliopts_=CliOpts{reportspec_=_rspec}}
tsInit _d _reset ui@UIState{aopts=UIOpts{}
,ajournal=_j
,aScreen=s@TransactionScreen{tsTransaction=(_,t),tsTransactions=nts}
,aPrevScreens=prevscreens
@ -60,7 +60,7 @@ tsInit _d _reset ui@UIState{aopts=UIOpts{cliopts_=CliOpts{reportspec_=_rspec}}
tsInit _ _ _ = error "init function called with wrong screen type, should not happen" -- PARTIAL:
tsDraw :: UIState -> [Widget Name]
tsDraw UIState{aopts=UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}}
tsDraw UIState{aopts=UIOpts{uoCliOpts=copts@CliOpts{reportspec_=rspec@ReportSpec{_rsReportOpts=ropts}}}
,ajournal=j
,aScreen=TransactionScreen{tsTransaction=(i,t')
,tsTransactions=nts
@ -133,7 +133,7 @@ tsDraw _ = error "draw function called with wrong screen type, should not happen
tsHandle :: UIState -> BrickEvent Name AppEvent -> EventM Name (Next UIState)
tsHandle ui@UIState{aScreen=TransactionScreen{tsTransaction=(i,t), tsTransactions=nts}
,aopts=UIOpts{cliopts_=copts}
,aopts=UIOpts{uoCliOpts=copts}
,ajournal=j
,aMode=mode
}

View File

@ -66,17 +66,17 @@ uimode = (mode "hledger-ui" (setopt "command" "ui" def)
-- hledger-ui options, used in hledger-ui and above
data UIOpts = UIOpts
{ watch_ :: Bool
{ uoWatch :: Bool
, uoTheme :: Maybe String
, uoRegister :: Maybe String
, cliopts_ :: CliOpts
, uoCliOpts :: CliOpts
} deriving (Show)
defuiopts = UIOpts
{ watch_ = False
{ uoWatch = False
, uoTheme = Nothing
, uoRegister = Nothing
, cliopts_ = defcliopts
, uoCliOpts = defcliopts
}
-- | Process a RawOpts into a UIOpts.
@ -85,10 +85,10 @@ rawOptsToUIOpts :: RawOpts -> IO UIOpts
rawOptsToUIOpts rawopts = do
cliopts <- set balanceaccum accum <$> rawOptsToCliOpts rawopts
return defuiopts {
watch_ = boolopt "watch" rawopts
uoWatch = boolopt "watch" rawopts
,uoTheme = checkTheme <$> maybestringopt "theme" rawopts
,uoRegister = maybestringopt "register" rawopts
,cliopts_ = cliopts
,uoCliOpts = cliopts
}
where
-- show historical balance by default (unlike hledger)
@ -105,7 +105,7 @@ getHledgerUIOpts = do
rawOptsToUIOpts cmdargopts
instance HasCliOpts UIOpts where
cliOpts f uiopts = (\x -> uiopts{cliopts_=x}) <$> f (cliopts_ uiopts)
cliOpts f uiopts = (\x -> uiopts{uoCliOpts=x}) <$> f (uoCliOpts uiopts)
instance HasInputOpts UIOpts where
inputOpts = cliOpts.inputOpts