ige-mac-integration-0.0.0.2: Graphics/UI/Gtk/OSX/Application.chs
{-# LANGUAGE CPP #-}
-- -*-haskell-*-
-- GIMP Toolkit (GTK) SourceBuffer
--
-- Author : Peter Gavin
-- derived from sourceview bindings by Axel Simon and Duncan Coutts
--
-- Created: 18 December 2008
--
-- Copyright (C) 2003-2008 Peter Gavin, Duncan Coutts, Axel Simon
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- |
-- Maintainer : gtk2hs-users@lists.sourceforge.net
-- Stability : provisional
-- Portability : portable (depends on GHC)
--
module Graphics.UI.Gtk.OSX.Application (
Application,
ApplicationClass,
castToApplication,
gTypeApplication,
toApplication,
applicationNew,
applicationReady,
applicationCleanup,
applicationSetUseQuartsAccelerators,
applicationSetMenuBar,
applicationSyncMenuBar,
ApplicationMenuGroup(..),
applicationAddAppMenuGroup,
applicationAddAppMenuItem,
applicationSetWindowMenu,
applicationSetHelpMenu,
GtkOSXApplicationAttentionType(..),
applicationSetDockMenu,
applicationSetDockIconPixbuf,
applicationSetDockIconResource,
AttentionRequestID(..),
applicationAttentionRequest,
applicationCancelAttentionRequest,
applicationGetBundlePath,
applicationGetResourcePath,
applicationGetExecutablePath,
applicationGetBundleId,
applicationGetBundleInfo,
didBecomeActive,
willResignActive,
blockTermination,
willTerminate,
openFile
) where
import Control.Monad (liftM)
import Data.Maybe (fromMaybe)
import System.Glib.FFI
import System.Glib.GObject (objectNew, makeNewGObject)
{#import System.Glib.Properties#}
import System.Glib.Attributes
{#import Graphics.UI.Gtk.OSX.Types#}
{#import Graphics.UI.Gtk.OSX.Signals#}
{# context lib="gtk" prefix="gtk" #}
-- methods
applicationNew :: IO Application
applicationNew = makeNewGObject mkApplication $ liftM castPtr $
objectNew gTypeApplication []
-- |
--
applicationReady :: ApplicationClass self => self -> IO ()
applicationReady self =
{#call unsafe gtk_osxapplication_ready#} (toApplication self)
-- |
--
applicationCleanup :: ApplicationClass self => self -> IO ()
applicationCleanup self =
{#call unsafe gtk_osxapplication_cleanup#} (toApplication self)
-- |
--
applicationSetUseQuartsAccelerators :: ApplicationClass self => self -> Bool -> IO ()
applicationSetUseQuartsAccelerators self b =
{#call unsafe gtk_osxapplication_set_use_quartz_accelerators#} (toApplication self) (fromBool b)
-- |
--
applicationGetUseQuartsAccelerators :: ApplicationClass self => self -> IO Bool
applicationGetUseQuartsAccelerators self = liftM toBool $
{#call unsafe gtk_osxapplication_use_quartz_accelerators#} (toApplication self)
-- |
--
applicationSetMenuBar :: (ApplicationClass self, MenuShellClass menu) => self -> menu -> IO ()
applicationSetMenuBar self menu =
{#call unsafe gtk_osxapplication_set_menu_bar#} (toApplication self) (toMenuShell menu)
-- |
--
applicationSyncMenuBar :: ApplicationClass self => self -> IO ()
applicationSyncMenuBar self =
{#call unsafe gtk_osxapplication_sync_menubar#} (toApplication self)
newtype ApplicationMenuGroup = GtkOSXApplicationMenuGroup (Ptr ())
-- |
--
applicationAddAppMenuGroup :: ApplicationClass self => self -> IO ApplicationMenuGroup
applicationAddAppMenuGroup self = liftM GtkOSXApplicationMenuGroup $
{#call unsafe gtk_osxapplication_add_app_menu_group#} (toApplication self)
-- |
--
applicationAddAppMenuItem :: (ApplicationClass self, MenuItemClass menuItem)
=> self -> ApplicationMenuGroup -> menuItem -> IO ()
applicationAddAppMenuItem self (GtkOSXApplicationMenuGroup group) menuItem =
{#call unsafe gtk_osxapplication_add_app_menu_item#} (toApplication self)
group (toMenuItem menuItem)
-- |
--
applicationSetWindowMenu :: (ApplicationClass self, MenuItemClass menuItem)
=> self -> menuItem -> IO ()
applicationSetWindowMenu self menuItem =
{#call unsafe gtk_osxapplication_set_window_menu#} (toApplication self) (toMenuItem menuItem)
-- |
--
applicationSetHelpMenu :: (ApplicationClass self, MenuItemClass menuItem)
=> self -> menuItem -> IO ()
applicationSetHelpMenu self menuItem =
{#call unsafe gtk_osxapplication_set_help_menu#} (toApplication self) (toMenuItem menuItem)
{#enum GtkOSXApplicationAttentionType {underscoreToCase} deriving (Eq,Show)#}
-- |
--
applicationSetDockMenu :: (ApplicationClass self, MenuShellClass menu) => self -> menu -> IO ()
applicationSetDockMenu self menu =
{#call unsafe gtk_osxapplication_set_dock_menu#} (toApplication self) (toMenuShell menu)
-- |
--
applicationSetDockIconPixbuf :: (ApplicationClass self, PixbufClass pixbuf) => self -> Maybe pixbuf -> IO ()
applicationSetDockIconPixbuf self mbPixbuf =
{#call unsafe gtk_osxapplication_set_dock_icon_pixbuf#} (toApplication self)
(maybe (Pixbuf nullForeignPtr) toPixbuf mbPixbuf)
-- |
--
applicationSetDockIconResource :: ApplicationClass self => self -> String -> String -> String -> IO ()
applicationSetDockIconResource self name rType subdir =
withCString name $ \namePtr ->
withCString rType $ \typePtr ->
withCString subdir $ \subdirPtr ->
{#call unsafe gtk_osxapplication_set_dock_icon_resource#} (toApplication self) namePtr typePtr subdirPtr
newtype AttentionRequestID = AttentionRequestID CInt
-- |
--
applicationAttentionRequest :: ApplicationClass self => self -> GtkOSXApplicationAttentionType -> IO AttentionRequestID
applicationAttentionRequest self rType = liftM AttentionRequestID $
{#call unsafe gtk_osxapplication_attention_request#} (toApplication self) (fromIntegral $ fromEnum rType)
-- |
--
applicationCancelAttentionRequest :: ApplicationClass self => self -> AttentionRequestID -> IO ()
applicationCancelAttentionRequest self (AttentionRequestID id) =
{#call unsafe gtk_osxapplication_cancel_attention_request#} (toApplication self) id
-- |
--
applicationGetBundlePath :: ApplicationClass self => self -> IO String
applicationGetBundlePath self =
{#call unsafe gtk_osxapplication_get_bundle_path#} (toApplication self) >>= peekCString
-- |
--
applicationGetResourcePath :: ApplicationClass self => self -> IO String
applicationGetResourcePath self =
{#call unsafe gtk_osxapplication_get_resource_path#} (toApplication self) >>= peekCString
-- |
--
applicationGetExecutablePath :: ApplicationClass self => self -> IO String
applicationGetExecutablePath self =
{#call unsafe gtk_osxapplication_get_executable_path#} (toApplication self) >>= peekCString
-- |
--
applicationGetBundleId :: ApplicationClass self => self -> IO String
applicationGetBundleId self =
{#call unsafe gtk_osxapplication_get_bundle_id#} (toApplication self) >>= peekCString
-- |
--
applicationGetBundleInfo :: ApplicationClass self => self -> String -> IO String
applicationGetBundleInfo self key =
withCString key $ \keyPtr ->
{#call unsafe gtk_osxapplication_get_bundle_info#} (toApplication self) keyPtr >>= peekCString
-- |
--
didBecomeActive :: ApplicationClass self => Signal self (IO ())
didBecomeActive = Signal (connect_NONE__NONE "NSApplicationDidBecomeActive")
-- |
--
willResignActive :: ApplicationClass self => Signal self (IO ())
willResignActive = Signal (connect_NONE__NONE "NSApplicationWillResignActive")
-- |
--
blockTermination :: ApplicationClass self => Signal self (IO Bool)
blockTermination = Signal (connect_NONE__BOOL "NSApplicationBlockTermination")
-- |
--
willTerminate :: ApplicationClass self => Signal self (IO ())
willTerminate = Signal (connect_NONE__NONE "NSApplicationWillTerminate")
-- |
--
openFile :: ApplicationClass self => Signal self (String -> IO ())
openFile = Signal (connect_STRING__NONE "NSApplicationOpenFile")