[gedit/docstream2: 4/16] Add newline-type property, getter and setter.
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gedit/docstream2: 4/16] Add newline-type property, getter and setter.
- Date: Sat, 23 Jan 2010 13:30:30 +0000 (UTC)
commit 7dfea209c643fc89b02ff1f9abe908eb549618d1
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Thu Jan 21 16:37:22 2010 +0100
Add newline-type property, getter and setter.
gedit/gedit-document.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++-
gedit/gedit-document.h | 6 +++++
2 files changed, 62 insertions(+), 1 deletions(-)
---
diff --git a/gedit/gedit-document.c b/gedit/gedit-document.c
index d7d09be..51a1cad 100644
--- a/gedit/gedit-document.c
+++ b/gedit/gedit-document.c
@@ -118,6 +118,8 @@ struct _GeditDocumentPrivate
gchar *search_text;
gint num_of_lines_search_text;
+ GeditDocumentNewlineType newline_type;
+
/* Temp data while loading */
GeditDocumentLoader *loader;
gboolean create; /* Create file if uri points
@@ -153,7 +155,8 @@ enum {
PROP_READ_ONLY,
PROP_ENCODING,
PROP_CAN_SEARCH_AGAIN,
- PROP_ENABLE_SEARCH_HIGHLIGHTING
+ PROP_ENABLE_SEARCH_HIGHLIGHTING,
+ PROP_NEWLINE_TYPE
};
enum {
@@ -342,6 +345,9 @@ gedit_document_get_property (GObject *object,
case PROP_ENABLE_SEARCH_HIGHLIGHTING:
g_value_set_boolean (value, gedit_document_get_enable_search_highlighting (doc));
break;
+ case PROP_NEWLINE_TYPE:
+ g_value_set_enum (value, doc->priv->newline_type);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -361,6 +367,11 @@ gedit_document_set_property (GObject *object,
case PROP_ENABLE_SEARCH_HIGHLIGHTING:
gedit_document_set_enable_search_highlighting (doc,
g_value_get_boolean (value));
+ break;
+ case PROP_NEWLINE_TYPE:
+ gedit_document_set_newline_type (doc,
+ g_value_get_enum (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -485,6 +496,22 @@ gedit_document_class_init (GeditDocumentClass *klass)
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
+ /**
+ * GeditDocument:newline-type:
+ *
+ * The :newline-type property determines what is considered
+ * as a line ending when saving the document
+ */
+ g_object_class_install_property (object_class, PROP_NEWLINE_TYPE,
+ g_param_spec_enum ("newline-type",
+ "Newline type",
+ "The accepted types of line ending",
+ GEDIT_TYPE_DOCUMENT_NEWLINE_TYPE,
+ GEDIT_DOCUMENT_NEWLINE_TYPE_LF,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_BLURB));
+
/* This signal is used to update the cursor position is the statusbar,
* it's emitted either when the insert mark is moved explicitely or
* when the buffer changes (insert/delete).
@@ -803,6 +830,12 @@ gedit_document_init (GeditDocument *doc)
doc->priv->encoding = gedit_encoding_get_utf8 ();
+#ifdef G_OS_WIN32
+ doc->priv->newline_type = GEDIT_DOCUMENT_NEWLINE_TYPE_CR_LF;
+#else
+ doc->priv->newline_type = GEDIT_DOCUMENT_NEWLINE_TYPE_LF;
+#endif
+
gtk_source_buffer_set_max_undo_levels (GTK_SOURCE_BUFFER (doc),
gedit_prefs_manager_get_undo_actions_limit ());
@@ -2406,6 +2439,28 @@ gedit_document_get_enable_search_highlighting (GeditDocument *doc)
}
void
+gedit_document_set_newline_type (GeditDocument *doc,
+ GeditDocumentNewlineType newline_type)
+{
+ g_return_if_fail (GEDIT_IS_DOCUMENT (doc));
+
+ if (doc->priv->newline_type != newline_type)
+ {
+ doc->priv->newline_type = newline_type;
+
+ g_object_notify (G_OBJECT (doc), "newline-type");
+ }
+}
+
+GeditDocumentNewlineType
+gedit_document_get_newline_type (GeditDocument *doc)
+{
+ g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), 0);
+
+ return doc->priv->newline_type;
+}
+
+void
_gedit_document_set_mount_operation_factory (GeditDocument *doc,
GeditMountOperationFactory callback,
gpointer userdata)
diff --git a/gedit/gedit-document.h b/gedit/gedit-document.h
index 6d29fea..90f277b 100644
--- a/gedit/gedit-document.h
+++ b/gedit/gedit-document.h
@@ -264,6 +264,12 @@ void gedit_document_set_enable_search_highlighting
gboolean gedit_document_get_enable_search_highlighting
(GeditDocument *doc);
+void gedit_document_set_newline_type (GeditDocument *doc,
+ GeditDocumentNewlineType newline_type);
+
+GeditDocumentNewlineType
+ gedit_document_get_newline_type (GeditDocument *doc);
+
gchar *gedit_document_get_metadata (GeditDocument *doc,
const gchar *key);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]