2010-06-12 5 views
4

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

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.

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

+0

Вы следовали указаниям для Mac? Http: // Haskell.org/haskellwiki/WxHaskell/MacOS_X –

+1

Да, и все в порядке, за исключением «/ usr/local/wxhaskell/bin/macosx-app -v helloworld» Эта команда отсутствует ... – Bill

ответ

2

source release содержит файл с именем 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

Красивая! Это сработало отлично. Большое спасибо! – Bill

+0

Кажется, что wxHaskell (0.12.1.6) распространяется через Cabal; файл tar.gz, который загружает Cabal из Hackage, не содержит записи bin/subdirectory и, разумеется, шаблона macosx-app. Есть ли еще надежда для нас? –

0

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

  1. Я скачать исходники wxhaskell из http://haskell.org/haskellwiki/WxHaskell/Download

  2. I распаковать загруженный файл:

    wxhaskell-src-XXX.zip

    порога e XXX - номер версии.

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

    .configure

  4. скопировать с помощью Sudo файл в папку bin/USR/местные/бен

    Судо ф конфиг/MacOSX-приложение/USR/местные/бен

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

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