gtktextview.h 20.3 KB
Newer Older
Cody Russell's avatar
Cody Russell committed
1
/* GTK - The GIMP Toolkit
2 3 4 5 6 7 8 9 10
 * 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
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 13 14
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
Javier Jardón's avatar
Javier Jardón committed
15
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16 17 18 19 20 21
 */

/*
 * 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
22
 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
23 24
 */

25 26 27
#ifndef __GTK_TEXT_VIEW_H__
#define __GTK_TEXT_VIEW_H__

28
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
29 30 31
#error "Only <gtk/gtk.h> can be included directly."
#endif

32 33 34
#include <gtk/gtkcontainer.h>
#include <gtk/gtkimcontext.h>
#include <gtk/gtktextbuffer.h>
35
#include <gtk/gtkmenu.h>
36

37
G_BEGIN_DECLS
38

39
#define GTK_TYPE_TEXT_VIEW             (gtk_text_view_get_type ())
Manish Singh's avatar
Manish Singh committed
40 41 42 43 44
#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))
45

46 47 48 49 50 51 52 53 54 55 56
/**
 * GtkTextWindowType:
 * @GTK_TEXT_WINDOW_WIDGET: Window that floats over scrolling areas.
 * @GTK_TEXT_WINDOW_TEXT: Scrollable text window.
 * @GTK_TEXT_WINDOW_LEFT: Left side border window.
 * @GTK_TEXT_WINDOW_RIGHT: Right side border window.
 * @GTK_TEXT_WINDOW_TOP: Top border window.
 * @GTK_TEXT_WINDOW_BOTTOM: Bottom border window.
 *
 * Used to reference the parts of #GtkTextView.
 */
