#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Gtk.Interfaces.StyleProvider
(
StyleProvider(..) ,
noStyleProvider ,
IsStyleProvider ,
#if ENABLE_OVERLOADING
StyleProviderGetIconFactoryMethodInfo ,
#endif
styleProviderGetIconFactory ,
#if ENABLE_OVERLOADING
StyleProviderGetStyleMethodInfo ,
#endif
styleProviderGetStyle ,
#if ENABLE_OVERLOADING
StyleProviderGetStylePropertyMethodInfo ,
#endif
styleProviderGetStyleProperty ,
) 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.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.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import {-# SOURCE #-} qualified GI.Gtk.Flags as Gtk.Flags
import {-# SOURCE #-} qualified GI.Gtk.Objects.IconFactory as Gtk.IconFactory
import {-# SOURCE #-} qualified GI.Gtk.Objects.StyleProperties as Gtk.StyleProperties
import {-# SOURCE #-} qualified GI.Gtk.Structs.WidgetPath as Gtk.WidgetPath
newtype StyleProvider = StyleProvider (ManagedPtr StyleProvider)
noStyleProvider :: Maybe StyleProvider
noStyleProvider = Nothing
#if ENABLE_OVERLOADING
type instance O.SignalList StyleProvider = StyleProviderSignalList
type StyleProviderSignalList = ('[ ] :: [(Symbol, *)])
#endif
class ManagedPtrNewtype a => IsStyleProvider a
instance IsStyleProvider StyleProvider
instance WrappedPtr StyleProvider where
wrappedPtrCalloc = return nullPtr
wrappedPtrCopy = return
wrappedPtrFree = Nothing
#if ENABLE_OVERLOADING
type family ResolveStyleProviderMethod (t :: Symbol) (o :: *) :: * where
ResolveStyleProviderMethod "getIconFactory" o = StyleProviderGetIconFactoryMethodInfo
ResolveStyleProviderMethod "getStyle" o = StyleProviderGetStyleMethodInfo
ResolveStyleProviderMethod "getStyleProperty" o = StyleProviderGetStylePropertyMethodInfo
ResolveStyleProviderMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveStyleProviderMethod t StyleProvider, O.MethodInfo info StyleProvider p) => O.IsLabelProxy t (StyleProvider -> p) where
fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveStyleProviderMethod t StyleProvider, O.MethodInfo info StyleProvider p) => O.IsLabel t (StyleProvider -> 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
#endif
foreign import ccall "gtk_style_provider_get_icon_factory" gtk_style_provider_get_icon_factory ::
Ptr StyleProvider ->
Ptr Gtk.WidgetPath.WidgetPath ->
IO (Ptr Gtk.IconFactory.IconFactory)
{-# DEPRECATED styleProviderGetIconFactory ["(Since version 3.8)","Will always return 'Nothing' for all GTK-provided style providers."] #-}
styleProviderGetIconFactory ::
(B.CallStack.HasCallStack, MonadIO m, IsStyleProvider a) =>
a
-> Gtk.WidgetPath.WidgetPath
-> m (Maybe Gtk.IconFactory.IconFactory)
styleProviderGetIconFactory provider path = liftIO $ do
provider' <- unsafeManagedPtrCastPtr provider
path' <- unsafeManagedPtrGetPtr path
result <- gtk_style_provider_get_icon_factory provider' path'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (newObject Gtk.IconFactory.IconFactory) result'
return result''
touchManagedPtr provider
touchManagedPtr path
return maybeResult
#if ENABLE_OVERLOADING
data StyleProviderGetIconFactoryMethodInfo
instance (signature ~ (Gtk.WidgetPath.WidgetPath -> m (Maybe Gtk.IconFactory.IconFactory)), MonadIO m, IsStyleProvider a) => O.MethodInfo StyleProviderGetIconFactoryMethodInfo a signature where
overloadedMethod _ = styleProviderGetIconFactory
#endif
foreign import ccall "gtk_style_provider_get_style" gtk_style_provider_get_style ::
Ptr StyleProvider ->
Ptr Gtk.WidgetPath.WidgetPath ->
IO (Ptr Gtk.StyleProperties.StyleProperties)
{-# DEPRECATED styleProviderGetStyle ["(Since version 3.8)","Will always return 'Nothing' for all GTK-provided style providers"," as the interface cannot correctly work the way CSS is specified."] #-}
styleProviderGetStyle ::
(B.CallStack.HasCallStack, MonadIO m, IsStyleProvider a) =>
a
-> Gtk.WidgetPath.WidgetPath
-> m (Maybe Gtk.StyleProperties.StyleProperties)
styleProviderGetStyle provider path = liftIO $ do
provider' <- unsafeManagedPtrCastPtr provider
path' <- unsafeManagedPtrGetPtr path
result <- gtk_style_provider_get_style provider' path'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (wrapObject Gtk.StyleProperties.StyleProperties) result'
return result''
touchManagedPtr provider
touchManagedPtr path
return maybeResult
#if ENABLE_OVERLOADING
data StyleProviderGetStyleMethodInfo
instance (signature ~ (Gtk.WidgetPath.WidgetPath -> m (Maybe Gtk.StyleProperties.StyleProperties)), MonadIO m, IsStyleProvider a) => O.MethodInfo StyleProviderGetStyleMethodInfo a signature where
overloadedMethod _ = styleProviderGetStyle
#endif
foreign import ccall "gtk_style_provider_get_style_property" gtk_style_provider_get_style_property ::
Ptr StyleProvider ->
Ptr Gtk.WidgetPath.WidgetPath ->
CUInt ->
Ptr GParamSpec ->
Ptr GValue ->
IO CInt
styleProviderGetStyleProperty ::
(B.CallStack.HasCallStack, MonadIO m, IsStyleProvider a) =>
a
-> Gtk.WidgetPath.WidgetPath
-> [Gtk.Flags.StateFlags]
-> GParamSpec
-> m ((Bool, GValue))
styleProviderGetStyleProperty provider path state pspec = liftIO $ do
provider' <- unsafeManagedPtrCastPtr provider
path' <- unsafeManagedPtrGetPtr path
let state' = gflagsToWord state
pspec' <- unsafeManagedPtrGetPtr pspec
value <- callocBoxedBytes 24 :: IO (Ptr GValue)
result <- gtk_style_provider_get_style_property provider' path' state' pspec' value
let result' = (/= 0) result
value' <- (wrapBoxed GValue) value
touchManagedPtr provider
touchManagedPtr path
touchManagedPtr pspec
return (result', value')
#if ENABLE_OVERLOADING
data StyleProviderGetStylePropertyMethodInfo
instance (signature ~ (Gtk.WidgetPath.WidgetPath -> [Gtk.Flags.StateFlags] -> GParamSpec -> m ((Bool, GValue))), MonadIO m, IsStyleProvider a) => O.MethodInfo StyleProviderGetStylePropertyMethodInfo a signature where
overloadedMethod _ = styleProviderGetStyleProperty
#endif