From af9daa3b11356e269bde35f8fbdbd7f509243f35 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Wed, 10 Aug 2016 07:17:35 -0700 Subject: [PATCH] ui: use only shift-cursor keys for period; simplify --- hledger-ui/Hledger/UI/AccountsScreen.hs | 12 +++----- hledger-ui/Hledger/UI/RegisterScreen.hs | 12 +++----- hledger-ui/Hledger/UI/UIState.hs | 37 ++++++------------------- 3 files changed, 16 insertions(+), 45 deletions(-) diff --git a/hledger-ui/Hledger/UI/AccountsScreen.hs b/hledger-ui/Hledger/UI/AccountsScreen.hs index f0df020ad..b4c6646c6 100644 --- a/hledger-ui/Hledger/UI/AccountsScreen.hs +++ b/hledger-ui/Hledger/UI/AccountsScreen.hs @@ -287,19 +287,15 @@ asHandle ui0@UIState{ EvKey (KChar '_') [] -> continue $ regenerateScreens j d $ decDepth ui EvKey (KChar c) [] | c `elem` ['+','='] -> continue $ regenerateScreens j d $ incDepth ui EvKey (KChar 't') [] -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui - EvKey (KChar 'd') [] -> continue $ regenerateScreens j d $ cycleReportDurationDown d ui - EvKey (KChar 'u') [] -> continue $ regenerateScreens j d $ cycleReportDurationUp d ui - EvKey (KDown) [MShift] -> continue $ regenerateScreens j d $ cycleReportDurationDown d ui - EvKey (KUp) [MShift] -> continue $ regenerateScreens j d $ cycleReportDurationUp d ui - EvKey (KChar 'n') [] -> continue $ regenerateScreens j d $ nextReportPeriod ui - EvKey (KChar 'p') [] -> continue $ regenerateScreens j d $ previousReportPeriod ui - EvKey (KRight) [MShift] -> continue $ regenerateScreens j d $ nextReportPeriod ui - EvKey (KLeft) [MShift] -> continue $ regenerateScreens j d $ previousReportPeriod ui EvKey (KChar 'F') [] -> continue $ regenerateScreens j d $ toggleFlat ui EvKey (KChar 'Z') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui) EvKey (KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui) EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui) EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui) + EvKey (KDown) [MShift] -> continue $ regenerateScreens j d $ shrinkReportPeriod d ui + EvKey (KUp) [MShift] -> continue $ regenerateScreens j d $ growReportPeriod d ui + EvKey (KRight) [MShift] -> continue $ regenerateScreens j d $ nextReportPeriod ui + EvKey (KLeft) [MShift] -> continue $ regenerateScreens j d $ previousReportPeriod ui EvKey (KChar '/') [] -> continue $ regenerateScreens j d $ showMinibuffer ui EvKey k [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui) EvKey k [] | k `elem` [KLeft, KChar 'h'] -> continue $ popScreen ui diff --git a/hledger-ui/Hledger/UI/RegisterScreen.hs b/hledger-ui/Hledger/UI/RegisterScreen.hs index 41a0ab7eb..e4c4265ea 100644 --- a/hledger-ui/Hledger/UI/RegisterScreen.hs +++ b/hledger-ui/Hledger/UI/RegisterScreen.hs @@ -260,14 +260,6 @@ rsHandle ui@UIState{ EvKey (KChar 'I') [] -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui) EvKey (KChar 'a') [] -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui EvKey (KChar 't') [] -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui - EvKey (KChar 'd') [] -> continue $ regenerateScreens j d $ cycleReportDurationDown d ui - EvKey (KChar 'u') [] -> continue $ regenerateScreens j d $ cycleReportDurationUp d ui - EvKey (KDown) [MShift] -> continue $ regenerateScreens j d $ cycleReportDurationDown d ui - EvKey (KUp) [MShift] -> continue $ regenerateScreens j d $ cycleReportDurationUp d ui - EvKey (KChar 'n') [] -> continue $ regenerateScreens j d $ nextReportPeriod ui - EvKey (KChar 'p') [] -> continue $ regenerateScreens j d $ previousReportPeriod ui - EvKey (KRight) [MShift] -> continue $ regenerateScreens j d $ nextReportPeriod ui - EvKey (KLeft) [MShift] -> continue $ regenerateScreens j d $ previousReportPeriod ui EvKey (KChar 'E') [] -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j ui where (pos,f) = case listSelectedElement rsList of @@ -279,6 +271,10 @@ rsHandle ui@UIState{ EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui) EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui) EvKey (KChar '/') [] -> (continue $ regenerateScreens j d $ showMinibuffer ui) + EvKey (KDown) [MShift] -> continue $ regenerateScreens j d $ shrinkReportPeriod d ui + EvKey (KUp) [MShift] -> continue $ regenerateScreens j d $ growReportPeriod d ui + EvKey (KRight) [MShift] -> continue $ regenerateScreens j d $ nextReportPeriod ui + EvKey (KLeft) [MShift] -> continue $ regenerateScreens j d $ previousReportPeriod ui EvKey k [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui) EvKey k [] | k `elem` [KLeft, KChar 'h'] -> continue $ popScreen ui EvKey k [] | k `elem` [KRight, KChar 'l', KEnter] -> do diff --git a/hledger-ui/Hledger/UI/UIState.hs b/hledger-ui/Hledger/UI/UIState.hs index 4d4290c76..3c7aaad95 100644 --- a/hledger-ui/Hledger/UI/UIState.hs +++ b/hledger-ui/Hledger/UI/UIState.hs @@ -68,36 +68,15 @@ toggleIgnoreBalanceAssertions :: UIState -> UIState toggleIgnoreBalanceAssertions ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{}}} = ui{aopts=uopts{cliopts_=copts{ignore_assertions_=not $ ignore_assertions_ copts}}} --- | Cycle through larger report periods. -cycleReportDurationUp :: Day -> UIState -> UIState -cycleReportDurationUp d ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} = - ui{aopts=uopts{cliopts_=copts{reportopts_=reportOptsCycleDurationUp d ropts}}} +-- | Step through larger report periods, up to all. +growReportPeriod :: Day -> UIState -> UIState +growReportPeriod _d ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} = + ui{aopts=uopts{cliopts_=copts{reportopts_=ropts{period_=periodGrow $ period_ ropts}}}} --- | Cycle through smaller report periods. -cycleReportDurationDown :: Day -> UIState -> UIState -cycleReportDurationDown d ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} = - ui{aopts=uopts{cliopts_=copts{reportopts_=reportOptsCycleDurationDown d ropts}}} - --- | Cycle through increasingly large report periods using periodGrow, --- then start again at today. -reportOptsCycleDurationUp :: Day -> ReportOpts -> ReportOpts -reportOptsCycleDurationUp d ropts@ReportOpts{period_=p} = ropts{period_=p'} - where - p' = case p of - PeriodAll -> DayPeriod d - PeriodFrom _ -> DayPeriod d - PeriodTo _ -> DayPeriod d - PeriodBetween _ _ -> DayPeriod d - _ -> periodGrow p - --- | Cycle through increasingly small report periods using periodShrink, --- then start again at unlimited. -reportOptsCycleDurationDown :: Day -> ReportOpts -> ReportOpts -reportOptsCycleDurationDown d ropts@ReportOpts{period_=p} = ropts{period_=p'} - where - p' = case p of - DayPeriod _ -> PeriodAll - _ -> periodShrink d p +-- | Step through smaller report periods, down to a day. +shrinkReportPeriod :: Day -> UIState -> UIState +shrinkReportPeriod d ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} = + ui{aopts=uopts{cliopts_=copts{reportopts_=ropts{period_=periodShrink d $ period_ ropts}}}} -- | Step the report start/end dates to the next period of same duration. nextReportPeriod :: UIState -> UIState