packages feed

mywork-1.0.1.0: lib/Whole.hs

{-# LANGUAGE DataKinds #-}

module Whole
  (
    MyWorkState
  , initialState
  , myWorkFocusL
  )
where

import Brick.Focus ( FocusRing )
import Brick.Panes
import Control.Lens ( Lens' )

import Defs
import Panes.AddProj
import Panes.Confirmation ()
import Panes.FileMgr
import Panes.Help
import Panes.Location ()
import Panes.LocationInput
import Panes.Messages
import Panes.NoteInput
import Panes.Notes ()
import Panes.Operations
import Panes.ProjInfo
import Panes.Projects ()
import Panes.Summary


type MyWorkState = Panel WName MyWorkEvent MyWorkCore
                   '[ SummaryPane
                    , NoteInputPane
                    , LocationInputPane
                    , AddProjPane
                    , OperationsPane
                    , ProjInfoPane
                    , Note
                    , Location
                    , Projects
                    , FileMgrPane
                    , Confirm
                    , HelpPane
                    , MessagesPane
                    ]


myWorkFocusL :: Lens' MyWorkState (FocusRing WName)
myWorkFocusL = onBaseState . coreWorkFocusL


initialState :: IO MyWorkState
initialState = focusRingUpdate myWorkFocusL
               . addToPanel Never
               . addToPanel WhenFocusedModalHandlingAllEvents
               . addToPanel WhenFocusedModalHandlingAllEvents
               . addToPanel WhenFocusedModalHandlingAllEvents
               . addToPanel Never
               . addToPanel Never
               . addToPanel WhenFocused
               . addToPanel WhenFocused
               . addToPanel WhenFocused
               . addToPanel WhenFocusedModal
               . addToPanel WhenFocusedModalHandlingAllEvents
               . addToPanel WhenFocusedModal
               . addToPanel Never
               . basePanel
               <$> initMyWorkCore