## GtkSourceFileSaver

GtkSourceFileSaver — Save a GtkSourceBuffer into a file

## Functions

GtkSourceFileSaver * | gtk_source_file_saver_new ()
GtkSourceFileSaver * | gtk_source_file_saver_new_with_target ()
GtkSourceBuffer * | gtk_source_file_saver_get_buffer ()
GtkSourceFile * | gtk_source_file_saver_get_file ()
GFile * | gtk_source_file_saver_get_location ()
void | gtk_source_file_saver_set_encoding ()
const GtkSourceEncoding * | gtk_source_file_saver_get_encoding ()
void | gtk_source_file_saver_set_newline_type ()
GtkSourceNewlineType | gtk_source_file_saver_get_newline_type ()
void | gtk_source_file_saver_set_compression_type ()
GtkSourceCompressionType | gtk_source_file_saver_get_compression_type ()
void | gtk_source_file_saver_set_flags ()
GtkSourceFileSaverFlags | gtk_source_file_saver_get_flags ()
void | gtk_source_file_saver_save_async ()
gboolean | gtk_source_file_saver_save_finish ()

## Properties

GtkSourceBuffer * | buffer | Read / Write / Construct Only
GtkSourceCompressionType | compression-type | Read / Write / Construct
GtkSourceEncoding * | encoding | Read / Write / Construct
GtkSourceFile * | file | Read / Write / Construct Only
GtkSourceFileSaverFlags | flags | Read / Write / Construct
GFile * | location | Read / Write / Construct Only
GtkSourceNewlineType | newline-type | Read / Write / Construct

## Types and Values

| GtkSourceFileSaver
#define | GTK_SOURCE_FILE_SAVER_ERROR
enum | GtkSourceFileSaverError
enum | GtkSourceFileSaverFlags

## Object Hierarchy

        GEnum
        ╰── GtkSourceFileSaverError
        GFlags
        ╰── GtkSourceFileSaverFlags
        GObject
        ╰── GtkSourceFileSaver

## Includes

    #include <gtksourceview/gtksource.h>

## Description

A GtkSourceFileSaver object permits to save a GtkSourceBuffer into a GFile.

A file saver should be used only for one save operation, including errors handling. If an error occurs, you can reconfigure the saver and relaunch the operation with `gtk_source_file_saver_save_async()`.

## Functions

### gtk_source_file_saver_new ()

    GtkSourceFileSaver *
    gtk_source_file_saver_new (GtkSourceBuffer *buffer,
                               GtkSourceFile *file);

Creates a new GtkSourceFileSaver object. The `buffer` will be saved to the GtkSourceFile's location.

This constructor is suitable for a simple "save" operation, when the `file` already contains a non-`NULL` “location”.

#### Parameters

buffer | the GtkSourceBuffer to save. |
file | the GtkSourceFile. |

#### Returns

a new GtkSourceFileSaver object.

Since: 3.14

### gtk_source_file_saver_new_with_target ()

    GtkSourceFileSaver *
    gtk_source_file_saver_new_with_target (GtkSourceBuffer *buffer,
                                           GtkSourceFile *file,
                                           GFile *target_location);

Creates a new GtkSourceFileSaver object with a target location. When the file saving is finished successfully, `target_location` is set to the `file` 's “location” property. If an error occurs, the previous valid location is still available in GtkSourceFile.

This constructor is suitable for a "save as" operation, or for saving a new buffer for the first time.

#### Parameters

buffer | the GtkSourceBuffer to save. |
file | the GtkSourceFile. |
target_location | the GFile where to save the buffer to. |

#### Returns

a new GtkSourceFileSaver object.

Since: 3.14

### gtk_source_file_saver_get_buffer ()

    GtkSourceBuffer *
    gtk_source_file_saver_get_buffer (GtkSourceFileSaver *saver);

#### Parameters

saver | a GtkSourceFileSaver. |

#### Returns

the GtkSourceBuffer to save.

[transfer none]

Since: 3.14

