Small JAPI binding for GHC in CVS

"Mike Thomas" <[email protected]>
Newsgroups gmane.comp.lang.haskell.glasgow.user,gmane.comp.lang.haskell.gui
Message-ID <[email protected]>
Hi there.

Under "fptools/libraries/Japi" (the GHC CVS repository) please find a
preliminary binding to a subset of the Japi library:

   http://www.japi.de/

from which site you can obtain precompiled libraries and headers for
different platforms.

Japi is a simple C wrapper on Java which means that either "jre" or "java"
needs to be in your path, but it avoids callbacks and uses the Haskell 98
FFI so I would expect it to be easy to port to "nhc98".  You have to do an
event loop in Haskell.

The makefiles have been tested with MinGW32 GHC, but I expect you would need
little effort under Linux, for example.  Some examples are provided
including a Fractal program, based on the C originals including the one
below which will probably have mangled formatting courtesy of Outlook.

Cheers

Mike Thomas.
---------------------------------------------------
module Main(main) where

import Graphics.UI.Japi.Binding
import Graphics.UI.Japi.Types
import Graphics.UI.Japi.Constants
import Control.Monad

main = do j_setdebug 4
	  rv <- j_start
	  when (0 == rv)
          (error "Could not start the JAPI server (jre or java)")
	  frame <- j_frame "Frame demo"
	  j_show (Object $ fromIntegral $ frame)
	  icon  <- j_loadimage "../c-examples/images/new.gif"
	  when (0 == icon) (error "Could not find the icon file.")
	  j_seticon frame icon
	  waitForFrameAction frame
	  return j_quit

waitForFrameAction :: Frame -> IO ()
waitForFrameAction frame =
    do rv <- j_nextaction
       when (not (rv == (EventListener $ fromIntegral $ frame)))
              (waitForFrameAction frame)
       return ()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.