]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtktextbuffer.h
Adapt to uscore-ification of gtktextiterprivate
[~andy/gtk] / gtk / gtktextbuffer.h
index 54844e14653c9826acd6fe9c24724859209926e9..ae7f7570cee4d965192581330e580344d4676fd1 100644 (file)
@@ -44,39 +44,59 @@ extern "C" {
 
 typedef struct _GtkTextBTree GtkTextBTree;
 
+typedef struct _GtkTextLogAttrCache GtkTextLogAttrCache;
+
 #define GTK_TYPE_TEXT_BUFFER            (gtk_text_buffer_get_type ())
-#define GTK_TEXT_BUFFER(obj)            (GTK_CHECK_CAST ((obj), GTK_TYPE_TEXT_BUFFER, GtkTextBuffer))
-#define GTK_TEXT_BUFFER_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_BUFFER, GtkTextBufferClass))
-#define GTK_IS_TEXT_BUFFER(obj)         (GTK_CHECK_TYPE ((obj), GTK_TYPE_TEXT_BUFFER))
-#define GTK_IS_TEXT_BUFFER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_BUFFER))
-#define GTK_TEXT_BUFFER_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TEXT_BUFFER, GtkTextBufferClass))
+#define GTK_TEXT_BUFFER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TEXT_BUFFER, GtkTextBuffer))
+#define GTK_TEXT_BUFFER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_BUFFER, GtkTextBufferClass))
+#define GTK_IS_TEXT_BUFFER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TEXT_BUFFER))
+#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 _GtkTextBufferClass GtkTextBufferClass;
 
-struct _GtkTextBuffer {
-  GtkObject parent_instance;
+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 */
-  gboolean modified;
+  guint modified : 1;
 };
 
-struct _GtkTextBufferClass {
-  GtkObjectClass parent_class;
+struct _GtkTextBufferClass
+{
+  GObjectClass parent_class;
 
   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);
+#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,
+                                  GtkTextChildAnchor *anchor);
+#endif
+  
+  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,9 +125,12 @@ 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);
 };
 
-GtkType        gtk_text_buffer_get_type       (void) G_GNUC_CONST;
+GType        gtk_text_buffer_get_type       (void) G_GNUC_CONST;
 
 
 
@@ -248,6 +271,7 @@ void gtk_text_buffer_remove_tag_by_name    (GtkTextBuffer     *buffer,
 /* 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);
 
@@ -307,13 +331,21 @@ 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);
 
 /* INTERNAL private stuff */
 void            _gtk_text_buffer_spew                  (GtkTextBuffer      *buffer);
 
 GtkTextBTree*   _gtk_text_buffer_get_btree             (GtkTextBuffer      *buffer);
 
+const PangoLogAttr* _gtk_text_buffer_get_line_log_attrs (GtkTextBuffer     *buffer,
+                                                         const GtkTextIter *anywhere_in_line,
+                                                         gint              *char_len);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */