brick と 私が開發してゐた kdbtl を組み合はせた
コードは github に載せてゐる
appEvent のところだけ
appEvent :: BrickEvent Name CustomEvent -> EventM Name St () appEvent e = case e of VtyEvent (V.EvKey V.KEsc []) -> halt VtyEvent (V.EvKey V.KEnter []) -> do st <- use state ed <- use edit let con = E.getEditContents ed com = unlines con s' = exeCom com st case s' of Nothing -> stlog %= (++"Error!") Just js -> state .= js cmlog %= (++com) edit .= E.editor Edit (Just 1) "" vScrollToEnd cmScroll AppEvent Logstate -> do st <- use state let nst = doWithTime st state .= nst if (st/=nst) then stlog %= (++(show nst)++"\n") else return () vScrollToEnd vpScroll ev -> zoom edit $ E.handleEditorEvent ev
なんか よく見ると そのままなので 説明することもないか〜
途中 カーソル位置を動かしたかったのだけど よく分からなかった
エンターキーは かうやって 処理を書くと
もともとの エンターキーの擧動がなくなって 次の行とかに行かなくなる
カーソル位置の取得は E.getCursorPosition で できるんだけど
たぶん それを使ふには
カーソル位置の情報を 状態(St) に追加したり 名前をつけたりして
そんで drawUI のなかで使ふ必要があるのかなーって思った
カーソル処理が分からなかったんで
エンターを押したら エディタを初期化して 書いたコマンドは コマンドログとして
上部に表示させるやうにした
スクロールは前回實現したけど ホント最初は どうやるんだか分からなかったな〜
ひとことで言へば ViewportScrollといふ型の要素をつくって(名前も使って)それに
vScrollToEnd 函數とかを適用すれば 行の最後までスクロールされるやうになる みたいな
ただ この短期間でここまでの世界を見せてくれた brick は すごいと思ふ
なんか twitter で いいねをつけてくれた 開發者さんがゐたみたいだから 書いておかう
Brick Is Great!!! Thank You! I'm still a biginner but with Haskell, someday I'll make an EPIC game!