{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- t'GI.Gtk.Objects.GestureStylus.GestureStylus' is a t'GI.Gtk.Objects.Gesture.Gesture' implementation specific to stylus
-- input. The provided signals just provide the basic information

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

module GI.Gtk.Objects.GestureStylus
    ( 
#if defined(ENABLE_OVERLOADING)
    GestureStylusGetAxesMethodInfo          ,
#endif

-- * Exported types
    GestureStylus(..)                       ,
    IsGestureStylus                         ,
    toGestureStylus                         ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#if defined(ENABLE_OVERLOADING)
    ResolveGestureStylusMethod              ,
#endif


-- ** getAxis #method:getAxis#

#if defined(ENABLE_OVERLOADING)
    GestureStylusGetAxisMethodInfo          ,
#endif
    gestureStylusGetAxis                    ,


-- ** getDeviceTool #method:getDeviceTool#

#if defined(ENABLE_OVERLOADING)
    GestureStylusGetDeviceToolMethodInfo    ,
#endif
    gestureStylusGetDeviceTool              ,


-- ** new #method:new#

    gestureStylusNew                        ,




 -- * Signals
-- ** down #signal:down#

    C_GestureStylusDownCallback             ,
    GestureStylusDownCallback               ,
#if defined(ENABLE_OVERLOADING)
    GestureStylusDownSignalInfo             ,
#endif
    afterGestureStylusDown                  ,
    genClosure_GestureStylusDown            ,
    mk_GestureStylusDownCallback            ,
    noGestureStylusDownCallback             ,
    onGestureStylusDown                     ,
    wrap_GestureStylusDownCallback          ,


-- ** motion #signal:motion#

    C_GestureStylusMotionCallback           ,
    GestureStylusMotionCallback             ,
#if defined(ENABLE_OVERLOADING)
    GestureStylusMotionSignalInfo           ,
#endif
    afterGestureStylusMotion                ,
    genClosure_GestureStylusMotion          ,
    mk_GestureStylusMotionCallback          ,
    noGestureStylusMotionCallback           ,
    onGestureStylusMotion                   ,
    wrap_GestureStylusMotionCallback        ,


-- ** proximity #signal:proximity#

    C_GestureStylusProximityCallback        ,
    GestureStylusProximityCallback          ,
#if defined(ENABLE_OVERLOADING)
    GestureStylusProximitySignalInfo        ,
#endif
    afterGestureStylusProximity             ,
    genClosure_GestureStylusProximity       ,
    mk_GestureStylusProximityCallback       ,
    noGestureStylusProximityCallback        ,
    onGestureStylusProximity                ,
    wrap_GestureStylusProximityCallback     ,


-- ** up #signal:up#

    C_GestureStylusUpCallback               ,
    GestureStylusUpCallback                 ,
#if defined(ENABLE_OVERLOADING)
    GestureStylusUpSignalInfo               ,
#endif
    afterGestureStylusUp                    ,
    genClosure_GestureStylusUp              ,
    mk_GestureStylusUpCallback              ,
    noGestureStylusUpCallback               ,
    onGestureStylusUp                       ,
    wrap_GestureStylusUpCallback            ,




    ) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
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.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
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 qualified GI.Gdk.Enums as Gdk.Enums
import qualified GI.Gdk.Objects.DeviceTool as Gdk.DeviceTool
import {-# SOURCE #-} qualified GI.Gtk.Objects.EventController as Gtk.EventController
import {-# SOURCE #-} qualified GI.Gtk.Objects.Gesture as Gtk.Gesture
import {-# SOURCE #-} qualified GI.Gtk.Objects.GestureSingle as Gtk.GestureSingle
import {-# SOURCE #-} qualified GI.Gtk.Objects.Widget as Gtk.Widget

-- | Memory-managed wrapper type.
newtype GestureStylus = GestureStylus (SP.ManagedPtr GestureStylus)
    deriving (GestureStylus -> GestureStylus -> Bool
(GestureStylus -> GestureStylus -> Bool)
-> (GestureStylus -> GestureStylus -> Bool) -> Eq GestureStylus
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GestureStylus -> GestureStylus -> Bool
$c/= :: GestureStylus -> GestureStylus -> Bool
== :: GestureStylus -> GestureStylus -> Bool
$c== :: GestureStylus -> GestureStylus -> Bool
Eq)

instance SP.ManagedPtrNewtype GestureStylus where
    toManagedPtr :: GestureStylus -> ManagedPtr GestureStylus
toManagedPtr (GestureStylus ManagedPtr GestureStylus
p) = ManagedPtr GestureStylus
p

foreign import ccall "gtk_gesture_stylus_get_type"
    c_gtk_gesture_stylus_get_type :: IO B.Types.GType

instance B.Types.TypedObject GestureStylus where
    glibType :: IO GType
glibType = IO GType
c_gtk_gesture_stylus_get_type

instance B.Types.GObject GestureStylus

-- | Convert 'GestureStylus' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue GestureStylus where
    toGValue :: GestureStylus -> IO GValue
toGValue GestureStylus
o = do
        GType
gtype <- IO GType
c_gtk_gesture_stylus_get_type
        GestureStylus -> (Ptr GestureStylus -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr GestureStylus
o (GType
-> (GValue -> Ptr GestureStylus -> IO ())
-> Ptr GestureStylus
-> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr GestureStylus -> IO ()
forall a. GObject a => GValue -> Ptr a -> IO ()
B.GValue.set_object)
        
    fromGValue :: GValue -> IO GestureStylus
fromGValue GValue
gv = do
        Ptr GestureStylus
ptr <- GValue -> IO (Ptr GestureStylus)
forall b. GObject b => GValue -> IO (Ptr b)
B.GValue.get_object GValue
gv :: IO (Ptr GestureStylus)
        (ManagedPtr GestureStylus -> GestureStylus)
-> Ptr GestureStylus -> IO GestureStylus
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr GestureStylus -> GestureStylus
GestureStylus Ptr GestureStylus
ptr
        
    

-- | Type class for types which can be safely cast to `GestureStylus`, for instance with `toGestureStylus`.
class (SP.GObject o, O.IsDescendantOf GestureStylus o) => IsGestureStylus o
instance (SP.GObject o, O.IsDescendantOf GestureStylus o) => IsGestureStylus o

instance O.HasParentTypes GestureStylus
type instance O.ParentTypes GestureStylus = '[Gtk.GestureSingle.GestureSingle, Gtk.Gesture.Gesture, Gtk.EventController.EventController, GObject.Object.Object]

-- | Cast to `GestureStylus`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toGestureStylus :: (MonadIO m, IsGestureStylus o) => o -> m GestureStylus
toGestureStylus :: o -> m GestureStylus
toGestureStylus = IO GestureStylus -> m GestureStylus
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO GestureStylus -> m GestureStylus)
-> (o -> IO GestureStylus) -> o -> m GestureStylus
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr GestureStylus -> GestureStylus)
-> o -> IO GestureStylus
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
unsafeCastTo ManagedPtr GestureStylus -> GestureStylus
GestureStylus

#if defined(ENABLE_OVERLOADING)
type family ResolveGestureStylusMethod (t :: Symbol) (o :: *) :: * where
    ResolveGestureStylusMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveGestureStylusMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveGestureStylusMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveGestureStylusMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveGestureStylusMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveGestureStylusMethod "group" o = Gtk.Gesture.GestureGroupMethodInfo
    ResolveGestureStylusMethod "handleEvent" o = Gtk.EventController.EventControllerHandleEventMethodInfo
    ResolveGestureStylusMethod "handlesSequence" o = Gtk.Gesture.GestureHandlesSequenceMethodInfo
    ResolveGestureStylusMethod "isActive" o = Gtk.Gesture.GestureIsActiveMethodInfo
    ResolveGestureStylusMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveGestureStylusMethod "isGroupedWith" o = Gtk.Gesture.GestureIsGroupedWithMethodInfo
    ResolveGestureStylusMethod "isRecognized" o = Gtk.Gesture.GestureIsRecognizedMethodInfo
    ResolveGestureStylusMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveGestureStylusMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveGestureStylusMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveGestureStylusMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveGestureStylusMethod "reset" o = Gtk.EventController.EventControllerResetMethodInfo
    ResolveGestureStylusMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveGestureStylusMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveGestureStylusMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveGestureStylusMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveGestureStylusMethod "ungroup" o = Gtk.Gesture.GestureUngroupMethodInfo
    ResolveGestureStylusMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveGestureStylusMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveGestureStylusMethod "getAxes" o = GestureStylusGetAxesMethodInfo
    ResolveGestureStylusMethod "getAxis" o = GestureStylusGetAxisMethodInfo
    ResolveGestureStylusMethod "getBoundingBox" o = Gtk.Gesture.GestureGetBoundingBoxMethodInfo
    ResolveGestureStylusMethod "getBoundingBoxCenter" o = Gtk.Gesture.GestureGetBoundingBoxCenterMethodInfo
    ResolveGestureStylusMethod "getButton" o = Gtk.GestureSingle.GestureSingleGetButtonMethodInfo
    ResolveGestureStylusMethod "getCurrentButton" o = Gtk.GestureSingle.GestureSingleGetCurrentButtonMethodInfo
    ResolveGestureStylusMethod "getCurrentSequence" o = Gtk.GestureSingle.GestureSingleGetCurrentSequenceMethodInfo
    ResolveGestureStylusMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveGestureStylusMethod "getDevice" o = Gtk.Gesture.GestureGetDeviceMethodInfo
    ResolveGestureStylusMethod "getDeviceTool" o = GestureStylusGetDeviceToolMethodInfo
    ResolveGestureStylusMethod "getExclusive" o = Gtk.GestureSingle.GestureSingleGetExclusiveMethodInfo
    ResolveGestureStylusMethod "getGroup" o = Gtk.Gesture.GestureGetGroupMethodInfo
    ResolveGestureStylusMethod "getLastEvent" o = Gtk.Gesture.GestureGetLastEventMethodInfo
    ResolveGestureStylusMethod "getLastUpdatedSequence" o = Gtk.Gesture.GestureGetLastUpdatedSequenceMethodInfo
    ResolveGestureStylusMethod "getPoint" o = Gtk.Gesture.GestureGetPointMethodInfo
    ResolveGestureStylusMethod "getPropagationPhase" o = Gtk.EventController.EventControllerGetPropagationPhaseMethodInfo
    ResolveGestureStylusMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveGestureStylusMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveGestureStylusMethod "getSequenceState" o = Gtk.Gesture.GestureGetSequenceStateMethodInfo
    ResolveGestureStylusMethod "getSequences" o = Gtk.Gesture.GestureGetSequencesMethodInfo
    ResolveGestureStylusMethod "getTouchOnly" o = Gtk.GestureSingle.GestureSingleGetTouchOnlyMethodInfo
    ResolveGestureStylusMethod "getWidget" o = Gtk.EventController.EventControllerGetWidgetMethodInfo
    ResolveGestureStylusMethod "getWindow" o = Gtk.Gesture.GestureGetWindowMethodInfo
    ResolveGestureStylusMethod "setButton" o = Gtk.GestureSingle.GestureSingleSetButtonMethodInfo
    ResolveGestureStylusMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveGestureStylusMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveGestureStylusMethod "setExclusive" o = Gtk.GestureSingle.GestureSingleSetExclusiveMethodInfo
    ResolveGestureStylusMethod "setPropagationPhase" o = Gtk.EventController.EventControllerSetPropagationPhaseMethodInfo
    ResolveGestureStylusMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveGestureStylusMethod "setSequenceState" o = Gtk.Gesture.GestureSetSequenceStateMethodInfo
    ResolveGestureStylusMethod "setState" o = Gtk.Gesture.GestureSetStateMethodInfo
    ResolveGestureStylusMethod "setTouchOnly" o = Gtk.GestureSingle.GestureSingleSetTouchOnlyMethodInfo
    ResolveGestureStylusMethod "setWindow" o = Gtk.Gesture.GestureSetWindowMethodInfo
    ResolveGestureStylusMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveGestureStylusMethod t GestureStylus, O.MethodInfo info GestureStylus p) => OL.IsLabel t (GestureStylus -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#endif

-- signal GestureStylus::down
-- | /No description available in the introspection data./
type GestureStylusDownCallback =
    Double
    -> Double
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `GestureStylusDownCallback`@.
noGestureStylusDownCallback :: Maybe GestureStylusDownCallback
noGestureStylusDownCallback :: Maybe GestureStylusDownCallback
noGestureStylusDownCallback = Maybe GestureStylusDownCallback
forall a. Maybe a
Nothing

-- | Type for the callback on the (unwrapped) C side.
type C_GestureStylusDownCallback =
    Ptr () ->                               -- object
    CDouble ->
    CDouble ->
    Ptr () ->                               -- user_data
    IO ()

-- | Generate a function pointer callable from C code, from a `C_GestureStylusDownCallback`.
foreign import ccall "wrapper"
    mk_GestureStylusDownCallback :: C_GestureStylusDownCallback -> IO (FunPtr C_GestureStylusDownCallback)

-- | Wrap the callback into a `GClosure`.
genClosure_GestureStylusDown :: MonadIO m => GestureStylusDownCallback -> m (GClosure C_GestureStylusDownCallback)
genClosure_GestureStylusDown :: GestureStylusDownCallback
-> m (GClosure C_GestureStylusDownCallback)
genClosure_GestureStylusDown GestureStylusDownCallback
cb = IO (GClosure C_GestureStylusDownCallback)
-> m (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (GClosure C_GestureStylusDownCallback)
 -> m (GClosure C_GestureStylusDownCallback))
-> IO (GClosure C_GestureStylusDownCallback)
-> m (GClosure C_GestureStylusDownCallback)
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusDownCallback GestureStylusDownCallback
cb
    C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusDownCallback C_GestureStylusDownCallback
cb' IO (FunPtr C_GestureStylusDownCallback)
-> (FunPtr C_GestureStylusDownCallback
    -> IO (GClosure C_GestureStylusDownCallback))
-> IO (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= FunPtr C_GestureStylusDownCallback
-> IO (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
B.GClosure.newGClosure


-- | Wrap a `GestureStylusDownCallback` into a `C_GestureStylusDownCallback`.
wrap_GestureStylusDownCallback ::
    GestureStylusDownCallback ->
    C_GestureStylusDownCallback
wrap_GestureStylusDownCallback :: GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusDownCallback GestureStylusDownCallback
_cb Ptr ()
_ CDouble
object CDouble
p0 Ptr ()
_ = do
    let object' :: Double
object' = CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
object
    let p0' :: Double
p0' = CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
p0
    GestureStylusDownCallback
_cb  Double
object' Double
p0'


-- | Connect a signal handler for the [down](#signal:down) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' gestureStylus #down callback
-- @
-- 
-- 
onGestureStylusDown :: (IsGestureStylus a, MonadIO m) => a -> GestureStylusDownCallback -> m SignalHandlerId
onGestureStylusDown :: a -> GestureStylusDownCallback -> m SignalHandlerId
onGestureStylusDown a
obj GestureStylusDownCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusDownCallback GestureStylusDownCallback
cb
    FunPtr C_GestureStylusDownCallback
cb'' <- C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusDownCallback C_GestureStylusDownCallback
cb'
    a
-> Text
-> FunPtr C_GestureStylusDownCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"down" FunPtr C_GestureStylusDownCallback
cb'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [down](#signal:down) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' gestureStylus #down callback
-- @
-- 
-- 
afterGestureStylusDown :: (IsGestureStylus a, MonadIO m) => a -> GestureStylusDownCallback -> m SignalHandlerId
afterGestureStylusDown :: a -> GestureStylusDownCallback -> m SignalHandlerId
afterGestureStylusDown a
obj GestureStylusDownCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusDownCallback GestureStylusDownCallback
cb
    FunPtr C_GestureStylusDownCallback
cb'' <- C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusDownCallback C_GestureStylusDownCallback
cb'
    a
-> Text
-> FunPtr C_GestureStylusDownCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"down" FunPtr C_GestureStylusDownCallback
cb'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data GestureStylusDownSignalInfo
instance SignalInfo GestureStylusDownSignalInfo where
    type HaskellCallbackType GestureStylusDownSignalInfo = GestureStylusDownCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_GestureStylusDownCallback cb
        cb'' <- mk_GestureStylusDownCallback cb'
        connectSignalFunPtr obj "down" cb'' connectMode detail

#endif

-- signal GestureStylus::motion
-- | /No description available in the introspection data./
type GestureStylusMotionCallback =
    Double
    -> Double
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `GestureStylusMotionCallback`@.
noGestureStylusMotionCallback :: Maybe GestureStylusMotionCallback
noGestureStylusMotionCallback :: Maybe GestureStylusDownCallback
noGestureStylusMotionCallback = Maybe GestureStylusDownCallback
forall a. Maybe a
Nothing

-- | Type for the callback on the (unwrapped) C side.
type C_GestureStylusMotionCallback =
    Ptr () ->                               -- object
    CDouble ->
    CDouble ->
    Ptr () ->                               -- user_data
    IO ()

-- | Generate a function pointer callable from C code, from a `C_GestureStylusMotionCallback`.
foreign import ccall "wrapper"
    mk_GestureStylusMotionCallback :: C_GestureStylusMotionCallback -> IO (FunPtr C_GestureStylusMotionCallback)

-- | Wrap the callback into a `GClosure`.
genClosure_GestureStylusMotion :: MonadIO m => GestureStylusMotionCallback -> m (GClosure C_GestureStylusMotionCallback)
genClosure_GestureStylusMotion :: GestureStylusDownCallback
-> m (GClosure C_GestureStylusDownCallback)
genClosure_GestureStylusMotion GestureStylusDownCallback
cb = IO (GClosure C_GestureStylusDownCallback)
-> m (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (GClosure C_GestureStylusDownCallback)
 -> m (GClosure C_GestureStylusDownCallback))
-> IO (GClosure C_GestureStylusDownCallback)
-> m (GClosure C_GestureStylusDownCallback)
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusMotionCallback GestureStylusDownCallback
cb
    C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusMotionCallback C_GestureStylusDownCallback
cb' IO (FunPtr C_GestureStylusDownCallback)
-> (FunPtr C_GestureStylusDownCallback
    -> IO (GClosure C_GestureStylusDownCallback))
-> IO (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= FunPtr C_GestureStylusDownCallback
-> IO (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
B.GClosure.newGClosure


-- | Wrap a `GestureStylusMotionCallback` into a `C_GestureStylusMotionCallback`.
wrap_GestureStylusMotionCallback ::
    GestureStylusMotionCallback ->
    C_GestureStylusMotionCallback
wrap_GestureStylusMotionCallback :: GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusMotionCallback GestureStylusDownCallback
_cb Ptr ()
_ CDouble
object CDouble
p0 Ptr ()
_ = do
    let object' :: Double
object' = CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
object
    let p0' :: Double
p0' = CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
p0
    GestureStylusDownCallback
_cb  Double
object' Double
p0'


-- | Connect a signal handler for the [motion](#signal:motion) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' gestureStylus #motion callback
-- @
-- 
-- 
onGestureStylusMotion :: (IsGestureStylus a, MonadIO m) => a -> GestureStylusMotionCallback -> m SignalHandlerId
onGestureStylusMotion :: a -> GestureStylusDownCallback -> m SignalHandlerId
onGestureStylusMotion a
obj GestureStylusDownCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusMotionCallback GestureStylusDownCallback
cb
    FunPtr C_GestureStylusDownCallback
cb'' <- C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusMotionCallback C_GestureStylusDownCallback
cb'
    a
-> Text
-> FunPtr C_GestureStylusDownCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"motion" FunPtr C_GestureStylusDownCallback
cb'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [motion](#signal:motion) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' gestureStylus #motion callback
-- @
-- 
-- 
afterGestureStylusMotion :: (IsGestureStylus a, MonadIO m) => a -> GestureStylusMotionCallback -> m SignalHandlerId
afterGestureStylusMotion :: a -> GestureStylusDownCallback -> m SignalHandlerId
afterGestureStylusMotion a
obj GestureStylusDownCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusMotionCallback GestureStylusDownCallback
cb
    FunPtr C_GestureStylusDownCallback
cb'' <- C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusMotionCallback C_GestureStylusDownCallback
cb'
    a
-> Text
-> FunPtr C_GestureStylusDownCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"motion" FunPtr C_GestureStylusDownCallback
cb'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data GestureStylusMotionSignalInfo
instance SignalInfo GestureStylusMotionSignalInfo where
    type HaskellCallbackType GestureStylusMotionSignalInfo = GestureStylusMotionCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_GestureStylusMotionCallback cb
        cb'' <- mk_GestureStylusMotionCallback cb'
        connectSignalFunPtr obj "motion" cb'' connectMode detail

#endif

-- signal GestureStylus::proximity
-- | /No description available in the introspection data./
type GestureStylusProximityCallback =
    Double
    -> Double
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `GestureStylusProximityCallback`@.
noGestureStylusProximityCallback :: Maybe GestureStylusProximityCallback
noGestureStylusProximityCallback :: Maybe GestureStylusDownCallback
noGestureStylusProximityCallback = Maybe GestureStylusDownCallback
forall a. Maybe a
Nothing

-- | Type for the callback on the (unwrapped) C side.
type C_GestureStylusProximityCallback =
    Ptr () ->                               -- object
    CDouble ->
    CDouble ->
    Ptr () ->                               -- user_data
    IO ()

-- | Generate a function pointer callable from C code, from a `C_GestureStylusProximityCallback`.
foreign import ccall "wrapper"
    mk_GestureStylusProximityCallback :: C_GestureStylusProximityCallback -> IO (FunPtr C_GestureStylusProximityCallback)

-- | Wrap the callback into a `GClosure`.
genClosure_GestureStylusProximity :: MonadIO m => GestureStylusProximityCallback -> m (GClosure C_GestureStylusProximityCallback)
genClosure_GestureStylusProximity :: GestureStylusDownCallback
-> m (GClosure C_GestureStylusDownCallback)
genClosure_GestureStylusProximity GestureStylusDownCallback
cb = IO (GClosure C_GestureStylusDownCallback)
-> m (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (GClosure C_GestureStylusDownCallback)
 -> m (GClosure C_GestureStylusDownCallback))
-> IO (GClosure C_GestureStylusDownCallback)
-> m (GClosure C_GestureStylusDownCallback)
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusProximityCallback GestureStylusDownCallback
cb
    C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusProximityCallback C_GestureStylusDownCallback
cb' IO (FunPtr C_GestureStylusDownCallback)
-> (FunPtr C_GestureStylusDownCallback
    -> IO (GClosure C_GestureStylusDownCallback))
-> IO (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= FunPtr C_GestureStylusDownCallback
-> IO (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
B.GClosure.newGClosure


-- | Wrap a `GestureStylusProximityCallback` into a `C_GestureStylusProximityCallback`.
wrap_GestureStylusProximityCallback ::
    GestureStylusProximityCallback ->
    C_GestureStylusProximityCallback
wrap_GestureStylusProximityCallback :: GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusProximityCallback GestureStylusDownCallback
_cb Ptr ()
_ CDouble
object CDouble
p0 Ptr ()
_ = do
    let object' :: Double
object' = CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
object
    let p0' :: Double
p0' = CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
p0
    GestureStylusDownCallback
_cb  Double
object' Double
p0'


-- | Connect a signal handler for the [proximity](#signal:proximity) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' gestureStylus #proximity callback
-- @
-- 
-- 
onGestureStylusProximity :: (IsGestureStylus a, MonadIO m) => a -> GestureStylusProximityCallback -> m SignalHandlerId
onGestureStylusProximity :: a -> GestureStylusDownCallback -> m SignalHandlerId
onGestureStylusProximity a
obj GestureStylusDownCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusProximityCallback GestureStylusDownCallback
cb
    FunPtr C_GestureStylusDownCallback
cb'' <- C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusProximityCallback C_GestureStylusDownCallback
cb'
    a
-> Text
-> FunPtr C_GestureStylusDownCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"proximity" FunPtr C_GestureStylusDownCallback
cb'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [proximity](#signal:proximity) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' gestureStylus #proximity callback
-- @
-- 
-- 
afterGestureStylusProximity :: (IsGestureStylus a, MonadIO m) => a -> GestureStylusProximityCallback -> m SignalHandlerId
afterGestureStylusProximity :: a -> GestureStylusDownCallback -> m SignalHandlerId
afterGestureStylusProximity a
obj GestureStylusDownCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusProximityCallback GestureStylusDownCallback
cb
    FunPtr C_GestureStylusDownCallback
cb'' <- C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusProximityCallback C_GestureStylusDownCallback
cb'
    a
-> Text
-> FunPtr C_GestureStylusDownCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"proximity" FunPtr C_GestureStylusDownCallback
cb'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data GestureStylusProximitySignalInfo
instance SignalInfo GestureStylusProximitySignalInfo where
    type HaskellCallbackType GestureStylusProximitySignalInfo = GestureStylusProximityCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_GestureStylusProximityCallback cb
        cb'' <- mk_GestureStylusProximityCallback cb'
        connectSignalFunPtr obj "proximity" cb'' connectMode detail

#endif

-- signal GestureStylus::up
-- | /No description available in the introspection data./
type GestureStylusUpCallback =
    Double
    -> Double
    -> IO ()

-- | A convenience synonym for @`Nothing` :: `Maybe` `GestureStylusUpCallback`@.
noGestureStylusUpCallback :: Maybe GestureStylusUpCallback
noGestureStylusUpCallback :: Maybe GestureStylusDownCallback
noGestureStylusUpCallback = Maybe GestureStylusDownCallback
forall a. Maybe a
Nothing

-- | Type for the callback on the (unwrapped) C side.
type C_GestureStylusUpCallback =
    Ptr () ->                               -- object
    CDouble ->
    CDouble ->
    Ptr () ->                               -- user_data
    IO ()

-- | Generate a function pointer callable from C code, from a `C_GestureStylusUpCallback`.
foreign import ccall "wrapper"
    mk_GestureStylusUpCallback :: C_GestureStylusUpCallback -> IO (FunPtr C_GestureStylusUpCallback)

-- | Wrap the callback into a `GClosure`.
genClosure_GestureStylusUp :: MonadIO m => GestureStylusUpCallback -> m (GClosure C_GestureStylusUpCallback)
genClosure_GestureStylusUp :: GestureStylusDownCallback
-> m (GClosure C_GestureStylusDownCallback)
genClosure_GestureStylusUp GestureStylusDownCallback
cb = IO (GClosure C_GestureStylusDownCallback)
-> m (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (GClosure C_GestureStylusDownCallback)
 -> m (GClosure C_GestureStylusDownCallback))
-> IO (GClosure C_GestureStylusDownCallback)
-> m (GClosure C_GestureStylusDownCallback)
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusUpCallback GestureStylusDownCallback
cb
    C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusUpCallback C_GestureStylusDownCallback
cb' IO (FunPtr C_GestureStylusDownCallback)
-> (FunPtr C_GestureStylusDownCallback
    -> IO (GClosure C_GestureStylusDownCallback))
-> IO (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= FunPtr C_GestureStylusDownCallback
-> IO (GClosure C_GestureStylusDownCallback)
forall (m :: * -> *) a. MonadIO m => FunPtr a -> m (GClosure a)
B.GClosure.newGClosure


-- | Wrap a `GestureStylusUpCallback` into a `C_GestureStylusUpCallback`.
wrap_GestureStylusUpCallback ::
    GestureStylusUpCallback ->
    C_GestureStylusUpCallback
wrap_GestureStylusUpCallback :: GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusUpCallback GestureStylusDownCallback
_cb Ptr ()
_ CDouble
object CDouble
p0 Ptr ()
_ = do
    let object' :: Double
object' = CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
object
    let p0' :: Double
p0' = CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
p0
    GestureStylusDownCallback
_cb  Double
object' Double
p0'


-- | Connect a signal handler for the [up](#signal:up) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' gestureStylus #up callback
-- @
-- 
-- 
onGestureStylusUp :: (IsGestureStylus a, MonadIO m) => a -> GestureStylusUpCallback -> m SignalHandlerId
onGestureStylusUp :: a -> GestureStylusDownCallback -> m SignalHandlerId
onGestureStylusUp a
obj GestureStylusDownCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusUpCallback GestureStylusDownCallback
cb
    FunPtr C_GestureStylusDownCallback
cb'' <- C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusUpCallback C_GestureStylusDownCallback
cb'
    a
-> Text
-> FunPtr C_GestureStylusDownCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"up" FunPtr C_GestureStylusDownCallback
cb'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [up](#signal:up) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' gestureStylus #up callback
-- @
-- 
-- 
afterGestureStylusUp :: (IsGestureStylus a, MonadIO m) => a -> GestureStylusUpCallback -> m SignalHandlerId
afterGestureStylusUp :: a -> GestureStylusDownCallback -> m SignalHandlerId
afterGestureStylusUp a
obj GestureStylusDownCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let cb' :: C_GestureStylusDownCallback
cb' = GestureStylusDownCallback -> C_GestureStylusDownCallback
wrap_GestureStylusUpCallback GestureStylusDownCallback
cb
    FunPtr C_GestureStylusDownCallback
cb'' <- C_GestureStylusDownCallback
-> IO (FunPtr C_GestureStylusDownCallback)
mk_GestureStylusUpCallback C_GestureStylusDownCallback
cb'
    a
-> Text
-> FunPtr C_GestureStylusDownCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"up" FunPtr C_GestureStylusDownCallback
cb'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data GestureStylusUpSignalInfo
instance SignalInfo GestureStylusUpSignalInfo where
    type HaskellCallbackType GestureStylusUpSignalInfo = GestureStylusUpCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_GestureStylusUpCallback cb
        cb'' <- mk_GestureStylusUpCallback cb'
        connectSignalFunPtr obj "up" cb'' connectMode detail

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList GestureStylus
type instance O.AttributeList GestureStylus = GestureStylusAttributeList
type GestureStylusAttributeList = ('[ '("button", Gtk.GestureSingle.GestureSingleButtonPropertyInfo), '("exclusive", Gtk.GestureSingle.GestureSingleExclusivePropertyInfo), '("nPoints", Gtk.Gesture.GestureNPointsPropertyInfo), '("propagationPhase", Gtk.EventController.EventControllerPropagationPhasePropertyInfo), '("touchOnly", Gtk.GestureSingle.GestureSingleTouchOnlyPropertyInfo), '("widget", Gtk.EventController.EventControllerWidgetPropertyInfo), '("window", Gtk.Gesture.GestureWindowPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList GestureStylus = GestureStylusSignalList
type GestureStylusSignalList = ('[ '("begin", Gtk.Gesture.GestureBeginSignalInfo), '("cancel", Gtk.Gesture.GestureCancelSignalInfo), '("down", GestureStylusDownSignalInfo), '("end", Gtk.Gesture.GestureEndSignalInfo), '("motion", GestureStylusMotionSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("proximity", GestureStylusProximitySignalInfo), '("sequenceStateChanged", Gtk.Gesture.GestureSequenceStateChangedSignalInfo), '("up", GestureStylusUpSignalInfo), '("update", Gtk.Gesture.GestureUpdateSignalInfo)] :: [(Symbol, *)])

#endif

-- method GestureStylus::new
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "widget"
--           , argType = TInterface Name { namespace = "Gtk" , name = "Widget" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkWidget" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "Gtk" , name = "GestureStylus" })
-- throws : False
-- Skip return : False

foreign import ccall "gtk_gesture_stylus_new" gtk_gesture_stylus_new :: 
    Ptr Gtk.Widget.Widget ->                -- widget : TInterface (Name {namespace = "Gtk", name = "Widget"})
    IO (Ptr GestureStylus)

-- | Creates a new t'GI.Gtk.Objects.GestureStylus.GestureStylus'.
-- 
-- /Since: 3.24/
gestureStylusNew ::
    (B.CallStack.HasCallStack, MonadIO m, Gtk.Widget.IsWidget a) =>
    a
    -- ^ /@widget@/: a t'GI.Gtk.Objects.Widget.Widget'
    -> m GestureStylus
    -- ^ __Returns:__ a newly created stylus gesture
gestureStylusNew :: a -> m GestureStylus
gestureStylusNew a
widget = IO GestureStylus -> m GestureStylus
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO GestureStylus -> m GestureStylus)
-> IO GestureStylus -> m GestureStylus
forall a b. (a -> b) -> a -> b
$ do
    Ptr Widget
widget' <- a -> IO (Ptr Widget)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
widget
    Ptr GestureStylus
result <- Ptr Widget -> IO (Ptr GestureStylus)
gtk_gesture_stylus_new Ptr Widget
widget'
    Text -> Ptr GestureStylus -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"gestureStylusNew" Ptr GestureStylus
result
    GestureStylus
result' <- ((ManagedPtr GestureStylus -> GestureStylus)
-> Ptr GestureStylus -> IO GestureStylus
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
wrapObject ManagedPtr GestureStylus -> GestureStylus
GestureStylus) Ptr GestureStylus
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
widget
    GestureStylus -> IO GestureStylus
forall (m :: * -> *) a. Monad m => a -> m a
return GestureStylus
result'

#if defined(ENABLE_OVERLOADING)
#endif

-- XXX Could not generate method GestureStylus::get_axes
{-  Bad introspection data: `TCArray False (-1) (-1) (TBasicType TDouble)' is an array type, but contains no length information,
    so it cannot be unpacked.
-}
#if defined(ENABLE_OVERLOADING)
-- XXX: Dummy instance, since code generation failed.
-- Please file a bug at http://github.com/haskell-gi/haskell-gi.
data GestureStylusGetAxesMethodInfo
instance (p ~ (), o ~ O.UnsupportedMethodError "getAxes" GestureStylus) => O.MethodInfo GestureStylusGetAxesMethodInfo o p where
    overloadedMethod = undefined
#endif

-- method GestureStylus::get_axis
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "gesture"
--           , argType =
--               TInterface Name { namespace = "Gtk" , name = "GestureStylus" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkGestureStylus"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "axis"
--           , argType =
--               TInterface Name { namespace = "Gdk" , name = "AxisUse" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "requested device axis"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "value"
--           , argType = TBasicType TDouble
--           , direction = DirectionOut
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "return location for the axis value"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferEverything
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_gesture_stylus_get_axis" gtk_gesture_stylus_get_axis :: 
    Ptr GestureStylus ->                    -- gesture : TInterface (Name {namespace = "Gtk", name = "GestureStylus"})
    CUInt ->                                -- axis : TInterface (Name {namespace = "Gdk", name = "AxisUse"})
    Ptr CDouble ->                          -- value : TBasicType TDouble
    IO CInt

-- | Returns the current value for the requested /@axis@/. This function
-- must be called from either the t'GI.Gtk.Objects.GestureStylus.GestureStylus':@/down/@,
-- t'GI.Gtk.Objects.GestureStylus.GestureStylus':@/motion/@, t'GI.Gtk.Objects.GestureStylus.GestureStylus':@/up/@ or t'GI.Gtk.Objects.GestureStylus.GestureStylus':@/proximity/@
-- signals.
-- 
-- /Since: 3.24/
gestureStylusGetAxis ::
    (B.CallStack.HasCallStack, MonadIO m, IsGestureStylus a) =>
    a
    -- ^ /@gesture@/: a t'GI.Gtk.Objects.GestureStylus.GestureStylus'
    -> Gdk.Enums.AxisUse
    -- ^ /@axis@/: requested device axis
    -> m ((Bool, Double))
    -- ^ __Returns:__ @/TRUE/@ if there is a current value for the axis
gestureStylusGetAxis :: a -> AxisUse -> m (Bool, Double)
gestureStylusGetAxis a
gesture AxisUse
axis = IO (Bool, Double) -> m (Bool, Double)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Bool, Double) -> m (Bool, Double))
-> IO (Bool, Double) -> m (Bool, Double)
forall a b. (a -> b) -> a -> b
$ do
    Ptr GestureStylus
gesture' <- a -> IO (Ptr GestureStylus)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
gesture
    let axis' :: CUInt
axis' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (AxisUse -> Int) -> AxisUse -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AxisUse -> Int
forall a. Enum a => a -> Int
fromEnum) AxisUse
axis
    Ptr CDouble
value <- IO (Ptr CDouble)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr CDouble)
    CInt
result <- Ptr GestureStylus -> CUInt -> Ptr CDouble -> IO CInt
gtk_gesture_stylus_get_axis Ptr GestureStylus
gesture' CUInt
axis' Ptr CDouble
value
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    CDouble
value' <- Ptr CDouble -> IO CDouble
forall a. Storable a => Ptr a -> IO a
peek Ptr CDouble
value
    let value'' :: Double
value'' = CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
value'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
gesture
    Ptr CDouble -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CDouble
value
    (Bool, Double) -> IO (Bool, Double)
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool
result', Double
value'')

#if defined(ENABLE_OVERLOADING)
data GestureStylusGetAxisMethodInfo
instance (signature ~ (Gdk.Enums.AxisUse -> m ((Bool, Double))), MonadIO m, IsGestureStylus a) => O.MethodInfo GestureStylusGetAxisMethodInfo a signature where
    overloadedMethod = gestureStylusGetAxis

#endif

-- method GestureStylus::get_device_tool
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "gesture"
--           , argType =
--               TInterface Name { namespace = "Gtk" , name = "GestureStylus" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GtkGestureStylus"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gdk" , name = "DeviceTool" })
-- throws : False
-- Skip return : False

foreign import ccall "gtk_gesture_stylus_get_device_tool" gtk_gesture_stylus_get_device_tool :: 
    Ptr GestureStylus ->                    -- gesture : TInterface (Name {namespace = "Gtk", name = "GestureStylus"})
    IO (Ptr Gdk.DeviceTool.DeviceTool)

-- | Returns the t'GI.Gdk.Objects.DeviceTool.DeviceTool' currently driving input through this gesture.
-- This function must be called from either the [down]("GI.Gtk.Objects.GestureStylus#g:signal:down"),
-- [motion]("GI.Gtk.Objects.GestureStylus#g:signal:motion"), [up]("GI.Gtk.Objects.GestureStylus#g:signal:up") or [proximity]("GI.Gtk.Objects.GestureStylus#g:signal:proximity")
-- signal handlers.
-- 
-- /Since: 3.24/
gestureStylusGetDeviceTool ::
    (B.CallStack.HasCallStack, MonadIO m, IsGestureStylus a) =>
    a
    -- ^ /@gesture@/: a t'GI.Gtk.Objects.GestureStylus.GestureStylus'
    -> m (Maybe Gdk.DeviceTool.DeviceTool)
    -- ^ __Returns:__ The current stylus tool
gestureStylusGetDeviceTool :: a -> m (Maybe DeviceTool)
gestureStylusGetDeviceTool a
gesture = IO (Maybe DeviceTool) -> m (Maybe DeviceTool)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe DeviceTool) -> m (Maybe DeviceTool))
-> IO (Maybe DeviceTool) -> m (Maybe DeviceTool)
forall a b. (a -> b) -> a -> b
$ do
    Ptr GestureStylus
gesture' <- a -> IO (Ptr GestureStylus)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
gesture
    Ptr DeviceTool
result <- Ptr GestureStylus -> IO (Ptr DeviceTool)
gtk_gesture_stylus_get_device_tool Ptr GestureStylus
gesture'
    Maybe DeviceTool
maybeResult <- Ptr DeviceTool
-> (Ptr DeviceTool -> IO DeviceTool) -> IO (Maybe DeviceTool)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr DeviceTool
result ((Ptr DeviceTool -> IO DeviceTool) -> IO (Maybe DeviceTool))
-> (Ptr DeviceTool -> IO DeviceTool) -> IO (Maybe DeviceTool)
forall a b. (a -> b) -> a -> b
$ \Ptr DeviceTool
result' -> do
        DeviceTool
result'' <- ((ManagedPtr DeviceTool -> DeviceTool)
-> Ptr DeviceTool -> IO DeviceTool
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr DeviceTool -> DeviceTool
Gdk.DeviceTool.DeviceTool) Ptr DeviceTool
result'
        DeviceTool -> IO DeviceTool
forall (m :: * -> *) a. Monad m => a -> m a
return DeviceTool
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
gesture
    Maybe DeviceTool -> IO (Maybe DeviceTool)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe DeviceTool
maybeResult

#if defined(ENABLE_OVERLOADING)
data GestureStylusGetDeviceToolMethodInfo
instance (signature ~ (m (Maybe Gdk.DeviceTool.DeviceTool)), MonadIO m, IsGestureStylus a) => O.MethodInfo GestureStylusGetDeviceToolMethodInfo a signature where
    overloadedMethod = gestureStylusGetDeviceTool

#endif