-#ifndef GTK_TEXT_VIEW_H
-#define GTK_TEXT_VIEW_H
+/* GTK - The GIMP Toolkit
+ * gtktextview.h Copyright (C) 2000 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * 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.
+ */
+
+/*
+ * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
+ * file for a list of people on the GTK+ Team. See the ChangeLog
+ * files for a list of changes. These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
+
+#ifndef __GTK_TEXT_VIEW_H__
+#define __GTK_TEXT_VIEW_H__
#include <gtk/gtkcontainer.h>
#include <gtk/gtkimcontext.h>
#include <gtk/gtktextbuffer.h>
+#include <gtk/gtkmenu.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_TEXT_VIEW (gtk_text_view_get_type ())
+#define GTK_TEXT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TEXT_VIEW, GtkTextView))
+#define GTK_TEXT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
+#define GTK_IS_TEXT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TEXT_VIEW))
+#define GTK_IS_TEXT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_VIEW))
+#define GTK_TEXT_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
+
+typedef enum
+{
+ GTK_TEXT_WINDOW_PRIVATE,
+ GTK_TEXT_WINDOW_WIDGET,
+ GTK_TEXT_WINDOW_TEXT,
+ GTK_TEXT_WINDOW_LEFT,
+ GTK_TEXT_WINDOW_RIGHT,
+ GTK_TEXT_WINDOW_TOP,
+ GTK_TEXT_WINDOW_BOTTOM
+} GtkTextWindowType;
+
+/**
+ * GTK_TEXT_VIEW_PRIORITY_VALIDATE:
+ *
+ * The priority at which the text view validates onscreen lines
+ * in an idle job in the background.
+ */
+#define GTK_TEXT_VIEW_PRIORITY_VALIDATE (GDK_PRIORITY_REDRAW + 5)
+
+typedef struct _GtkTextView GtkTextView;
+typedef struct _GtkTextViewPrivate GtkTextViewPrivate;
+typedef struct _GtkTextViewClass GtkTextViewClass;
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-typedef enum {
- GTK_TEXT_MOVEMENT_CHAR, /* move by forw/back chars */
- GTK_TEXT_MOVEMENT_POSITIONS, /* move by left/right chars */
- GTK_TEXT_MOVEMENT_WORD, /* move by forward/back words */
- GTK_TEXT_MOVEMENT_WRAPPED_LINE, /* move up/down lines (wrapped lines) */
- GTK_TEXT_MOVEMENT_LINE, /* move up/down paragraphs (newline-ended lines) */
- GTK_TEXT_MOVEMENT_LINE_ENDS, /* move to either end of a paragraph */
- GTK_TEXT_MOVEMENT_BUFFER_ENDS /* move to ends of the buffer */
-} GtkTextViewMovementStep;
-
-typedef enum {
- GTK_TEXT_SCROLL_TO_TOP,
- GTK_TEXT_SCROLL_TO_BOTTOM,
- GTK_TEXT_SCROLL_PAGE_DOWN,
- GTK_TEXT_SCROLL_PAGE_UP
-} GtkTextViewScrollType;
-
-typedef enum {
- GTK_TEXT_DELETE_CHAR,
- GTK_TEXT_DELETE_HALF_WORD, /* delete only the portion of the word to the
- left/right of cursor if we're in the middle
- of a word */
- GTK_TEXT_DELETE_WHOLE_WORD,
- GTK_TEXT_DELETE_HALF_WRAPPED_LINE,
- GTK_TEXT_DELETE_WHOLE_WRAPPED_LINE,
- GTK_TEXT_DELETE_HALF_LINE, /* like C-k in Emacs (or its reverse) */
- GTK_TEXT_DELETE_WHOLE_LINE, /* C-k in pico, kill whole line */
- GTK_TEXT_DELETE_WHITESPACE, /* M-\ in Emacs */
- GTK_TEXT_DELETE_WHITESPACE_LEAVE_ONE /* M-space in Emacs */
-} GtkTextViewDeleteType;
-
-#define GTK_TYPE_TEXT_VIEW (gtk_text_view_get_type())
-#define GTK_TEXT_VIEW(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TEXT_VIEW, GtkTextView))
-#define GTK_TEXT_VIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
-#define GTK_IS_TEXT_VIEW(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_TEXT_VIEW))
-#define GTK_IS_TEXT_VIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_VIEW))
-#define GTK_TEXT_VIEW_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
-
-typedef struct _GtkTextView GtkTextView;
-typedef struct _GtkTextViewClass GtkTextViewClass;
-
-struct _GtkTextView {
+struct _GtkTextView
+{
GtkContainer parent_instance;
- struct _GtkTextLayout *layout;
- GtkTextBuffer *buffer;
-
- guint selection_drag_handler;
- guint selection_drag_scan_timeout;
- gint scrolling_accel_factor;
-
- gboolean overwrite_mode;
-
- GtkWrapMode wrap_mode; /* Default wrap mode */
-
- gboolean editable; /* default editability */
-
- gboolean cursor_visible;
-
- GdkWindow *bin_window;
- GtkAdjustment *hadjustment;
- GtkAdjustment *vadjustment;
-
- gint xoffset; /* Offsets between widget coordinates and buffer coordinates */
- gint yoffset;
- gint width; /* Width and height of the buffer */
- gint height;
-
- /* The virtual cursor position is normally the same as the
- * actual (strong) cursor position, except in two circumstances:
- *
- * a) When the cursor is moved vertically with the keyboard
- * b) When the text view is scrolled with the keyboard
- *
- * In case a), virtual_cursor_x is preserved, but not virtual_cursor_y
- * In case b), both virtual_cursor_x and virtual_cursor_y are preserved.
- */
- gint virtual_cursor_x; /* -1 means use actual cursor position */
- gint virtual_cursor_y; /* -1 means use actual cursor position */
-
- GtkTextMark *first_para_mark; /* Mark at the beginning of the first onscreen paragraph */
- gint first_para_pixels; /* Offset of top of screen in the first onscreen paragraph */
-
- GtkTextMark *dnd_mark;
- guint blink_timeout;
-
- guint first_validate_idle; /* Idle to revalidate onscreen portion, runs before resize */
- guint incremental_validate_idle; /* Idle to revalidate offscreen portions, runs after redraw */
-
- GtkIMContext *im_context;
+ GtkTextViewPrivate *priv;
};
-struct _GtkTextViewClass {
+struct _GtkTextViewClass
+{
GtkContainerClass parent_class;
+ void (* populate_popup) (GtkTextView *text_view,
+ GtkMenu *menu);
+
/* These are all RUN_ACTION signals for keybindings */
/* move insertion point */
- void (* move_insert) (GtkTextView *text_view, GtkTextViewMovementStep step, gint count, gboolean extend_selection);
+ void (* move_cursor) (GtkTextView *text_view,
+ GtkMovementStep step,
+ gint count,
+ gboolean extend_selection);
+
/* move the "anchor" (what Emacs calls the mark) to the cursor position */
- void (* set_anchor) (GtkTextView *text_view);
- /* Scroll */
- void (* scroll_text) (GtkTextView *text_view, GtkTextViewScrollType type);
- /* Deletions */
- void (* delete_text) (GtkTextView *text_view, GtkTextViewDeleteType type, gint count);
+ void (* set_anchor) (GtkTextView *text_view);
+
+ /* Edits */
+ void (* insert_at_cursor) (GtkTextView *text_view,
+ const gchar *str);
+ void (* delete_from_cursor) (GtkTextView *text_view,
+ GtkDeleteType type,
+ gint count);
+ void (* backspace) (GtkTextView *text_view);
+
/* cut copy paste */
- void (* cut_text) (GtkTextView *text_view);
- void (* copy_text) (GtkTextView *text_view);
- void (* paste_text) (GtkTextView *text_view);
+ void (* cut_clipboard) (GtkTextView *text_view);
+ void (* copy_clipboard) (GtkTextView *text_view);
+ void (* paste_clipboard) (GtkTextView *text_view);
/* overwrite */
void (* toggle_overwrite) (GtkTextView *text_view);
- void (*set_scroll_adjustments) (GtkTextView *text_view,
- GtkAdjustment *hadjustment,
- GtkAdjustment *vadjustment);
+
+ /* 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);
+ void (*_gtk_reserved7) (void);
+ void (*_gtk_reserved8) (void);
};
-GtkType gtk_text_view_get_type (void) G_GNUC_CONST;
+GType gtk_text_view_get_type (void) G_GNUC_CONST;
GtkWidget * gtk_text_view_new (void);
GtkWidget * gtk_text_view_new_with_buffer (GtkTextBuffer *buffer);
void gtk_text_view_set_buffer (GtkTextView *text_view,
- GtkTextBuffer *buffer);
+ GtkTextBuffer *buffer);
GtkTextBuffer *gtk_text_view_get_buffer (GtkTextView *text_view);
-void gtk_text_view_get_iter_at_pixel (GtkTextView *text_view,
- GtkTextIter *iter,
- gint x,
- gint y);
-gboolean gtk_text_view_scroll_to_mark (GtkTextView *text_view,
+gboolean gtk_text_view_scroll_to_iter (GtkTextView *text_view,
+ GtkTextIter *iter,
+ gdouble within_margin,
+ gboolean use_align,
+ gdouble xalign,
+ gdouble yalign);
+void gtk_text_view_scroll_to_mark (GtkTextView *text_view,
GtkTextMark *mark,
- gint mark_within_margin);
+ gdouble within_margin,
+ gboolean use_align,
+ gdouble xalign,
+ gdouble yalign);
+void gtk_text_view_scroll_mark_onscreen (GtkTextView *text_view,
+ GtkTextMark *mark);
gboolean gtk_text_view_move_mark_onscreen (GtkTextView *text_view,
GtkTextMark *mark);
gboolean gtk_text_view_place_cursor_onscreen (GtkTextView *text_view);
void gtk_text_view_get_visible_rect (GtkTextView *text_view,
- GdkRectangle *visible_rect);
-void gtk_text_view_set_wrap_mode (GtkTextView *text_view,
- GtkWrapMode wrap_mode);
-GtkWrapMode gtk_text_view_get_wrap_mode (GtkTextView *text_view);
-
-void gtk_text_view_set_editable (GtkTextView *text_view,
- gboolean setting);
-gboolean gtk_text_view_get_editable (GtkTextView *text_view);
-
+ GdkRectangle *visible_rect);
void gtk_text_view_set_cursor_visible (GtkTextView *text_view,
gboolean setting);
gboolean gtk_text_view_get_cursor_visible (GtkTextView *text_view);
void gtk_text_view_get_iter_location (GtkTextView *text_view,
const GtkTextIter *iter,
GdkRectangle *location);
+void gtk_text_view_get_iter_at_location (GtkTextView *text_view,
+ GtkTextIter *iter,
+ gint x,
+ gint y);
+void gtk_text_view_get_iter_at_position (GtkTextView *text_view,
+ GtkTextIter *iter,
+ gint *trailing,
+ gint x,
+ gint y);
+void gtk_text_view_get_line_yrange (GtkTextView *text_view,
+ const GtkTextIter *iter,
+ gint *y,
+ gint *height);
+
+void gtk_text_view_get_line_at_y (GtkTextView *text_view,
+ GtkTextIter *target_iter,
+ gint y,
+ gint *line_top);
+
+void gtk_text_view_buffer_to_window_coords (GtkTextView *text_view,
+ GtkTextWindowType win,
+ gint buffer_x,
+ gint buffer_y,
+ gint *window_x,
+ gint *window_y);
+void gtk_text_view_window_to_buffer_coords (GtkTextView *text_view,
+ GtkTextWindowType win,
+ gint window_x,
+ gint window_y,
+ gint *buffer_x,
+ gint *buffer_y);
+
+#ifndef GTK_DISABLE_DEPRECATED
+GtkAdjustment* gtk_text_view_get_hadjustment (GtkTextView *text_view);
+GtkAdjustment* gtk_text_view_get_vadjustment (GtkTextView *text_view);
+#endif
+
+GdkWindow* gtk_text_view_get_window (GtkTextView *text_view,
+ GtkTextWindowType win);
+GtkTextWindowType gtk_text_view_get_window_type (GtkTextView *text_view,
+ GdkWindow *window);
+
+void gtk_text_view_set_border_window_size (GtkTextView *text_view,
+ GtkTextWindowType type,
+ gint size);
+gint gtk_text_view_get_border_window_size (GtkTextView *text_view,
+ GtkTextWindowType type);
+
+gboolean gtk_text_view_forward_display_line (GtkTextView *text_view,
+ GtkTextIter *iter);
+gboolean gtk_text_view_backward_display_line (GtkTextView *text_view,
+ GtkTextIter *iter);
+gboolean gtk_text_view_forward_display_line_end (GtkTextView *text_view,
+ GtkTextIter *iter);
+gboolean gtk_text_view_backward_display_line_start (GtkTextView *text_view,
+ GtkTextIter *iter);
+gboolean gtk_text_view_starts_display_line (GtkTextView *text_view,
+ const GtkTextIter *iter);
+gboolean gtk_text_view_move_visually (GtkTextView *text_view,
+ GtkTextIter *iter,
+ gint count);
+
+gboolean gtk_text_view_im_context_filter_keypress (GtkTextView *text_view,
+ GdkEventKey *event);
+void gtk_text_view_reset_im_context (GtkTextView *text_view);
+
+/* Adding child widgets */
+void gtk_text_view_add_child_at_anchor (GtkTextView *text_view,
+ GtkWidget *child,
+ GtkTextChildAnchor *anchor);
+
+void gtk_text_view_add_child_in_window (GtkTextView *text_view,
+ GtkWidget *child,
+ GtkTextWindowType which_window,
+ /* window coordinates */
+ gint xpos,
+ gint ypos);
+
+void gtk_text_view_move_child (GtkTextView *text_view,
+ GtkWidget *child,
+ /* window coordinates */
+ gint xpos,
+ gint ypos);
+
+/* Default style settings (fallbacks if no tag affects the property) */
+
+void gtk_text_view_set_wrap_mode (GtkTextView *text_view,
+ GtkWrapMode wrap_mode);
+GtkWrapMode gtk_text_view_get_wrap_mode (GtkTextView *text_view);
+void gtk_text_view_set_editable (GtkTextView *text_view,
+ gboolean setting);
+gboolean gtk_text_view_get_editable (GtkTextView *text_view);
+void gtk_text_view_set_overwrite (GtkTextView *text_view,
+ gboolean overwrite);
+gboolean gtk_text_view_get_overwrite (GtkTextView *text_view);
+void gtk_text_view_set_accepts_tab (GtkTextView *text_view,
+ gboolean accepts_tab);
+gboolean gtk_text_view_get_accepts_tab (GtkTextView *text_view);
+void gtk_text_view_set_pixels_above_lines (GtkTextView *text_view,
+ gint pixels_above_lines);
+gint gtk_text_view_get_pixels_above_lines (GtkTextView *text_view);
+void gtk_text_view_set_pixels_below_lines (GtkTextView *text_view,
+ gint pixels_below_lines);
+gint gtk_text_view_get_pixels_below_lines (GtkTextView *text_view);
+void gtk_text_view_set_pixels_inside_wrap (GtkTextView *text_view,
+ gint pixels_inside_wrap);
+gint gtk_text_view_get_pixels_inside_wrap (GtkTextView *text_view);
+void gtk_text_view_set_justification (GtkTextView *text_view,
+ GtkJustification justification);
+GtkJustification gtk_text_view_get_justification (GtkTextView *text_view);
+void gtk_text_view_set_left_margin (GtkTextView *text_view,
+ gint left_margin);
+gint gtk_text_view_get_left_margin (GtkTextView *text_view);
+void gtk_text_view_set_right_margin (GtkTextView *text_view,
+ gint right_margin);
+gint gtk_text_view_get_right_margin (GtkTextView *text_view);
+void gtk_text_view_set_indent (GtkTextView *text_view,
+ gint indent);
+gint gtk_text_view_get_indent (GtkTextView *text_view);
+void gtk_text_view_set_tabs (GtkTextView *text_view,
+ PangoTabArray *tabs);
+PangoTabArray* gtk_text_view_get_tabs (GtkTextView *text_view);
+
+/* note that the return value of this changes with the theme */
+GtkTextAttributes* gtk_text_view_get_default_attributes (GtkTextView *text_view);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
-#endif /* GTK_TEXT_VIEW_H */
+#endif /* __GTK_TEXT_VIEW_H__ */