2012-06-22 23 views
5
main :: IO() 
main = runCurses $ do 
    setEcho False 
    w <- defaultWindow 
    canvas <- newWindow 19 19 0 0 
    panel <- newPanel canvas 
    updateWindow canvas $ do 
    drawString "Hello world!" 
    render 
    waitFor w (\ev -> ev == EventCharacter 'q' || ev == EventCharacter 'Q') 

waitFor :: Window -> (Event -> Bool) -> Curses() 
waitFor w p = loop where 
    loop = do 
     ev <- getEvent w Nothing 
     case ev of 
      Nothing -> loop 
      Just ev' -> unless (p ev') loop 

Hallo. Es ist ein bisschen modifiziertes Beispiel für das Paket ncurses. Problem ist, dass nichts angezeigt wird. In C-API, wie ich mich erinnere, muss ich jedes Fenster unabhängig aktualisieren. Aber Haskell bietet nur render an. Wo ich falsch liege? Ich möchte ein bewegliches Widget haben.Haskell ncurses

Antwort

4

Sorry für dumme Frage. Sie müssen nur updatePanels anrufen.

+0

Woher kommt diese Funktion? Ich sehe kein einziges Wort darüber in UI.NCurses Bibliothek und GHCi '' i' Option weiß auch nichts darüber ... – Sventimir

+0

Ich denke, das OP bedeutete 'refreshPanels' in UI.NCurses.Panel. http://hackage.haskell.org/package/ncurses-0.1.0.2/docs/UI-NCurses-Panel.html – joom

+0

@Joom, wenn Sie denken, dass die Antwort falsch ist (aus welchem ​​Grund auch immer, sei es Tippfehler oder etwas anderes)) - lehne diesen ab und poste einen richtigen. – vaxquis