[gedit/docstream2: 4/16] Add newline-type property, getter and setter.



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]