Frage

Ich schreibe meine ersten gtk2hs + Lichtung Anwendung, und ich bin mit einem Textview Ausgabe aus dem Programm angezeigt werden soll. Anstatt eine Rolle, die ich dachte, sollte das Standardverhalten sein, bekommt die Textview größer jedes Mal wenn ich den Text erneut eingestellt, und macht meine Knöpfe darunter kleiner, bis sie verschwinden, aber die Bildlaufleisten nie auftauchen, und es nie scrollt. Soll ich es tun, etwas Besonderes zu bekommen zu bewegen? Hier ist die Hauptfunktion ich im Moment bin mit dem schmutzigen Code vergeben, beabsichtige ich später Hause reinigen. :)

main :: FilePath -> IO ()
main gladepath = do
initGUI
-- Create inital game state
st <- newIORef (State "" "" "" 0 0 0)
-- Get handles to all needed widgets from Glade file
Just xml <- xmlNew gladepath
mw     <- xmlGetWidget xml castToWindow "mainWindow"
sw     <- xmlGetWidget xml castToWindow "window2"
mb     <- xmlGetWidget xml castToButton "fireButton"
ng     <- xmlGetWidget xml castToButton "nbutton"
mv     <- xmlGetWidget xml castToTextView "textview1"
but    <- xmlGetWidget xml castToButton "button1"
ab     <- xmlGetWidget xml castToAboutDialog "aboutdialog1"
menu   <- xmlGetWidget xml castToMenuItem "menuitem3"
about  <- xmlGetWidget xml castToMenuItem "imagemenuitem10"
quitb  <- xmlGetWidget xml castToMenuItem "menuitem3"
p1name <- xmlGetWidget xml castToEntry "entry1"
p2name <- xmlGetWidget xml castToEntry "entry2"
spin   <- xmlGetWidget xml castToSpinButton "spinbutton1"
sett   <- xmlGetWidget xml castToMenuItem "menuitem2"
p1lab  <- xmlGetWidget xml castToLabel "label4"
p2lab  <- xmlGetWidget xml castToLabel "label5"
cylab  <- xmlGetWidget xml castToLabel "label6"
-- Handle events and such
buff <- textViewGetBuffer mv
onActivateLeaf quitb mainQuit
onResponse ab $ \resp -> 
   case resp of
      ResponseClose -> widgetHide ab
      _             -> widgetHide ab
onActivateLeaf about $ widgetShow ab
onActivateLeaf sett  $ widgetShowAll sw
onDelete sw $ \_ -> widgetHide sw >> return True
onClicked but $ 
          initalize sw p1name p2name spin st p1lab p2lab cylab buff
onClicked ng $ widgetShowAll sw
onDelete ab $ \_ -> widgetHide ab >> return True
onClicked mb $ fireButton st sw buff cylab
onActivateLeaf menu $ widgetDestroy mw
onDestroy mw mainQuit
widgetShowAll mw
mainGUI

Wenn Sie etwas anderes benötigen, fordern Sie es in einem Kommentar. Ich bin mir nicht sicher, ob ich etwas anderes zur Verfügung stellen muß.

Die Lichtung Datei ist zu groß, um hier zu zeigen, aber ich klebte es hier, falls jemand braucht es: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=6310#a6310

War es hilfreich?

Lösung

Ich habe es geschafft, mein eigenes Problem zu lösen, mit Axel auf den gtk2hs nach dem Sprechen Mailingliste.

Textviews sind so ausgelegt, dass sie eine einzelne Textzeile sein können, oder ein mehrzeiliges Textview mit Bildlaufleisten. Wenn Sie Fähigkeiten wollen Scrollen, müssen Sie die Textview in ein Scrolled Fenster setzen. Ich mein Problem gelöst durch meine Textview in ein Scrolled Fenster platzieren, es funktioniert perfekt jetzt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top