57 58
typedef enum
{
59
  /*< private >*/
60
  GTK_TEXT_WINDOW_PRIVATE,
61
  /*< public >*/
62 63 64 65 66 67 68 69
  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;

70 71 72 73 74
/**
 * GtkTextViewLayer:
 * @GTK_TEXT_VIEW_LAYER_BELOW: The layer rendered below the text (but above the background).
 * @GTK_TEXT_VIEW_LAYER_ABOVE: The layer rendered above the text.
 *
75 76
 * Used to reference the layers of #GtkTextView for the purpose of customized
 * drawing with the ::draw_layer vfunc.
77 78 79 80 81 82 83
 */
typedef enum
{
  GTK_TEXT_VIEW_LAYER_BELOW,
  GTK_TEXT_VIEW_LAYER_ABOVE
} GtkTextViewLayer;

84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
/**
 * GtkTextExtendSelection:
 * @GTK_TEXT_EXTEND_SELECTION_WORD: Selects the current word. It is triggered by
 *   a double-click for example.
 * @GTK_TEXT_EXTEND_SELECTION_LINE: Selects the current line. It is triggered by
 *   a triple-click for example.
 *
 * Granularity types that extend the text selection. Use the
 * #GtkTextView::extend-selection signal to customize the selection.
 *
 * Since: 3.16
 */
typedef enum
{
  GTK_TEXT_EXTEND_SELECTION_WORD,
  GTK_TEXT_EXTEND_SELECTION_LINE
} GtkTextExtendSelection;

102 103 104 105 106 107
/**
 * GTK_TEXT_VIEW_PRIORITY_VALIDATE:
 *
 * The priority at which the text view validates onscreen lines
 * in an idle job in the background.
 */
Havoc Pennington's avatar
Havoc Pennington committed
108 109
#define GTK_TEXT_VIEW_PRIORITY_VALIDATE (GDK_PRIORITY_REDRAW + 5)

110 111 112
typedef struct _GtkTextView        GtkTextView;
typedef struct _GtkTextViewPrivate GtkTextViewPrivate;
typedef struct _GtkTextViewClass   GtkTextViewClass;
113

114 115
struct _GtkTextView
{
116 117
  GtkContainer parent_instance;

118 119
  /*< private >*/

120
  GtkTextViewPrivate *priv;
121 122
};

123 124 125
/**
 * GtkTextViewClass:
 * @parent_class: The object class structure needs to be the first
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
 * @populate_popup: The class handler for the #GtkTextView::populate-popup
 *   signal.
 * @move_cursor: The class handler for the #GtkTextView::move-cursor
 *   keybinding signal.
 * @set_anchor: The class handler for the #GtkTextView::set-anchor
 *   keybinding signal.
 * @insert_at_cursor: The class handler for the #GtkTextView::insert-at-cursor
 *   keybinding signal.
 * @delete_from_cursor: The class handler for the #GtkTextView::delete-from-cursor
 *   keybinding signal.
 * @backspace: The class handler for the #GtkTextView::backspace
 *   keybinding signal.
 * @cut_clipboard: The class handler for the #GtkTextView::cut-clipboard
 *   keybinding signal
 * @copy_clipboard: The class handler for the #GtkTextview::copy-clipboard
 *   keybinding signal.
 * @paste_clipboard: The class handler for the #GtkTextView::paste-clipboard
 *   keybinding signal.
 * @toggle_overwrite: The class handler for the #GtkTextView::toggle-overwrite
 *   keybinding signal.
 * @create_buffer: The create_buffer vfunc is called to create a #GtkTextBuffer
 *   for the text view. The default implementation is to just call
 *   gtk_text_buffer_new(). Since: 3.10
 * @draw_layer: The draw_layer vfunc is called before and after the text
 *   view is drawing its own text. Applications can override this vfunc
 *   in a subclass to draw customized content underneath or above the
 *   text. Since: 3.14
153
 */
154 155
struct _GtkTextViewClass
{
156 157
  GtkContainerClass parent_class;

158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
  /*< public */

  void (* populate_popup)        (GtkTextView      *text_view,
                                  GtkWidget        *popup);
  void (* move_cursor)           (GtkTextView      *text_view,
                                  GtkMovementStep   step,
                                  gint              count,
                                  gboolean          extend_selection);
  void (* set_anchor)            (GtkTextView      *text_view);
  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);
  void (* cut_clipboard)         (GtkTextView      *text_view);
  void (* copy_clipboard)        (GtkTextView      *text_view);
  void (* paste_clipboard)       (GtkTextView      *text_view);
  void (* toggle_overwrite)      (GtkTextView      *text_view);
  GtkTextBuffer * (* create_buffer) (GtkTextView   *text_view);
  void (* draw_layer)            (GtkTextView      *text_view,
			          GtkTextViewLayer  layer,
			          cairo_t          *cr);
181 182 183 184 185
  gboolean (* extend_selection)  (GtkTextView            *text_view,
                                  GtkTextExtendSelection  granularity,
                                  const GtkTextIter      *location,
                                  GtkTextIter            *start,
                                  GtkTextIter            *end);
186

187
  /*< private >*/
188

189 190 191 192 193 194
  /* Padding for future expansion */
  void (*_gtk_reserved1) (void);
  void (*_gtk_reserved2) (void);
  void (*_gtk_reserved3) (void);
  void (*_gtk_reserved4) (void);
  void (*_gtk_reserved5) (void);
195 196
};

197
GDK_AVAILABLE_IN_ALL
Manish Singh's avatar
Manish Singh committed
198
GType          gtk_text_view_get_type              (void) G_GNUC_CONST;
199
GDK_AVAILABLE_IN_ALL
200
GtkWidget *    gtk_text_view_new                   (void);
201
GDK_AVAILABLE_IN_ALL
202
GtkWidget *    gtk_text_view_new_with_buffer       (GtkTextBuffer *buffer);
203
GDK_AVAILABLE_IN_ALL
204
void           gtk_text_view_set_buffer            (GtkTextView   *text_view,
205
                                                    GtkTextBuffer *buffer);
206
GDK_AVAILABLE_IN_ALL
207
GtkTextBuffer *gtk_text_view_get_buffer            (GtkTextView   *text_view);
208
GDK_AVAILABLE_IN_ALL
209 210 211 212 213 214
gboolean       gtk_text_view_scroll_to_iter        (GtkTextView   *text_view,
                                                    GtkTextIter   *iter,
                                                    gdouble        within_margin,
                                                    gboolean       use_align,
                                                    gdouble        xalign,
                                                    gdouble        yalign);