### gtk_source_file_saver_get_file ()

    GtkSourceFile *
    gtk_source_file_saver_get_file (GtkSourceFileSaver *saver);

#### Parameters

saver | a GtkSourceFileSaver. |

#### Returns

the GtkSourceFile.

[transfer none]

Since: 3.14

### gtk_source_file_saver_get_location ()

    GFile *
    gtk_source_file_saver_get_location (GtkSourceFileSaver *saver);

#### Parameters

saver | a GtkSourceFileSaver. |

#### Returns

the GFile where to save the buffer to.

[transfer none]

Since: 3.14

### gtk_source_file_saver_set_encoding ()

    void
    gtk_source_file_saver_set_encoding (GtkSourceFileSaver *saver,
                                        const GtkSourceEncoding *encoding);

Sets the encoding. If `encoding` is `NULL`, the UTF-8 encoding will be set. By default the encoding is taken from the GtkSourceFile.

#### Parameters

saver | a GtkSourceFileSaver. |
encoding | the new encoding, or `NULL` for UTF-8. | [nullable]

Since: 3.14

### gtk_source_file_saver_get_encoding ()

    const GtkSourceEncoding *
    gtk_source_file_saver_get_encoding (GtkSourceFileSaver *saver);

#### Parameters

saver | a GtkSourceFileSaver. |

#### Returns

the encoding.

Since: 3.14

### gtk_source_file_saver_set_newline_type ()

    void
    gtk_source_file_saver_set_newline_type
                                   (GtkSourceFileSaver *saver,
                                    GtkSourceNewlineType newline_type);

Sets the newline type. By default the newline type is taken from the GtkSourceFile.

#### Parameters

saver | a GtkSourceFileSaver. |
newline_type | the new newline type. |

Since: 3.14

### gtk_source_file_saver_get_newline_type ()

    GtkSourceNewlineType
    gtk_source_file_saver_get_newline_type
                                   (GtkSourceFileSaver *saver);

#### Parameters

saver | a GtkSourceFileSaver. |

#### Returns

the newline type.

Since: 3.14

### gtk_source_file_saver_set_compression_type ()

    void
    gtk_source_file_saver_set_compression_type
                                   (GtkSourceFileSaver *saver,
                                    GtkSourceCompressionType compression_type);

Sets the compression type. By default the compression type is taken from the GtkSourceFile.

#### Parameters

saver | a GtkSourceFileSaver. |
compression_type | the new compression type. |

Since: 3.14

### gtk_source_file_saver_get_compression_type ()

    GtkSourceCompressionType
    gtk_source_file_saver_get_compression_type
                                   (GtkSourceFileSaver *saver);

#### Parameters

saver | a GtkSourceFileSaver. |

#### Returns

the compression type.

Since: 3.14

### gtk_source_file_saver_set_flags ()

    void
    gtk_source_file_saver_set_flags (GtkSourceFileSaver *saver,
                                     GtkSourceFileSaverFlags flags);

#### Parameters

saver | a GtkSourceFileSaver. |
flags | the new flags. |

Since: 3.14

### gtk_source_file_saver_get_flags ()

    GtkSourceFileSaverFlags
    gtk_source_file_saver_get_flags (GtkSourceFileSaver *saver);

#### Parameters

saver | a GtkSourceFileSaver. |

#### Returns

the flags.

Since: 3.14

### gtk_source_file_saver_save_async ()

    void
    gtk_source_file_saver_save_async (GtkSourceFileSaver *saver,
                                      gint io_priority,
                                      GCancellable *cancellable,
                                      GFileProgressCallback progress_callback,
                                      gpointer progress_callback_data,
                                      GDestroyNotify progress_callback_notify,
                                      GAsyncReadyCallback callback,
                                      gpointer user_data);

Saves asynchronously the buffer into the file. See the GAsyncResult documentation to know how to use this function.

#### Parameters

