-/* GTK - The GIMP Toolkit
+/* GTK - The GTK+ Toolkit
* gtktextbuffer.h Copyright (C) 2000 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
-#ifndef GTK_TEXT_BUFFER_H
-#define GTK_TEXT_BUFFER_H
+#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
+
+#ifndef __GTK_TEXT_BUFFER_H__
+#define __GTK_TEXT_BUFFER_H__
#include <gtk/gtkwidget.h>
+#include <gtk/gtkclipboard.h>
#include <gtk/gtktexttagtable.h>
#include <gtk/gtktextiter.h>
#include <gtk/gtktextmark.h>
#include <gtk/gtktextchild.h>
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+G_BEGIN_DECLS
/*
* This is the PUBLIC representation of a text buffer.
* GtkTextBTree is the PRIVATE internal representation of it.
*/
+/* these values are used as "info" for the targets contained in the
+ * lists returned by gtk_text_buffer_get_copy,paste_target_list()
+ *
+ * the enum counts down from G_MAXUINT to avoid clashes with application
+ * added drag destinations which usually start at 0.
+ */
+typedef enum
+{
+ GTK_TEXT_BUFFER_TARGET_INFO_BUFFER_CONTENTS = - 1,
+ GTK_TEXT_BUFFER_TARGET_INFO_RICH_TEXT = - 2,
+ GTK_TEXT_BUFFER_TARGET_INFO_TEXT = - 3
+} GtkTextBufferTargetInfo;
+
typedef struct _GtkTextBTree GtkTextBTree;
typedef struct _GtkTextLogAttrCache GtkTextLogAttrCache;
{
GObject parent_instance;
- GtkTextTagTable *tag_table;
- GtkTextBTree *btree;
+ GtkTextTagTable *GSEAL (tag_table);
+ GtkTextBTree *GSEAL (btree);
- GtkTextBuffer *clipboard_contents;
+ GSList *GSEAL (clipboard_contents_buffers);
+ GSList *GSEAL (selection_clipboards);
- GtkTextLogAttrCache *log_attr_cache;
+ GtkTextLogAttrCache *GSEAL (log_attr_cache);
+
+ guint GSEAL (user_action_count);
- guint user_action_count;
-
/* Whether the buffer has been modified since last save */
- guint modified : 1;
+ guint GSEAL (modified) : 1;
+
+ guint GSEAL (has_selection) : 1;
};
struct _GtkTextBufferClass
GtkTextIter *pos,
GdkPixbuf *pixbuf);
-#if 0
- /* FIXME To do this, first have to implement the sequence
- * gtk_text_child_anchor_new(); gtk_text_buffer_insert_child_anchor();
- */
- void (* insert_child_anchor) (GtkTextBuffer *buffer,
- GtkTextIter *pos,
+ void (* insert_child_anchor) (GtkTextBuffer *buffer,
+ GtkTextIter *pos,
GtkTextChildAnchor *anchor);
-#endif
-
+
void (* delete_range) (GtkTextBuffer *buffer,
GtkTextIter *start,
GtkTextIter *end);
/* Called at the start and end of an atomic user action */
void (* begin_user_action) (GtkTextBuffer *buffer);
void (* end_user_action) (GtkTextBuffer *buffer);
+
+ /* Padding for future expansion */
+ void (*_gtk_reserved1) (void);
+ void (*_gtk_reserved2) (void);
+ void (*_gtk_reserved3) (void);
+ void (*_gtk_reserved4) (void);
+ void (*_gtk_reserved5) (void);
+ void (*_gtk_reserved6) (void);
};
GType gtk_text_buffer_get_type (void) G_GNUC_CONST;
const gchar *text,
gint len,
GtkTextTag *first_tag,
- ...);
+ ...) G_GNUC_NULL_TERMINATED;
void gtk_text_buffer_insert_with_tags_by_name (GtkTextBuffer *buffer,
GtkTextIter *iter,
const gchar *text,
gint len,
const gchar *first_tag_name,
- ...);
+ ...) G_GNUC_NULL_TERMINATED;
/* Delete from the buffer */
void gtk_text_buffer_delete (GtkTextBuffer *buffer,
- GtkTextIter *start,
- GtkTextIter *end);
+ GtkTextIter *start,
+ GtkTextIter *end);
gboolean gtk_text_buffer_delete_interactive (GtkTextBuffer *buffer,
- GtkTextIter *start_iter,
- GtkTextIter *end_iter,
- gboolean default_editable);
-
-
+ GtkTextIter *start_iter,
+ GtkTextIter *end_iter,
+ gboolean default_editable);
+gboolean gtk_text_buffer_backspace (GtkTextBuffer *buffer,
+ GtkTextIter *iter,
+ gboolean interactive,
+ gboolean default_editable);
/* Obtain strings from the buffer */
gchar *gtk_text_buffer_get_text (GtkTextBuffer *buffer,
GtkTextIter *iter,
GdkPixbuf *pixbuf);
-/* Create a child anchor */
+/* Insert a child anchor */
+void gtk_text_buffer_insert_child_anchor (GtkTextBuffer *buffer,
+ GtkTextIter *iter,
+ GtkTextChildAnchor *anchor);
+
+/* Convenience, create and insert a child anchor */
GtkTextChildAnchor *gtk_text_buffer_create_child_anchor (GtkTextBuffer *buffer,
GtkTextIter *iter);
/* Mark manipulation */
+void gtk_text_buffer_add_mark (GtkTextBuffer *buffer,
+ GtkTextMark *mark,
+ const GtkTextIter *where);
GtkTextMark *gtk_text_buffer_create_mark (GtkTextBuffer *buffer,
const gchar *mark_name,
const GtkTextIter *where,
GtkTextMark* gtk_text_buffer_get_insert (GtkTextBuffer *buffer);
GtkTextMark* gtk_text_buffer_get_selection_bound (GtkTextBuffer *buffer);
-/* efficiently move insert and selection_bound to same location */
+/* efficiently move insert and selection_bound at the same time */
void gtk_text_buffer_place_cursor (GtkTextBuffer *buffer,
const GtkTextIter *where);
+void gtk_text_buffer_select_range (GtkTextBuffer *buffer,
+ const GtkTextIter *ins,
+ const GtkTextIter *bound);
/* Tag manipulation */
void gtk_text_buffer_apply_tag (GtkTextBuffer *buffer,
GtkTextTag *tag,
- const GtkTextIter *start_index,
- const GtkTextIter *end_index);
+ const GtkTextIter *start,
+ const GtkTextIter *end);
void gtk_text_buffer_remove_tag (GtkTextBuffer *buffer,
GtkTextTag *tag,
- const GtkTextIter *start_index,
- const GtkTextIter *end_index);
+ const GtkTextIter *start,
+ const GtkTextIter *end);
void gtk_text_buffer_apply_tag_by_name (GtkTextBuffer *buffer,
const gchar *name,
- const GtkTextIter *start_index,
- const GtkTextIter *end_index);
+ const GtkTextIter *start,
+ const GtkTextIter *end);
void gtk_text_buffer_remove_tag_by_name (GtkTextBuffer *buffer,
const gchar *name,
- const GtkTextIter *start_index,
- const GtkTextIter *end_index);
+ const GtkTextIter *start,
+ const GtkTextIter *end);
+void gtk_text_buffer_remove_all_tags (GtkTextBuffer *buffer,
+ const GtkTextIter *start,
+ const GtkTextIter *end);
/* You can either ignore the return value, or use it to
* set the attributes of the tag. tag_name can be NULL
*/
-/* FIXME this should take a varargs list of tag attributes I think */
GtkTextTag *gtk_text_buffer_create_tag (GtkTextBuffer *buffer,
- const gchar *tag_name);
+ const gchar *tag_name,
+ const gchar *first_property_name,
+ ...);
/* Obtain iterators pointed at various places, then you can move the
- iterator around using the GtkTextIter operators */
+ * iterator around using the GtkTextIter operators
+ */
void gtk_text_buffer_get_iter_at_line_offset (GtkTextBuffer *buffer,
GtkTextIter *iter,
gint line_number,
void gtk_text_buffer_get_iter_at_line (GtkTextBuffer *buffer,
GtkTextIter *iter,
gint line_number);
-void gtk_text_buffer_get_last_iter (GtkTextBuffer *buffer,
+void gtk_text_buffer_get_start_iter (GtkTextBuffer *buffer,
+ GtkTextIter *iter);
+void gtk_text_buffer_get_end_iter (GtkTextBuffer *buffer,
GtkTextIter *iter);
void gtk_text_buffer_get_bounds (GtkTextBuffer *buffer,
GtkTextIter *start,
flag, but if you would like them to you can connect a handler to
the tag/mark signals and call set_modified in your handler */
-gboolean gtk_text_buffer_modified (GtkTextBuffer *buffer);
+gboolean gtk_text_buffer_get_modified (GtkTextBuffer *buffer);
void gtk_text_buffer_set_modified (GtkTextBuffer *buffer,
gboolean setting);
-void gtk_text_buffer_paste_primary (GtkTextBuffer *buffer,
- const GtkTextIter *override_location,
- gboolean default_editable);
+gboolean gtk_text_buffer_get_has_selection (GtkTextBuffer *buffer);
+
+void gtk_text_buffer_add_selection_clipboard (GtkTextBuffer *buffer,
+ GtkClipboard *clipboard);
+void gtk_text_buffer_remove_selection_clipboard (GtkTextBuffer *buffer,
+ GtkClipboard *clipboard);
+
void gtk_text_buffer_cut_clipboard (GtkTextBuffer *buffer,
+ GtkClipboard *clipboard,
gboolean default_editable);
-void gtk_text_buffer_copy_clipboard (GtkTextBuffer *buffer);
+void gtk_text_buffer_copy_clipboard (GtkTextBuffer *buffer,
+ GtkClipboard *clipboard);
void gtk_text_buffer_paste_clipboard (GtkTextBuffer *buffer,
+ GtkClipboard *clipboard,
+ GtkTextIter *override_location,
gboolean default_editable);
gboolean gtk_text_buffer_get_selection_bounds (GtkTextBuffer *buffer,
GtkTextIter *end);
gboolean gtk_text_buffer_delete_selection (GtkTextBuffer *buffer,
gboolean interactive,
- gboolean default_editable);
+ gboolean default_editable);
/* Called to specify atomic user actions, used to implement undo */
void gtk_text_buffer_begin_user_action (GtkTextBuffer *buffer);
void gtk_text_buffer_end_user_action (GtkTextBuffer *buffer);
+GtkTargetList * gtk_text_buffer_get_copy_target_list (GtkTextBuffer *buffer);
+GtkTargetList * gtk_text_buffer_get_paste_target_list (GtkTextBuffer *buffer);
+
/* INTERNAL private stuff */
void _gtk_text_buffer_spew (GtkTextBuffer *buffer);
const GtkTextIter *anywhere_in_line,
gint *char_len);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+void _gtk_text_buffer_notify_will_remove_tag (GtkTextBuffer *buffer,
+ GtkTextTag *tag);
+
+G_END_DECLS
#endif