gi-gio-2.0.38: Gio bindings

Copyright | Will Thompson and Iñaki García Etxebarria
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria
Safe Haskell | None
Language | Haskell2010

GI.Gio.Objects.FileMonitor

Contents

- Exported types
- Methods
  - cancel
  - emitEvent
  - isCancelled
  - setRateLimit
- Properties
  - cancelled
  - rateLimit
- Signals
  - changed

Description

Monitors a file or directory for changes.

To obtain a `GFileMonitor` for a file or directory, use `fileMonitor`, `fileMonitorFile`, or `fileMonitorDirectory`.

To get informed about changes to the file or directory you are monitoring, connect to the FileMonitor::changed signal. The signal will be emitted in the thread-default main context (see `mainContextPushThreadDefault`) 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).

Synopsis

- newtype FileMonitor = FileMonitor (ManagedPtr FileMonitor)
- class (GObject o, IsDescendantOf FileMonitor o) => IsFileMonitor o
- toFileMonitor :: (MonadIO m, IsFileMonitor o) => o -> m FileMonitor
- fileMonitorCancel :: (HasCallStack, MonadIO m, IsFileMonitor a) => a -> m Bool
- fileMonitorEmitEvent :: (HasCallStack, MonadIO m, IsFileMonitor a, IsFile b, IsFile c) => a -> b -> Maybe c -> FileMonitorEvent -> m ()
- fileMonitorIsCancelled :: (HasCallStack, MonadIO m, IsFileMonitor a) => a -> m Bool
- fileMonitorSetRateLimit :: (HasCallStack, MonadIO m, IsFileMonitor a) => a -> Int32 -> m ()
- getFileMonitorCancelled :: (MonadIO m, IsFileMonitor o) => o -> m Bool
- constructFileMonitorRateLimit :: (IsFileMonitor o, MonadIO m) => Int32 -> m (GValueConstruct o)
- getFileMonitorRateLimit :: (MonadIO m, IsFileMonitor o) => o -> m Int32
- setFileMonitorRateLimit :: (MonadIO m, IsFileMonitor o) => o -> Int32 -> m ()
- type FileMonitorChangedCallback = File -> Maybe File -> FileMonitorEvent -> IO ()
- afterFileMonitorChanged :: (IsFileMonitor a, MonadIO m) => a -> ((?self :: a) => FileMonitorChangedCallback) -> m SignalHandlerId
- onFileMonitorChanged :: (IsFileMonitor a, MonadIO m) => a -> ((?self :: a) => FileMonitorChangedCallback) -> m SignalHandlerId

# Exported types

newtype FileMonitor Source #

Memory-managed wrapper type.

Constructors

FileMonitor (ManagedPtr FileMonitor) |

#### Instances

Instances details

Eq FileMonitor Source # |
Instance details Defined in GI.Gio.Objects.FileMonitor Methods (==) :: FileMonitor -> FileMonitor -> Bool Source # (/=) :: FileMonitor -> FileMonitor -> Bool Source #
GObject FileMonitor Source # |
Instance details Defined in GI.Gio.Objects.FileMonitor
ManagedPtrNewtype FileMonitor Source # |
Instance details Defined in GI.Gio.Objects.FileMonitor Methods toManagedPtr :: FileMonitor -> ManagedPtr FileMonitor Source #
TypedObject FileMonitor Source # |
Instance details Defined in GI.Gio.Objects.FileMonitor Methods glibType :: IO GType Source #
HasParentTypes FileMonitor Source # |
Instance details Defined in GI.Gio.Objects.FileMonitor
IsGValue (Maybe FileMonitor) Source # | Convert `FileMonitor` to and from `GValue`. See `toGValue` and `fromGValue`.
Instance details Defined in GI.Gio.Objects.FileMonitor Methods gvalueGType_ :: IO GType Source # gvalueSet_ :: Ptr GValue -> Maybe FileMonitor -> IO () Source # gvalueGet_ :: Ptr GValue -> IO (Maybe FileMonitor) Source #
type ParentTypes FileMonitor Source # |
Instance details Defined in GI.Gio.Objects.FileMonitor type ParentTypes FileMonitor = '[Object]

class (GObject o, IsDescendantOf FileMonitor o) => IsFileMonitor o Source #

Type class for types which can be safely cast to `FileMonitor`, for instance with `toFileMonitor`.

#### Instances

Instances details

(GObject o, IsDescendantOf FileMonitor o) => IsFileMonitor o Source # |
Instance details Defined in GI.Gio.Objects.FileMonitor

toFileMonitor :: (MonadIO m, IsFileMonitor o) => o -> m FileMonitor Source #

Cast to `FileMonitor`, for types for which this is known to be safe. For general casts, use `castTo`.

# Methods

### Click to display all available methods, including inherited ones

Expand

#### Methods

