Domanda

Sto cercando di creare il mio primo "vero e proprio programma" in Haskell (cosa che risolve integrali se polinomi) ma io sono completamente confusi con questa parte di esso:

Voglio fare qualcosa di molto semplice po 'un simile GHCi:

> user input
program output
> user input
program output
> user input
program output
> 

Se non fosse che la mia uscita programma è immagini (utilizzando LaTeX per trasformare espressioni matematiche in PNG) - quindi non posso fare questo using System.IO. Penso che sarà possibile con gtk2hs che sono riuscito a installare, ma io non riesco a capire come rendere questo dialogo di input / output.

Si prega di farmi vedere come è fatto, se avete il tempo. Grazie mille!

È stato utile?

Soluzione

Siamo riusciti a venire con la seguente soluzione, grazie alla 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

Altri suggerimenti

Penso che si dovrebbe prima implementare il backend, vale a dire il codice per il parsing di un comando e di creare l'immagine di output. Se funziona, si potrebbe quindi implementare l'interfaccia grafica. Fondamentalmente, è necessario qualcosa di leggero una voce di testo per l'input e un testo e widget di disegno per l'uscita. Come programmazione GUI è (secondo me) non è banale, si deve prima guarda ad alcuni GTK / gtk2hs tutorial / introduzioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top