215
GDK_AVAILABLE_IN_ALL
216
void           gtk_text_view_scroll_to_mark        (GtkTextView   *text_view,
217
                                                    GtkTextMark   *mark,
218 219 220 221
                                                    gdouble        within_margin,
                                                    gboolean       use_align,
                                                    gdouble        xalign,
                                                    gdouble        yalign);
222
GDK_AVAILABLE_IN_ALL
223
void           gtk_text_view_scroll_mark_onscreen  (GtkTextView   *text_view,
224
                                                    GtkTextMark   *mark);
225
GDK_AVAILABLE_IN_ALL
226
gboolean       gtk_text_view_move_mark_onscreen    (GtkTextView   *text_view,
227
                                                    GtkTextMark   *mark);
228
GDK_AVAILABLE_IN_ALL
229 230
gboolean       gtk_text_view_place_cursor_onscreen (GtkTextView   *text_view);

231
GDK_AVAILABLE_IN_ALL
232
void           gtk_text_view_get_visible_rect      (GtkTextView   *text_view,
233
                                                    GdkRectangle  *visible_rect);
234
GDK_AVAILABLE_IN_ALL
235 236
void           gtk_text_view_set_cursor_visible    (GtkTextView   *text_view,
                                                    gboolean       setting);
237
GDK_AVAILABLE_IN_ALL
238 239
gboolean       gtk_text_view_get_cursor_visible    (GtkTextView   *text_view);

240
GDK_AVAILABLE_IN_ALL
241 242 243 244
void           gtk_text_view_get_cursor_locations  (GtkTextView       *text_view,
                                                    const GtkTextIter *iter,
                                                    GdkRectangle      *strong,
                                                    GdkRectangle      *weak);
245
GDK_AVAILABLE_IN_ALL
246 247 248
void           gtk_text_view_get_iter_location     (GtkTextView   *text_view,
                                                    const GtkTextIter *iter,
                                                    GdkRectangle  *location);
249
GDK_AVAILABLE_IN_ALL
250
void           gtk_text_view_get_iter_at_location  (GtkTextView   *text_view,
251 252 253
                                                    GtkTextIter   *iter,
                                                    gint           x,
                                                    gint           y);
254
GDK_AVAILABLE_IN_ALL
255 256 257 258 259
void           gtk_text_view_get_iter_at_position  (GtkTextView   *text_view,
                                                    GtkTextIter   *iter,
						    gint          *trailing,
                                                    gint           x,
                                                    gint           y);
260
GDK_AVAILABLE_IN_ALL
Havoc Pennington's avatar
Havoc Pennington committed
261 262 263 264
void           gtk_text_view_get_line_yrange       (GtkTextView       *text_view,
                                                    const GtkTextIter *iter,
                                                    gint              *y,
                                                    gint              *height);
265

266
GDK_AVAILABLE_IN_ALL
Havoc Pennington's avatar
Havoc Pennington committed
267 268 269 270
void           gtk_text_view_get_line_at_y         (GtkTextView       *text_view,
                                                    GtkTextIter       *target_iter,
                                                    gint               y,
                                                    gint              *line_top);
271

272
GDK_AVAILABLE_IN_ALL
273 274 275 276 277 278
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);
279
GDK_AVAILABLE_IN_ALL
280 281 282 283 284 285 286
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);

287
GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_get_hadjustment)
288
GtkAdjustment*   gtk_text_view_get_hadjustment (GtkTextView   *text_view);
289
GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_get_vadjustment)
290
GtkAdjustment*   gtk_text_view_get_vadjustment (GtkTextView   *text_view);
291

292
GDK_AVAILABLE_IN_ALL
293 294
GdkWindow*        gtk_text_view_get_window      (GtkTextView       *text_view,
                                                 GtkTextWindowType  win);
295
GDK_AVAILABLE_IN_ALL
296 297 298
GtkTextWindowType gtk_text_view_get_window_type (GtkTextView       *text_view,
                                                 GdkWindow         *window);