saver | a GtkSourceFileSaver. |
io_priority | the I/O priority of the request. E.g. `G_PRIORITY_LOW`, `G_PRIORITY_DEFAULT` or `G_PRIORITY_HIGH`. |
cancellable | optional GCancellable object, `NULL` to ignore. | [nullable]
progress_callback | function to call back with progress information, or `NULL` if progress information is not needed. | [scope notified][nullable]
progress_callback_data | user data to pass to `progress_callback` . | [closure]
progress_callback_notify | function to call on `progress_callback_data` when the `progress_callback` is no longer needed, or `NULL`. | [nullable]
callback | a GAsyncReadyCallback to call when the request is satisfied. | [scope async]
user_data | user data to pass to `callback` . |

Since: 3.14

### gtk_source_file_saver_save_finish ()

    gboolean
    gtk_source_file_saver_save_finish (GtkSourceFileSaver *saver,
                                       GAsyncResult *result,
                                       GError **error);

Finishes a file saving started with `gtk_source_file_saver_save_async()`.

If the file has been saved successfully, the following GtkSourceFile properties will be updated: the location, the encoding, the newline type and the compression type.

Since the 3.20 version, `gtk_text_buffer_set_modified()` is called with `FALSE` if the file has been saved successfully.

#### Parameters

saver | a GtkSourceFileSaver. |
result | a GAsyncResult. |
error | a GError, or `NULL`. |

#### Returns

whether the file was saved successfully.

Since: 3.14

## Types and Values

### GtkSourceFileSaver

    typedef struct _GtkSourceFileSaver GtkSourceFileSaver;

### GTK_SOURCE_FILE_SAVER_ERROR

    #define GTK_SOURCE_FILE_SAVER_ERROR gtk_source_file_saver_error_quark ()

### enum GtkSourceFileSaverError

An error code used with the `GTK_SOURCE_FILE_SAVER_ERROR` domain.

#### Members

GTK_SOURCE_FILE_SAVER_ERROR_INVALID_CHARS | The buffer contains invalid characters. |
GTK_SOURCE_FILE_SAVER_ERROR_EXTERNALLY_MODIFIED | The file is externally modified. |

Since: 3.14

### enum GtkSourceFileSaverFlags

Flags to define the behavior of a GtkSourceFileSaver.

#### Members

GTK_SOURCE_FILE_SAVER_FLAGS_NONE | No flags. |
GTK_SOURCE_FILE_SAVER_FLAGS_IGNORE_INVALID_CHARS | Ignore invalid characters. |
GTK_SOURCE_FILE_SAVER_FLAGS_IGNORE_MODIFICATION_TIME | Save file despite external modifications. |
GTK_SOURCE_FILE_SAVER_FLAGS_CREATE_BACKUP | Create a backup before saving the file. |

Since: 3.14

## Property Details

### The `“buffer”` property

      “buffer”                   GtkSourceBuffer *

The GtkSourceBuffer to save. The GtkSourceFileSaver object has a weak reference to the buffer.

Flags: Read / Write / Construct Only

Since: 3.14

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

      “compression-type”         GtkSourceCompressionType

The compression type.

Flags: Read / Write / Construct

Default value: GTK_SOURCE_COMPRESSION_TYPE_NONE

Since: 3.14

### The `“encoding”` property

      “encoding”                 GtkSourceEncoding *

The file's encoding.

Flags: Read / Write / Construct

Since: 3.14

### The `“file”` property

      “file”                     GtkSourceFile *

The GtkSourceFile. The GtkSourceFileSaver object has a weak reference to the file.

Flags: Read / Write / Construct Only

Since: 3.14

### The `“flags”` property

      “flags”                    GtkSourceFileSaverFlags

File saving flags.

Flags: Read / Write / Construct

Since: 3.14

### The `“location”` property

      “location”                 GFile *

The GFile where to save the buffer. By default the location is taken from the GtkSourceFile at construction time.

Flags: Read / Write / Construct Only

Since: 3.14

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

      “newline-type”             GtkSourceNewlineType

The newline type.

Flags: Read / Write / Construct

Default value: GTK_SOURCE_NEWLINE_TYPE_LF

Since: 3.14

## See Also

GtkSourceFile, GtkSourceFileLoader