bindProperty, bindPropertyFull, cancel, emitEvent, forceFloating, freezeNotify, getv, isCancelled, isFloating, notify, notifyByPspec, ref, refSink, runDispose, stealData, stealQdata, thawNotify, unref, watchClosure.

#### Getters

getData, getProperty, getQdata.

#### Setters

setData, setDataFull, setProperty, setRateLimit.

## cancel

fileMonitorCancel Source #

Arguments

:: (HasCallStack, MonadIO m, IsFileMonitor a) |
=> a | `monitor`: a `FileMonitor`.
-> m Bool | Returns: always `True`

Cancels a file monitor.

## emitEvent

fileMonitorEmitEvent Source #

Arguments

:: (HasCallStack, MonadIO m, IsFileMonitor a, IsFile b, IsFile c) |
=> a | `monitor`: a `FileMonitor`.
-> b | `child`: a `File`.
-> Maybe c | `otherFile`: a `File`, or `Nothing`.
-> FileMonitorEvent | `eventType`: a set of `FileMonitorEvent` flags.
-> m () |

Emits the 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 (see `mainContextPushThreadDefault`) of the thread that the monitor was created in.

## isCancelled

fileMonitorIsCancelled Source #

Arguments

:: (HasCallStack, MonadIO m, IsFileMonitor a) |
=> a | `monitor`: a `FileMonitor`
-> m Bool | Returns: `True` if monitor is canceled. `False` otherwise.

Returns whether the monitor is canceled.

## setRateLimit

fileMonitorSetRateLimit Source #

Arguments

:: (HasCallStack, MonadIO m, IsFileMonitor a) |
=> a | `monitor`: a `FileMonitor`.
-> Int32 | `limitMsecs`: a non-negative integer with the limit in milliseconds to poll for changes
-> m () |

Sets the rate limit to which the `monitor` will report consecutive change events to the same file.

# Properties

## cancelled

Whether the monitor has been cancelled.

getFileMonitorCancelled :: (MonadIO m, IsFileMonitor o) => o -> m Bool Source #

Get the value of the “`cancelled`” property. When overloading is enabled, this is equivalent to

    get fileMonitor #cancelled

## rateLimit

The limit of the monitor to watch for changes, in milliseconds.

constructFileMonitorRateLimit :: (IsFileMonitor o, MonadIO m) => Int32 -> m (GValueConstruct o) Source #

Construct a `GValueConstruct` with valid value for the “`rate-limit`” property. This is rarely needed directly, but it is used by `new`.

getFileMonitorRateLimit :: (MonadIO m, IsFileMonitor o) => o -> m Int32 Source #

Get the value of the “`rate-limit`” property. When overloading is enabled, this is equivalent to

    get fileMonitor #rateLimit

setFileMonitorRateLimit :: (MonadIO m, IsFileMonitor o) => o -> Int32 -> m () Source #

Set the value of the “`rate-limit`” property. When overloading is enabled, this is equivalent to

    set fileMonitor [ #rateLimit := value ]

# Signals

## changed

type FileMonitorChangedCallback Source #

Arguments

= File | `file`: a `File`.
-> Maybe File | `otherFile`: a `File` or `NULL`.
-> FileMonitorEvent | `eventType`: a `FileMonitorEvent`.
-> IO () |

Emitted when `file` has been changed.

If using `FileMonitorFlagsWatchMoves` on a directory monitor, and the information is available (and if supported by the backend), `eventType` may be `FileMonitorEventRenamed`, `FileMonitorEventMovedIn` or `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 `FileMonitorEventMovedIn` as equivalent to `FileMonitorEventCreated` and `FileMonitorEventMovedOut` as equivalent to `FileMonitorEventDeleted`, with extra information. `FileMonitorEventRenamed` is equivalent to a delete/create pair. This is exactly how the events will be reported in the case that the `FileMonitorFlagsWatchMoves` flag is not in use.

If using the deprecated flag `FileMonitorFlagsSendMoved` flag and `eventType` is `FileMonitorEventMoved`, `file` will be set to a `File` containing the old path, and `otherFile` will be set to a `File` containing the new path.

In all the other cases, `otherFile` will be set to `NULL`.

afterFileMonitorChanged :: (IsFileMonitor a, MonadIO m) => a -> ((?self :: a) => FileMonitorChangedCallback) -> m SignalHandlerId Source #

Connect a signal handler for the changed signal, to be run after the default handler. When overloading is enabled, this is equivalent to

    after fileMonitor #changed callback

By default the object invoking the signal is not passed to the callback. If you need to access it, you can use the implit `?self` parameter. Note that this requires activating the `ImplicitParams` GHC extension.

onFileMonitorChanged :: (IsFileMonitor a, MonadIO m) => a -> ((?self :: a) => FileMonitorChangedCallback) -> m SignalHandlerId Source #

Connect a signal handler for the changed signal, to be run before the default handler. When overloading is enabled, this is equivalent to

    on fileMonitor #changed callback