packages feed

taskell 1.11.1 → 1.11.2

raw patch · 11 files changed

+67/−25 lines, 11 files

Files

+ 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