{- | 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.Interfaces.TreeDragDest ( -- * Exported types TreeDragDest(..) , noTreeDragDest , IsTreeDragDest , -- * Methods -- ** dragDataReceived #method:dragDataReceived# TreeDragDestDragDataReceivedMethodInfo , treeDragDestDragDataReceived , -- ** rowDropPossible #method:rowDropPossible# TreeDragDestRowDropPossibleMethodInfo , treeDragDestRowDropPossible , ) 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 {-# SOURCE #-} qualified GI.Gtk.Structs.SelectionData as Gtk.SelectionData import {-# SOURCE #-} qualified GI.Gtk.Structs.TreePath as Gtk.TreePath -- interface TreeDragDest newtype TreeDragDest = TreeDragDest (ManagedPtr TreeDragDest) noTreeDragDest :: Maybe TreeDragDest noTreeDragDest = Nothing type family ResolveTreeDragDestMethod (t :: Symbol) (o :: *) :: * where ResolveTreeDragDestMethod "dragDataReceived" o = TreeDragDestDragDataReceivedMethodInfo ResolveTreeDragDestMethod "rowDropPossible" o = TreeDragDestRowDropPossibleMethodInfo ResolveTreeDragDestMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveTreeDragDestMethod t TreeDragDest, O.MethodInfo info TreeDragDest p) => O.IsLabelProxy t (TreeDragDest -> p) where fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolveTreeDragDestMethod t TreeDragDest, O.MethodInfo info TreeDragDest p) => O.IsLabel t (TreeDragDest -> p) where fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif instance O.HasAttributeList TreeDragDest type instance O.AttributeList TreeDragDest = TreeDragDestAttributeList type TreeDragDestAttributeList = ('[ ] :: [(Symbol, *)]) type instance O.SignalList TreeDragDest = TreeDragDestSignalList type TreeDragDestSignalList = ('[ ] :: [(Symbol, *)]) class ManagedPtrNewtype a => IsTreeDragDest a instance IsTreeDragDest TreeDragDest -- XXX Wrapping a foreign struct/union with no known destructor or size, leak? instance WrappedPtr TreeDragDest where wrappedPtrCalloc = return nullPtr wrappedPtrCopy = return wrappedPtrFree = Nothing -- method TreeDragDest::drag_data_received -- method type : OrdinaryMethod -- Args : [Arg {argCName = "drag_dest", argType = TInterface (Name {namespace = "Gtk", name = "TreeDragDest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeDragDest", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "row to drop in front of", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection_data", argType = TInterface (Name {namespace = "Gtk", name = "SelectionData"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "data to drop", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gtk_tree_drag_dest_drag_data_received" gtk_tree_drag_dest_drag_data_received :: Ptr TreeDragDest -> -- drag_dest : TInterface (Name {namespace = "Gtk", name = "TreeDragDest"}) Ptr Gtk.TreePath.TreePath -> -- dest : TInterface (Name {namespace = "Gtk", name = "TreePath"}) Ptr Gtk.SelectionData.SelectionData -> -- selection_data : TInterface (Name {namespace = "Gtk", name = "SelectionData"}) IO CInt {- | Asks the 'GI.Gtk.Interfaces.TreeDragDest.TreeDragDest' to insert a row before the path /@dest@/, deriving the contents of the row from /@selectionData@/. If /@dest@/ is outside the tree so that inserting before it is impossible, 'False' will be returned. Also, 'False' may be returned if the new row is not created for some model-specific reason. Should robustly handle a /@dest@/ no longer found in the model! -} treeDragDestDragDataReceived :: (B.CallStack.HasCallStack, MonadIO m, IsTreeDragDest a) => a {- ^ /@dragDest@/: a 'GI.Gtk.Interfaces.TreeDragDest.TreeDragDest' -} -> Gtk.TreePath.TreePath {- ^ /@dest@/: row to drop in front of -} -> Gtk.SelectionData.SelectionData {- ^ /@selectionData@/: data to drop -} -> m Bool {- ^ __Returns:__ whether a new row was created before position /@dest@/ -} treeDragDestDragDataReceived dragDest dest selectionData = liftIO $ do dragDest' <- unsafeManagedPtrCastPtr dragDest dest' <- unsafeManagedPtrGetPtr dest selectionData' <- unsafeManagedPtrGetPtr selectionData result <- gtk_tree_drag_dest_drag_data_received dragDest' dest' selectionData' let result' = (/= 0) result touchManagedPtr dragDest touchManagedPtr dest touchManagedPtr selectionData return result' data TreeDragDestDragDataReceivedMethodInfo instance (signature ~ (Gtk.TreePath.TreePath -> Gtk.SelectionData.SelectionData -> m Bool), MonadIO m, IsTreeDragDest a) => O.MethodInfo TreeDragDestDragDataReceivedMethodInfo a signature where overloadedMethod _ = treeDragDestDragDataReceived -- method TreeDragDest::row_drop_possible -- method type : OrdinaryMethod -- Args : [Arg {argCName = "drag_dest", argType = TInterface (Name {namespace = "Gtk", name = "TreeDragDest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTreeDragDest", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest_path", argType = TInterface (Name {namespace = "Gtk", name = "TreePath"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "destination row", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "selection_data", argType = TInterface (Name {namespace = "Gtk", name = "SelectionData"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the data being dragged", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gtk_tree_drag_dest_row_drop_possible" gtk_tree_drag_dest_row_drop_possible :: Ptr TreeDragDest -> -- drag_dest : TInterface (Name {namespace = "Gtk", name = "TreeDragDest"}) Ptr Gtk.TreePath.TreePath -> -- dest_path : TInterface (Name {namespace = "Gtk", name = "TreePath"}) Ptr Gtk.SelectionData.SelectionData -> -- selection_data : TInterface (Name {namespace = "Gtk", name = "SelectionData"}) IO CInt {- | Determines whether a drop is possible before the given /@destPath@/, at the same depth as /@destPath@/. i.e., can we drop the data in /@selectionData@/ at that location. /@destPath@/ does not have to exist; the return value will almost certainly be 'False' if the parent of /@destPath@/ doesn’t exist, though. -} treeDragDestRowDropPossible :: (B.CallStack.HasCallStack, MonadIO m, IsTreeDragDest a) => a {- ^ /@dragDest@/: a 'GI.Gtk.Interfaces.TreeDragDest.TreeDragDest' -} -> Gtk.TreePath.TreePath {- ^ /@destPath@/: destination row -} -> Gtk.SelectionData.SelectionData {- ^ /@selectionData@/: the data being dragged -} -> m Bool {- ^ __Returns:__ 'True' if a drop is possible before /@destPath@/ -} treeDragDestRowDropPossible dragDest destPath selectionData = liftIO $ do dragDest' <- unsafeManagedPtrCastPtr dragDest destPath' <- unsafeManagedPtrGetPtr destPath selectionData' <- unsafeManagedPtrGetPtr selectionData result <- gtk_tree_drag_dest_row_drop_possible dragDest' destPath' selectionData' let result' = (/= 0) result touchManagedPtr dragDest touchManagedPtr destPath touchManagedPtr selectionData return result' data TreeDragDestRowDropPossibleMethodInfo instance (signature ~ (Gtk.TreePath.TreePath -> Gtk.SelectionData.SelectionData -> m Bool), MonadIO m, IsTreeDragDest a) => O.MethodInfo TreeDragDestRowDropPossibleMethodInfo a signature where overloadedMethod _ = treeDragDestRowDropPossible