wxHaskell на OS X - PullRequest
       17

wxHaskell на OS X

4 голосов
/ 12 июня 2010

Я хочу использовать wxHaskell в OS X (Snow Leopard, MacBook Pro).Мне удалось успешно установить библиотеку, и приведенный ниже скрипт:

module Main where
import Graphics.UI.WX

main :: IO ()
main = start hello

hello :: IO ()
hello
  = do f    <- frame    [text := "Hello!"]
       quit <- button f [text := "Quit", on command := close f]
       set f [layout := widget quit]

приводит к тому, что окно отображается с одной кнопкой, как указано.Однако, когда я нажимаю кнопку, ничего не происходит - у меня даже не получается визуальный ответ кнопки, которая становится синей, указывая на то, что она нажата (ха-ха, каламбур не предназначен).Я должен запустить пакет под названием «macosx-app» в двоичных файлах wxHaskell, чтобы заставить их работать, но я нигде не могу его найти.Это не на моей машине или (насколько я могу судить) в дистрибутивах WX или wxHaskell.

Кто-нибудь знает, что мне нужно сделать, чтобы заставить это работать?

Ответы [ 2 ]

2 голосов
/ 12 июня 2010

Исходный выпуск содержит файл с именем macosx-app-template в каталоге bin. Этот файл используется следующей частью сценария configure для создания macosx-app:

cat > config/macosx-app-temp << EOF
#!/bin/sh
rezcomp="$wxinstallrezcomp"
rezfile="$wxinstallrezfile"

EOF
cat config/macosx-app-temp bin/macosx-app-template > config/macosx-app
rm -f config/macosx-app-temp
chmod a+x config/macosx-app

Если у вас уже установлен wxHaskell и вы не используете сценарий configure, вы, вероятно, можете просто скопировать эти шаги, то есть скопировать macosx-app-template в macosx-app, сделать его исполняемым и добавить следующие строки в верх:

#!/bin/sh

libdir=""

wxrezcomp="`wx-config --rezflags`"
wxrezfile=""
if test "$wxrezcomp"; then
  for word in $wxrezcomp; do
    temp="`echo $word | grep '[^_]*_mac-[^r]*r'`"
    if test "$temp"; then
      wxrezfile="$temp"
    fi
  done
fi

if test "$wxrezfile"; then
  wxrezdir="`echo $wxrezfile | sed -e 's|\(.*\)/libwx_mac.*|\1|'`"
  wxinstallrezcomp="`echo \"${wxrezcomp}\" | sed -e \"s|${wxrezdir}|${libdir}|g\"`"
  wxinstallrezfile="`echo \"${wxrezfile}\" | sed -e \"s|${wxrezdir}|${libdir}|g\"`"
fi

rezcomp="$wxinstallrezcomp"
rezfile="$wxinstallrezfile"

Обратите внимание, что вам нужно изменить libdir="", чтобы указать каталог, в котором установлены файлы библиотеки wxHaskell, и, если wx-config не указан в вашем пути, вам также необходимо изменить эту строку.

0 голосов
/ 02 марта 2011

Я установил wxhaskell, используя cabal, и, прочитав другие объяснения, действую следующим образом, чтобы приложение macosx работало:

  1. Я загружаю исходники wxhaskell с http://haskell.org/haskellwiki/WxHaskell/Download

  2. Распаковываю скачанный файл:

    wxhaskell-src-XXX.zip

    где XXX - номер версии.

  3. Я запускаю configure в разархивированном каталоге. Это создает из шаблона файл config / macosx-app

    .configure

  4. Я копирую с помощью sudo файл в каталог bin / usr / local / bin

    Конфигурация sudo cp / macosx-app / usr / local / bin

  5. Я удаляю каталоги с исходными файлами

Это работает для меня!

...