2009-06-27 10 views
1

Ich schreibe meine erste gtk2hs + Glade-Anwendung, und ich verwende eine Textansicht, um die Ausgabe aus dem Programm anzuzeigen. Anstatt zu scrollen, was ich für das Standardverhalten halten sollte, wird die Textansicht immer größer, wenn ich den Text neu setze, und meine Schaltflächen werden kleiner, bis sie verschwinden, aber die Bildlaufleisten erscheinen nie und es scrollt nie. Soll ich etwas Besonderes machen, um es zu scrollen? Hier ist die Hauptfunktion, die ich im Moment verwende, verzeih den schmutzigen Code, ich beabsichtige, später sauber zu machen. :)Probleme mit dem Scrollen in TextView in Gtk2hs und Haskell

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 noch etwas benötigen, bitte fordern Sie es in einem Kommentar. Ich bin mir nicht sicher, ob ich etwas anderes zur Verfügung stellen muss.

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

+0

Ist die Glade-XML klein genug, um sie hier einzubeziehen? – ephemient

+0

Bearbeitet, um auf die Lichtung Datei zu verlinken, eingefügt. – Rayne

Antwort

3

Ich habe es geschafft, mein eigenes Problem nach dem Gespräch mit Axel auf die gtk2hs Mailing-Liste zu lösen.

TextViews sind so konzipiert, dass sie eine einzelne Textzeile oder eine mehrzeilige TextView mit Bildlaufleisten darstellen können. Wenn Sie scrollen möchten, müssen Sie die TextView in ein Scroll-Fenster legen. Ich habe mein Problem gelöst, indem ich meine TextView in ein Scroll-Fenster gelegt habe, das funktioniert jetzt einwandfrei.