gi-gio-2.0.20: GI/Gio/Objects/Emblem.hs
{- |
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.Emblem.Emblem' is an implementation of 'GI.Gio.Interfaces.Icon.Icon' that supports
having an emblem, which is an icon with additional properties.
It can than be added to a 'GI.Gio.Objects.EmblemedIcon.EmblemedIcon'.
Currently, only metainformation about the emblem\'s origin is
supported. More may be added in the future.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Gio.Objects.Emblem
(
-- * Exported types
Emblem(..) ,
IsEmblem ,
toEmblem ,
noEmblem ,
-- * Methods
-- ** getIcon #method:getIcon#
#if ENABLE_OVERLOADING
EmblemGetIconMethodInfo ,
#endif
emblemGetIcon ,
-- ** getOrigin #method:getOrigin#
#if ENABLE_OVERLOADING
EmblemGetOriginMethodInfo ,
#endif
emblemGetOrigin ,
-- ** new #method:new#
emblemNew ,
-- ** newWithOrigin #method:newWithOrigin#
emblemNewWithOrigin ,
-- * Properties
-- ** icon #attr:icon#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
EmblemIconPropertyInfo ,
#endif
constructEmblemIcon ,
#if ENABLE_OVERLOADING
emblemIcon ,
#endif
getEmblemIcon ,
-- ** origin #attr:origin#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
EmblemOriginPropertyInfo ,
#endif
constructEmblemOrigin ,
#if ENABLE_OVERLOADING
emblemOrigin ,
#endif
getEmblemOrigin ,
) 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.Enums as Gio.Enums
import {-# SOURCE #-} qualified GI.Gio.Interfaces.Icon as Gio.Icon
-- | Memory-managed wrapper type.
newtype Emblem = Emblem (ManagedPtr Emblem)
foreign import ccall "g_emblem_get_type"
c_g_emblem_get_type :: IO GType
instance GObject Emblem where
gobjectType = c_g_emblem_get_type
-- | Type class for types which can be safely cast to `Emblem`, for instance with `toEmblem`.
class (GObject o, O.IsDescendantOf Emblem o) => IsEmblem o
instance (GObject o, O.IsDescendantOf Emblem o) => IsEmblem o
instance O.HasParentTypes Emblem
type instance O.ParentTypes Emblem = '[GObject.Object.Object, Gio.Icon.Icon]
-- | Cast to `Emblem`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toEmblem :: (MonadIO m, IsEmblem o) => o -> m Emblem
toEmblem = liftIO . unsafeCastTo Emblem
-- | A convenience alias for `Nothing` :: `Maybe` `Emblem`.
noEmblem :: Maybe Emblem
noEmblem = Nothing
#if ENABLE_OVERLOADING
type family ResolveEmblemMethod (t :: Symbol) (o :: *) :: * where
ResolveEmblemMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveEmblemMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveEmblemMethod "equal" o = Gio.Icon.IconEqualMethodInfo
ResolveEmblemMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveEmblemMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveEmblemMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveEmblemMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveEmblemMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveEmblemMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveEmblemMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveEmblemMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveEmblemMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveEmblemMethod "serialize" o = Gio.Icon.IconSerializeMethodInfo
ResolveEmblemMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveEmblemMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveEmblemMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveEmblemMethod "toString" o = Gio.Icon.IconToStringMethodInfo
ResolveEmblemMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveEmblemMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveEmblemMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveEmblemMethod "getIcon" o = EmblemGetIconMethodInfo
ResolveEmblemMethod "getOrigin" o = EmblemGetOriginMethodInfo
ResolveEmblemMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveEmblemMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveEmblemMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveEmblemMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveEmblemMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveEmblemMethod t Emblem, O.MethodInfo info Emblem p) => OL.IsLabel t (Emblem -> 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
-- VVV Prop "icon"
-- Type: TInterface (Name {namespace = "GObject", name = "Object"})
-- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
-- Nullable: (Nothing,Nothing)
{- |
Get the value of the “@icon@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' emblem #icon
@
-}
getEmblemIcon :: (MonadIO m, IsEmblem o) => o -> m (Maybe GObject.Object.Object)
getEmblemIcon obj = liftIO $ B.Properties.getObjectPropertyObject obj "icon" GObject.Object.Object
{- |
Construct a `GValueConstruct` with valid value for the “@icon@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructEmblemIcon :: (IsEmblem o, GObject.Object.IsObject a) => a -> IO (GValueConstruct o)
constructEmblemIcon val = B.Properties.constructObjectPropertyObject "icon" (Just val)
#if ENABLE_OVERLOADING
data EmblemIconPropertyInfo
instance AttrInfo EmblemIconPropertyInfo where
type AttrAllowedOps EmblemIconPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint EmblemIconPropertyInfo = GObject.Object.IsObject
type AttrBaseTypeConstraint EmblemIconPropertyInfo = IsEmblem
type AttrGetType EmblemIconPropertyInfo = (Maybe GObject.Object.Object)
type AttrLabel EmblemIconPropertyInfo = "icon"
type AttrOrigin EmblemIconPropertyInfo = Emblem
attrGet _ = getEmblemIcon
attrSet _ = undefined
attrConstruct _ = constructEmblemIcon
attrClear _ = undefined
#endif
-- VVV Prop "origin"
-- Type: TInterface (Name {namespace = "Gio", name = "EmblemOrigin"})
-- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
-- Nullable: (Just False,Nothing)
{- |
Get the value of the “@origin@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' emblem #origin
@
-}
getEmblemOrigin :: (MonadIO m, IsEmblem o) => o -> m Gio.Enums.EmblemOrigin
getEmblemOrigin obj = liftIO $ B.Properties.getObjectPropertyEnum obj "origin"
{- |
Construct a `GValueConstruct` with valid value for the “@origin@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructEmblemOrigin :: (IsEmblem o) => Gio.Enums.EmblemOrigin -> IO (GValueConstruct o)
constructEmblemOrigin val = B.Properties.constructObjectPropertyEnum "origin" val
#if ENABLE_OVERLOADING
data EmblemOriginPropertyInfo
instance AttrInfo EmblemOriginPropertyInfo where
type AttrAllowedOps EmblemOriginPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint EmblemOriginPropertyInfo = (~) Gio.Enums.EmblemOrigin
type AttrBaseTypeConstraint EmblemOriginPropertyInfo = IsEmblem
type AttrGetType EmblemOriginPropertyInfo = Gio.Enums.EmblemOrigin
type AttrLabel EmblemOriginPropertyInfo = "origin"
type AttrOrigin EmblemOriginPropertyInfo = Emblem
attrGet _ = getEmblemOrigin
attrSet _ = undefined
attrConstruct _ = constructEmblemOrigin
attrClear _ = undefined
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList Emblem
type instance O.AttributeList Emblem = EmblemAttributeList
type EmblemAttributeList = ('[ '("icon", EmblemIconPropertyInfo), '("origin", EmblemOriginPropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
emblemIcon :: AttrLabelProxy "icon"
emblemIcon = AttrLabelProxy
emblemOrigin :: AttrLabelProxy "origin"
emblemOrigin = AttrLabelProxy
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList Emblem = EmblemSignalList
type EmblemSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
#endif
-- method Emblem::new
-- method type : Constructor
-- Args : [Arg {argCName = "icon", argType = TInterface (Name {namespace = "Gio", name = "Icon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a GIcon containing the icon.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "Emblem"}))
-- throws : False
-- Skip return : False
foreign import ccall "g_emblem_new" g_emblem_new ::
Ptr Gio.Icon.Icon -> -- icon : TInterface (Name {namespace = "Gio", name = "Icon"})
IO (Ptr Emblem)
{- |
Creates a new emblem for /@icon@/.
/Since: 2.18/
-}
emblemNew ::
(B.CallStack.HasCallStack, MonadIO m, Gio.Icon.IsIcon a) =>
a
{- ^ /@icon@/: a GIcon containing the icon. -}
-> m Emblem
{- ^ __Returns:__ a new 'GI.Gio.Objects.Emblem.Emblem'. -}
emblemNew icon = liftIO $ do
icon' <- unsafeManagedPtrCastPtr icon
result <- g_emblem_new icon'
checkUnexpectedReturnNULL "emblemNew" result
result' <- (wrapObject Emblem) result
touchManagedPtr icon
return result'
#if ENABLE_OVERLOADING
#endif
-- method Emblem::new_with_origin
-- method type : Constructor
-- Args : [Arg {argCName = "icon", argType = TInterface (Name {namespace = "Gio", name = "Icon"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a GIcon containing the icon.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "origin", argType = TInterface (Name {namespace = "Gio", name = "EmblemOrigin"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a GEmblemOrigin enum defining the emblem's origin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "Emblem"}))
-- throws : False
-- Skip return : False
foreign import ccall "g_emblem_new_with_origin" g_emblem_new_with_origin ::
Ptr Gio.Icon.Icon -> -- icon : TInterface (Name {namespace = "Gio", name = "Icon"})
CUInt -> -- origin : TInterface (Name {namespace = "Gio", name = "EmblemOrigin"})
IO (Ptr Emblem)
{- |
Creates a new emblem for /@icon@/.
/Since: 2.18/
-}
emblemNewWithOrigin ::
(B.CallStack.HasCallStack, MonadIO m, Gio.Icon.IsIcon a) =>
a
{- ^ /@icon@/: a GIcon containing the icon. -}
-> Gio.Enums.EmblemOrigin
{- ^ /@origin@/: a GEmblemOrigin enum defining the emblem\'s origin -}
-> m Emblem
{- ^ __Returns:__ a new 'GI.Gio.Objects.Emblem.Emblem'. -}
emblemNewWithOrigin icon origin = liftIO $ do
icon' <- unsafeManagedPtrCastPtr icon
let origin' = (fromIntegral . fromEnum) origin
result <- g_emblem_new_with_origin icon' origin'
checkUnexpectedReturnNULL "emblemNewWithOrigin" result
result' <- (wrapObject Emblem) result
touchManagedPtr icon
return result'
#if ENABLE_OVERLOADING
#endif
-- method Emblem::get_icon
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "emblem", argType = TInterface (Name {namespace = "Gio", name = "Emblem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GEmblem from which the icon should be extracted.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "Icon"}))
-- throws : False
-- Skip return : False
foreign import ccall "g_emblem_get_icon" g_emblem_get_icon ::
Ptr Emblem -> -- emblem : TInterface (Name {namespace = "Gio", name = "Emblem"})
IO (Ptr Gio.Icon.Icon)
{- |
Gives back the icon from /@emblem@/.
/Since: 2.18/
-}
emblemGetIcon ::
(B.CallStack.HasCallStack, MonadIO m, IsEmblem a) =>
a
{- ^ /@emblem@/: a 'GI.Gio.Objects.Emblem.Emblem' from which the icon should be extracted. -}
-> m Gio.Icon.Icon
{- ^ __Returns:__ a 'GI.Gio.Interfaces.Icon.Icon'. The returned object belongs to
the emblem and should not be modified or freed. -}
emblemGetIcon emblem = liftIO $ do
emblem' <- unsafeManagedPtrCastPtr emblem
result <- g_emblem_get_icon emblem'
checkUnexpectedReturnNULL "emblemGetIcon" result
result' <- (newObject Gio.Icon.Icon) result
touchManagedPtr emblem
return result'
#if ENABLE_OVERLOADING
data EmblemGetIconMethodInfo
instance (signature ~ (m Gio.Icon.Icon), MonadIO m, IsEmblem a) => O.MethodInfo EmblemGetIconMethodInfo a signature where
overloadedMethod _ = emblemGetIcon
#endif
-- method Emblem::get_origin
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "emblem", argType = TInterface (Name {namespace = "Gio", name = "Emblem"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GEmblem", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "EmblemOrigin"}))
-- throws : False
-- Skip return : False
foreign import ccall "g_emblem_get_origin" g_emblem_get_origin ::
Ptr Emblem -> -- emblem : TInterface (Name {namespace = "Gio", name = "Emblem"})
IO CUInt
{- |
Gets the origin of the emblem.
/Since: 2.18/
-}
emblemGetOrigin ::
(B.CallStack.HasCallStack, MonadIO m, IsEmblem a) =>
a
{- ^ /@emblem@/: a 'GI.Gio.Objects.Emblem.Emblem' -}
-> m Gio.Enums.EmblemOrigin
{- ^ __Returns:__ the origin of the emblem -}
emblemGetOrigin emblem = liftIO $ do
emblem' <- unsafeManagedPtrCastPtr emblem
result <- g_emblem_get_origin emblem'
let result' = (toEnum . fromIntegral) result
touchManagedPtr emblem
return result'
#if ENABLE_OVERLOADING
data EmblemGetOriginMethodInfo
instance (signature ~ (m Gio.Enums.EmblemOrigin), MonadIO m, IsEmblem a) => O.MethodInfo EmblemGetOriginMethodInfo a signature where
overloadedMethod _ = emblemGetOrigin
#endif