packages feed

gi-gtk-0.3.18.14: GI/Gtk/Objects/GestureDrag.hs


{- |
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.GestureDrag
    ( 

-- * Exported types
    GestureDrag(..)                         ,
    GestureDragK                            ,
    toGestureDrag                           ,
    noGestureDrag                           ,


 -- * Methods
-- ** gestureDragGetOffset
    GestureDragGetOffsetMethodInfo          ,
    gestureDragGetOffset                    ,


-- ** gestureDragGetStartPoint
    GestureDragGetStartPointMethodInfo      ,
    gestureDragGetStartPoint                ,


-- ** gestureDragNew
    gestureDragNew                          ,




 -- * Signals
-- ** DragBegin
    GestureDragDragBeginCallback            ,
    GestureDragDragBeginCallbackC           ,
    GestureDragDragBeginSignalInfo          ,
    afterGestureDragDragBegin               ,
    gestureDragDragBeginCallbackWrapper     ,
    gestureDragDragBeginClosure             ,
    mkGestureDragDragBeginCallback          ,
    noGestureDragDragBeginCallback          ,
    onGestureDragDragBegin                  ,


-- ** DragEnd
    GestureDragDragEndCallback              ,
    GestureDragDragEndCallbackC             ,
    GestureDragDragEndSignalInfo            ,
    afterGestureDragDragEnd                 ,
    gestureDragDragEndCallbackWrapper       ,
    gestureDragDragEndClosure               ,
    mkGestureDragDragEndCallback            ,
    noGestureDragDragEndCallback            ,
    onGestureDragDragEnd                    ,


-- ** DragUpdate
    GestureDragDragUpdateCallback           ,
    GestureDragDragUpdateCallbackC          ,
    GestureDragDragUpdateSignalInfo         ,
    afterGestureDragDragUpdate              ,
    gestureDragDragUpdateCallbackWrapper    ,
    gestureDragDragUpdateClosure            ,
    mkGestureDragDragUpdateCallback         ,
    noGestureDragDragUpdateCallback         ,
    onGestureDragDragUpdate                 ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gtk.Types
import GI.Gtk.Callbacks
import qualified GI.GObject as GObject

newtype GestureDrag = GestureDrag (ForeignPtr GestureDrag)
foreign import ccall "gtk_gesture_drag_get_type"
    c_gtk_gesture_drag_get_type :: IO GType

type instance ParentTypes GestureDrag = GestureDragParentTypes
type GestureDragParentTypes = '[GestureSingle, Gesture, EventController, GObject.Object]

instance GObject GestureDrag where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gtk_gesture_drag_get_type
    

class GObject o => GestureDragK o
instance (GObject o, IsDescendantOf GestureDrag o) => GestureDragK o

toGestureDrag :: GestureDragK o => o -> IO GestureDrag
toGestureDrag = unsafeCastTo GestureDrag

noGestureDrag :: Maybe GestureDrag
noGestureDrag = Nothing

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

instance (info ~ ResolveGestureDragMethod t GestureDrag, MethodInfo info GestureDrag p) => IsLabelProxy t (GestureDrag -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

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

-- signal GestureDrag::drag-begin
type GestureDragDragBeginCallback =
    Double ->
    Double ->
    IO ()

noGestureDragDragBeginCallback :: Maybe GestureDragDragBeginCallback
noGestureDragDragBeginCallback = Nothing

type GestureDragDragBeginCallbackC =
    Ptr () ->                               -- object
    CDouble ->
    CDouble ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkGestureDragDragBeginCallback :: GestureDragDragBeginCallbackC -> IO (FunPtr GestureDragDragBeginCallbackC)

gestureDragDragBeginClosure :: GestureDragDragBeginCallback -> IO Closure
gestureDragDragBeginClosure cb = newCClosure =<< mkGestureDragDragBeginCallback wrapped
    where wrapped = gestureDragDragBeginCallbackWrapper cb

gestureDragDragBeginCallbackWrapper ::
    GestureDragDragBeginCallback ->
    Ptr () ->
    CDouble ->
    CDouble ->
    Ptr () ->
    IO ()
gestureDragDragBeginCallbackWrapper _cb _ startX startY _ = do
    let startX' = realToFrac startX
    let startY' = realToFrac startY
    _cb  startX' startY'

onGestureDragDragBegin :: (GObject a, MonadIO m) => a -> GestureDragDragBeginCallback -> m SignalHandlerId
onGestureDragDragBegin obj cb = liftIO $ connectGestureDragDragBegin obj cb SignalConnectBefore
afterGestureDragDragBegin :: (GObject a, MonadIO m) => a -> GestureDragDragBeginCallback -> m SignalHandlerId
afterGestureDragDragBegin obj cb = connectGestureDragDragBegin obj cb SignalConnectAfter

connectGestureDragDragBegin :: (GObject a, MonadIO m) =>
                               a -> GestureDragDragBeginCallback -> SignalConnectMode -> m SignalHandlerId
connectGestureDragDragBegin obj cb after = liftIO $ do
    cb' <- mkGestureDragDragBeginCallback (gestureDragDragBeginCallbackWrapper cb)
    connectSignalFunPtr obj "drag-begin" cb' after

-- signal GestureDrag::drag-end
type GestureDragDragEndCallback =
    Double ->
    Double ->
    IO ()

noGestureDragDragEndCallback :: Maybe GestureDragDragEndCallback
noGestureDragDragEndCallback = Nothing

type GestureDragDragEndCallbackC =
    Ptr () ->                               -- object
    CDouble ->
    CDouble ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkGestureDragDragEndCallback :: GestureDragDragEndCallbackC -> IO (FunPtr GestureDragDragEndCallbackC)

gestureDragDragEndClosure :: GestureDragDragEndCallback -> IO Closure
gestureDragDragEndClosure cb = newCClosure =<< mkGestureDragDragEndCallback wrapped
    where wrapped = gestureDragDragEndCallbackWrapper cb

gestureDragDragEndCallbackWrapper ::
    GestureDragDragEndCallback ->
    Ptr () ->
    CDouble ->
    CDouble ->
    Ptr () ->
    IO ()
gestureDragDragEndCallbackWrapper _cb _ offsetX offsetY _ = do
    let offsetX' = realToFrac offsetX
    let offsetY' = realToFrac offsetY
    _cb  offsetX' offsetY'

onGestureDragDragEnd :: (GObject a, MonadIO m) => a -> GestureDragDragEndCallback -> m SignalHandlerId
onGestureDragDragEnd obj cb = liftIO $ connectGestureDragDragEnd obj cb SignalConnectBefore
afterGestureDragDragEnd :: (GObject a, MonadIO m) => a -> GestureDragDragEndCallback -> m SignalHandlerId
afterGestureDragDragEnd obj cb = connectGestureDragDragEnd obj cb SignalConnectAfter

connectGestureDragDragEnd :: (GObject a, MonadIO m) =>
                             a -> GestureDragDragEndCallback -> SignalConnectMode -> m SignalHandlerId
connectGestureDragDragEnd obj cb after = liftIO $ do
    cb' <- mkGestureDragDragEndCallback (gestureDragDragEndCallbackWrapper cb)
    connectSignalFunPtr obj "drag-end" cb' after

-- signal GestureDrag::drag-update
type GestureDragDragUpdateCallback =
    Double ->
    Double ->
    IO ()

noGestureDragDragUpdateCallback :: Maybe GestureDragDragUpdateCallback
noGestureDragDragUpdateCallback = Nothing

type GestureDragDragUpdateCallbackC =
    Ptr () ->                               -- object
    CDouble ->
    CDouble ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkGestureDragDragUpdateCallback :: GestureDragDragUpdateCallbackC -> IO (FunPtr GestureDragDragUpdateCallbackC)

gestureDragDragUpdateClosure :: GestureDragDragUpdateCallback -> IO Closure
gestureDragDragUpdateClosure cb = newCClosure =<< mkGestureDragDragUpdateCallback wrapped
    where wrapped = gestureDragDragUpdateCallbackWrapper cb

gestureDragDragUpdateCallbackWrapper ::
    GestureDragDragUpdateCallback ->
    Ptr () ->
    CDouble ->
    CDouble ->
    Ptr () ->
    IO ()
gestureDragDragUpdateCallbackWrapper _cb _ offsetX offsetY _ = do
    let offsetX' = realToFrac offsetX
    let offsetY' = realToFrac offsetY
    _cb  offsetX' offsetY'

onGestureDragDragUpdate :: (GObject a, MonadIO m) => a -> GestureDragDragUpdateCallback -> m SignalHandlerId
onGestureDragDragUpdate obj cb = liftIO $ connectGestureDragDragUpdate obj cb SignalConnectBefore
afterGestureDragDragUpdate :: (GObject a, MonadIO m) => a -> GestureDragDragUpdateCallback -> m SignalHandlerId
afterGestureDragDragUpdate obj cb = connectGestureDragDragUpdate obj cb SignalConnectAfter

connectGestureDragDragUpdate :: (GObject a, MonadIO m) =>
                                a -> GestureDragDragUpdateCallback -> SignalConnectMode -> m SignalHandlerId
connectGestureDragDragUpdate obj cb after = liftIO $ do
    cb' <- mkGestureDragDragUpdateCallback (gestureDragDragUpdateCallbackWrapper cb)
    connectSignalFunPtr obj "drag-update" cb' after

type instance AttributeList GestureDrag = GestureDragAttributeList
type GestureDragAttributeList = ('[ '("button", GestureSingleButtonPropertyInfo), '("exclusive", GestureSingleExclusivePropertyInfo), '("nPoints", GestureNPointsPropertyInfo), '("propagationPhase", EventControllerPropagationPhasePropertyInfo), '("touchOnly", GestureSingleTouchOnlyPropertyInfo), '("widget", EventControllerWidgetPropertyInfo), '("window", GestureWindowPropertyInfo)] :: [(Symbol, *)])

data GestureDragDragBeginSignalInfo
instance SignalInfo GestureDragDragBeginSignalInfo where
    type HaskellCallbackType GestureDragDragBeginSignalInfo = GestureDragDragBeginCallback
    connectSignal _ = connectGestureDragDragBegin

data GestureDragDragEndSignalInfo
instance SignalInfo GestureDragDragEndSignalInfo where
    type HaskellCallbackType GestureDragDragEndSignalInfo = GestureDragDragEndCallback
    connectSignal _ = connectGestureDragDragEnd

data GestureDragDragUpdateSignalInfo
instance SignalInfo GestureDragDragUpdateSignalInfo where
    type HaskellCallbackType GestureDragDragUpdateSignalInfo = GestureDragDragUpdateCallback
    connectSignal _ = connectGestureDragDragUpdate

type instance SignalList GestureDrag = GestureDragSignalList
type GestureDragSignalList = ('[ '("begin", GestureBeginSignalInfo), '("cancel", GestureCancelSignalInfo), '("dragBegin", GestureDragDragBeginSignalInfo), '("dragEnd", GestureDragDragEndSignalInfo), '("dragUpdate", GestureDragDragUpdateSignalInfo), '("end", GestureEndSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("sequenceStateChanged", GestureSequenceStateChangedSignalInfo), '("update", GestureUpdateSignalInfo)] :: [(Symbol, *)])

-- method GestureDrag::new
-- method type : Constructor
-- Args : [Arg {argCName = "widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface "Gtk" "GestureDrag")
-- throws : False
-- Skip return : False

foreign import ccall "gtk_gesture_drag_new" gtk_gesture_drag_new :: 
    Ptr Widget ->                           -- widget : TInterface "Gtk" "Widget"
    IO (Ptr GestureDrag)


gestureDragNew ::
    (MonadIO m, WidgetK a) =>
    a                                       -- widget
    -> m GestureDrag                        -- result
gestureDragNew widget = liftIO $ do
    let widget' = unsafeManagedPtrCastPtr widget
    result <- gtk_gesture_drag_new widget'
    checkUnexpectedReturnNULL "gtk_gesture_drag_new" result
    result' <- (wrapObject GestureDrag) result
    touchManagedPtr widget
    return result'

-- method GestureDrag::get_offset
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "GestureDrag", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = True, 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_drag_get_offset" gtk_gesture_drag_get_offset :: 
    Ptr GestureDrag ->                      -- _obj : TInterface "Gtk" "GestureDrag"
    Ptr CDouble ->                          -- x : TBasicType TDouble
    Ptr CDouble ->                          -- y : TBasicType TDouble
    IO CInt


gestureDragGetOffset ::
    (MonadIO m, GestureDragK a) =>
    a                                       -- _obj
    -> m (Bool,Double,Double)               -- result
gestureDragGetOffset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    x <- allocMem :: IO (Ptr CDouble)
    y <- allocMem :: IO (Ptr CDouble)
    result <- gtk_gesture_drag_get_offset _obj' x y
    let result' = (/= 0) result
    x' <- peek x
    let x'' = realToFrac x'
    y' <- peek y
    let y'' = realToFrac y'
    touchManagedPtr _obj
    freeMem x
    freeMem y
    return (result', x'', y'')

data GestureDragGetOffsetMethodInfo
instance (signature ~ (m (Bool,Double,Double)), MonadIO m, GestureDragK a) => MethodInfo GestureDragGetOffsetMethodInfo a signature where
    overloadedMethod _ = gestureDragGetOffset

-- method GestureDrag::get_start_point
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "GestureDrag", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "y", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = True, 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_drag_get_start_point" gtk_gesture_drag_get_start_point :: 
    Ptr GestureDrag ->                      -- _obj : TInterface "Gtk" "GestureDrag"
    Ptr CDouble ->                          -- x : TBasicType TDouble
    Ptr CDouble ->                          -- y : TBasicType TDouble
    IO CInt


gestureDragGetStartPoint ::
    (MonadIO m, GestureDragK a) =>
    a                                       -- _obj
    -> m (Bool,Double,Double)               -- result
gestureDragGetStartPoint _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    x <- allocMem :: IO (Ptr CDouble)
    y <- allocMem :: IO (Ptr CDouble)
    result <- gtk_gesture_drag_get_start_point _obj' x y
    let result' = (/= 0) result
    x' <- peek x
    let x'' = realToFrac x'
    y' <- peek y
    let y'' = realToFrac y'
    touchManagedPtr _obj
    freeMem x
    freeMem y
    return (result', x'', y'')

data GestureDragGetStartPointMethodInfo
instance (signature ~ (m (Bool,Double,Double)), MonadIO m, GestureDragK a) => MethodInfo GestureDragGetStartPointMethodInfo a signature where
    overloadedMethod _ = gestureDragGetStartPoint