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

module GI.Gtk.Objects.RangeAccessible
    ( 

-- * Exported types
    RangeAccessible(..)                     ,
    IsRangeAccessible                       ,
    toRangeAccessible                       ,
    noRangeAccessible                       ,


    ) 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.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.Component as Atk.Component
import qualified GI.Atk.Interfaces.Value as Atk.Value
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.WidgetAccessible as Gtk.WidgetAccessible

newtype RangeAccessible = RangeAccessible (ManagedPtr RangeAccessible)
foreign import ccall "gtk_range_accessible_get_type"
    c_gtk_range_accessible_get_type :: IO GType

instance GObject RangeAccessible where
    gobjectType _ = c_gtk_range_accessible_get_type
    

class GObject o => IsRangeAccessible o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError RangeAccessible a) =>
    IsRangeAccessible a
#endif
instance IsRangeAccessible RangeAccessible
instance Gtk.WidgetAccessible.IsWidgetAccessible RangeAccessible
instance Gtk.Accessible.IsAccessible RangeAccessible
instance Atk.Object.IsObject RangeAccessible
instance GObject.Object.IsObject RangeAccessible
instance Atk.Component.IsComponent RangeAccessible
instance Atk.Value.IsValue RangeAccessible

toRangeAccessible :: IsRangeAccessible o => o -> IO RangeAccessible
toRangeAccessible = unsafeCastTo RangeAccessible

noRangeAccessible :: Maybe RangeAccessible
noRangeAccessible = Nothing

