{- | 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 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 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 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 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 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