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

हैलो। यह ncurses पैकेज का थोड़ा संशोधित उदाहरण है। समस्या यह है कि कुछ भी प्रदर्शित नहीं होता है। सी एपीआई में, जैसा कि मुझे याद है, मुझे स्वतंत्र रूप से प्रत्येक विंडो को रीफ्रेश करना होगा। लेकिन हास्केल केवल render प्रदान करता है। मैं कहाँ गलत हूँ? मैं कुछ चलने योग्य विजेट चाहता हूँ।हास्केल ncurses

उत्तर

4

बेवकूफ सवाल के लिए खेद है। आपको बस updatePanels पर कॉल करना है।

+0

वह कार्य कहां से आता है? मुझे UI.Curses लाइब्रेरी में इसके बारे में एक भी शब्द नहीं दिख रहा है और जीएचसीआई का ': i' विकल्प इसके बारे में कुछ भी नहीं जानता है ... – Sventimir

+0

मुझे लगता है कि ओपी का मतलब UI.Curses.Panel में' refreshPanels' था। http://hackage.haskell.org/package/ncurses-0.1.0.2/docs/UI-NCurses-Panel.html – joom

+0

@ जूम अगर आपको लगता है कि उत्तर गलत है (किसी भी कारण से, यह टाइपो या कुछ और हो) - इसे एक डाउनवोट करें और एक सही पोस्ट करें। – vaxquis