type family ResolveRangeAccessibleMethod (t :: Symbol) (o :: *) :: * where
    ResolveRangeAccessibleMethod "addRelationship" o = Atk.Object.ObjectAddRelationshipMethodInfo
    ResolveRangeAccessibleMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveRangeAccessibleMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveRangeAccessibleMethod "connectWidgetDestroyed" o = Gtk.Accessible.AccessibleConnectWidgetDestroyedMethodInfo
    ResolveRangeAccessibleMethod "contains" o = Atk.Component.ComponentContainsMethodInfo
    ResolveRangeAccessibleMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveRangeAccessibleMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveRangeAccessibleMethod "grabFocus" o = Atk.Component.ComponentGrabFocusMethodInfo
    ResolveRangeAccessibleMethod "initialize" o = Atk.Object.ObjectInitializeMethodInfo
    ResolveRangeAccessibleMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveRangeAccessibleMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveRangeAccessibleMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveRangeAccessibleMethod "notifyStateChange" o = Atk.Object.ObjectNotifyStateChangeMethodInfo
    ResolveRangeAccessibleMethod "peekParent" o = Atk.Object.ObjectPeekParentMethodInfo
    ResolveRangeAccessibleMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveRangeAccessibleMethod "refAccessibleAtPoint" o = Atk.Component.ComponentRefAccessibleAtPointMethodInfo
    ResolveRangeAccessibleMethod "refAccessibleChild" o = Atk.Object.ObjectRefAccessibleChildMethodInfo
    ResolveRangeAccessibleMethod "refRelationSet" o = Atk.Object.ObjectRefRelationSetMethodInfo
    ResolveRangeAccessibleMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveRangeAccessibleMethod "refStateSet" o = Atk.Object.ObjectRefStateSetMethodInfo
    ResolveRangeAccessibleMethod "removeFocusHandler" o = Atk.Component.ComponentRemoveFocusHandlerMethodInfo
    ResolveRangeAccessibleMethod "removePropertyChangeHandler" o = Atk.Object.ObjectRemovePropertyChangeHandlerMethodInfo
    ResolveRangeAccessibleMethod "removeRelationship" o = Atk.Object.ObjectRemoveRelationshipMethodInfo
    ResolveRangeAccessibleMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveRangeAccessibleMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveRangeAccessibleMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveRangeAccessibleMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveRangeAccessibleMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveRangeAccessibleMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveRangeAccessibleMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveRangeAccessibleMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveRangeAccessibleMethod "getAlpha" o = Atk.Component.ComponentGetAlphaMethodInfo
    ResolveRangeAccessibleMethod "getAttributes" o = Atk.Object.ObjectGetAttributesMethodInfo
    ResolveRangeAccessibleMethod "getCurrentValue" o = Atk.Value.ValueGetCurrentValueMethodInfo
    ResolveRangeAccessibleMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveRangeAccessibleMethod "getDescription" o = Atk.Object.ObjectGetDescriptionMethodInfo
    ResolveRangeAccessibleMethod "getExtents" o = Atk.Component.ComponentGetExtentsMethodInfo
    ResolveRangeAccessibleMethod "getIncrement" o = Atk.Value.ValueGetIncrementMethodInfo
    ResolveRangeAccessibleMethod "getIndexInParent" o = Atk.Object.ObjectGetIndexInParentMethodInfo
    ResolveRangeAccessibleMethod "getLayer" o = Atk.Object.ObjectGetLayerMethodInfo
    ResolveRangeAccessibleMethod "getMaximumValue" o = Atk.Value.ValueGetMaximumValueMethodInfo
    ResolveRangeAccessibleMethod "getMdiZorder" o = Atk.Object.ObjectGetMdiZorderMethodInfo
    ResolveRangeAccessibleMethod "getMinimumIncrement" o = Atk.Value.ValueGetMinimumIncrementMethodInfo
    ResolveRangeAccessibleMethod "getMinimumValue" o = Atk.Value.ValueGetMinimumValueMethodInfo
    ResolveRangeAccessibleMethod "getNAccessibleChildren" o = Atk.Object.ObjectGetNAccessibleChildrenMethodInfo
    ResolveRangeAccessibleMethod "getName" o = Atk.Object.ObjectGetNameMethodInfo
    ResolveRangeAccessibleMethod "getObjectLocale" o = Atk.Object.ObjectGetObjectLocaleMethodInfo
    ResolveRangeAccessibleMethod "getParent" o = Atk.Object.ObjectGetParentMethodInfo
    ResolveRangeAccessibleMethod "getPosition" o = Atk.Component.ComponentGetPositionMethodInfo
    ResolveRangeAccessibleMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveRangeAccessibleMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveRangeAccessibleMethod "getRange" o = Atk.Value.ValueGetRangeMethodInfo
    ResolveRangeAccessibleMethod "getRole" o = Atk.Object.ObjectGetRoleMethodInfo
    ResolveRangeAccessibleMethod "getSize" o = Atk.Component.ComponentGetSizeMethodInfo
    ResolveRangeAccessibleMethod "getSubRanges" o = Atk.Value.ValueGetSubRangesMethodInfo
    ResolveRangeAccessibleMethod "getValueAndText" o = Atk.Value.ValueGetValueAndTextMethodInfo
    ResolveRangeAccessibleMethod "getWidget" o = Gtk.Accessible.AccessibleGetWidgetMethodInfo
    ResolveRangeAccessibleMethod "setCurrentValue" o = Atk.Value.ValueSetCurrentValueMethodInfo
    ResolveRangeAccessibleMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveRangeAccessibleMethod "setDescription" o = Atk.Object.ObjectSetDescriptionMethodInfo
    ResolveRangeAccessibleMethod "setExtents" o = Atk.Component.ComponentSetExtentsMethodInfo
    ResolveRangeAccessibleMethod "setName" o = Atk.Object.ObjectSetNameMethodInfo
    ResolveRangeAccessibleMethod "setParent" o = Atk.Object.ObjectSetParentMethodInfo
    ResolveRangeAccessibleMethod "setPosition" o = Atk.Component.ComponentSetPositionMethodInfo
    ResolveRangeAccessibleMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveRangeAccessibleMethod "setRole" o = Atk.Object.ObjectSetRoleMethodInfo
    ResolveRangeAccessibleMethod "setSize" o = Atk.Component.ComponentSetSizeMethodInfo
    ResolveRangeAccessibleMethod "setValue" o = Atk.Value.ValueSetValueMethodInfo
    ResolveRangeAccessibleMethod "setWidget" o = Gtk.Accessible.AccessibleSetWidgetMethodInfo
    ResolveRangeAccessibleMethod l o = O.MethodResolutionFailed l o

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

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveRangeAccessibleMethod t RangeAccessible, O.MethodInfo info RangeAccessible p) => O.IsLabel t (RangeAccessible -> p) where
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

instance O.HasAttributeList RangeAccessible
type instance O.AttributeList RangeAccessible = RangeAccessibleAttributeList
type RangeAccessibleAttributeList = ('[ '("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, *)])

type instance O.SignalList RangeAccessible = RangeAccessibleSignalList
type RangeAccessibleSignalList = ('[ '("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), '("valueChanged", Atk.Value.ValueValueChangedSignalInfo), '("visibleDataChanged", Atk.Object.ObjectVisibleDataChangedSignalInfo)] :: [(Symbol, *)])