{-# LANGUAGE ForeignFunctionInterface, CPP #-}
module Graphics.UI.WXCore.GHCiSupport(enableGUI) where
-- GHCi support on MacOS X
-- TODO: preprocessor to make it conditional on the platform

#if darwin_HOST_OS

import Data.Int
import Foreign

type ProcessSerialNumber = Int64

foreign import ccall "GetCurrentProcess" getCurrentProcess :: Ptr ProcessSerialNumber -> IO Int16
foreign import ccall "_CGSDefaultConnection" cgsDefaultConnection :: IO ()
foreign import ccall "CPSEnableForegroundOperation" cpsEnableForegroundOperation :: Ptr ProcessSerialNumber -> IO ()
-- foreign import ccall "CPSSignalAppReady" cpsSignalAppReady :: Ptr ProcessSerialNumber -> IO ()
foreign import ccall "CPSSetFrontProcess" cpsSetFrontProcess :: Ptr ProcessSerialNumber -> IO ()

enableGUI :: IO ()
enableGUI = alloca $ \psn -> do
    getCurrentProcess psn
    cgsDefaultConnection
    cpsEnableForegroundOperation psn
    -- cpsSignalAppReady psn
    cpsSetFrontProcess psn

#else

enableGUI :: IO ()
enableGUI = return ()

#endif