gi-gio-2.0.20: GI/Gio/Objects/FileMonitor.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
Monitors a file or directory for changes.
To obtain a 'GI.Gio.Objects.FileMonitor.FileMonitor' for a file or directory, use
'GI.Gio.Interfaces.File.fileMonitor', 'GI.Gio.Interfaces.File.fileMonitorFile', or
'GI.Gio.Interfaces.File.fileMonitorDirectory'.
To get informed about changes to the file or directory you are
monitoring, connect to the 'GI.Gio.Objects.FileMonitor.FileMonitor'::@/changed/@ signal. The
signal will be emitted in the
[thread-default main context][g-main-context-push-thread-default]
of the thread that the monitor was created in
(though if the global default main context is blocked, this may
cause notifications to be blocked even if the thread-default
context is still running).
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Gio.Objects.FileMonitor
(
-- * Exported types
FileMonitor(..) ,
IsFileMonitor ,
toFileMonitor ,
noFileMonitor ,
-- * Methods
-- ** cancel #method:cancel#
#if ENABLE_OVERLOADING
FileMonitorCancelMethodInfo ,
#endif
fileMonitorCancel ,
-- ** emitEvent #method:emitEvent#
#if ENABLE_OVERLOADING
FileMonitorEmitEventMethodInfo ,
#endif
fileMonitorEmitEvent ,
-- ** isCancelled #method:isCancelled#
#if ENABLE_OVERLOADING
FileMonitorIsCancelledMethodInfo ,
#endif
fileMonitorIsCancelled ,
-- ** setRateLimit #method:setRateLimit#
#if ENABLE_OVERLOADING
FileMonitorSetRateLimitMethodInfo ,
#endif
fileMonitorSetRateLimit ,
-- * Properties
-- ** cancelled #attr:cancelled#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
FileMonitorCancelledPropertyInfo ,
#endif
#if ENABLE_OVERLOADING
fileMonitorCancelled ,
#endif
getFileMonitorCancelled ,
-- ** rateLimit #attr:rateLimit#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
FileMonitorRateLimitPropertyInfo ,
#endif
constructFileMonitorRateLimit ,
#if ENABLE_OVERLOADING
fileMonitorRateLimit ,
#endif
getFileMonitorRateLimit ,
setFileMonitorRateLimit ,
-- * Signals
-- ** changed #signal:changed#
C_FileMonitorChangedCallback ,
FileMonitorChangedCallback ,
#if ENABLE_OVERLOADING
FileMonitorChangedSignalInfo ,
#endif
afterFileMonitorChanged ,
genClosure_FileMonitorChanged ,
mk_FileMonitorChangedCallback ,
noFileMonitorChangedCallback ,
onFileMonitorChanged ,
wrap_FileMonitorChangedCallback ,
) 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.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.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 {-# SOURCE #-} qualified GI.Gio.Enums as Gio.Enums
import {-# SOURCE #-} qualified GI.Gio.Interfaces.File as Gio.File
-- | Memory-managed wrapper type.
newtype FileMonitor = FileMonitor (ManagedPtr FileMonitor)
foreign import ccall "g_file_monitor_get_type"
c_g_file_monitor_get_type :: IO GType
instance GObject FileMonitor where
gobjectType = c_g_file_monitor_get_type
-- | Type class for types which can be safely cast to `FileMonitor`, for instance with `toFileMonitor`.
class (GObject o, O.IsDescendantOf FileMonitor o) => IsFileMonitor o
instance (GObject o, O.IsDescendantOf FileMonitor o) => IsFileMonitor o
instance O.HasParentTypes FileMonitor
type instance O.ParentTypes FileMonitor = '[GObject.Object.Object]
-- | Cast to `FileMonitor`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toFileMonitor :: (MonadIO m, IsFileMonitor o) => o -> m FileMonitor
toFileMonitor = liftIO . unsafeCastTo FileMonitor
-- | A convenience alias for `Nothing` :: `Maybe` `FileMonitor`.
noFileMonitor :: Maybe FileMonitor
noFileMonitor = Nothing
#if ENABLE_OVERLOADING
type family ResolveFileMonitorMethod (t :: Symbol) (o :: *) :: * where
ResolveFileMonitorMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveFileMonitorMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveFileMonitorMethod "cancel" o = FileMonitorCancelMethodInfo
ResolveFileMonitorMethod "emitEvent" o = FileMonitorEmitEventMethodInfo
ResolveFileMonitorMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveFileMonitorMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveFileMonitorMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveFileMonitorMethod "isCancelled" o = FileMonitorIsCancelledMethodInfo
ResolveFileMonitorMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveFileMonitorMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveFileMonitorMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveFileMonitorMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveFileMonitorMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveFileMonitorMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveFileMonitorMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveFileMonitorMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveFileMonitorMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveFileMonitorMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveFileMonitorMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveFileMonitorMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveFileMonitorMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveFileMonitorMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveFileMonitorMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveFileMonitorMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveFileMonitorMethod "setRateLimit" o = FileMonitorSetRateLimitMethodInfo
ResolveFileMonitorMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveFileMonitorMethod t FileMonitor, O.MethodInfo info FileMonitor p) => OL.IsLabel t (FileMonitor -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif
-- signal FileMonitor::changed
{- |
Emitted when /@file@/ has been changed.
If using 'GI.Gio.Flags.FileMonitorFlagsWatchMoves' on a directory monitor, and
the information is available (and if supported by the backend),
/@eventType@/ may be 'GI.Gio.Enums.FileMonitorEventRenamed',
'GI.Gio.Enums.FileMonitorEventMovedIn' or 'GI.Gio.Enums.FileMonitorEventMovedOut'.
In all cases /@file@/ will be a child of the monitored directory. For
renames, /@file@/ will be the old name and /@otherFile@/ is the new
name. For \"moved in\" events, /@file@/ is the name of the file that
appeared and /@otherFile@/ is the old name that it was moved from (in
another directory). For \"moved out\" events, /@file@/ is the name of
the file that used to be in this directory and /@otherFile@/ is the
name of the file at its new location.
It makes sense to treat 'GI.Gio.Enums.FileMonitorEventMovedIn' as
equivalent to 'GI.Gio.Enums.FileMonitorEventCreated' and
'GI.Gio.Enums.FileMonitorEventMovedOut' as equivalent to
'GI.Gio.Enums.FileMonitorEventDeleted', with extra information.
'GI.Gio.Enums.FileMonitorEventRenamed' is equivalent to a delete\/create
pair. This is exactly how the events will be reported in the case
that the 'GI.Gio.Flags.FileMonitorFlagsWatchMoves' flag is not in use.
If using the deprecated flag 'GI.Gio.Flags.FileMonitorFlagsSendMoved' flag and /@eventType@/ is
@/G_FILE_MONITOR_EVENT_MOVED/@, /@file@/ will be set to a 'GI.Gio.Interfaces.File.File' containing the
old path, and /@otherFile@/ will be set to a 'GI.Gio.Interfaces.File.File' containing the new path.
In all the other cases, /@otherFile@/ will be set to @/NULL/@.
-}
type FileMonitorChangedCallback =
Gio.File.File
{- ^ /@file@/: a 'GI.Gio.Interfaces.File.File'. -}
-> Maybe Gio.File.File
{- ^ /@otherFile@/: a 'GI.Gio.Interfaces.File.File' or @/NULL/@. -}
-> Gio.Enums.FileMonitorEvent
{- ^ /@eventType@/: a 'GI.Gio.Enums.FileMonitorEvent'. -}
-> IO ()
-- | A convenience synonym for @`Nothing` :: `Maybe` `FileMonitorChangedCallback`@.
noFileMonitorChangedCallback :: Maybe FileMonitorChangedCallback
noFileMonitorChangedCallback = Nothing
-- | Type for the callback on the (unwrapped) C side.
type C_FileMonitorChangedCallback =
Ptr () -> -- object
Ptr Gio.File.File ->
Ptr Gio.File.File ->
CUInt ->
Ptr () -> -- user_data
IO ()
-- | Generate a function pointer callable from C code, from a `C_FileMonitorChangedCallback`.
foreign import ccall "wrapper"
mk_FileMonitorChangedCallback :: C_FileMonitorChangedCallback -> IO (FunPtr C_FileMonitorChangedCallback)
-- | Wrap the callback into a `GClosure`.
genClosure_FileMonitorChanged :: MonadIO m => FileMonitorChangedCallback -> m (GClosure C_FileMonitorChangedCallback)
genClosure_FileMonitorChanged cb = liftIO $ do
let cb' = wrap_FileMonitorChangedCallback cb
mk_FileMonitorChangedCallback cb' >>= B.GClosure.newGClosure
-- | Wrap a `FileMonitorChangedCallback` into a `C_FileMonitorChangedCallback`.
wrap_FileMonitorChangedCallback ::
FileMonitorChangedCallback ->
C_FileMonitorChangedCallback
wrap_FileMonitorChangedCallback _cb _ file otherFile eventType _ = do
file' <- (newObject Gio.File.File) file
maybeOtherFile <-
if otherFile == nullPtr
then return Nothing
else do
otherFile' <- (newObject Gio.File.File) otherFile
return $ Just otherFile'
let eventType' = (toEnum . fromIntegral) eventType
_cb file' maybeOtherFile eventType'
{- |
Connect a signal handler for the “@changed@” 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' fileMonitor #changed callback
@
-}
onFileMonitorChanged :: (IsFileMonitor a, MonadIO m) => a -> FileMonitorChangedCallback -> m SignalHandlerId
onFileMonitorChanged obj cb = liftIO $ do
let cb' = wrap_FileMonitorChangedCallback cb
cb'' <- mk_FileMonitorChangedCallback cb'
connectSignalFunPtr obj "changed" cb'' SignalConnectBefore
{- |
Connect a signal handler for the “@changed@” 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' fileMonitor #changed callback
@
-}
afterFileMonitorChanged :: (IsFileMonitor a, MonadIO m) => a -> FileMonitorChangedCallback -> m SignalHandlerId
afterFileMonitorChanged obj cb = liftIO $ do
let cb' = wrap_FileMonitorChangedCallback cb
cb'' <- mk_FileMonitorChangedCallback cb'
connectSignalFunPtr obj "changed" cb'' SignalConnectAfter
-- VVV Prop "cancelled"
-- Type: TBasicType TBoolean
-- Flags: [PropertyReadable]
-- Nullable: (Nothing,Nothing)
{- |
Get the value of the “@cancelled@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' fileMonitor #cancelled
@
-}
getFileMonitorCancelled :: (MonadIO m, IsFileMonitor o) => o -> m Bool
getFileMonitorCancelled obj = liftIO $ B.Properties.getObjectPropertyBool obj "cancelled"
#if ENABLE_OVERLOADING
data FileMonitorCancelledPropertyInfo
instance AttrInfo FileMonitorCancelledPropertyInfo where
type AttrAllowedOps FileMonitorCancelledPropertyInfo = '[ 'AttrGet]
type AttrSetTypeConstraint FileMonitorCancelledPropertyInfo = (~) ()
type AttrBaseTypeConstraint FileMonitorCancelledPropertyInfo = IsFileMonitor
type AttrGetType FileMonitorCancelledPropertyInfo = Bool
type AttrLabel FileMonitorCancelledPropertyInfo = "cancelled"
type AttrOrigin FileMonitorCancelledPropertyInfo = FileMonitor
attrGet _ = getFileMonitorCancelled
attrSet _ = undefined
attrConstruct _ = undefined
attrClear _ = undefined
#endif
-- VVV Prop "rate-limit"
-- Type: TBasicType TInt
-- Flags: [PropertyReadable,PropertyWritable]
-- Nullable: (Nothing,Just False)
{- |
Get the value of the “@rate-limit@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' fileMonitor #rateLimit
@
-}
getFileMonitorRateLimit :: (MonadIO m, IsFileMonitor o) => o -> m Int32
getFileMonitorRateLimit obj = liftIO $ B.Properties.getObjectPropertyInt32 obj "rate-limit"
{- |
Set the value of the “@rate-limit@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.set' fileMonitor [ #rateLimit 'Data.GI.Base.Attributes.:=' value ]
@
-}
setFileMonitorRateLimit :: (MonadIO m, IsFileMonitor o) => o -> Int32 -> m ()
setFileMonitorRateLimit obj val = liftIO $ B.Properties.setObjectPropertyInt32 obj "rate-limit" val
{- |
Construct a `GValueConstruct` with valid value for the “@rate-limit@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructFileMonitorRateLimit :: (IsFileMonitor o) => Int32 -> IO (GValueConstruct o)
constructFileMonitorRateLimit val = B.Properties.constructObjectPropertyInt32 "rate-limit" val
#if ENABLE_OVERLOADING
data FileMonitorRateLimitPropertyInfo
instance AttrInfo FileMonitorRateLimitPropertyInfo where
type AttrAllowedOps FileMonitorRateLimitPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint FileMonitorRateLimitPropertyInfo = (~) Int32
type AttrBaseTypeConstraint FileMonitorRateLimitPropertyInfo = IsFileMonitor
type AttrGetType FileMonitorRateLimitPropertyInfo = Int32
type AttrLabel FileMonitorRateLimitPropertyInfo = "rate-limit"
type AttrOrigin FileMonitorRateLimitPropertyInfo = FileMonitor
attrGet _ = getFileMonitorRateLimit
attrSet _ = setFileMonitorRateLimit
attrConstruct _ = constructFileMonitorRateLimit
attrClear _ = undefined
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList FileMonitor
type instance O.AttributeList FileMonitor = FileMonitorAttributeList
type FileMonitorAttributeList = ('[ '("cancelled", FileMonitorCancelledPropertyInfo), '("rateLimit", FileMonitorRateLimitPropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
fileMonitorCancelled :: AttrLabelProxy "cancelled"
fileMonitorCancelled = AttrLabelProxy
fileMonitorRateLimit :: AttrLabelProxy "rateLimit"
fileMonitorRateLimit = AttrLabelProxy
#endif
#if ENABLE_OVERLOADING
data FileMonitorChangedSignalInfo
instance SignalInfo FileMonitorChangedSignalInfo where
type HaskellCallbackType FileMonitorChangedSignalInfo = FileMonitorChangedCallback
connectSignal _ obj cb connectMode = do
let cb' = wrap_FileMonitorChangedCallback cb
cb'' <- mk_FileMonitorChangedCallback cb'
connectSignalFunPtr obj "changed" cb'' connectMode
type instance O.SignalList FileMonitor = FileMonitorSignalList
type FileMonitorSignalList = ('[ '("changed", FileMonitorChangedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
#endif
-- method FileMonitor::cancel
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "monitor", argType = TInterface (Name {namespace = "Gio", name = "FileMonitor"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileMonitor.", 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 "g_file_monitor_cancel" g_file_monitor_cancel ::
Ptr FileMonitor -> -- monitor : TInterface (Name {namespace = "Gio", name = "FileMonitor"})
IO CInt
{- |
Cancels a file monitor.
-}
fileMonitorCancel ::
(B.CallStack.HasCallStack, MonadIO m, IsFileMonitor a) =>
a
{- ^ /@monitor@/: a 'GI.Gio.Objects.FileMonitor.FileMonitor'. -}
-> m Bool
{- ^ __Returns:__ always 'True' -}
fileMonitorCancel monitor = liftIO $ do
monitor' <- unsafeManagedPtrCastPtr monitor
result <- g_file_monitor_cancel monitor'
let result' = (/= 0) result
touchManagedPtr monitor
return result'
#if ENABLE_OVERLOADING
data FileMonitorCancelMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsFileMonitor a) => O.MethodInfo FileMonitorCancelMethodInfo a signature where
overloadedMethod _ = fileMonitorCancel
#endif
-- method FileMonitor::emit_event
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "monitor", argType = TInterface (Name {namespace = "Gio", name = "FileMonitor"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileMonitor.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "child", argType = TInterface (Name {namespace = "Gio", name = "File"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFile.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "other_file", argType = TInterface (Name {namespace = "Gio", name = "File"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFile.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event_type", argType = TInterface (Name {namespace = "Gio", name = "FileMonitorEvent"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a set of #GFileMonitorEvent flags.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "g_file_monitor_emit_event" g_file_monitor_emit_event ::
Ptr FileMonitor -> -- monitor : TInterface (Name {namespace = "Gio", name = "FileMonitor"})
Ptr Gio.File.File -> -- child : TInterface (Name {namespace = "Gio", name = "File"})
Ptr Gio.File.File -> -- other_file : TInterface (Name {namespace = "Gio", name = "File"})
CUInt -> -- event_type : TInterface (Name {namespace = "Gio", name = "FileMonitorEvent"})
IO ()
{- |
Emits the 'GI.Gio.Objects.FileMonitor.FileMonitor'::@/changed/@ signal if a change
has taken place. Should be called from file monitor
implementations only.
Implementations are responsible to call this method from the
[thread-default main context][g-main-context-push-thread-default] of the
thread that the monitor was created in.
-}
fileMonitorEmitEvent ::
(B.CallStack.HasCallStack, MonadIO m, IsFileMonitor a, Gio.File.IsFile b, Gio.File.IsFile c) =>
a
{- ^ /@monitor@/: a 'GI.Gio.Objects.FileMonitor.FileMonitor'. -}
-> b
{- ^ /@child@/: a 'GI.Gio.Interfaces.File.File'. -}
-> c
{- ^ /@otherFile@/: a 'GI.Gio.Interfaces.File.File'. -}
-> Gio.Enums.FileMonitorEvent
{- ^ /@eventType@/: a set of 'GI.Gio.Enums.FileMonitorEvent' flags. -}
-> m ()
fileMonitorEmitEvent monitor child otherFile eventType = liftIO $ do
monitor' <- unsafeManagedPtrCastPtr monitor
child' <- unsafeManagedPtrCastPtr child
otherFile' <- unsafeManagedPtrCastPtr otherFile
let eventType' = (fromIntegral . fromEnum) eventType
g_file_monitor_emit_event monitor' child' otherFile' eventType'
touchManagedPtr monitor
touchManagedPtr child
touchManagedPtr otherFile
return ()
#if ENABLE_OVERLOADING
data FileMonitorEmitEventMethodInfo
instance (signature ~ (b -> c -> Gio.Enums.FileMonitorEvent -> m ()), MonadIO m, IsFileMonitor a, Gio.File.IsFile b, Gio.File.IsFile c) => O.MethodInfo FileMonitorEmitEventMethodInfo a signature where
overloadedMethod _ = fileMonitorEmitEvent
#endif
-- method FileMonitor::is_cancelled
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "monitor", argType = TInterface (Name {namespace = "Gio", name = "FileMonitor"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileMonitor", 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 "g_file_monitor_is_cancelled" g_file_monitor_is_cancelled ::
Ptr FileMonitor -> -- monitor : TInterface (Name {namespace = "Gio", name = "FileMonitor"})
IO CInt
{- |
Returns whether the monitor is canceled.
-}
fileMonitorIsCancelled ::
(B.CallStack.HasCallStack, MonadIO m, IsFileMonitor a) =>
a
{- ^ /@monitor@/: a 'GI.Gio.Objects.FileMonitor.FileMonitor' -}
-> m Bool
{- ^ __Returns:__ 'True' if monitor is canceled. 'False' otherwise. -}
fileMonitorIsCancelled monitor = liftIO $ do
monitor' <- unsafeManagedPtrCastPtr monitor
result <- g_file_monitor_is_cancelled monitor'
let result' = (/= 0) result
touchManagedPtr monitor
return result'
#if ENABLE_OVERLOADING
data FileMonitorIsCancelledMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsFileMonitor a) => O.MethodInfo FileMonitorIsCancelledMethodInfo a signature where
overloadedMethod _ = fileMonitorIsCancelled
#endif
-- method FileMonitor::set_rate_limit
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "monitor", argType = TInterface (Name {namespace = "Gio", name = "FileMonitor"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GFileMonitor.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "limit_msecs", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a non-negative integer with the limit in milliseconds\n to poll for changes", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "g_file_monitor_set_rate_limit" g_file_monitor_set_rate_limit ::
Ptr FileMonitor -> -- monitor : TInterface (Name {namespace = "Gio", name = "FileMonitor"})
Int32 -> -- limit_msecs : TBasicType TInt
IO ()
{- |
Sets the rate limit to which the /@monitor@/ will report
consecutive change events to the same file.
-}
fileMonitorSetRateLimit ::
(B.CallStack.HasCallStack, MonadIO m, IsFileMonitor a) =>
a
{- ^ /@monitor@/: a 'GI.Gio.Objects.FileMonitor.FileMonitor'. -}
-> Int32
{- ^ /@limitMsecs@/: a non-negative integer with the limit in milliseconds
to poll for changes -}
-> m ()
fileMonitorSetRateLimit monitor limitMsecs = liftIO $ do
monitor' <- unsafeManagedPtrCastPtr monitor
g_file_monitor_set_rate_limit monitor' limitMsecs
touchManagedPtr monitor
return ()
#if ENABLE_OVERLOADING
data FileMonitorSetRateLimitMethodInfo
instance (signature ~ (Int32 -> m ()), MonadIO m, IsFileMonitor a) => O.MethodInfo FileMonitorSetRateLimitMethodInfo a signature where
overloadedMethod _ = fileMonitorSetRateLimit
#endif