Как я могу сделать графическую командную строку в Haskell / GTK2HS?
Вопрос
Я пытаюсь создать свою первую «реальную программу» в Haskell (что-то, что решает интегралы, если полиномы), но я полностью озадачен этой частью этого:
Я хочу сделать что-то очень просто немного, как GHCI:
> user input
program output
> user input
program output
> user input
program output
>
За исключением того, что мой программный выход - это изображения (используя латекс, чтобы превратить математические выражения в PNGS) - поэтому я не могу сделать это, используя System.io. Я думаю, что будет возможно с GTK2HS, которым мне удалось установить, но я не могу понять, как сделать этот диалог ввода / вывода.
Пожалуйста, покажите мне, как это сделано, если у вас есть время. Большое спасибо!
Решение
Нам удалось придумать следующее решение благодаря Кластиусумаксимусу.
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
Другие советы
Я думаю, что вы должны сначала реализовать бэкэнда, то есть код для анализа команды и создания выходного изображения. Если это работает, вы могли бы использовать графический интерфейс. По сути, вам нужно что-то завещать текстовую запись для ввода и текстового и рисования виджета для вывода. В качестве программирования GUI (ИМХО) не тривиально, вы должны сначала посмотреть учебные пособия / введений GTK / GTK2HS.