Как я могу сделать графическую командную строку в Haskell / GTK2HS?

StackOverflow https://stackoverflow.com/questions/4281984

  •  28-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь создать свою первую «реальную программу» в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top