299
GDK_AVAILABLE_IN_ALL
Havoc Pennington's avatar
Havoc Pennington committed
300 301 302
void gtk_text_view_set_border_window_size (GtkTextView       *text_view,
                                           GtkTextWindowType  type,
                                           gint               size);
303
GDK_AVAILABLE_IN_ALL
304 305
gint gtk_text_view_get_border_window_size (GtkTextView       *text_view,
					   GtkTextWindowType  type);
Havoc Pennington's avatar
Havoc Pennington committed
306

307
GDK_AVAILABLE_IN_ALL
308 309
gboolean gtk_text_view_forward_display_line           (GtkTextView       *text_view,
                                                       GtkTextIter       *iter);
310
GDK_AVAILABLE_IN_ALL
311 312
gboolean gtk_text_view_backward_display_line          (GtkTextView       *text_view,
                                                       GtkTextIter       *iter);
313
GDK_AVAILABLE_IN_ALL
314 315
gboolean gtk_text_view_forward_display_line_end       (GtkTextView       *text_view,
                                                       GtkTextIter       *iter);
316
GDK_AVAILABLE_IN_ALL
317 318
gboolean gtk_text_view_backward_display_line_start    (GtkTextView       *text_view,
                                                       GtkTextIter       *iter);
319
GDK_AVAILABLE_IN_ALL
320 321
gboolean gtk_text_view_starts_display_line            (GtkTextView       *text_view,
                                                       const GtkTextIter *iter);
322
GDK_AVAILABLE_IN_ALL
323 324 325
gboolean gtk_text_view_move_visually                  (GtkTextView       *text_view,
                                                       GtkTextIter       *iter,
                                                       gint               count);
326

327
GDK_AVAILABLE_IN_ALL
328
gboolean        gtk_text_view_im_context_filter_keypress        (GtkTextView       *text_view,
329
                                                                 GdkEventKey       *event);
330
GDK_AVAILABLE_IN_ALL
331 332
void            gtk_text_view_reset_im_context                  (GtkTextView       *text_view);

333
/* Adding child widgets */
334
GDK_AVAILABLE_IN_ALL
335 336 337 338
void gtk_text_view_add_child_at_anchor (GtkTextView          *text_view,
                                        GtkWidget            *child,
                                        GtkTextChildAnchor   *anchor);

339
GDK_AVAILABLE_IN_ALL
340 341 342 343 344 345 346
void gtk_text_view_add_child_in_window (GtkTextView          *text_view,
                                        GtkWidget            *child,
                                        GtkTextWindowType     which_window,
                                        /* window coordinates */
                                        gint                  xpos,
                                        gint                  ypos);

347
GDK_AVAILABLE_IN_ALL
348 349 350 351 352 353
void gtk_text_view_move_child          (GtkTextView          *text_view,
                                        GtkWidget            *child,
                                        /* window coordinates */
                                        gint                  xpos,
                                        gint                  ypos);

354 355
/* Default style settings (fallbacks if no tag affects the property) */

356
GDK_AVAILABLE_IN_ALL
357 358
void             gtk_text_view_set_wrap_mode          (GtkTextView      *text_view,
                                                       GtkWrapMode       wrap_mode);
359
GDK_AVAILABLE_IN_ALL
360
GtkWrapMode      gtk_text_view_get_wrap_mode          (GtkTextView      *text_view);
361
GDK_AVAILABLE_IN_ALL
362 363
void             gtk_text_view_set_editable           (GtkTextView      *text_view,
                                                       gboolean          setting);
364
GDK_AVAILABLE_IN_ALL
365
gboolean         gtk_text_view_get_editable           (GtkTextView      *text_view);
366
GDK_AVAILABLE_IN_ALL
367 368
void             gtk_text_view_set_overwrite          (GtkTextView      *text_view,
						       gboolean          overwrite);
369
GDK_AVAILABLE_IN_ALL
370
gboolean         gtk_text_view_get_overwrite          (GtkTextView      *text_view);
371
GDK_AVAILABLE_IN_ALL
372 373
void		 gtk_text_view_set_accepts_tab        (GtkTextView	*text_view,
						       gboolean		 accepts_tab);
