{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' is a hash table filled with 'GI.Gio.Interfaces.Action.Action' objects, implementing the 'GI.Gio.Interfaces.ActionGroup.ActionGroup' and 'GI.Gio.Interfaces.ActionMap.ActionMap' interfaces. /Since: 2.28/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gio.Objects.SimpleActionGroup ( -- * Exported types SimpleActionGroup(..) , IsSimpleActionGroup , toSimpleActionGroup , noSimpleActionGroup , -- * Methods -- ** addEntries #method:addEntries# #if ENABLE_OVERLOADING SimpleActionGroupAddEntriesMethodInfo , #endif simpleActionGroupAddEntries , -- ** insert #method:insert# #if ENABLE_OVERLOADING SimpleActionGroupInsertMethodInfo , #endif simpleActionGroupInsert , -- ** lookup #method:lookup# #if ENABLE_OVERLOADING SimpleActionGroupLookupMethodInfo , #endif simpleActionGroupLookup , -- ** new #method:new# simpleActionGroupNew , -- ** remove #method:remove# #if ENABLE_OVERLOADING SimpleActionGroupRemoveMethodInfo , #endif simpleActionGroupRemove , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.GObject.Objects.Object as GObject.Object import {-# SOURCE #-} qualified GI.Gio.Interfaces.Action as Gio.Action import {-# SOURCE #-} qualified GI.Gio.Interfaces.ActionGroup as Gio.ActionGroup import {-# SOURCE #-} qualified GI.Gio.Interfaces.ActionMap as Gio.ActionMap import {-# SOURCE #-} qualified GI.Gio.Structs.ActionEntry as Gio.ActionEntry -- | Memory-managed wrapper type. newtype SimpleActionGroup = SimpleActionGroup (ManagedPtr SimpleActionGroup) foreign import ccall "g_simple_action_group_get_type" c_g_simple_action_group_get_type :: IO GType instance GObject SimpleActionGroup where gobjectType = c_g_simple_action_group_get_type -- | Type class for types which can be safely cast to `SimpleActionGroup`, for instance with `toSimpleActionGroup`. class (GObject o, O.IsDescendantOf SimpleActionGroup o) => IsSimpleActionGroup o instance (GObject o, O.IsDescendantOf SimpleActionGroup o) => IsSimpleActionGroup o instance O.HasParentTypes SimpleActionGroup type instance O.ParentTypes SimpleActionGroup = '[GObject.Object.Object, Gio.ActionGroup.ActionGroup, Gio.ActionMap.ActionMap] -- | Cast to `SimpleActionGroup`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toSimpleActionGroup :: (MonadIO m, IsSimpleActionGroup o) => o -> m SimpleActionGroup toSimpleActionGroup = liftIO . unsafeCastTo SimpleActionGroup -- | A convenience alias for `Nothing` :: `Maybe` `SimpleActionGroup`. noSimpleActionGroup :: Maybe SimpleActionGroup noSimpleActionGroup = Nothing #if ENABLE_OVERLOADING type family ResolveSimpleActionGroupMethod (t :: Symbol) (o :: *) :: * where ResolveSimpleActionGroupMethod "actionAdded" o = Gio.ActionGroup.ActionGroupActionAddedMethodInfo ResolveSimpleActionGroupMethod "actionEnabledChanged" o = Gio.ActionGroup.ActionGroupActionEnabledChangedMethodInfo ResolveSimpleActionGroupMethod "actionRemoved" o = Gio.ActionGroup.ActionGroupActionRemovedMethodInfo ResolveSimpleActionGroupMethod "actionStateChanged" o = Gio.ActionGroup.ActionGroupActionStateChangedMethodInfo ResolveSimpleActionGroupMethod "activateAction" o = Gio.ActionGroup.ActionGroupActivateActionMethodInfo ResolveSimpleActionGroupMethod "addAction" o = Gio.ActionMap.ActionMapAddActionMethodInfo ResolveSimpleActionGroupMethod "addActionEntries" o = Gio.ActionMap.ActionMapAddActionEntriesMethodInfo ResolveSimpleActionGroupMethod "addEntries" o = SimpleActionGroupAddEntriesMethodInfo ResolveSimpleActionGroupMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveSimpleActionGroupMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveSimpleActionGroupMethod "changeActionState" o = Gio.ActionGroup.ActionGroupChangeActionStateMethodInfo ResolveSimpleActionGroupMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveSimpleActionGroupMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveSimpleActionGroupMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveSimpleActionGroupMethod "hasAction" o = Gio.ActionGroup.ActionGroupHasActionMethodInfo ResolveSimpleActionGroupMethod "insert" o = SimpleActionGroupInsertMethodInfo ResolveSimpleActionGroupMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveSimpleActionGroupMethod "listActions" o = Gio.ActionGroup.ActionGroupListActionsMethodInfo ResolveSimpleActionGroupMethod "lookup" o = SimpleActionGroupLookupMethodInfo ResolveSimpleActionGroupMethod "lookupAction" o = Gio.ActionMap.ActionMapLookupActionMethodInfo ResolveSimpleActionGroupMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveSimpleActionGroupMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveSimpleActionGroupMethod "queryAction" o = Gio.ActionGroup.ActionGroupQueryActionMethodInfo ResolveSimpleActionGroupMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveSimpleActionGroupMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveSimpleActionGroupMethod "remove" o = SimpleActionGroupRemoveMethodInfo ResolveSimpleActionGroupMethod "removeAction" o = Gio.ActionMap.ActionMapRemoveActionMethodInfo ResolveSimpleActionGroupMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveSimpleActionGroupMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveSimpleActionGroupMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveSimpleActionGroupMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveSimpleActionGroupMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveSimpleActionGroupMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveSimpleActionGroupMethod "getActionEnabled" o = Gio.ActionGroup.ActionGroupGetActionEnabledMethodInfo ResolveSimpleActionGroupMethod "getActionParameterType" o = Gio.ActionGroup.ActionGroupGetActionParameterTypeMethodInfo ResolveSimpleActionGroupMethod "getActionState" o = Gio.ActionGroup.ActionGroupGetActionStateMethodInfo ResolveSimpleActionGroupMethod "getActionStateHint" o = Gio.ActionGroup.ActionGroupGetActionStateHintMethodInfo ResolveSimpleActionGroupMethod "getActionStateType" o = Gio.ActionGroup.ActionGroupGetActionStateTypeMethodInfo ResolveSimpleActionGroupMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveSimpleActionGroupMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveSimpleActionGroupMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveSimpleActionGroupMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveSimpleActionGroupMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveSimpleActionGroupMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveSimpleActionGroupMethod t SimpleActionGroup, O.MethodInfo info SimpleActionGroup p) => OL.IsLabel t (SimpleActionGroup -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif #if ENABLE_OVERLOADING instance O.HasAttributeList SimpleActionGroup type instance O.AttributeList SimpleActionGroup = SimpleActionGroupAttributeList type SimpleActionGroupAttributeList = ('[ ] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING type instance O.SignalList SimpleActionGroup = SimpleActionGroupSignalList type SimpleActionGroupSignalList = ('[ '("actionAdded", Gio.ActionGroup.ActionGroupActionAddedSignalInfo), '("actionEnabledChanged", Gio.ActionGroup.ActionGroupActionEnabledChangedSignalInfo), '("actionRemoved", Gio.ActionGroup.ActionGroupActionRemovedSignalInfo), '("actionStateChanged", Gio.ActionGroup.ActionGroupActionStateChangedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif -- method SimpleActionGroup::new -- method type : Constructor -- Args : [] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"})) -- throws : False -- Skip return : False foreign import ccall "g_simple_action_group_new" g_simple_action_group_new :: IO (Ptr SimpleActionGroup) {- | Creates a new, empty, 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup'. /Since: 2.28/ -} simpleActionGroupNew :: (B.CallStack.HasCallStack, MonadIO m) => m SimpleActionGroup {- ^ __Returns:__ a new 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' -} simpleActionGroupNew = liftIO $ do result <- g_simple_action_group_new checkUnexpectedReturnNULL "simpleActionGroupNew" result result' <- (wrapObject SimpleActionGroup) result return result' #if ENABLE_OVERLOADING #endif -- method SimpleActionGroup::add_entries -- method type : OrdinaryMethod -- Args : [Arg {argCName = "simple", argType = TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GSimpleActionGroup", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "entries", argType = TCArray False (-1) 2 (TInterface (Name {namespace = "Gio", name = "ActionEntry"})), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer to the first item in\n an array of #GActionEntry structs", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_entries", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of @entries, or -1", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the user data for signal connections", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [Arg {argCName = "n_entries", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of @entries, or -1", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "g_simple_action_group_add_entries" g_simple_action_group_add_entries :: Ptr SimpleActionGroup -> -- simple : TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}) Ptr Gio.ActionEntry.ActionEntry -> -- entries : TCArray False (-1) 2 (TInterface (Name {namespace = "Gio", name = "ActionEntry"})) Int32 -> -- n_entries : TBasicType TInt Ptr () -> -- user_data : TBasicType TPtr IO () {-# DEPRECATED simpleActionGroupAddEntries ["(Since version 2.38)","Use 'GI.Gio.Interfaces.ActionMap.actionMapAddActionEntries'"] #-} {- | A convenience function for creating multiple 'GI.Gio.Objects.SimpleAction.SimpleAction' instances and adding them to the action group. /Since: 2.30/ -} simpleActionGroupAddEntries :: (B.CallStack.HasCallStack, MonadIO m, IsSimpleActionGroup a) => a {- ^ /@simple@/: a 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' -} -> [Gio.ActionEntry.ActionEntry] {- ^ /@entries@/: a pointer to the first item in an array of 'GI.Gio.Structs.ActionEntry.ActionEntry' structs -} -> Ptr () {- ^ /@userData@/: the user data for signal connections -} -> m () simpleActionGroupAddEntries simple entries userData = liftIO $ do let nEntries = fromIntegral $ length entries simple' <- unsafeManagedPtrCastPtr simple entries' <- mapM unsafeManagedPtrGetPtr entries entries'' <- packBlockArray 64 entries' g_simple_action_group_add_entries simple' entries'' nEntries userData touchManagedPtr simple mapM_ touchManagedPtr entries freeMem entries'' return () #if ENABLE_OVERLOADING data SimpleActionGroupAddEntriesMethodInfo instance (signature ~ ([Gio.ActionEntry.ActionEntry] -> Ptr () -> m ()), MonadIO m, IsSimpleActionGroup a) => O.MethodInfo SimpleActionGroupAddEntriesMethodInfo a signature where overloadedMethod _ = simpleActionGroupAddEntries #endif -- method SimpleActionGroup::insert -- method type : OrdinaryMethod -- Args : [Arg {argCName = "simple", argType = TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GSimpleActionGroup", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "action", argType = TInterface (Name {namespace = "Gio", name = "Action"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GAction", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "g_simple_action_group_insert" g_simple_action_group_insert :: Ptr SimpleActionGroup -> -- simple : TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}) Ptr Gio.Action.Action -> -- action : TInterface (Name {namespace = "Gio", name = "Action"}) IO () {-# DEPRECATED simpleActionGroupInsert ["(Since version 2.38)","Use 'GI.Gio.Interfaces.ActionMap.actionMapAddAction'"] #-} {- | Adds an action to the action group. If the action group already contains an action with the same name as /@action@/ then the old action is dropped from the group. The action group takes its own reference on /@action@/. /Since: 2.28/ -} simpleActionGroupInsert :: (B.CallStack.HasCallStack, MonadIO m, IsSimpleActionGroup a, Gio.Action.IsAction b) => a {- ^ /@simple@/: a 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' -} -> b {- ^ /@action@/: a 'GI.Gio.Interfaces.Action.Action' -} -> m () simpleActionGroupInsert simple action = liftIO $ do simple' <- unsafeManagedPtrCastPtr simple action' <- unsafeManagedPtrCastPtr action g_simple_action_group_insert simple' action' touchManagedPtr simple touchManagedPtr action return () #if ENABLE_OVERLOADING data SimpleActionGroupInsertMethodInfo instance (signature ~ (b -> m ()), MonadIO m, IsSimpleActionGroup a, Gio.Action.IsAction b) => O.MethodInfo SimpleActionGroupInsertMethodInfo a signature where overloadedMethod _ = simpleActionGroupInsert #endif -- method SimpleActionGroup::lookup -- method type : OrdinaryMethod -- Args : [Arg {argCName = "simple", argType = TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GSimpleActionGroup", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "action_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of an action", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "Action"})) -- throws : False -- Skip return : False foreign import ccall "g_simple_action_group_lookup" g_simple_action_group_lookup :: Ptr SimpleActionGroup -> -- simple : TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}) CString -> -- action_name : TBasicType TUTF8 IO (Ptr Gio.Action.Action) {-# DEPRECATED simpleActionGroupLookup ["(Since version 2.38)","Use 'GI.Gio.Interfaces.ActionMap.actionMapLookupAction'"] #-} {- | Looks up the action with the name /@actionName@/ in the group. If no such action exists, returns 'Nothing'. /Since: 2.28/ -} simpleActionGroupLookup :: (B.CallStack.HasCallStack, MonadIO m, IsSimpleActionGroup a) => a {- ^ /@simple@/: a 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' -} -> T.Text {- ^ /@actionName@/: the name of an action -} -> m Gio.Action.Action {- ^ __Returns:__ a 'GI.Gio.Interfaces.Action.Action', or 'Nothing' -} simpleActionGroupLookup simple actionName = liftIO $ do simple' <- unsafeManagedPtrCastPtr simple actionName' <- textToCString actionName result <- g_simple_action_group_lookup simple' actionName' checkUnexpectedReturnNULL "simpleActionGroupLookup" result result' <- (newObject Gio.Action.Action) result touchManagedPtr simple freeMem actionName' return result' #if ENABLE_OVERLOADING data SimpleActionGroupLookupMethodInfo instance (signature ~ (T.Text -> m Gio.Action.Action), MonadIO m, IsSimpleActionGroup a) => O.MethodInfo SimpleActionGroupLookupMethodInfo a signature where overloadedMethod _ = simpleActionGroupLookup #endif -- method SimpleActionGroup::remove -- method type : OrdinaryMethod -- Args : [Arg {argCName = "simple", argType = TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GSimpleActionGroup", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "action_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of the action", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "g_simple_action_group_remove" g_simple_action_group_remove :: Ptr SimpleActionGroup -> -- simple : TInterface (Name {namespace = "Gio", name = "SimpleActionGroup"}) CString -> -- action_name : TBasicType TUTF8 IO () {-# DEPRECATED simpleActionGroupRemove ["(Since version 2.38)","Use 'GI.Gio.Interfaces.ActionMap.actionMapRemoveAction'"] #-} {- | Removes the named action from the action group. If no action of this name is in the group then nothing happens. /Since: 2.28/ -} simpleActionGroupRemove :: (B.CallStack.HasCallStack, MonadIO m, IsSimpleActionGroup a) => a {- ^ /@simple@/: a 'GI.Gio.Objects.SimpleActionGroup.SimpleActionGroup' -} -> T.Text {- ^ /@actionName@/: the name of the action -} -> m () simpleActionGroupRemove simple actionName = liftIO $ do simple' <- unsafeManagedPtrCastPtr simple actionName' <- textToCString actionName g_simple_action_group_remove simple' actionName' touchManagedPtr simple freeMem actionName' return () #if ENABLE_OVERLOADING data SimpleActionGroupRemoveMethodInfo instance (signature ~ (T.Text -> m ()), MonadIO m, IsSimpleActionGroup a) => O.MethodInfo SimpleActionGroupRemoveMethodInfo a signature where overloadedMethod _ = simpleActionGroupRemove #endif