J'écris ma première application gtk2hs + glade, et j'utilise un textview pour afficher la sortie du programme. Au lieu de faire défiler ce que je pensais être le comportement par défaut, le texte grossit chaque fois que je redéfinis le texte, et réduit mes boutons en dessous jusqu'à ce qu'ils disparaissent, mais les barres de défilement ne s'ouvrent jamais et ne défilent jamais. Suis-je censé faire quelque chose de spécial pour le faire défiler? Voici la fonction principale que j'utilise en ce moment, pardonnez le code sale, j'ai l'intention de nettoyer la maison plus tard. :)Problèmes de défilement dans TextView dans Gtk2hs et 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
Si vous avez besoin de quoi que ce soit d'autre, veuillez le demander dans un commentaire. Je ne suis pas sûr si j'ai besoin de fournir autre chose.
Le fichier Glade est trop grand pour montrer ici, mais je collé ici au cas où quelqu'un a besoin: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=6310#a6310
Le code Glade XML est-il assez petit pour être inclus ici? – ephemient
Modifié pour créer un lien vers le fichier glade, collé. – Rayne