{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

/No description available in the introspection data./
-}

#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))

module GI.Gtk.Objects.ExpanderAccessible
    (

-- * Exported types
    ExpanderAccessible(..)                  ,
    IsExpanderAccessible                    ,
    toExpanderAccessible                    ,
    noExpanderAccessible                    ,


    ) 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 qualified GI.Atk.Interfaces.Action as Atk.Action
import qualified GI.Atk.Interfaces.Component as Atk.Component
import qualified GI.Atk.Objects.Object as Atk.Object
import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gtk.Objects.Accessible as Gtk.Accessible
import {-# SOURCE #-} qualified GI.Gtk.Objects.ContainerAccessible as Gtk.ContainerAccessible
import {-# SOURCE #-} qualified GI.Gtk.Objects.WidgetAccessible as Gtk.WidgetAccessible

-- | Memory-managed wrapper type.
newtype ExpanderAccessible = ExpanderAccessible (ManagedPtr ExpanderAccessible)
foreign import ccall "gtk_expander_accessible_get_type"
    c_gtk_expander_accessible_get_type :: IO GType

instance GObject ExpanderAccessible where
    gobjectType _ = c_gtk_expander_accessible_get_type


-- | Type class for types which can be safely cast to `ExpanderAccessible`, for instance with `toExpanderAccessible`.
class GObject o => IsExpanderAccessible o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError ExpanderAccessible a) =>
    IsExpanderAccessible a
#endif
instance IsExpanderAccessible ExpanderAccessible
instance Gtk.ContainerAccessible.IsContainerAccessible ExpanderAccessible
instance Gtk.WidgetAccessible.IsWidgetAccessible ExpanderAccessible
instance Gtk.Accessible.IsAccessible ExpanderAccessible
instance Atk.Object.IsObject ExpanderAccessible
instance GObject.Object.IsObject ExpanderAccessible
instance Atk.Action.IsAction ExpanderAccessible
instance Atk.Component.IsComponent ExpanderAccessible

-- | Cast to `ExpanderAccessible`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toExpanderAccessible :: (MonadIO m, IsExpanderAccessible o) => o -> m ExpanderAccessible
toExpanderAccessible = liftIO . unsafeCastTo ExpanderAccessible

-- | A convenience alias for `Nothing` :: `Maybe` `ExpanderAccessible`.
noExpanderAccessible :: Maybe ExpanderAccessible
noExpanderAccessible = Nothing

#if ENABLE_OVERLOADING
type family ResolveExpanderAccessibleMethod (t :: Symbol) (o :: *) :: * where
    ResolveExpanderAccessibleMethod "addRelationship" o = Atk.Object.ObjectAddRelationshipMethodInfo
    ResolveExpanderAccessibleMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveExpanderAccessibleMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveExpanderAccessibleMethod "connectWidgetDestroyed" o = Gtk.Accessible.AccessibleConnectWidgetDestroyedMethodInfo
    ResolveExpanderAccessibleMethod "contains" o = Atk.Component.ComponentContainsMethodInfo
    ResolveExpanderAccessibleMethod "doAction" o = Atk.Action.ActionDoActionMethodInfo
    ResolveExpanderAccessibleMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveExpanderAccessibleMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveExpanderAccessibleMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveExpanderAccessibleMethod "grabFocus" o = Atk.Component.ComponentGrabFocusMethodInfo
    ResolveExpanderAccessibleMethod "initialize" o = Atk.Object.ObjectInitializeMethodInfo
    ResolveExpanderAccessibleMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveExpanderAccessibleMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveExpanderAccessibleMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveExpanderAccessibleMethod "notifyStateChange" o = Atk.Object.ObjectNotifyStateChangeMethodInfo
    ResolveExpanderAccessibleMethod "peekParent" o = Atk.Object.ObjectPeekParentMethodInfo
    ResolveExpanderAccessibleMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveExpanderAccessibleMethod "refAccessibleAtPoint" o = Atk.Component.ComponentRefAccessibleAtPointMethodInfo
    ResolveExpanderAccessibleMethod "refAccessibleChild" o = Atk.Object.ObjectRefAccessibleChildMethodInfo
    ResolveExpanderAccessibleMethod "refRelationSet" o = Atk.Object.ObjectRefRelationSetMethodInfo
    ResolveExpanderAccessibleMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveExpanderAccessibleMethod "refStateSet" o = Atk.Object.ObjectRefStateSetMethodInfo
    ResolveExpanderAccessibleMethod "removeFocusHandler" o = Atk.Component.ComponentRemoveFocusHandlerMethodInfo
    ResolveExpanderAccessibleMethod "removePropertyChangeHandler" o = Atk.Object.ObjectRemovePropertyChangeHandlerMethodInfo
    ResolveExpanderAccessibleMethod "removeRelationship" o = Atk.Object.ObjectRemoveRelationshipMethodInfo
    ResolveExpanderAccessibleMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveExpanderAccessibleMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveExpanderAccessibleMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveExpanderAccessibleMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveExpanderAccessibleMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveExpanderAccessibleMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveExpanderAccessibleMethod "getAlpha" o = Atk.Component.ComponentGetAlphaMethodInfo
    ResolveExpanderAccessibleMethod "getAttributes" o = Atk.Object.ObjectGetAttributesMethodInfo
    ResolveExpanderAccessibleMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveExpanderAccessibleMethod "getDescription" o = Atk.Object.ObjectGetDescriptionMethodInfo
    ResolveExpanderAccessibleMethod "getExtents" o = Atk.Component.ComponentGetExtentsMethodInfo
    ResolveExpanderAccessibleMethod "getIndexInParent" o = Atk.Object.ObjectGetIndexInParentMethodInfo
    ResolveExpanderAccessibleMethod "getKeybinding" o = Atk.Action.ActionGetKeybindingMethodInfo
    ResolveExpanderAccessibleMethod "getLayer" o = Atk.Object.ObjectGetLayerMethodInfo
    ResolveExpanderAccessibleMethod "getLocalizedName" o = Atk.Action.ActionGetLocalizedNameMethodInfo
    ResolveExpanderAccessibleMethod "getMdiZorder" o = Atk.Object.ObjectGetMdiZorderMethodInfo
    ResolveExpanderAccessibleMethod "getNAccessibleChildren" o = Atk.Object.ObjectGetNAccessibleChildrenMethodInfo
    ResolveExpanderAccessibleMethod "getNActions" o = Atk.Action.ActionGetNActionsMethodInfo
    ResolveExpanderAccessibleMethod "getName" o = Atk.Object.ObjectGetNameMethodInfo
    ResolveExpanderAccessibleMethod "getObjectLocale" o = Atk.Object.ObjectGetObjectLocaleMethodInfo
    ResolveExpanderAccessibleMethod "getParent" o = Atk.Object.ObjectGetParentMethodInfo
    ResolveExpanderAccessibleMethod "getPosition" o = Atk.Component.ComponentGetPositionMethodInfo
    ResolveExpanderAccessibleMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveExpanderAccessibleMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveExpanderAccessibleMethod "getRole" o = Atk.Object.ObjectGetRoleMethodInfo
    ResolveExpanderAccessibleMethod "getSize" o = Atk.Component.ComponentGetSizeMethodInfo
    ResolveExpanderAccessibleMethod "getWidget" o = Gtk.Accessible.AccessibleGetWidgetMethodInfo
    ResolveExpanderAccessibleMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveExpanderAccessibleMethod "setDescription" o = Atk.Object.ObjectSetDescriptionMethodInfo
    ResolveExpanderAccessibleMethod "setExtents" o = Atk.Component.ComponentSetExtentsMethodInfo
    ResolveExpanderAccessibleMethod "setName" o = Atk.Object.ObjectSetNameMethodInfo
    ResolveExpanderAccessibleMethod "setParent" o = Atk.Object.ObjectSetParentMethodInfo
    ResolveExpanderAccessibleMethod "setPosition" o = Atk.Component.ComponentSetPositionMethodInfo
    ResolveExpanderAccessibleMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveExpanderAccessibleMethod "setRole" o = Atk.Object.ObjectSetRoleMethodInfo
    ResolveExpanderAccessibleMethod "setSize" o = Atk.Component.ComponentSetSizeMethodInfo
    ResolveExpanderAccessibleMethod "setWidget" o = Gtk.Accessible.AccessibleSetWidgetMethodInfo
    ResolveExpanderAccessibleMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveExpanderAccessibleMethod t ExpanderAccessible, O.MethodInfo info ExpanderAccessible p) => O.IsLabelProxy t (ExpanderAccessible -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveExpanderAccessibleMethod t ExpanderAccessible, O.MethodInfo info ExpanderAccessible p) => O.IsLabel t (ExpanderAccessible -> 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

#if ENABLE_OVERLOADING
instance O.HasAttributeList ExpanderAccessible
type instance O.AttributeList ExpanderAccessible = ExpanderAccessibleAttributeList
type ExpanderAccessibleAttributeList = ('[ '("accessibleComponentLayer", Atk.Object.ObjectAccessibleComponentLayerPropertyInfo), '("accessibleComponentMdiZorder", Atk.Object.ObjectAccessibleComponentMdiZorderPropertyInfo), '("accessibleDescription", Atk.Object.ObjectAccessibleDescriptionPropertyInfo), '("accessibleHypertextNlinks", Atk.Object.ObjectAccessibleHypertextNlinksPropertyInfo), '("accessibleName", Atk.Object.ObjectAccessibleNamePropertyInfo), '("accessibleParent", Atk.Object.ObjectAccessibleParentPropertyInfo), '("accessibleRole", Atk.Object.ObjectAccessibleRolePropertyInfo), '("accessibleTableCaption", Atk.Object.ObjectAccessibleTableCaptionPropertyInfo), '("accessibleTableCaptionObject", Atk.Object.ObjectAccessibleTableCaptionObjectPropertyInfo), '("accessibleTableColumnDescription", Atk.Object.ObjectAccessibleTableColumnDescriptionPropertyInfo), '("accessibleTableColumnHeader", Atk.Object.ObjectAccessibleTableColumnHeaderPropertyInfo), '("accessibleTableRowDescription", Atk.Object.ObjectAccessibleTableRowDescriptionPropertyInfo), '("accessibleTableRowHeader", Atk.Object.ObjectAccessibleTableRowHeaderPropertyInfo), '("accessibleTableSummary", Atk.Object.ObjectAccessibleTableSummaryPropertyInfo), '("accessibleValue", Atk.Object.ObjectAccessibleValuePropertyInfo), '("widget", Gtk.Accessible.AccessibleWidgetPropertyInfo)] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
#endif

#if ENABLE_OVERLOADING
type instance O.SignalList ExpanderAccessible = ExpanderAccessibleSignalList
type ExpanderAccessibleSignalList = ('[ '("activeDescendantChanged", Atk.Object.ObjectActiveDescendantChangedSignalInfo), '("boundsChanged", Atk.Component.ComponentBoundsChangedSignalInfo), '("childrenChanged", Atk.Object.ObjectChildrenChangedSignalInfo), '("focusEvent", Atk.Object.ObjectFocusEventSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("propertyChange", Atk.Object.ObjectPropertyChangeSignalInfo), '("stateChange", Atk.Object.ObjectStateChangeSignalInfo), '("visibleDataChanged", Atk.Object.ObjectVisibleDataChangedSignalInfo)] :: [(Symbol, *)])

#endif