[gtksourceview/wip/loader-saver: 13/19] FileSaver: flags instead of boolean properties
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/loader-saver: 13/19] FileSaver: flags instead of boolean properties
- Date: Fri, 27 Jun 2014 21:56:36 +0000 (UTC)
commit abef1e692732decfd676b26bf1d0112b4fd92893
Author: Sébastien Wilmet <swilmet gnome org>
Date: Tue Jun 10 23:13:03 2014 +0200
FileSaver: flags instead of boolean properties
docs/reference/gtksourceview-3.0-sections.txt | 7 +-
gtksourceview/gtksourcefilesaver.c | 140 +++++++------------------
gtksourceview/gtksourcefilesaver.h | 34 ++++--
3 files changed, 63 insertions(+), 118 deletions(-)
---
diff --git a/docs/reference/gtksourceview-3.0-sections.txt b/docs/reference/gtksourceview-3.0-sections.txt
index 74ac019..0a00f9d 100644
--- a/docs/reference/gtksourceview-3.0-sections.txt
+++ b/docs/reference/gtksourceview-3.0-sections.txt
@@ -292,6 +292,7 @@ gtk_source_file_loader_error_quark
GtkSourceFileSaver
GTK_SOURCE_FILE_SAVER_ERROR
GtkSourceFileSaverError
+GtkSourceFileSaverFlags
<SUBSECTION>
gtk_source_file_saver_new
gtk_source_file_saver_get_file
@@ -302,10 +303,8 @@ gtk_source_file_saver_set_newline_type
gtk_source_file_saver_get_newline_type
gtk_source_file_saver_set_compression_type
gtk_source_file_saver_get_compression_type
-gtk_source_file_saver_set_create_backup
-gtk_source_file_saver_get_create_backup
-gtk_source_file_saver_set_ignore_invalid_chars
-gtk_source_file_saver_get_ignore_invalid_chars
+gtk_source_file_saver_set_flags
+gtk_source_file_saver_get_flags
gtk_source_file_saver_save_async
gtk_source_file_saver_save_finish
<SUBSECTION Standard>
diff --git a/gtksourceview/gtksourcefilesaver.c b/gtksourceview/gtksourcefilesaver.c
index ae62da8..b983152 100644
--- a/gtksourceview/gtksourcefilesaver.c
+++ b/gtksourceview/gtksourcefilesaver.c
@@ -64,8 +64,7 @@ enum
PROP_ENCODING,
PROP_NEWLINE_TYPE,
PROP_COMPRESSION_TYPE,
- PROP_CREATE_BACKUP,
- PROP_IGNORE_INVALID_CHARS
+ PROP_FLAGS
};
struct _GtkSourceFileSaverPrivate
@@ -81,6 +80,7 @@ struct _GtkSourceFileSaverPrivate
const GtkSourceEncoding *encoding;
GtkSourceNewlineType newline_type;
GtkSourceCompressionType compression_type;
+ GtkSourceFileSaverFlags flags;
GTask *task;
@@ -110,8 +110,6 @@ struct _GtkSourceFileSaverPrivate
GFileInfo *info;
- guint create_backup : 1;
- guint ignore_invalid_chars : 1;
guint tried_mount : 1;
};
@@ -155,12 +153,8 @@ gtk_source_file_saver_set_property (GObject *object,
gtk_source_file_saver_set_compression_type (saver, g_value_get_enum (value));
break;
- case PROP_CREATE_BACKUP:
- gtk_source_file_saver_set_create_backup (saver, g_value_get_boolean (value));
- break;
-
- case PROP_IGNORE_INVALID_CHARS:
- gtk_source_file_saver_set_ignore_invalid_chars (saver, g_value_get_boolean (value));
+ case PROP_FLAGS:
+ gtk_source_file_saver_set_flags (saver, g_value_get_flags (value));
break;
default:
@@ -199,12 +193,8 @@ gtk_source_file_saver_get_property (GObject *object,
g_value_set_enum (value, saver->priv->compression_type);
break;
- case PROP_CREATE_BACKUP:
- g_value_set_boolean (value, saver->priv->create_backup);
- break;
-
- case PROP_IGNORE_INVALID_CHARS:
- g_value_set_boolean (value, saver->priv->ignore_invalid_chars);
+ case PROP_FLAGS:
+ g_value_set_flags (value, saver->priv->flags);
break;
default:
@@ -366,40 +356,22 @@ gtk_source_file_saver_class_init (GtkSourceFileSaverClass *klass)
G_PARAM_STATIC_STRINGS));
/**
- * GtkSourceFileSaver:create-backup:
- *
- * Create a backup before saving the file.
- *
- * Since: 3.14
- */
- g_object_class_install_property (object_class,
- PROP_CREATE_BACKUP,
- g_param_spec_boolean ("create-backup",
- _("Create backup"),
- "",
- FALSE,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT |
- G_PARAM_STATIC_STRINGS));
-
- /**
- * GtkSourceFileSaver:ignore-invalid-chars:
+ * GtkSourceFileSaver:flags:
*
- * Whether to ignore invalid characters. If this property is %FALSE and
- * if the buffer contains invalid characters, an error will be returned
- * when attempting to save the file.
+ * File saving flags.
*
* Since: 3.14
*/
g_object_class_install_property (object_class,
- PROP_IGNORE_INVALID_CHARS,
- g_param_spec_boolean ("ignore-invalid-chars",
- _("Ignore invalid characters"),
- "",
- FALSE,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT |
- G_PARAM_STATIC_STRINGS));
+ PROP_FLAGS,
+ g_param_spec_flags ("flags",
+ _("Flags"),
+ "",
+ GTK_SOURCE_TYPE_FILE_SAVER_FLAGS,
+ GTK_SOURCE_FILE_SAVER_FLAGS_NONE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS));
}
static void
@@ -776,14 +748,16 @@ replace_file_cb (GFile *file,
static void
begin_write (GtkSourceFileSaver *saver)
{
+ gboolean create_backup = (saver->priv->flags & GTK_SOURCE_FILE_SAVER_FLAGS_CREATE_BACKUP) != 0;
+
DEBUG ({
g_print ("Start replacing file contents\n");
- g_print ("Make backup: %s\n", make_backup ? "yes" : "no");
+ g_print ("Make backup: %s\n", create_backup ? "yes" : "no");
});
g_file_replace_async (saver->priv->location,
NULL,
- saver->priv->create_backup,
+ create_backup,
G_FILE_CREATE_NONE,
g_task_get_priority (saver->priv->task),
g_task_get_cancellable (saver->priv->task),
@@ -1113,79 +1087,39 @@ gtk_source_file_saver_get_compression_type (GtkSourceFileSaver *saver)
}
/**
- * gtk_source_file_saver_set_create_backup:
- * @saver: a #GtkSourceFileSaver.
- * @create_backup: whether to create a backup before saving the file.
- *
- * Since: 3.14
- */
-void
-gtk_source_file_saver_set_create_backup (GtkSourceFileSaver *saver,
- gboolean create_backup)
-{
- g_return_if_fail (GTK_SOURCE_IS_FILE_SAVER (saver));
- g_return_if_fail (saver->priv->task == NULL);
-
- create_backup = create_backup != FALSE;
-
- if (saver->priv->create_backup != create_backup)
- {
- saver->priv->create_backup = create_backup;
- g_object_notify (G_OBJECT (saver), "create-backup");
- }
-}
-
-/**
- * gtk_source_file_saver_get_create_backup:
+ * gtk_source_file_saver_set_flags:
* @saver: a #GtkSourceFileSaver.
- *
- * Returns: whether to create a backup before saving the file.
- * Since: 3.14
- */
-gboolean
-gtk_source_file_saver_get_create_backup (GtkSourceFileSaver *saver)
-{
- g_return_val_if_fail (GTK_SOURCE_IS_FILE_SAVER (saver), FALSE);
-
- return saver->priv->create_backup;
-}
-
-/**
- * gtk_source_file_saver_set_ignore_invalid_chars:
- * @saver: a #GtkSourceFileSaver.
- * @ignore_invalid_chars: whether to ignore invalid characters.
+ * @flags: the new flags.
*
* Since: 3.14
*/
void
-gtk_source_file_saver_set_ignore_invalid_chars (GtkSourceFileSaver *saver,
- gboolean ignore_invalid_chars)
+gtk_source_file_saver_set_flags (GtkSourceFileSaver *saver,
+ GtkSourceFileSaverFlags flags)
{
g_return_if_fail (GTK_SOURCE_IS_FILE_SAVER (saver));
g_return_if_fail (saver->priv->task == NULL);
- ignore_invalid_chars = ignore_invalid_chars != FALSE;
-
- if (saver->priv->ignore_invalid_chars != ignore_invalid_chars)
+ if (saver->priv->flags != flags)
{
- saver->priv->ignore_invalid_chars = ignore_invalid_chars;
- g_object_notify (G_OBJECT (saver), "ignore-invalid-chars");
+ saver->priv->flags = flags;
+ g_object_notify (G_OBJECT (saver), "flags");
}
}
/**
- * gtk_source_file_saver_get_ignore_invalid_chars:
+ * gtk_source_file_saver_get_flags:
* @saver: a #GtkSourceFileSaver.
*
- * Returns: whether to ignore invalid characters.
+ * Returns: the flags.
* Since: 3.14
*/
-gboolean
-gtk_source_file_saver_get_ignore_invalid_chars (GtkSourceFileSaver *saver)
+GtkSourceFileSaverFlags
+gtk_source_file_saver_get_flags (GtkSourceFileSaver *saver)
{
- g_return_val_if_fail (GTK_SOURCE_IS_FILE_SAVER (saver), FALSE);
+ g_return_val_if_fail (GTK_SOURCE_IS_FILE_SAVER (saver), GTK_SOURCE_FILE_SAVER_FLAGS_NONE);
- return saver->priv->ignore_invalid_chars;
+ return saver->priv->flags;
}
/**
@@ -1216,6 +1150,7 @@ gtk_source_file_saver_save_async (GtkSourceFileSaver *saver,
gpointer user_data)
{
GtkSourceBuffer *buffer;
+ gboolean check_invalid_chars;
gboolean implicit_trailing_newline;
g_return_if_fail (GTK_SOURCE_IS_FILE_SAVER (saver));
@@ -1241,8 +1176,9 @@ gtk_source_file_saver_save_async (GtkSourceFileSaver *saver,
saver->priv->progress_cb = progress_callback;
saver->priv->progress_cb_data = progress_callback_data;
- if (!saver->priv->ignore_invalid_chars &&
- _gtk_source_buffer_has_invalid_chars (buffer))
+ check_invalid_chars = (saver->priv->flags & GTK_SOURCE_FILE_SAVER_FLAGS_IGNORE_INVALID_CHARS) == 0;
+
+ if (check_invalid_chars && _gtk_source_buffer_has_invalid_chars (buffer))
{
g_task_return_new_error (saver->priv->task,
GTK_SOURCE_FILE_SAVER_ERROR,
diff --git a/gtksourceview/gtksourcefilesaver.h b/gtksourceview/gtksourcefilesaver.h
index c5afb78..00b59e0 100644
--- a/gtksourceview/gtksourcefilesaver.h
+++ b/gtksourceview/gtksourcefilesaver.h
@@ -51,6 +51,7 @@ typedef struct _GtkSourceFileSaverPrivate GtkSourceFileSaverPrivate;
* modified.
*
* An error code used with the %GTK_SOURCE_FILE_SAVER_ERROR domain.
+ * Since: 3.14
*/
typedef enum
{
@@ -58,6 +59,24 @@ typedef enum
GTK_SOURCE_FILE_SAVER_ERROR_EXTERNALLY_MODIFIED
} GtkSourceFileSaverError;
+/**
+ * GtkSourceFileSaverFlags:
+ * @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.
+ *
+ * Flags to define the behavior of a #GtkSourceFileSaver.
+ * Since: 3.14
+ */
+typedef enum
+{
+ GTK_SOURCE_FILE_SAVER_FLAGS_NONE = 0,
+ GTK_SOURCE_FILE_SAVER_FLAGS_IGNORE_INVALID_CHARS = 1 << 0,
+ GTK_SOURCE_FILE_SAVER_FLAGS_IGNORE_MODIFICATION_TIME = 1 << 1,
+ GTK_SOURCE_FILE_SAVER_FLAGS_CREATE_BACKUP = 1 << 2
+} GtkSourceFileSaverFlags;
+
struct _GtkSourceFileSaver
{
GObject object;
@@ -98,19 +117,10 @@ void gtk_source_file_saver_set_compression_type
GtkSourceCompressionType gtk_source_file_saver_get_compression_type
(GtkSourceFileSaver *saver);
-void gtk_source_file_saver_set_create_backup
- (GtkSourceFileSaver *saver,
- gboolean create_backup);
-
-gboolean gtk_source_file_saver_get_create_backup
- (GtkSourceFileSaver *saver);
+void gtk_source_file_saver_set_flags (GtkSourceFileSaver *saver,
+ GtkSourceFileSaverFlags flags);
-void gtk_source_file_saver_set_ignore_invalid_chars
- (GtkSourceFileSaver *saver,
- gboolean
ignore_invalid_chars);
-
-gboolean gtk_source_file_saver_get_ignore_invalid_chars
- (GtkSourceFileSaver *saver);
+GtkSourceFileSaverFlags gtk_source_file_saver_get_flags (GtkSourceFileSaver *saver);
void gtk_source_file_saver_save_async (GtkSourceFileSaver *saver,
gint io_priority,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]