## TeplFile TeplFile — On-disk representation of a TeplBuffer |

## Functions

GMountOperation * | (*TeplMountOperationFactory) ()
TeplFile * | tepl_file_new ()
TeplFileMetadata * | tepl_file_get_file_metadata ()
GFile * | tepl_file_get_location ()
void | tepl_file_set_location ()
const gchar * | tepl_file_get_short_name ()
const TeplEncoding * | tepl_file_get_encoding ()
TeplNewlineType | tepl_file_get_newline_type ()
TeplCompressionType | tepl_file_get_compression_type ()
void | tepl_file_check_file_on_disk ()
gboolean | tepl_file_is_local ()
gboolean | tepl_file_is_externally_modified ()
gboolean | tepl_file_is_deleted ()
gboolean | tepl_file_is_readonly ()
void | tepl_file_set_mount_operation_factory ()
void | tepl_file_add_uri_to_recent_manager ()

## Properties

TeplCompressionType | compression-type | Read
TeplEncoding * | encoding | Read
GFile * | location | Read / Write / Construct
TeplNewlineType | newline-type | Read
gboolean | read-only | Read
gchar * | short-name | Read

## Types and Values

| TeplFile
enum | TeplNewlineType
#define | TEPL_NEWLINE_TYPE_DEFAULT
enum | TeplCompressionType

## Object Hierarchy

        GEnum
        ├── TeplCompressionType
        ╰── TeplNewlineType
        GObject
        ╰── TeplFile

## Includes

    #include <tepl/tepl.h>

## Description

A TeplFile object is the on-disk representation of a TeplBuffer.

With a TeplFile, you can create and configure a TeplFileLoader and TeplFileSaver which take by default the values of the TeplFile properties (except for the file loader which auto-detect some properties). On a successful load or save operation, the TeplFile properties are updated. If an operation fails, the TeplFile properties have still the previous valid values.

TeplFile is a fork of GtkSourceFile. TeplFileLoader is a new implementation for file loading, but it needs to call private functions of TeplFile in order to update its properties. So it was not possible for TeplFileLoader to use GtkSourceFile. So the whole file loading and saving API of GtkSourceView has been forked; hopefully the new implementation will be folded back to GtkSourceView in a later version.

## Functions

### TeplMountOperationFactory ()

    GMountOperation *
    (*TeplMountOperationFactory) (TeplFile *file,
                                  gpointer userdata);

Type definition for a function that will be called to create a GMountOperation. This is useful for creating a GtkMountOperation.

#### Parameters

file | a TeplFile. |
userdata | user data |

Since: 1.0

### tepl_file_new ()

    TeplFile *
    tepl_file_new (void);

#### Returns

a new TeplFile object.

Since: 1.0

### tepl_file_get_file_metadata ()

    TeplFileMetadata *
    tepl_file_get_file_metadata (TeplFile *file);

#### Parameters

file | a TeplFile. |

#### Returns

the associated TeplFileMetadata.

[transfer none]

Since: 1.0

### tepl_file_get_location ()

    GFile *
    tepl_file_get_location (TeplFile *file);

#### Parameters

file | a TeplFile. |

#### Returns

the GFile.

[transfer none]

Since: 1.0

### tepl_file_set_location ()

    void
    tepl_file_set_location (TeplFile *file,
                            GFile *location);

Sets the location.

#### Parameters

file | a TeplFile. |
location | the new GFile, or `NULL`. | [nullable]

Since: 1.0

### tepl_file_get_short_name ()

    const gchar *
    tepl_file_get_short_name (TeplFile *file);

Gets the `file` short name. If the “location” isn't `NULL`, returns its display-name (see G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME). Otherwise returns "Untitled File N", with N the Nth untitled file of the application, starting at 1. When an untitled file is closed, its number is released and can be used by a later untitled file.

#### Parameters

file | a TeplFile. |

#### Returns

the `file` short name.

Since: 1.0

### tepl_file_get_encoding ()

    const TeplEncoding *
    tepl_file_get_encoding (TeplFile *file);

The encoding is initially `NULL`. After a successful file loading or saving operation, the encoding is non-`NULL`.

#### Parameters

file | a TeplFile. |

#### Returns

the character encoding.

Since: 1.0

### tepl_file_get_newline_type ()

    TeplNewlineType
    tepl_file_get_newline_type (TeplFile *file);

#### Parameters

file | a TeplFile. |

#### Returns

the newline type.

Since: 1.0

### tepl_file_get_compression_type ()

    TeplCompressionType
    tepl_file_get_compression_type (TeplFile *file);

#### Parameters

file | a TeplFile. |

#### Returns

the compression type.

Since: 1.0

### tepl_file_check_file_on_disk ()

    void
    tepl_file_check_file_on_disk (TeplFile *file);

Checks synchronously the file on disk, to know whether the file is externally modified, or has been deleted, and whether the file is read-only.

