RNA
[blender.git] / source / blender / blenkernel / BKE_text.h
1 /**
2  * blenlib/BKE_text.h (mar-2001 nzc)
3  *      
4  * $Id$ 
5  *
6  * ***** BEGIN GPL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL LICENSE BLOCK *****
30  */
31 #ifndef BKE_TEXT_H
32 #define BKE_TEXT_H
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 struct Text;
39 struct TextLine;
40 struct SpaceText;
41
42 void                    free_text               (struct Text *text);
43 void                    txt_set_undostate       (int u);
44 int                     txt_get_undostate       (void);
45 struct Text*    add_empty_text  (char *name);
46 int                 reopen_text         (struct Text *text);
47 struct Text*    add_text                (char *file, const char *relpath); 
48 struct Text*    copy_text               (struct Text *ta);
49
50 char*   txt_to_buf                      (struct Text *text);
51 void    txt_clean_text          (struct Text *text);
52 void    txt_order_cursors       (struct Text *text);
53 int             txt_find_string         (struct Text *text, char *findstr, int wrap);
54 int             txt_has_sel                     (struct Text *text);
55 int             txt_get_span            (struct TextLine *from, struct TextLine *to);
56 void    txt_move_up                     (struct Text *text, short sel);
57 void    txt_move_down           (struct Text *text, short sel);
58 void    txt_move_left           (struct Text *text, short sel);
59 void    txt_move_right          (struct Text *text, short sel);
60 void    txt_jump_left           (struct Text *text, short sel);
61 void    txt_jump_right          (struct Text *text, short sel);
62 void    txt_move_bof            (struct Text *text, short sel);
63 void    txt_move_eof            (struct Text *text, short sel);
64 void    txt_move_bol            (struct Text *text, short sel);
65 void    txt_move_eol            (struct Text *text, short sel);
66 void    txt_move_toline         (struct Text *text, unsigned int line, short sel);
67 void    txt_move_to                     (struct Text *text, unsigned int line, unsigned int ch, short sel);
68 void    txt_pop_sel                     (struct Text *text);
69 void    txt_delete_char         (struct Text *text);
70 void    txt_delete_word         (struct Text *text);
71 void    txt_delete_selected     (struct Text *text);
72 void    txt_sel_all                     (struct Text *text);
73 void    txt_sel_line            (struct Text *text);
74 char*   txt_sel_to_buf          (struct Text *text);
75 void    txt_insert_buf          (struct Text *text, char *in_buffer);
76 void    txt_print_undo          (struct Text *text);
77 void    txt_undo_add_toop       (struct Text *text, int op, unsigned int froml, unsigned short fromc, unsigned int tol, unsigned short toc);
78 void    txt_do_undo                     (struct Text *text);
79 void    txt_do_redo                     (struct Text *text);
80 void    txt_split_curline       (struct Text *text);
81 void    txt_backspace_char      (struct Text *text);
82 void    txt_backspace_word      (struct Text *text);
83 int             txt_add_char            (struct Text *text, char add);
84 int             txt_replace_char        (struct Text *text, char add);
85 void    txt_export_to_object    (struct Text *text);
86 void    txt_export_to_objects(struct Text *text);
87 void    unindent                (struct Text *text);
88 void    comment                 (struct Text *text);
89 void    indent                  (struct Text *text);
90 void    uncomment               (struct Text *text);
91 int     setcurr_tab             (struct Text *text);
92
93 void    txt_add_marker                                          (struct Text *text, struct TextLine *line, int start, int end, char color[4], int group, int flags);
94 short   txt_clear_marker_region                         (struct Text *text, struct TextLine *line, int start, int end, int group, int flags);
95 short   txt_clear_markers                                       (struct Text *text, int group, int flags);
96 struct TextMarker       *txt_find_marker                (struct Text *text, struct TextLine *line, int curs, int group, int flags);
97 struct TextMarker       *txt_find_marker_region (struct Text *text, struct TextLine *line, int start, int end, int group, int flags);
98 struct TextMarker       *txt_prev_marker                (struct Text *text, struct TextMarker *marker);
99 struct TextMarker       *txt_next_marker                (struct Text *text, struct TextMarker *marker);
100 struct TextMarker       *txt_prev_marker_color  (struct Text *text, struct TextMarker *marker);
101 struct TextMarker       *txt_next_marker_color  (struct Text *text, struct TextMarker *marker);
102
103 /* Undo opcodes */
104
105 /* Simple main cursor movement */
106 #define UNDO_CLEFT              001
107 #define UNDO_CRIGHT             002
108 #define UNDO_CUP                003
109 #define UNDO_CDOWN              004
110
111 /* Simple selection cursor movement */
112 #define UNDO_SLEFT              005
113 #define UNDO_SRIGHT             006
114 #define UNDO_SUP                007
115 #define UNDO_SDOWN              021
116
117 /* Complex movement (opcode is followed
118  * by 4 character line ID + a 2 character
119  * position ID and opcode (repeat)) */
120 #define UNDO_CTO                022
121 #define UNDO_STO                023
122
123 /* Complex editing (opcode is followed
124  * by 1 character ID and opcode (repeat)) */
125 #define UNDO_INSERT             024
126 #define UNDO_BS                 025
127 #define UNDO_DEL                026
128
129 /* Text block (opcode is followed
130  * by 4 character length ID + the text
131  * block itself + the 4 character length
132  * ID (repeat) and opcode (repeat)) */
133 #define UNDO_DBLOCK             027 /* Delete block */
134 #define UNDO_IBLOCK             030 /* Insert block */
135
136 /* Misc */
137 #define UNDO_SWAP               031     /* Swap cursors */
138
139 #define UNDO_INDENT             032
140 #define UNDO_UNINDENT           033
141 #define UNDO_COMMENT            034
142 #define UNDO_UNCOMMENT          035
143
144 /* Marker flags */
145 #define TMARK_TEMP              0x01    /* Remove on non-editing events, don't save */
146 #define TMARK_EDITALL   0x02    /* Edit all markers of the same group as one */
147
148 #ifdef __cplusplus
149 }
150 #endif
151
152 #endif