[gtksourceview/wip/loader-saver] FileSaver: main-file boolean property
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/loader-saver] FileSaver: main-file boolean property
- Date: Wed, 2 Apr 2014 19:14:08 +0000 (UTC)
commit fe5bdf7cda6c79b28e07da9cd35f3efbe53e291d
Author: Sébastien Wilmet <swilmet gnome org>
Date: Wed Apr 2 21:07:17 2014 +0200
FileSaver: main-file boolean property
docs/reference/gtksourceview-3.0-sections.txt | 2 +
gtksourceview/gtksourcefilesaver.c | 94 +++++++++++++++++++++++++
gtksourceview/gtksourcefilesaver.h | 5 ++
3 files changed, 101 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gtksourceview-3.0-sections.txt b/docs/reference/gtksourceview-3.0-sections.txt
index 7e5e75f..cfedbe8 100644
--- a/docs/reference/gtksourceview-3.0-sections.txt
+++ b/docs/reference/gtksourceview-3.0-sections.txt
@@ -272,6 +272,8 @@ GtkSourceFileSaver
gtk_source_file_saver_new
gtk_source_file_saver_get_buffer
gtk_source_file_saver_get_file
+gtk_source_file_saver_set_main_file
+gtk_source_file_saver_get_main_file
gtk_source_file_saver_set_encoding
gtk_source_file_saver_get_encoding
gtk_source_file_saver_set_newline_type
diff --git a/gtksourceview/gtksourcefilesaver.c b/gtksourceview/gtksourcefilesaver.c
index 70e06c0..9155be8 100644
--- a/gtksourceview/gtksourcefilesaver.c
+++ b/gtksourceview/gtksourcefilesaver.c
@@ -25,6 +25,7 @@
#include "gtksourcefilesaver.h"
#include "gtksourcebufferinputstream.h"
#include "gtksourceencoding.h"
+#include "gtksourcebuffer-private.h"
#include "gtksourceview-typebuiltins.h"
#include "gtksourceview-i18n.h"
@@ -59,6 +60,7 @@ enum
PROP_0,
PROP_BUFFER,
PROP_FILE,
+ PROP_MAIN_FILE,
PROP_ENCODING,
PROP_NEWLINE_TYPE,
PROP_COMPRESSION_TYPE,
@@ -110,6 +112,7 @@ struct _GtkSourceFileSaverPrivate
GFileInfo *info;
+ guint main_file : 1;
guint create_backup : 1;
guint tried_mount : 1;
};
@@ -142,6 +145,10 @@ gtk_source_file_saver_set_property (GObject *object,
saver->priv->file = g_value_dup_object (value);
break;
+ case PROP_MAIN_FILE:
+ gtk_source_file_saver_set_main_file (saver, g_value_get_boolean (value));
+ break;
+
case PROP_ENCODING:
gtk_source_file_saver_set_encoding (saver, g_value_get_boxed (value));
break;
@@ -182,6 +189,10 @@ gtk_source_file_saver_get_property (GObject *object,
g_value_set_object (value, saver->priv->file);
break;
+ case PROP_MAIN_FILE:
+ g_value_set_boolean (value, saver->priv->main_file);
+ break;
+
case PROP_ENCODING:
g_value_set_boxed (value, saver->priv->encoding);
break;
@@ -303,6 +314,24 @@ gtk_source_file_saver_class_init (GtkSourceFileSaverClass *klass)
G_PARAM_STATIC_STRINGS));
/**
+ * GtkSourceFileSaver:main-file:
+ *
+ * Whether the #GtkSourceFileSaver:file is the main file of the
+ * #GtkSourceFileSaver:buffer.
+ *
+ * Since: 3.14
+ */
+ g_object_class_install_property (object_class,
+ PROP_MAIN_FILE,
+ g_param_spec_boolean ("main-file",
+ _("Main file"),
+ "",
+ TRUE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
* GtkSourceFileSaver:encoding:
*
* The file's encoding.
@@ -869,6 +898,51 @@ gtk_source_file_saver_get_file (GtkSourceFileSaver *saver)
}
/**
+ * gtk_source_file_saver_set_main_file:
+ * @saver: a #GtkSourceFileSaver.
+ * @main_file: whether the file is the main file of the buffer.
+ *
+ * Sets whether the #GtkSourceFileSaver:file is the main file of the
+ * #GtkSourceFileSaver:buffer. If so, the following buffer properties will be
+ * updated on a successful save: the file, the encoding, the newline type and
+ * the compression type.
+ *
+ * If @main_file is %FALSE, it means that you are saving the buffer to a
+ * secondary file, and therefore the buffer properties will not be affected.
+ *
+ * Since: 3.14
+ */
+void
+gtk_source_file_saver_set_main_file (GtkSourceFileSaver *saver,
+ gboolean main_file)
+{
+ g_return_if_fail (GTK_SOURCE_IS_FILE_SAVER (saver));
+
+ main_file = main_file != FALSE;
+
+ if (saver->priv->main_file != main_file)
+ {
+ saver->priv->main_file = main_file;
+ g_object_notify (G_OBJECT (saver), "main-file");
+ }
+}
+
+/**
+ * gtk_source_file_saver_get_main_file:
+ * @saver: a #GtkSourceFileSaver.
+ *
+ * Returns: whether the file is the main file of the buffer.
+ * Since: 3.14
+ */
+gboolean
+gtk_source_file_saver_get_main_file (GtkSourceFileSaver *saver)
+{
+ g_return_val_if_fail (GTK_SOURCE_IS_FILE_SAVER (saver), TRUE);
+
+ return saver->priv->main_file;
+}
+
+/**
* gtk_source_file_saver_set_encoding:
* @saver: a #GtkSourceFileSaver.
* @encoding: (allow-none): the new encoding, or %NULL for UTF-8.
@@ -1098,6 +1172,11 @@ gtk_source_file_saver_save_async (GtkSourceFileSaver *saver,
*
* Finishes a file saving started with gtk_source_file_saver_save_async().
*
+ * If the file has been saved successfully, and if the
+ * #GtkSourceFileSaver:main-file property is %TRUE, the following
+ * #GtkSourceBuffer properties will be updated: the file, the encoding, the
+ * newline type and the compression type.
+ *
* Returns: whether the file was saved successfully.
* Since: 3.14
*/
@@ -1114,6 +1193,21 @@ gtk_source_file_saver_save_finish (GtkSourceFileSaver *saver,
ok = g_task_propagate_boolean (G_TASK (result), error);
+ if (ok && saver->priv->main_file && saver->priv->source_buffer != NULL)
+ {
+ _gtk_source_buffer_set_file (saver->priv->source_buffer,
+ saver->priv->file);
+
+ _gtk_source_buffer_set_encoding (saver->priv->source_buffer,
+ saver->priv->encoding);
+
+ _gtk_source_buffer_set_newline_type (saver->priv->source_buffer,
+ saver->priv->newline_type);
+
+ _gtk_source_buffer_set_compression_type (saver->priv->source_buffer,
+ saver->priv->compression_type);
+ }
+
reset (saver);
return ok;
diff --git a/gtksourceview/gtksourcefilesaver.h b/gtksourceview/gtksourcefilesaver.h
index d2e988d..fbb5d27 100644
--- a/gtksourceview/gtksourcefilesaver.h
+++ b/gtksourceview/gtksourcefilesaver.h
@@ -62,6 +62,11 @@ GtkSourceBuffer *gtk_source_file_saver_get_buffer (GtkSourceFileSaver
*sa
GFile *gtk_source_file_saver_get_file (GtkSourceFileSaver *saver);
+void gtk_source_file_saver_set_main_file (GtkSourceFileSaver *saver,
+ gboolean main_file);
+
+gboolean gtk_source_file_saver_get_main_file (GtkSourceFileSaver *saver);
+
void gtk_source_file_saver_set_encoding (GtkSourceFileSaver *saver,
const GtkSourceEncoding *encoding);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]