2012-06-22 22 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 

Hola. Es un ejemplo poco modificado del paquete ncurses. El problema es que no se muestra nada. En C API, como recuerdo, tengo que actualizar cada ventana de forma independiente. Pero Haskell ofrece solo render. Donde estoy equivocado? Quiero tener un widget móvil.Haskell ncurses

Respuesta

4

Disculpa por pregunta estúpida. Simplemente tiene que llamar al updatePanels.

+0

¿De dónde viene esa función? No veo una sola palabra al respecto en la biblioteca UI.NCurses y la opción ': i' de GHCi tampoco sabe nada al respecto ... – Sventimir

+0

Creo que el OP significa' refreshPanels' en UI.NCurses.Panel. http://hackage.haskell.org/package/ncurses-0.1.0.2/docs/UI-NCurses-Panel.html – joom

+0

@joom si crees que la respuesta es incorrecta (por alguna razón, ya sea un error tipográfico o alguna otra cosa)) - rechazar este y publicar uno correcto. – vaxquis