Merge branch 'blender-v2.81-release'
[blender.git] / source / blender / editors / space_text / text_intern.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2009 Blender Foundation.
17  * All rights reserved.
18  */
19
20 /** \file
21  * \ingroup sptext
22  */
23
24 #ifndef __TEXT_INTERN_H__
25 #define __TEXT_INTERN_H__
26
27 /* internal exports only */
28
29 struct ARegion;
30 struct ScrArea;
31 struct SpaceText;
32 struct Text;
33 struct TextLine;
34 struct bContext;
35 struct wmOperatorType;
36
37 /* text_draw.c */
38 void draw_text_main(struct SpaceText *st, struct ARegion *ar);
39
40 void text_update_line_edited(struct TextLine *line);
41 void text_update_edited(struct Text *text);
42 void text_update_character_width(struct SpaceText *st);
43 void text_scroll_to_cursor(struct SpaceText *st, struct ARegion *ar, const bool center);
44 void text_scroll_to_cursor__area(struct SpaceText *st, struct ScrArea *sa, const bool center);
45 void text_update_cursor_moved(struct bContext *C);
46
47 #define TXT_OFFSET ((int)(0.5f * U.widget_unit))
48 #define TXT_SCROLL_WIDTH U.widget_unit
49 #define TXT_SCROLL_SPACE ((int)(0.1f * U.widget_unit))
50 #define TXT_LINE_SPACING ((int)(0.3f * st->lheight_dpi)) /* space between lines */
51 #define TEXTXLOC (st->cwidth * st->linenrs_tot)
52
53 #define SUGG_LIST_SIZE 7
54 #define SUGG_LIST_WIDTH 20
55 #define DOC_WIDTH 40
56 #define DOC_HEIGHT 10
57
58 #define TOOL_SUGG_LIST 0x01
59 #define TOOL_DOCUMENT 0x02
60
61 int wrap_width(const struct SpaceText *st, struct ARegion *ar);
62 void wrap_offset(const struct SpaceText *st,
63                  struct ARegion *ar,
64                  struct TextLine *linein,
65                  int cursin,
66                  int *offl,
67                  int *offc);
68 void wrap_offset_in_line(const struct SpaceText *st,
69                          struct ARegion *ar,
70                          struct TextLine *linep,
71                          int cursin,
72                          int *offl,
73                          int *offc);
74 int text_get_char_pos(const struct SpaceText *st, const char *line, int cur);
75
76 void text_drawcache_tag_update(struct SpaceText *st, int full);
77 void text_free_caches(struct SpaceText *st);
78
79 int text_do_suggest_select(struct SpaceText *st, struct ARegion *ar);
80 void text_pop_suggest_list(void);
81
82 int text_get_visible_lines(const struct SpaceText *st, struct ARegion *ar, const char *str);
83 int text_get_span_wrap(const struct SpaceText *st,
84                        struct ARegion *ar,
85                        struct TextLine *from,
86                        struct TextLine *to);
87 int text_get_total_lines(struct SpaceText *st, struct ARegion *ar);
88
89 /* text_ops.c */
90 enum {
91   LINE_BEGIN,
92   LINE_END,
93   FILE_TOP,
94   FILE_BOTTOM,
95   PREV_CHAR,
96   NEXT_CHAR,
97   PREV_WORD,
98   NEXT_WORD,
99   PREV_LINE,
100   NEXT_LINE,
101   PREV_PAGE,
102   NEXT_PAGE
103 };
104 enum { DEL_NEXT_CHAR, DEL_PREV_CHAR, DEL_NEXT_WORD, DEL_PREV_WORD };
105
106 void TEXT_OT_new(struct wmOperatorType *ot);
107 void TEXT_OT_open(struct wmOperatorType *ot);
108 void TEXT_OT_reload(struct wmOperatorType *ot);
109 void TEXT_OT_unlink(struct wmOperatorType *ot);
110 void TEXT_OT_save(struct wmOperatorType *ot);
111 void TEXT_OT_save_as(struct wmOperatorType *ot);
112 void TEXT_OT_make_internal(struct wmOperatorType *ot);
113 void TEXT_OT_run_script(struct wmOperatorType *ot);
114 void TEXT_OT_refresh_pyconstraints(struct wmOperatorType *ot);
115
116 void TEXT_OT_paste(struct wmOperatorType *ot);
117 void TEXT_OT_copy(struct wmOperatorType *ot);
118 void TEXT_OT_cut(struct wmOperatorType *ot);
119 void TEXT_OT_duplicate_line(struct wmOperatorType *ot);
120
121 void TEXT_OT_convert_whitespace(struct wmOperatorType *ot);
122 void TEXT_OT_comment_toggle(struct wmOperatorType *ot);
123 void TEXT_OT_unindent(struct wmOperatorType *ot);
124 void TEXT_OT_indent(struct wmOperatorType *ot);
125
126 void TEXT_OT_line_break(struct wmOperatorType *ot);
127 void TEXT_OT_insert(struct wmOperatorType *ot);
128
129 void TEXT_OT_select_line(struct wmOperatorType *ot);
130 void TEXT_OT_select_all(struct wmOperatorType *ot);
131 void TEXT_OT_select_word(struct wmOperatorType *ot);
132
133 void TEXT_OT_move_lines(struct wmOperatorType *ot);
134
135 void TEXT_OT_jump(struct wmOperatorType *ot);
136 void TEXT_OT_move(struct wmOperatorType *ot);
137 void TEXT_OT_move_select(struct wmOperatorType *ot);
138 void TEXT_OT_delete(struct wmOperatorType *ot);
139 void TEXT_OT_overwrite_toggle(struct wmOperatorType *ot);
140
141 void TEXT_OT_scroll(struct wmOperatorType *ot);
142 void TEXT_OT_scroll_bar(struct wmOperatorType *ot);
143 void TEXT_OT_selection_set(struct wmOperatorType *ot);
144 void TEXT_OT_cursor_set(struct wmOperatorType *ot);
145 void TEXT_OT_line_number(struct wmOperatorType *ot);
146
147 /* find = find indicated text */
148 void TEXT_OT_find(struct wmOperatorType *ot);
149 void TEXT_OT_find_set_selected(struct wmOperatorType *ot);
150 void TEXT_OT_replace(struct wmOperatorType *ot);
151 void TEXT_OT_replace_set_selected(struct wmOperatorType *ot);
152
153 /* text_find = open properties, activate search button */
154 void TEXT_OT_start_find(struct wmOperatorType *ot);
155
156 void TEXT_OT_to_3d_object(struct wmOperatorType *ot);
157
158 void TEXT_OT_resolve_conflict(struct wmOperatorType *ot);
159
160 bool text_space_edit_poll(struct bContext *C);
161
162 /* text_autocomplete.c */
163 void TEXT_OT_autocomplete(struct wmOperatorType *ot);
164
165 /* space_text.c */
166 extern const char *text_context_dir[]; /* doc access */
167
168 #endif /* __TEXT_INTERN_H__ */