taskell 1.11.1 → 1.11.2
raw patch · 11 files changed
+67/−25 lines, 11 files
Files
- src/Taskell/Data/Utility.hs +6/−0
- src/Taskell/Events/Actions.hs +1/−1
- src/Taskell/Events/Actions/Modal.hs +1/−1
- src/Taskell/Events/Actions/Modal/Help.hs +15/−8
- src/Taskell/Events/State.hs +2/−2
- src/Taskell/Events/State/Modal/Help.hs +12/−0
- src/Taskell/Events/State/Types/Mode.hs +6/−1
- src/Taskell/UI/Draw/Main/StatusBar.hs +1/−1
- src/Taskell/UI/Draw/Modal.hs +5/−5
- src/Taskell/UI/Draw/Modal/Help.hs +15/−5
- taskell.cabal +3/−1
+ src/Taskell/Data/Utility.hs view
@@ -0,0 +1,6 @@+module Taskell.Data.Utility where++updateLast :: (a -> a) -> [a] -> [a]+updateLast _ [] = []+updateLast f [k] = [f k]+updateLast f (y : ys) = y : updateLast f ys
src/Taskell/Events/Actions.hs view
@@ -43,7 +43,7 @@ Normal -> lookup e $ normal actions Modal (Detail _ DetailNormal) -> lookup e $ detail actions Modal Due {} -> lookup e $ due actions- Modal Help -> lookup e $ help actions+ Modal (Help _) -> lookup e $ help actions _ -> Nothing fromMaybe state $ case mEv of
src/Taskell/Events/Actions/Modal.hs view
@@ -18,7 +18,7 @@ event :: Event -> Stateful event e s = case s ^. mode of- Modal Help -> Help.event e s+ Modal Help {} -> Help.event e s Modal Detail {} -> Detail.event e s Modal MoveTo -> MoveTo.event e s Modal Due {} -> Due.event e s
src/Taskell/Events/Actions/Modal/Help.hs view
@@ -1,20 +1,27 @@ {-# LANGUAGE OverloadedLists #-} module Taskell.Events.Actions.Modal.Help- ( event- , events- ) where+ ( event,+ events,+ )+where import ClassyPrelude import Graphics.Vty.Input.Events import Taskell.Events.Actions.Types as A (ActionType (..)) import Taskell.Events.State-import Taskell.Events.State.Types (Stateful)-import Taskell.IO.Keyboard.Types (Actions)+import Taskell.Events.State.Modal.Help (moveHelpMenuDown, moveHelpMenuUp)+import Taskell.Events.State.Types (Stateful)+import Taskell.IO.Keyboard.Types (Actions) events :: Actions-events = [(A.Quit, quit)]+events =+ [ (A.Quit, quit),+ (A.MoveUp, moveHelpMenuUp),+ (A.Next, moveHelpMenuUp),+ (A.MoveDown, moveHelpMenuDown),+ (A.Previous, moveHelpMenuDown)+ ] event :: Event -> Stateful-event (EvKey _ _) = normalMode-event _ = pure+event _ = normalMode
src/Taskell/Events/State.hs view
@@ -78,7 +78,7 @@ import qualified Taskell.Events.State.History as History (redo, store, undo) import Taskell.Events.State.Types import Taskell.Events.State.Types.Mode (InsertMode (..), InsertType (..), ModalType (..),- Mode (..))+ Mode (..), HelpScrollPosition(..)) import Taskell.UI.Draw.Field (Field, blankField, getText, textToField) type InternalStateful = State -> State@@ -405,7 +405,7 @@ -- help showHelp :: Stateful-showHelp = pure . (mode .~ Modal Help)+showHelp = pure . (mode .~ Modal (Help Top)) showMoveTo :: Stateful showMoveTo state = const (state & mode .~ Modal MoveTo) <$> getCurrentTask state
+ src/Taskell/Events/State/Modal/Help.hs view
@@ -0,0 +1,12 @@+module Taskell.Events.State.Modal.Help where++import ClassyPrelude+import Control.Lens ((.~))+import Taskell.Events.State.Types (Stateful, mode)+import Taskell.Events.State.Types.Mode (HelpScrollPosition (..), ModalType (Help), Mode (Modal))++moveHelpMenuUp :: Stateful+moveHelpMenuUp = pure . (mode .~ Modal (Help Bottom))++moveHelpMenuDown :: Stateful+moveHelpMenuDown = pure . (mode .~ Modal (Help Top))
src/Taskell/Events/State/Types/Mode.hs view
@@ -17,8 +17,13 @@ | DetailDate deriving (Eq, Show) +data HelpScrollPosition+ = Top+ | Bottom+ deriving (Eq, Show)+ data ModalType- = Help+ = Help HelpScrollPosition | MoveTo | Due (Seq (Pointer, Task)) Int
src/Taskell/UI/Draw/Main/StatusBar.hs view
@@ -40,7 +40,7 @@ Nothing -> "NORMAL" Just _ -> "NORMAL + SEARCH" Insert {} -> "INSERT"- Modal Help -> "HELP"+ Modal (Help _) -> "HELP" Modal MoveTo -> "MOVE" Modal Detail {} -> "DETAIL" Modal Due {} -> "DUE"
src/Taskell/UI/Draw/Modal.hs view
@@ -37,8 +37,8 @@ renderModal = do md <- (^. mode) <$> asks dsState case md of- Modal Help -> surround =<< help- Modal Detail {} -> surround =<< detail- Modal MoveTo -> surround =<< moveTo- Modal (Due tasks selected) -> surround =<< due tasks selected- _ -> pure emptyWidget+ Modal (Help s) -> surround =<< help s+ Modal Detail {} -> surround =<< detail+ Modal MoveTo -> surround =<< moveTo+ Modal (Due tasks selected) -> surround =<< due tasks selected+ _ -> pure emptyWidget
src/Taskell/UI/Draw/Modal/Help.hs view
@@ -8,12 +8,13 @@ import Data.Text as T (justifyRight) import Taskell.Events.Actions.Types as A (ActionType (..))-import Taskell.IO.Keyboard.Types (bindingsToText) -import Taskell.IO.Keyboard.Types (Bindings)+import Taskell.IO.Keyboard.Types (Bindings, bindingsToText) import Taskell.UI.Draw.Field (textField) import Taskell.UI.Draw.Types (DrawState (dsBindings), ModalWidget, TWidget) import Taskell.UI.Theme (taskCurrentAttr)+import qualified Taskell.Events.State.Types.Mode as M+import Taskell.Data.Utility (updateLast) descriptions :: [([ActionType], Text)] descriptions =@@ -61,10 +62,19 @@ left = padRight (Pad 2) . withAttr taskCurrentAttr . txt $ justifyRight m ' ' l right = textField r -help :: ModalWidget-help = do+help :: M.HelpScrollPosition -> ModalWidget+help s = do bindings <- asks dsBindings let ls = format <$> generate bindings let m = foldl' max 0 $ length . fst <$> ls- let w = vBox $ line m <$> ls+ let w = vBox $ applyScroll s $ line m <$> ls pure ("Controls", w)++applyScroll :: M.HelpScrollPosition -> [TWidget] -> [TWidget]+applyScroll _ [] = []+applyScroll sp (x:xs) =+ case sp of+ M.Top ->+ visible x : xs+ M.Bottom ->+ updateLast visible xs
taskell.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.12 name: taskell-version: 1.11.1+version: 1.11.2 license: BSD3 license-file: LICENSE copyright: 2019 Mark Wales@@ -67,6 +67,7 @@ other-modules: Taskell.Config Taskell.Data.Date.Types+ Taskell.Data.Utility Taskell.Events.Actions Taskell.Events.Actions.Insert Taskell.Events.Actions.Modal@@ -78,6 +79,7 @@ Taskell.Events.Actions.Search Taskell.Events.State.Modal.Detail Taskell.Events.State.Modal.Due+ Taskell.Events.State.Modal.Help Taskell.IO.Config.General Taskell.IO.Config.GitHub Taskell.IO.Config.Layout