mirror of
https://github.com/unisonweb/unison.git
synced 2024-09-25 17:27:52 +03:00
main loop defined for editor
This commit is contained in:
parent
966547dfae
commit
c5760491e9
@ -1,6 +1,7 @@
|
||||
module Unison.Editor where
|
||||
|
||||
import Debug
|
||||
import Execute
|
||||
import Elmz.Layout (Containment(Inside,Outside), Layout, Pt, Region)
|
||||
import Elmz.Layout as Layout
|
||||
import Elmz.Moore (Moore(..))
|
||||
@ -192,12 +193,23 @@ ignoreUpDown s =
|
||||
|
||||
main =
|
||||
let
|
||||
host = "http://localhost:8080"
|
||||
(offsetX, offsetY) = (10, 10)
|
||||
offsetMouse (x,y) = (x-offsetX, y-offsetY)
|
||||
searchbox = Signal.channel Field.noContent
|
||||
merge = Signal.merge
|
||||
actions : Signal Event
|
||||
actions = Signals.keyEvent (Act Action.Step) 83 `merge` -- [s]tep
|
||||
|
||||
reqChan : Signal.Channel (Maybe Request)
|
||||
reqChan = Signal.channel Nothing
|
||||
|
||||
responses : Signal (Maybe Event)
|
||||
responses = Signal.subscribe reqChan
|
||||
|> Debug.crash "todo"
|
||||
|
||||
actions : Signal (Maybe Event)
|
||||
actions =
|
||||
(Signal.map Just <|
|
||||
Signals.keyEvent (Act Action.Step) 83 `merge` -- [s]tep
|
||||
Signals.keyEvent (Act Action.WHNF) 69 `merge` -- [e]valuate
|
||||
Signals.keyEvent (Act Action.Eta) 82 `merge` -- eta [r]educe
|
||||
Signals.keyEvent Delete 68 `merge` -- [d]elete
|
||||
@ -207,15 +219,18 @@ main =
|
||||
Signal.map Movement (Movement.d2' Keyboard.arrows) `merge`
|
||||
Signal.map Click (Signal.sampleOn Mouse.clicks Mouse.position) `merge`
|
||||
Signal.map (Mouse << offsetMouse) Mouse.position `merge`
|
||||
Signal.map FieldContent (ignoreUpDown (Signal.subscribe searchbox))
|
||||
-- responses
|
||||
inputs : Signal In
|
||||
inputs = Signals.tagEvent actions Window.width
|
||||
|> Signal.map (\(e,w) -> { event = e, availableWidth = w - offsetX })
|
||||
Signal.map FieldContent (ignoreUpDown (Signal.subscribe searchbox))) `merge`
|
||||
responses
|
||||
|
||||
term0 = Term.Blank
|
||||
outs = Moore.transform (model (Signal.send searchbox) term0) inputs
|
||||
|
||||
outs : Signal Out
|
||||
outs = Signals.tagEvent actions Window.width
|
||||
|> Signal.map (\(e,w) -> { event = Maybe.withDefault Nothing e, availableWidth = w - offsetX })
|
||||
|> Moore.transform (model (Signal.send searchbox) term0)
|
||||
|
||||
requests = Signals.justs (Signal.map .request outs) |> Signal.map (Signal.send reqChan)
|
||||
|
||||
view out = Styles.padNW offsetX offsetY out.view
|
||||
in
|
||||
Signal.map view outs
|
||||
|
||||
|
||||
Signal.map view (Signals.during outs (Execute.schedule requests))
|
||||
|
Loading…
Reference in New Issue
Block a user