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

Ciao. È un esempio un po 'modificato del pacchetto ncurses. Il problema è che non viene visualizzato nulla. In C API, come ricordo, devo aggiornare ogni finestra in modo indipendente. Ma Haskell offre solo render. Dove mi sbaglio? Voglio avere un widget mobile.Haskell ncurses

risposta

4

Ci scusiamo per la domanda stupida. Devi solo chiamare updatePanels.

+0

Da dove viene questa funzione? Non vedo una sola parola al riguardo nella libreria UI.NCurses e l'opzione ': i' di GHCi non ne sa nulla ... – Sventimir

+0

Penso che l'OP significasse' refreshPanels' in UI.NCurses.Panel. http://hackage.haskell.org/package/ncurses-0.1.0.2/docs/UI-NCurses-Panel.html – joom

+0

@joom se pensi che la risposta sia sbagliata (per qualsiasi motivo, si tratti di errore di battitura o qualcos'altro) - downvotare questo e postare uno corretto. – vaxquis