{-# LINE 2 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
module Graphics.UI.Gtk.ActionMenuToolbar.ActionGroup (
ActionGroup,
ActionGroupClass,
castToActionGroup, gTypeActionGroup,
toActionGroup,
ActionEntry(..),
ToggleActionEntry(..),
RadioActionEntry(..),
actionGroupNew,
actionGroupGetName,
actionGroupGetSensitive,
actionGroupSetSensitive,
actionGroupGetVisible,
actionGroupSetVisible,
actionGroupGetAction,
actionGroupListActions,
actionGroupAddAction,
actionGroupAddActionWithAccel,
actionGroupRemoveAction,
actionGroupAddActions,
actionGroupAddToggleActions,
actionGroupAddRadioActions,
actionGroupSetTranslateFunc,
actionGroupSetTranslationDomain,
actionGroupTranslateString,
actionGroupName,
actionGroupSensitive,
actionGroupVisible,
) where
import Control.Monad (liftM, foldM, when)
import System.Glib.FFI
import System.Glib.UTFString
import System.Glib.GList
import System.Glib.Attributes
import System.Glib.Properties
import Graphics.UI.Gtk.Types
{-# LINE 117 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
import System.Glib.Signals (on)
import Graphics.UI.Gtk.ActionMenuToolbar.Action
import Graphics.UI.Gtk.ActionMenuToolbar.ToggleAction
import Graphics.UI.Gtk.ActionMenuToolbar.RadioAction
{-# LINE 124 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
actionGroupNew :: GlibString string
=> string
-> IO ActionGroup
actionGroupNew name =
wrapNewGObject mkActionGroup $
withUTFString name $ \namePtr ->
gtk_action_group_new
{-# LINE 139 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
namePtr
actionGroupGetName :: GlibString string => ActionGroup
-> IO string
actionGroupGetName self =
(\(ActionGroup arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_action_group_get_name argPtr1)
{-# LINE 150 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
>>= peekUTFString
actionGroupGetSensitive :: ActionGroup -> IO Bool
actionGroupGetSensitive self =
liftM toBool $
(\(ActionGroup arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_action_group_get_sensitive argPtr1)
{-# LINE 161 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
actionGroupSetSensitive :: ActionGroup -> Bool -> IO ()
actionGroupSetSensitive self sensitive =
(\(ActionGroup arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_action_group_set_sensitive argPtr1 arg2)
{-# LINE 168 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
(fromBool sensitive)
actionGroupGetVisible :: ActionGroup -> IO Bool
actionGroupGetVisible self =
liftM toBool $
(\(ActionGroup arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_action_group_get_visible argPtr1)
{-# LINE 179 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
actionGroupSetVisible :: ActionGroup -> Bool -> IO ()
actionGroupSetVisible self visible =
(\(ActionGroup arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_action_group_set_visible argPtr1 arg2)
{-# LINE 186 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
(fromBool visible)
actionGroupGetAction :: GlibString string => ActionGroup
-> string
-> IO (Maybe Action)
actionGroupGetAction self actionName =
maybeNull (makeNewGObject mkAction) $
withUTFString actionName $ \actionNamePtr ->
(\(ActionGroup arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_action_group_get_action argPtr1 arg2)
{-# LINE 199 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
actionNamePtr
actionGroupListActions :: ActionGroup
-> IO [Action]
actionGroupListActions self =
(\(ActionGroup arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_action_group_list_actions argPtr1)
{-# LINE 208 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
>>= fromGList
>>= mapM (\elemPtr -> makeNewGObject mkAction (return elemPtr))
actionGroupAddAction :: ActionClass action => ActionGroup -> action -> IO ()
actionGroupAddAction self action =
(\(ActionGroup arg1) (Action arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gtk_action_group_add_action argPtr1 argPtr2)
{-# LINE 221 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
(toAction action)
actionGroupAddActionWithAccel :: (ActionClass action, GlibString string) => ActionGroup
-> action
-> Maybe string
-> IO ()
actionGroupAddActionWithAccel self action accelerator =
maybeWith withUTFString accelerator $ \acceleratorPtr ->
(\(ActionGroup arg1) (Action arg2) arg3 -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gtk_action_group_add_action_with_accel argPtr1 argPtr2 arg3)
{-# LINE 240 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
(toAction action)
acceleratorPtr
actionGroupRemoveAction :: ActionClass action => ActionGroup -> action -> IO ()
actionGroupRemoveAction self action =
(\(ActionGroup arg1) (Action arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gtk_action_group_remove_action argPtr1 argPtr2)
{-# LINE 249 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
(toAction action)
data ActionEntry = ActionEntry {
actionEntryName :: DefaultGlibString,
actionEntryLabel :: DefaultGlibString,
actionEntryStockId :: Maybe DefaultGlibString,
actionEntryAccelerator :: Maybe DefaultGlibString,
actionEntryTooltip :: Maybe DefaultGlibString,
actionEntryCallback :: IO ()
}
actionGroupAddActions :: ActionGroup
-> [ActionEntry]
-> IO ()
actionGroupAddActions self entries =
flip mapM_ entries $ \(ActionEntry name label stockId
accelerator tooltip callback) -> do
action <- actionNew name label tooltip stockId
action `on` actionActivated $ callback
actionGroupAddActionWithAccel self action accelerator
data ToggleActionEntry = ToggleActionEntry {
toggleActionName :: DefaultGlibString,
toggleActionLabel :: DefaultGlibString,
toggleActionStockId :: Maybe DefaultGlibString,
toggleActionAccelerator :: Maybe DefaultGlibString,
toggleActionTooltip :: Maybe DefaultGlibString,
toggleActionCallback :: IO (),
toggleActionIsActive :: Bool
}
actionGroupAddToggleActions :: ActionGroup
-> [ToggleActionEntry]
-> IO ()
actionGroupAddToggleActions self entries =
flip mapM_ entries $ \(ToggleActionEntry name label stockId
accelerator tooltip callback isActive) -> do
action <- toggleActionNew name label tooltip stockId
toggleActionSetActive action isActive
action `on` actionActivated $ callback
actionGroupAddActionWithAccel self action accelerator
data RadioActionEntry = RadioActionEntry {
radioActionName :: DefaultGlibString,
radioActionLabel :: DefaultGlibString,
radioActionStockId :: Maybe DefaultGlibString,
radioActionAccelerator :: Maybe DefaultGlibString,
radioActionTooltip :: Maybe DefaultGlibString,
radioActionValue :: Int
}
actionGroupAddRadioActions :: ActionGroup
-> [RadioActionEntry]
-> Int
-> (RadioAction -> IO ())
-> IO ()
actionGroupAddRadioActions self entries initialValue onChange = do
group <- foldM
(\group (RadioActionEntry name label stockId
accelerator tooltip value) -> do
action <- radioActionNew name label tooltip stockId value
case group of
Nothing -> return ()
Just group -> radioActionSetGroup action group
when (initialValue == value) (toggleActionSetActive action True)
actionGroupAddActionWithAccel self action accelerator
return (Just action))
Nothing entries
case group of
Nothing -> return ()
Just group -> do
group `on` radioActionChanged $ onChange
return ()
actionGroupSetTranslateFunc :: GlibString string => ActionGroup
-> (string -> IO string)
-> IO ()
actionGroupSetTranslateFunc self func = do
funcPtr <- mkTranslateFunc $ \strPtr _ -> do
str <- peekUTFString strPtr
translatedStr <- func str
newUTFString translatedStr
(\(ActionGroup arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gtk_action_group_set_translate_func argPtr1 arg2 arg3 arg4)
{-# LINE 367 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
funcPtr
(castFunPtrToPtr funcPtr)
destroyFunPtr
type TranslateFunc = FunPtr (((Ptr CChar) -> ((Ptr ()) -> (IO (Ptr CChar)))))
{-# LINE 373 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
foreign import ccall "wrapper" mkTranslateFunc ::
(CString -> Ptr () -> IO CString) -> IO TranslateFunc
actionGroupSetTranslationDomain :: GlibString string => ActionGroup
-> string
-> IO ()
actionGroupSetTranslationDomain self domain =
withUTFString domain $ \domainPtr ->
(\(ActionGroup arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_action_group_set_translation_domain argPtr1 arg2)
{-# LINE 390 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
domainPtr
actionGroupTranslateString :: GlibString string => ActionGroup
-> string
-> IO string
actionGroupTranslateString self string =
withUTFString string $ \stringPtr ->
(\(ActionGroup arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_action_group_translate_string argPtr1 arg2)
{-# LINE 404 "./Graphics/UI/Gtk/ActionMenuToolbar/ActionGroup.chs" #-}
self
stringPtr
>>= peekUTFString
actionGroupName :: GlibString string => Attr ActionGroup string
actionGroupName = newAttrFromStringProperty "name"
actionGroupSensitive :: Attr ActionGroup Bool
actionGroupSensitive = newAttr
actionGroupGetSensitive
actionGroupSetSensitive
actionGroupVisible :: Attr ActionGroup Bool
actionGroupVisible = newAttr
actionGroupGetVisible
actionGroupSetVisible
foreign import ccall safe "gtk_action_group_new"
gtk_action_group_new :: ((Ptr CChar) -> (IO (Ptr ActionGroup)))
foreign import ccall safe "gtk_action_group_get_name"
gtk_action_group_get_name :: ((Ptr ActionGroup) -> (IO (Ptr CChar)))
foreign import ccall safe "gtk_action_group_get_sensitive"
gtk_action_group_get_sensitive :: ((Ptr ActionGroup) -> (IO CInt))
foreign import ccall safe "gtk_action_group_set_sensitive"
gtk_action_group_set_sensitive :: ((Ptr ActionGroup) -> (CInt -> (IO ())))
foreign import ccall safe "gtk_action_group_get_visible"
gtk_action_group_get_visible :: ((Ptr ActionGroup) -> (IO CInt))
foreign import ccall safe "gtk_action_group_set_visible"
gtk_action_group_set_visible :: ((Ptr ActionGroup) -> (CInt -> (IO ())))
foreign import ccall safe "gtk_action_group_get_action"
gtk_action_group_get_action :: ((Ptr ActionGroup) -> ((Ptr CChar) -> (IO (Ptr Action))))
foreign import ccall safe "gtk_action_group_list_actions"
gtk_action_group_list_actions :: ((Ptr ActionGroup) -> (IO (Ptr ())))
foreign import ccall safe "gtk_action_group_add_action"
gtk_action_group_add_action :: ((Ptr ActionGroup) -> ((Ptr Action) -> (IO ())))
foreign import ccall safe "gtk_action_group_add_action_with_accel"
gtk_action_group_add_action_with_accel :: ((Ptr ActionGroup) -> ((Ptr Action) -> ((Ptr CChar) -> (IO ()))))
foreign import ccall safe "gtk_action_group_remove_action"
gtk_action_group_remove_action :: ((Ptr ActionGroup) -> ((Ptr Action) -> (IO ())))
foreign import ccall safe "gtk_action_group_set_translate_func"
gtk_action_group_set_translate_func :: ((Ptr ActionGroup) -> ((FunPtr ((Ptr CChar) -> ((Ptr ()) -> (IO (Ptr CChar))))) -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ())))))
foreign import ccall safe "gtk_action_group_set_translation_domain"
gtk_action_group_set_translation_domain :: ((Ptr ActionGroup) -> ((Ptr CChar) -> (IO ())))
foreign import ccall safe "gtk_action_group_translate_string"
gtk_action_group_translate_string :: ((Ptr ActionGroup) -> ((Ptr CChar) -> (IO (Ptr CChar))))