Add node editor
This commit is contained in:
parent
580b3b3209
commit
fd39143945
3 changed files with 56 additions and 0 deletions
|
|
@ -16,8 +16,10 @@ dependencies:
|
|||
- base >= 4.7 && < 5
|
||||
- aeson
|
||||
- async
|
||||
- brick
|
||||
- containers
|
||||
- text
|
||||
- vty
|
||||
- websockets
|
||||
|
||||
library:
|
||||
|
|
|
|||
48
src/Forest/Client/NodeEditor.hs
Normal file
48
src/Forest/Client/NodeEditor.hs
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Forest.Client.NodeEditor
|
||||
( NodeEditor
|
||||
, asReply
|
||||
, editNode
|
||||
, replyToNode
|
||||
, handleNodeEditorEvent
|
||||
, renderNodeEditor
|
||||
) where
|
||||
|
||||
import Brick
|
||||
import Brick.Widgets.Edit
|
||||
import qualified Data.Text as T
|
||||
import qualified Graphics.Vty as Vty
|
||||
|
||||
import Forest.Client.ResourceName
|
||||
|
||||
data NodeEditor = NodeEditor
|
||||
{ neEditor :: Editor T.Text ResourceName
|
||||
, neReply :: Bool
|
||||
} deriving (Show)
|
||||
|
||||
asReply :: NodeEditor -> Bool
|
||||
asReply = neReply
|
||||
|
||||
editNode :: T.Text -> NodeEditor
|
||||
editNode text = NodeEditor
|
||||
{ neEditor = editorText RnEditor (Just 1) text
|
||||
, neReply = False
|
||||
}
|
||||
|
||||
replyToNode :: NodeEditor
|
||||
replyToNode = NodeEditor
|
||||
{ neEditor = editorText RnEditor (Just 1) ""
|
||||
, neReply = True
|
||||
}
|
||||
|
||||
handleNodeEditorEvent :: Vty.Event -> NodeEditor -> EventM ResourceName NodeEditor
|
||||
handleNodeEditorEvent event es = do
|
||||
newEditor <- handleEditorEvent event $ neEditor es
|
||||
pure es{neEditor = newEditor}
|
||||
|
||||
renderNodeEditor :: NodeEditor -> Widget ResourceName
|
||||
renderNodeEditor es = renderEditor renderFunc True $ neEditor es
|
||||
where
|
||||
renderFunc :: [T.Text] -> Widget ResourceName
|
||||
renderFunc = vBox . map txt
|
||||
6
src/Forest/Client/ResourceName.hs
Normal file
6
src/Forest/Client/ResourceName.hs
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
module Forest.Client.ResourceName
|
||||
( ResourceName(..)
|
||||
) where
|
||||
|
||||
data ResourceName = RnEditor
|
||||
deriving (Show, Eq, Ord)
|
||||
Loading…
Add table
Add a link
Reference in a new issue