module IDE.OSX (
applicationNew
, updateMenu
, applicationReady
) where
import Graphics.UI.Gtk
import IDE.Core.State
#if defined(darwin_HOST_OS)
import Control.Monad.Reader (liftIO)
import Control.Monad.Reader.Class (ask)
import Graphics.UI.Gtk.OSX
import IDE.Command (canQuit)
import Data.Text (Text)
updateMenu :: Application -> UIManager -> IDEM ()
updateMenu app uiManager = do
ideR <- ask
liftIO $ do
mbMenu <- uiManagerGetWidget uiManager ("/ui/menubar" :: Text)
case mbMenu of
Just menu -> do
widgetHide menu
applicationSetMenuBar app (castToMenuShell menu)
Nothing -> return ()
mbQuit <- uiManagerGetWidget uiManager ("/ui/menubar/_File/_Quit" :: Text)
case mbQuit of
Just quit -> widgetHide quit
Nothing -> return ()
mbAbout <- uiManagerGetWidget uiManager ("/ui/menubar/_Help/_About" :: Text)
case mbAbout of
Just about -> do
applicationInsertAppMenuItem app (castToMenuItem about) 0
sep <- separatorMenuItemNew
applicationInsertAppMenuItem app sep 1
Nothing -> return ()
mbPrefs <- uiManagerGetWidget uiManager ("/ui/menubar/_Configuration/Edit general Preferences" :: Text)
case mbPrefs of
Just prefs -> do
applicationInsertAppMenuItem app (castToMenuItem prefs) 2
Nothing -> return ()
app `on` blockTermination $ reflectIDE (fmap not canQuit) ideR
applicationSetUseQuartsAccelerators app True
#else
data Application = Application
applicationNew :: IO Application
applicationNew = return Application
updateMenu :: Application -> UIManager -> IDEM ()
updateMenu _ _ = return ()
applicationReady :: Application -> IO ()
applicationReady _ = return ()
#endif