Comment puis-je faire une ligne de commande graphique dans haskell / gtk2hs?
Question
Je suis en train de créer mon premier « vrai programme » en haskell (ce qui permet de résoudre si polynômes) Intégrales mais je suis tout à fait perplexes cette partie:
Je veux faire un peu de quelque chose de très simple comme GHCi:
> user input
program output
> user input
program output
> user input
program output
>
sauf que mon sortie de programme est des images (en utilisant LaTeX pour transformer des expressions mathématiques en PNGs) - donc je ne peux pas le faire en utilisant System.IO. Je pense que ce sera possible avec gtk2hs que j'ai réussi à installer, mais je ne peux pas comprendre comment faire cette entrée / dialogue de sortie.
S'il vous plaît me montrer comment faire si vous avez le temps. Merci beaucoup!
La solution
Nous avons réussi à trouver la solution suivante, grâce à ClaudiusMaximus.
module Main where
import Graphics.UI.Gtk
main = do
initGUI
----------------
win <- windowNew
onDestroy win mainQuit
vb <- vBoxNew False 3
log <- vBoxNew False 2
sc <- scrolledWindowNew Nothing Nothing
scrolledWindowSetPolicy sc PolicyNever PolicyAutomatic
sw <- layoutNew Nothing Nothing
en <- entryNew
----------------
scrolledWindowAddWithViewport sc log
boxPackStart vb sc PackGrow 0
boxPackStart vb en PackNatural 0
set win [ containerChild := vb ]
en `onEntryActivate` do
txt <- entryGetText en
entrySetText en ""
l <- labelNew (Just txt)
boxPackStart log l PackNatural 0
widgetShowAll log
Just ran <- scrolledWindowGetVScrollbar sc
adj <- rangeGetAdjustment ran
max <- adjustmentGetUpper adj
adjustmentSetValue adj max
----------------
widgetShowAll win
mainGUI
Autres conseils
Je pense que vous devez d'abord mettre en œuvre le back-end, à savoir le code pour l'analyse d'une commande et la création de l'image de sortie. Si cela fonctionne, vous pouvez ensuite mettre en œuvre l'interface graphique. En gros, vous avez besoin quelque chose de léger d'une entrée de texte pour la saisie et un texte et un widget de dessin pour la sortie. Comme la programmation GUI est (à mon humble avis) non trivial, vous devez d'abord regarder quelques tutoriels / introductions GTK / gtk2hs.