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