Как создать графическую командную строку в haskell / gtk2hs? - PullRequest
7 голосов
/ 26 ноября 2010

Я пытаюсь создать свою первую "настоящую программу" в haskell (что-то, что решает интегралы, если полиномы), но я полностью озадачен этой частью этого:немного похоже на GHCi:

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

за исключением того, что моя программа выводит изображения (используя LaTeX для преобразования математических выражений в PNG) - поэтому я не могу сделать это с помощью System.IO.Я думаю, что это будет возможно с gtk2hs, который мне удалось установить, но я не могу понять, как сделать этот диалог ввода / вывода.

Пожалуйста, покажите мне, как это сделать, если у вас есть время.Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 27 ноября 2010

Благодаря 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
0 голосов
/ 27 ноября 2010

Я думаю, что вы должны сначала реализовать бэкэнд, то есть код для разбора команды и создания выходного изображения.Если это работает, вы можете реализовать графический интерфейс.По сути, вам нужно что-то легкое для ввода текста для ввода и виджет текста и рисунка для вывода.Поскольку программирование с помощью графического интерфейса (IMHO) не тривиально, вы должны сначала взглянуть на некоторые руководства / введения в GTK / gtk2hs.

...