374
GDK_AVAILABLE_IN_ALL
375
gboolean	 gtk_text_view_get_accepts_tab        (GtkTextView	*text_view);
376
GDK_AVAILABLE_IN_ALL
377 378
void             gtk_text_view_set_pixels_above_lines (GtkTextView      *text_view,
                                                       gint              pixels_above_lines);
379
GDK_AVAILABLE_IN_ALL
380
gint             gtk_text_view_get_pixels_above_lines (GtkTextView      *text_view);
381
GDK_AVAILABLE_IN_ALL
382 383
void             gtk_text_view_set_pixels_below_lines (GtkTextView      *text_view,
                                                       gint              pixels_below_lines);
384
GDK_AVAILABLE_IN_ALL
385
gint             gtk_text_view_get_pixels_below_lines (GtkTextView      *text_view);
386
GDK_AVAILABLE_IN_ALL
387 388
void             gtk_text_view_set_pixels_inside_wrap (GtkTextView      *text_view,
                                                       gint              pixels_inside_wrap);
389
GDK_AVAILABLE_IN_ALL
390
gint             gtk_text_view_get_pixels_inside_wrap (GtkTextView      *text_view);
391
GDK_AVAILABLE_IN_ALL
392 393
void             gtk_text_view_set_justification      (GtkTextView      *text_view,
                                                       GtkJustification  justification);
394
GDK_AVAILABLE_IN_ALL
395
GtkJustification gtk_text_view_get_justification      (GtkTextView      *text_view);
396
GDK_AVAILABLE_IN_ALL
397 398
void             gtk_text_view_set_left_margin        (GtkTextView      *text_view,
                                                       gint              left_margin);
399
GDK_AVAILABLE_IN_ALL
400
gint             gtk_text_view_get_left_margin        (GtkTextView      *text_view);
401
GDK_AVAILABLE_IN_ALL
402 403
void             gtk_text_view_set_right_margin       (GtkTextView      *text_view,
                                                       gint              right_margin);
404
GDK_AVAILABLE_IN_ALL
405
gint             gtk_text_view_get_right_margin       (GtkTextView      *text_view);
406
GDK_AVAILABLE_IN_ALL
407 408
void             gtk_text_view_set_indent             (GtkTextView      *text_view,
                                                       gint              indent);
409
GDK_AVAILABLE_IN_ALL
410
gint             gtk_text_view_get_indent             (GtkTextView      *text_view);
411
GDK_AVAILABLE_IN_ALL
412 413
void             gtk_text_view_set_tabs               (GtkTextView      *text_view,
                                                       PangoTabArray    *tabs);
414
GDK_AVAILABLE_IN_ALL
415 416
PangoTabArray*   gtk_text_view_get_tabs               (GtkTextView      *text_view);

Havoc Pennington's avatar
Havoc Pennington committed
417
/* note that the return value of this changes with the theme */
418
GDK_AVAILABLE_IN_ALL
Havoc Pennington's avatar
Havoc Pennington committed
419
GtkTextAttributes* gtk_text_view_get_default_attributes (GtkTextView    *text_view);
420

421 422 423 424 425 426 427 428 429 430 431 432
GDK_AVAILABLE_IN_3_6
void             gtk_text_view_set_input_purpose      (GtkTextView      *text_view,
                                                       GtkInputPurpose   purpose);
GDK_AVAILABLE_IN_3_6
GtkInputPurpose  gtk_text_view_get_input_purpose      (GtkTextView      *text_view);

GDK_AVAILABLE_IN_3_6
void             gtk_text_view_set_input_hints        (GtkTextView      *text_view,
                                                       GtkInputHints     hints);
GDK_AVAILABLE_IN_3_6
GtkInputHints    gtk_text_view_get_input_hints        (GtkTextView      *text_view);

433 434 435 436 437
GDK_AVAILABLE_IN_3_16
void             gtk_text_view_set_monospace          (GtkTextView      *text_view,
                                                       gboolean          monospace);
GDK_AVAILABLE_IN_3_16
gboolean         gtk_text_view_get_monospace          (GtkTextView      *text_view);
438

439
G_END_DECLS
440

441
#endif /* __GTK_TEXT_VIEW_H__ */