TeplFile doesn't create a GFileMonitor to track those properties, so this function needs to be called instead. Creating lots of GFileMonitor's would take lots of resources.

Since this function is synchronous, it is advised to call it only on local files. See `tepl_file_is_local()`.

#### Parameters

file | a TeplFile. |

Since: 1.0

### tepl_file_is_local ()

    gboolean
    tepl_file_is_local (TeplFile *file);

Returns whether the file is local. If the “location” is `NULL`, returns `FALSE`.

#### Parameters

file | a TeplFile. |

#### Returns

whether the file is local.

Since: 1.0

### tepl_file_is_externally_modified ()

    gboolean
    tepl_file_is_externally_modified (TeplFile *file);

Returns whether the file is externally modified. If the “location” is `NULL`, returns `FALSE`.

To have an up-to-date value, you must first call `tepl_file_check_file_on_disk()`.

#### Parameters

file | a TeplFile. |

#### Returns

whether the file is externally modified.

Since: 1.0

### tepl_file_is_deleted ()

    gboolean
    tepl_file_is_deleted (TeplFile *file);

Returns whether the file has been deleted. If the “location” is `NULL`, returns `FALSE`.

To have an up-to-date value, you must first call `tepl_file_check_file_on_disk()`.

#### Parameters

file | a TeplFile. |

#### Returns

whether the file has been deleted.

Since: 1.0

### tepl_file_is_readonly ()

    gboolean
    tepl_file_is_readonly (TeplFile *file);

Returns whether the file is read-only. If the “location” is `NULL`, returns `FALSE`.

To have an up-to-date value, you must first call `tepl_file_check_file_on_disk()`.

#### Parameters

file | a TeplFile. |

#### Returns

whether the file is read-only.

Since: 1.0

### tepl_file_set_mount_operation_factory ()

    void
    tepl_file_set_mount_operation_factory (TeplFile *file,
                                           TeplMountOperationFactory callback,
                                           gpointer user_data,
                                           GDestroyNotify notify);

Sets a TeplMountOperationFactory function that will be called when a GMountOperation must be created. This is useful for creating a GtkMountOperation with the parent GtkWindow.

If a mount operation factory isn't set, `g_mount_operation_new()` will be called.

#### Parameters

file | a TeplFile. |
callback | a TeplMountOperationFactory to call when a GMountOperation is needed. | [scope notified]
user_data | the data to pass to the `callback` function. | [closure]
notify | function to call on `user_data` when the `callback` is no longer needed, or `NULL`. | [nullable]

Since: 1.0

### tepl_file_add_uri_to_recent_manager ()

    void
    tepl_file_add_uri_to_recent_manager (TeplFile *file);

If the “location” isn't `NULL`, adds its URI to the default GtkRecentManager with `gtk_recent_manager_add_item()`.

#### Parameters

file | a TeplFile. |

Since: 4.0

## Types and Values

### TeplFile

    typedef struct _TeplFile TeplFile;

### enum TeplNewlineType

#### Members

TEPL_NEWLINE_TYPE_LF | line feed, used on UNIX. |
TEPL_NEWLINE_TYPE_CR | carriage return, used on Mac. |
TEPL_NEWLINE_TYPE_CR_LF | carriage return followed by a line feed, used on Windows. |

Since: 1.0

### TEPL_NEWLINE_TYPE_DEFAULT

    #define TEPL_NEWLINE_TYPE_DEFAULT TEPL_NEWLINE_TYPE_CR_LF

The default newline type on the current OS.

Since: 1.0

### enum TeplCompressionType

#### Members

TEPL_COMPRESSION_TYPE_NONE | plain text. |
TEPL_COMPRESSION_TYPE_GZIP | gzip compression. |

Since: 1.0

## Property Details

### The `“compression-type”` property

      “compression-type”         TeplCompressionType

The compression type.

Flags: Read

Default value: TEPL_COMPRESSION_TYPE_NONE

Since: 1.0

### The `“encoding”` property

      “encoding”                 TeplEncoding *

The character encoding, initially `NULL`. After a successful file loading or saving operation, the encoding is non-`NULL`.

Flags: Read

Since: 1.0

### The `“location”` property

      “location”                 GFile *

The location.

Flags: Read / Write / Construct

Since: 1.0

### The `“newline-type”` property

      “newline-type”             TeplNewlineType

The line ending type.

Flags: Read

Default value: TEPL_NEWLINE_TYPE_LF

Since: 1.0

### The `“read-only”` property

      “read-only”                gboolean

Whether the file is read-only or not. The value of this property is not updated automatically (there is no file monitors).

Flags: Read

Default value: FALSE

Since: 1.0

### The `“short-name”` property

      “short-name”               gchar *

The file short name. See `tepl_file_get_short_name()`.

Flags: Read

Default value: NULL

Since: 1.0

## See Also

TeplFileLoader, TeplFileSaver, TeplFileMetadata