X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtktextbuffer.h;h=793b7635ac639f6115d3ae41b1280392ea70abf5;hb=cb27c4b08c278ac7e8a882b638dbf30acd1436cf;hp=9265103bd2d0678a1c0a8dbf8ebb363cfd86da58;hpb=00a6a1b219cab25dd06e812aea9c8d473fbb0134;p=~andy%2Fgtk diff --git a/gtk/gtktextbuffer.h b/gtk/gtktextbuffer.h index 9265103bd..793b7635a 100644 --- a/gtk/gtktextbuffer.h +++ b/gtk/gtktextbuffer.h @@ -12,9 +12,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ /* @@ -24,27 +22,41 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ -#ifndef GTK_TEXT_BUFFER_H -#define GTK_TEXT_BUFFER_H +#ifndef __GTK_TEXT_BUFFER_H__ +#define __GTK_TEXT_BUFFER_H__ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif #include +#include #include #include #include #include -#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. */ -typedef struct _GtkTextBTree GtkTextBTree; +/* 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 _GtkTextLogAttrCache GtkTextLogAttrCache; +typedef struct _GtkTextBTree GtkTextBTree; #define GTK_TYPE_TEXT_BUFFER (gtk_text_buffer_get_type ()) #define GTK_TEXT_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TEXT_BUFFER, GtkTextBuffer)) @@ -53,23 +65,14 @@ typedef struct _GtkTextLogAttrCache GtkTextLogAttrCache; #define GTK_IS_TEXT_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_BUFFER)) #define GTK_TEXT_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TEXT_BUFFER, GtkTextBufferClass)) +typedef struct _GtkTextBufferPrivate GtkTextBufferPrivate; typedef struct _GtkTextBufferClass GtkTextBufferClass; struct _GtkTextBuffer { GObject parent_instance; - GtkTextTagTable *tag_table; - GtkTextBTree *btree; - - GtkTextBuffer *clipboard_contents; - - GtkTextLogAttrCache *log_attr_cache; - - guint user_action_count; - - /* Whether the buffer has been modified since last save */ - guint modified : 1; + GtkTextBufferPrivate *priv; }; struct _GtkTextBufferClass @@ -78,13 +81,20 @@ struct _GtkTextBufferClass void (* insert_text) (GtkTextBuffer *buffer, GtkTextIter *pos, - const gchar *text, - gint length); + const gchar *new_text, + gint new_text_length); + + void (* insert_pixbuf) (GtkTextBuffer *buffer, + GtkTextIter *iter, + GdkPixbuf *pixbuf); + void (* insert_child_anchor) (GtkTextBuffer *buffer, + GtkTextIter *iter, + GtkTextChildAnchor *anchor); - void (* delete_text) (GtkTextBuffer *buffer, - GtkTextIter *start, - GtkTextIter *end); + void (* delete_range) (GtkTextBuffer *buffer, + GtkTextIter *start, + GtkTextIter *end); /* Only for text/widgets/pixbuf changed, marks/tags don't cause this * to be emitted @@ -105,17 +115,26 @@ struct _GtkTextBufferClass void (* apply_tag) (GtkTextBuffer *buffer, GtkTextTag *tag, - const GtkTextIter *start_char, - const GtkTextIter *end_char); + const GtkTextIter *start, + const GtkTextIter *end); void (* remove_tag) (GtkTextBuffer *buffer, GtkTextTag *tag, - const GtkTextIter *start_char, - const GtkTextIter *end_char); + const GtkTextIter *start, + const 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); + + void (* paste_done) (GtkTextBuffer *buffer, + GtkClipboard *clipboard); + + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); }; GType gtk_text_buffer_get_type (void) G_GNUC_CONST; @@ -169,25 +188,27 @@ void gtk_text_buffer_insert_with_tags (GtkTextBuffer *buffer, 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, @@ -205,11 +226,19 @@ void gtk_text_buffer_insert_pixbuf (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, @@ -231,40 +260,48 @@ void gtk_text_buffer_delete_mark_by_name (GtkTextBuffer *buffer, 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, @@ -279,7 +316,9 @@ void gtk_text_buffer_get_iter_at_offset (GtkTextBuffer *buffer, 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, @@ -301,17 +340,25 @@ void gtk_text_buffer_get_iter_at_child_anchor (GtkTextBuffer *buffer, 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, @@ -319,12 +366,15 @@ 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); @@ -334,8 +384,25 @@ const PangoLogAttr* _gtk_text_buffer_get_line_log_attrs (GtkTextBuffer *buff const GtkTextIter *anywhere_in_line, gint *char_len); -#ifdef __cplusplus -} -#endif /* __cplusplus */ +void _gtk_text_buffer_notify_will_remove_tag (GtkTextBuffer *buffer, + GtkTextTag *tag); + +void _gtk_text_buffer_get_text_before (GtkTextBuffer *buffer, + AtkTextBoundary boundary_type, + GtkTextIter *position, + GtkTextIter *start, + GtkTextIter *end); +void _gtk_text_buffer_get_text_at (GtkTextBuffer *buffer, + AtkTextBoundary boundary_type, + GtkTextIter *position, + GtkTextIter *start, + GtkTextIter *end); +void _gtk_text_buffer_get_text_after (GtkTextBuffer *buffer, + AtkTextBoundary boundary_type, + GtkTextIter *position, + GtkTextIter *start, + GtkTextIter *end); + +G_END_DECLS #endif