{- | 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 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 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