diff options
Diffstat (limited to 'saedit/buffer.c')
-rw-r--r-- | saedit/buffer.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/saedit/buffer.c b/saedit/buffer.c new file mode 100644 index 0000000..5c51bcc --- /dev/null +++ b/saedit/buffer.c @@ -0,0 +1,87 @@ +#include <gtksourceview/gtksource.h> +#include "main.h" +#include "buffer.h" + +gchar * +buffer_get_text () { + GtkTextIter start, end; + GtkTextBuffer *buffer = + GTK_TEXT_BUFFER (gtk_text_view_get_buffer ( + GTK_TEXT_VIEW (source_view) + )); + + gtk_text_buffer_get_start_iter (buffer, &start); + gtk_text_buffer_get_end_iter (buffer, &end); + + return gtk_text_buffer_get_text (buffer, &start, &end, TRUE); +} + +void +buffer_set_text ( + const gchar *text, + const guint len +) { + GtkTextBuffer *buffer = + GTK_TEXT_BUFFER (gtk_text_view_get_buffer ( + GTK_TEXT_VIEW (source_view) + )); + + gtk_text_buffer_set_text (buffer, text, len); +} + +void +buffer_mark_line (gint line_no) { + GtkTextIter iter, end; + GtkSourceBuffer *buffer = GTK_SOURCE_BUFFER ( + gtk_text_view_get_buffer (GTK_TEXT_VIEW (source_view)) + ); + + gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &iter); + gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (buffer), &end); + + gtk_source_buffer_remove_source_marks ( + buffer, + &iter, + &end, + "active-line" + ); + + if (line_no == -1) + return; + + gtk_text_iter_set_line (&iter, line_no); + gtk_text_view_scroll_to_mark ( + GTK_TEXT_VIEW (source_view), + (GtkTextMark *) gtk_source_buffer_create_source_mark ( + buffer, + NULL, + "active-line", + &iter + ), + 0.0, + TRUE, + 0.0, + 0.5 + ); +} + + +void +buffer_set_modified (gboolean modified) { + GtkTextBuffer *buffer = + GTK_TEXT_BUFFER (gtk_text_view_get_buffer ( + GTK_TEXT_VIEW (source_view) + )); + + gtk_text_buffer_set_modified (buffer, modified); +} + +gboolean +buffer_get_modified () { + GtkTextBuffer *buffer = + GTK_TEXT_BUFFER (gtk_text_view_get_buffer ( + GTK_TEXT_VIEW (source_view) + )); + + return gtk_text_buffer_get_modified (buffer); +} |