X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtktextbuffer.h;h=6d9d3b8774c93fee4c3eb7891c9be29d67b5da53;hb=3d737ee8bae66d3395ff7975fafea99f87f1ed40;hp=b68b98ea8f06ab12a9bc4a171cfe4e3af898d4aa;hpb=e405f75c2b904698f71280348687254b91d8ff47;p=~andy%2Fgtk diff --git a/gtk/gtktextbuffer.h b/gtk/gtktextbuffer.h index b68b98ea8..6d9d3b877 100644 --- a/gtk/gtktextbuffer.h +++ b/gtk/gtktextbuffer.h @@ -28,6 +28,7 @@ #define GTK_TEXT_BUFFER_H #include +#include #include #include #include @@ -62,9 +63,12 @@ struct _GtkTextBuffer GtkTextTagTable *tag_table; GtkTextBTree *btree; - GtkTextBuffer *clipboard_contents; + GSList *clipboard_contents_buffers; + GSList *selection_clipboards; GtkTextLogAttrCache *log_attr_cache; + + guint user_action_count; /* Whether the buffer has been modified since last save */ guint modified : 1; @@ -77,14 +81,19 @@ struct _GtkTextBufferClass void (* insert_text) (GtkTextBuffer *buffer, GtkTextIter *pos, const gchar *text, - gint length, - gboolean interactive); + gint length); + void (* insert_pixbuf) (GtkTextBuffer *buffer, + GtkTextIter *pos, + GdkPixbuf *pixbuf); - void (* delete_text) (GtkTextBuffer *buffer, - GtkTextIter *start, - GtkTextIter *end, - gboolean interactive); + void (* insert_child_anchor) (GtkTextBuffer *buffer, + GtkTextIter *pos, + GtkTextChildAnchor *anchor); + + void (* delete_range) (GtkTextBuffer *buffer, + GtkTextIter *start, + GtkTextIter *end); /* Only for text/widgets/pixbuf changed, marks/tags don't cause this * to be emitted @@ -113,6 +122,17 @@ struct _GtkTextBufferClass const GtkTextIter *start_char, const GtkTextIter *end_char); + /* 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; @@ -177,14 +197,16 @@ void gtk_text_buffer_insert_with_tags_by_name (GtkTextBuffer *buffer, /* 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, @@ -202,7 +224,12 @@ 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); @@ -228,40 +255,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, @@ -276,7 +311,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, @@ -298,17 +335,23 @@ 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); +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, @@ -317,7 +360,11 @@ gboolean gtk_text_buffer_get_selection_bounds (GtkTextBuffer *buffer, gboolean gtk_text_buffer_delete_selection (GtkTextBuffer *buffer, gboolean interactive, 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); + /* INTERNAL private stuff */ void _gtk_text_buffer_spew (GtkTextBuffer *buffer); @@ -327,6 +374,9 @@ const PangoLogAttr* _gtk_text_buffer_get_line_log_attrs (GtkTextBuffer *buff const GtkTextIter *anywhere_in_line, gint *char_len); +void _gtk_text_buffer_notify_will_remove_tag (GtkTextBuffer *buffer, + GtkTextTag *tag); + #ifdef __cplusplus } #endif /* __cplusplus */