Rev 6601 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6589 | siemargl | 1 | #ifndef KOLIBRI_EDITOR_H |
2 | #define KOLIBRI_EDITOR_H |
||
3 | |||
4 | // (количество символов в новом документе + 2) |
||
5 | #define TE_MAXCHARS 100002 |
||
6 | // максимальный размер файла синтаксиса |
||
7 | #define TE_MAX_SYNTAX_FILESIZE 410000 |
||
8 | // buffer for copy|paste |
||
9 | #define TE_BUF_SIZE 4096 |
||
10 | typedef void (*editor_callback)(void); |
||
11 | |||
12 | struct __attribute__ ((__packed__)) editor_symbol { |
||
13 | uint8_t c; // +0 символ |
||
14 | uint8_t col; // +1 цвет |
||
15 | struct editor_symbol *prev; // +2 |
||
16 | struct editor_symbol *next; // +6 указатели |
||
17 | uint32_t tc; // +10 врем. создания |
||
18 | uint32_t td; // +14 врем. удаления |
||
19 | }; |
||
20 | |||
21 | /// структура текстового редактора |
||
22 | typedef struct __attribute__ ((__packed__)) { |
||
23 | uint32_t x_pos; //0 |
||
24 | uint32_t y_pos; //50 |
||
25 | uint32_t width; //440 |
||
26 | uint32_t hight; //150 |
||
27 | uint32_t w_pane; //30 ширина панели в окне |
||
28 | uint32_t h_pane; //25 высота панели в окне |
||
29 | uint32_t width_sym; //9 ширина символа (знакоместа) в окне |
||
30 | uint32_t hight_sym; //16 высота символа (знакоместа) в окне |
||
31 | uint8_t drag_m; // выделение от мыши |
||
32 | uint8_t drag_k; // выделение от клавиатуры |
||
33 | uint32_t sel_x0; // структура выделения |
||
34 | uint32_t sel_y0; |
||
35 | uint32_t sel_x1; |
||
36 | uint32_t sel_y1; |
||
37 | uint32_t seln_x0; //дополнительная структура выделения |
||
38 | uint32_t seln_y0; |
||
39 | uint32_t seln_x1; |
||
40 | uint32_t seln_y1; |
||
41 | struct editor_symbol *tex; // text memory pointer |
||
42 | struct editor_symbol *tex_1; // text first symbol pointer |
||
43 | struct editor_symbol *tex_end;// text end memory pointer |
||
44 | uint32_t cur_x; //координата x курсора |
||
45 | uint32_t cur_y; //координата y курсора |
||
46 | uint32_t max_chars; // TE_MAXCHARS ;+86 максимальное число символов в одном документе |
||
47 | uint32_t count_colors_text; // 1 ;+90 количество цветов текста |
||
48 | uint32_t count_key_words; //+94 колличество ключевых слов |
||
49 | color_t color_cursor; // 0x808080 ;+98 цвет курсора |
||
50 | color_t color_wnd_capt; // 0x80 ;+102 цвет полей вокруг окна |
||
51 | color_t color_wnd_work; // 0x0 ;+106 цвет фона окна |
||
52 | color_t color_wnd_bord; //0xd0d0d0 ;+110 цвет текста на полях |
||
53 | color_t color_select; // 0x208080 ;+114 цвет выделения |
||
54 | color_t color_cur_text; // 0xff0000 ;+118 цвет символа под курсором |
||
55 | color_t color_wnd_text; // 0xffff00 ;+122 цвет текста в окне |
||
56 | char *syntax_file; // указатель на начало файла синтаксиса |
||
57 | uint32_t syntax_file_size; // TE_MAX_SYNTAX_FILESIZE ;+130 максимальный размер файла синтаксиса |
||
58 | void *text_colors; // указатель на массив цветов текста |
||
59 | char *help_text_f1; // указатель на текст справки (по нажатии F1) |
||
60 | int help_id; // -1 ;+142 идентификатор для справки |
||
61 | void *key_words_data; // указатель на структуры ключевых слов TexColViv |
||
62 | uint32_t tim_ch; // количество изменений в файле |
||
63 | uint32_t tim_undo; // количество отмененных действий |
||
64 | uint32_t tim_ls; // время последнего сохранения |
||
65 | uint32_t tim_co; // время последней цветовой разметки |
||
66 | void *el_focus; // указатель на переменную элемента в фокусе pointer to pointer** |
||
67 | uint8_t err_save; // ошибка сохранения файла |
||
68 | uint8_t panel_id; // номер открытой панели |
||
69 | uint8_t key_new; // символ, который будет добавлятся с клавиатуры |
||
70 | uint8_t symbol_new_line; // ascii 20 символ завершения строки |
||
71 | scrollbar *scr_w; // вертикальный скроллинг != NULL |
||
72 | scrollbar *scr_h; // горизонтальный скроллинг != NULL |
||
73 | char *arr_key_pos;// указатель на массив позиций ключевых слов |
||
74 | char *buffer; // указатель на буфер копирования/вставки != NULL, also size |
||
75 | char *buffer_find;// указатель на буфер для поиска (sized 302) |
||
76 | uint8_t cur_ins; // 1 режим работы курсора (обычный или замена) |
||
77 | uint8_t mode_color; // 1 режим выделения слов цветом (0-выкл. 1-вкл.) |
||
78 | uint8_t mode_invis; // 0 режим показа непечатаемых символов |
||
79 | uint8_t gp_opt; // 0 опции возвращаемые функцией ted_get_pos_by_cursor |
||
80 | editor_callback fun_on_key_ctrl_o; // указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла), can be NULL |
||
81 | editor_callback fun_on_key_ctrl_f; // ... Ctrl+F (вызова/скрытия панели поиска) |
||
82 | editor_callback fun_on_key_ctrl_n; // ... Ctrl+N (создание нового документа) |
||
83 | editor_callback fun_on_key_ctrl_s; // ... Ctrl+S |
||
84 | uint32_t buffer_size;// BUF_SIZE размер буфера копирования/вставки |
||
85 | editor_callback fun_find_err; // указатель на функцию вызываемую если поиск закончился неудачно |
||
86 | editor_callback fun_init_synt_err; // unused указатель на функцию вызываемую при ошибочном открытии файла синтаксиса |
||
87 | editor_callback fun_draw_panel_buttons; // указатель на функцию рисования панели с кнопками |
||
88 | editor_callback fun_draw_panel_find; // указатель на функцию рисования панели поиска |
||
89 | editor_callback fun_draw_panel_syntax; // указатель на функцию рисования панели синтаксиса |
||
90 | editor_callback fun_save_err; // указатель на функцию вызываемую если сохранение файла закончилось неудачно |
||
91 | uint32_t increase_size; //200 число символов на которые будет увечиваться память при нехватке |
||
92 | void *ptr_free_symb; // используется внутри элемента для ускорения вставки текста |
||
93 | uint32_t font_size; // ;+250 множитель для размера шрифта // binary OR mask for ECX SysFn4 |
||
94 | } editor; |
||
95 | |||
96 | struct __attribute__ ((__packed__)) editor_color_item |
||
97 | { |
||
98 | char word[40]; // слово для подсветки |
||
99 | uint32_t f1_offset; // смещение в таблице F1 подсказок |
||
100 | uint8_t flags; // флаги используемые при выделении |
||
101 | uint8_t endc; // символ конца выделения (используется при flags&4) |
||
102 | uint8_t escc; // экранирующий символ (используется при flags&4) ascii(34) примеры экранирования \r \n \t |
||
103 | uint8_t color; // цвет по таблице цветов |
||
104 | }; |
||
105 | |||
106 | struct editor_syntax_file |
||
107 | { |
||
108 | uint32_t count_colors_text; // кол-во цветов текста dd (text-color_wnd_text)/4 |
||
109 | uint32_t count_key_words; // кол-во ключевых слов dd (f1-text)/48 |
||
110 | color_t color_cursor; // dd 0xf1fcd0 |
||
111 | color_t color_wnd_capt; // dd 0x080808 |
||
112 | color_t color_wnd_work; // dd 0x1C1C1C |
||
113 | color_t color_wnd_bord; // dd 0xc0c0c0 |
||
114 | color_t color_select; // dd 0x3E3D32 |
||
115 | color_t color_cur_text; // dd 0x808080 |
||
116 | color_t color_wnd_text[]; // таблица цветов размером count_colors_text |
||
117 | // editor_color_item[]; // таблица ключевых подсвеченных слов размером count_key_words |
||
118 | }; |
||
119 | |||
120 | |||
121 | static struct editor_syntax_file default_syntax = { |
||
122 | 10, //count_colors_text |
||
123 | 0, // count_key_words dd (f1-text)/48 |
||
124 | 0xf1fcd0, //color_cursor dd 0xf1fcd0 |
||
125 | 0x080808, //color_wnd_capt dd 0x080808 |
||
126 | 0x1C1C1C, //color_wnd_work dd 0x1C1C1C |
||
127 | 0xc0c0c0, //color_wnd_bord dd 0xc0c0c0 |
||
128 | 0x3E3D32, //color_select dd 0x3E3D32 |
||
129 | 0x808080, //color_cur_text dd 0x808080 |
||
130 | {0xD0D0D0, 0xffff00, 0x00ff00, 0x00ffff, 0x808080, 0xff40ff, 0x4080ff, 0xff0000, 0x8080ff, 0x00ccff} |
||
131 | }; |
||
132 | // next structure must follow syntax definition, at least has 1 element !!! |
||
133 | static struct editor_color_item word1 = { |
||
134 | "siemargl", 1, 0, 0, 1 // test word colored as 1st in table |
||
135 | }; |
||
136 | // next structure preferably follow syntax definition, at least has 1 element !!! |
||
137 | static char f1_table[] = { |
||
138 | "\0" |
||
139 | "First\0" |
||
140 | "Last\0" |
||
141 | }; |
||
142 | |||
143 | |||
144 | extern void (*ted_draw)(editor *) __attribute__((__stdcall__)); |
||
145 | extern void (*ted_init_scroll_bars)(editor *, int opt) __attribute__((__stdcall__)); |
||
146 | /// opt bits = 1 - менять цвет скроллингов, 2 - изменились размеры окна, 4 - изменились размеры документа |
||
147 | extern void (*ted_init_syntax_file)(editor *) __attribute__((__stdcall__)); |
||
148 | extern void (*ted_mouse)(editor *) __attribute__((__stdcall__)); |
||
149 | extern void (*ted_text_add)(editor *, char *text, int textlen, int opt) __attribute__((__stdcall__)); |
||
150 | /// add text to cursor pos |
||
151 | /// opt == ted_opt_ed_change_time, ted_opt_ed_move_cursor |
||
152 | ///ted_opt_ed_move_cursor equ 1 ;двигать курсор после добавления текста |
||
153 | ///ted_opt_ed_change_time equ 2 ;добавлять изменения при редактировании текста |
||
154 | extern void (*ted_but_select_word)(editor *) __attribute__((__stdcall__)); |
||
155 | /// select word under cursor |
||
156 | extern void (*ted_but_copy)(editor *) __attribute__((__stdcall__)); |
||
157 | extern void (*ted_but_paste)(editor *) __attribute__((__stdcall__)); |
||
158 | |||
159 | extern void (*ted_but_find_next)(editor *) __attribute__((__stdcall__)); |
||
160 | ///move cursor to |
||
161 | |||
162 | |||
163 | |||
164 | extern void (*ted_but_sumb_upper_asm)(editor *) __attribute__((__stdcall__)); |
||
165 | static inline void editor_selected_toupper(editor *ed) |
||
166 | { |
||
167 | __asm__ __volatile__ ( |
||
168 | "push edi \n\t" |
||
169 | "push esi \n\t":::); |
||
170 | |||
171 | (*ted_but_sumb_upper_asm)(ed); |
||
172 | |||
173 | __asm__ __volatile__ ( |
||
174 | "pop esi \n\t" |
||
175 | "pop edi \n\t":::); |
||
176 | } |
||
177 | |||
178 | extern void (*ted_but_sumb_lover_asm)(editor *) __attribute__((__stdcall__)); |
||
179 | static inline void editor_selected_tolower(editor *ed) |
||
180 | { |
||
181 | __asm__ __volatile__ ( |
||
182 | "push edi \n\t" |
||
183 | "push esi \n\t":::); |
||
184 | |||
185 | (*ted_but_sumb_lover_asm)(ed); |
||
186 | |||
187 | __asm__ __volatile__ ( |
||
188 | "pop esi \n\t" |
||
189 | "pop edi \n\t":::); |
||
190 | } |
||
191 | |||
192 | |||
193 | extern void (*ted_but_convert_by_table_asm)(editor *, char* table) __attribute__((__stdcall__)); |
||
194 | static inline void editor_convert_by_table(editor *ed, char* table) |
||
195 | { |
||
196 | __asm__ __volatile__ ( |
||
197 | "push edi \n\t" |
||
198 | "push esi \n\t":::); |
||
199 | |||
200 | (*ted_but_convert_by_table_asm)(ed, table); |
||
201 | |||
202 | __asm__ __volatile__ ( |
||
203 | "pop esi \n\t" |
||
204 | "pop edi \n\t":::); |
||
205 | } |
||
206 | |||
207 | extern int (*ted_can_save_asm)(editor *) __attribute__((__stdcall__)); |
||
208 | static inline int editor_can_save(editor *ed) |
||
209 | /// return 1 if can be saved |
||
210 | { |
||
211 | int ret; |
||
212 | __asm__ __volatile__ ( |
||
213 | "push edi \n\t":::); |
||
214 | |||
215 | (*ted_can_save_asm)(ed); |
||
216 | |||
217 | __asm__ __volatile__ ( |
||
218 | "pop edi \n\t":"=a"(ret)::); |
||
219 | return ret; |
||
220 | } |
||
221 | |||
222 | extern void (*ted_clear_asm)(editor *, int) __attribute__((__stdcall__)); |
||
223 | static inline void editor_clear(editor *ed, int all) |
||
224 | /// all==1 - clear all memory |
||
225 | { |
||
226 | __asm__ __volatile__ ( |
||
227 | "push edi \n\t":::); |
||
228 | |||
229 | (*ted_clear_asm)(ed, all); |
||
230 | |||
231 | __asm__ __volatile__ ( |
||
232 | "pop edi \n\t":::); |
||
233 | } |
||
234 | |||
235 | extern void (*ted_delete_asm)(editor *) __attribute__((__stdcall__)); |
||
236 | static inline void editor_delete(editor *ed) |
||
237 | /// frees all memory (destroy) |
||
238 | { |
||
239 | __asm__ __volatile__ ( |
||
240 | "push edi \n\t":::); |
||
241 | |||
242 | (*ted_delete_asm)(ed); |
||
243 | |||
244 | __asm__ __volatile__ ( |
||
245 | "pop edi \n\t":::); |
||
246 | free(ed->scr_w); |
||
247 | free(ed->scr_h); |
||
248 | free(ed->buffer); |
||
249 | free(ed->buffer_find); |
||
250 | } |
||
251 | |||
252 | extern void (*ted_init_asm)(editor *) __attribute__((__stdcall__)); |
||
253 | static inline void editor_init(editor *ed) |
||
254 | /// allocate memory |
||
255 | { |
||
256 | __asm__ __volatile__ ( |
||
257 | "push edi \n\t":::); |
||
258 | |||
259 | (*ted_init_asm)(ed); |
||
260 | |||
261 | __asm__ __volatile__ ( |
||
262 | "pop edi \n\t":::); |
||
263 | } |
||
264 | |||
265 | extern int (*ted_is_select)(editor *) __attribute__((__stdcall__)); |
||
266 | static inline int editor_is_select(editor *ed) |
||
267 | /// return 1 if have selection |
||
268 | { |
||
269 | int ret; |
||
270 | __asm__ __volatile__ ( |
||
271 | "push ebx \n\t":::); |
||
272 | |||
273 | (*ted_is_select)(ed); |
||
274 | |||
275 | __asm__ __volatile__ ( |
||
276 | "pop ebx \n\t":"=a"(ret)::); |
||
277 | return ret; |
||
278 | } |
||
279 | |||
280 | enum control_keys { |
||
281 | KM_SHIFT = 0x00010000, |
||
282 | KM_CTRL = 0x00020000, |
||
283 | KM_ALT = 0x00040000, |
||
284 | KM_NUMLOCK = 0x00080000 |
||
285 | }; |
||
286 | |||
287 | extern void (*ted_key_asm)(editor *, char* table, int control) __attribute__((__stdcall__)); |
||
288 | static inline void editor_keyboard(editor *ed, char* table, enum control_keys control, int ch) |
||
289 | /// control is KM_SHIFT, KM_ALT, KM_CTRL, KM_NUMLOCK, |
||
290 | /// ch = GET_KEY |
||
291 | /// table = SF_SYSTEM_GET,SSF_KEYBOARD_LAYOUT |
||
292 | { |
||
293 | __asm__ __volatile__ ( |
||
294 | "nop \n\t"::"a"(ch):); |
||
295 | |||
296 | (*ted_key_asm)(ed, table, control); |
||
297 | } |
||
298 | |||
299 | extern void (*ted_open_file_asm)(editor *, struct fs_dirinfo*, char *fname) __attribute__((__stdcall__)); |
||
300 | static inline int editor_openfile(editor *ed, char *fname, int *readbytes) |
||
301 | /// returns errcode as SysFn70 |
||
302 | { |
||
303 | int ret; |
||
304 | struct fs_dirinfo di; |
||
305 | __asm__ __volatile__ ( |
||
306 | "push edi \n\t":::); |
||
307 | |||
308 | (*ted_open_file_asm)(ed, &di, fname); |
||
309 | |||
310 | __asm__ __volatile__ ( |
||
311 | "pop edi \n\t":"=b"(*readbytes), "=a"(ret)::); |
||
312 | return ret; |
||
313 | } |
||
314 | |||
315 | extern void (*ted_save_file_asm)(editor *, struct fs_dirinfo*, char *fname) __attribute__((__stdcall__)); |
||
316 | static inline int editor_savefile(editor *ed, char *fname) |
||
317 | /// returns errcode, calls fun_save_err() if exists |
||
318 | { |
||
319 | struct fs_dirinfo di; |
||
320 | |||
321 | (*ted_save_file_asm)(ed, &di, fname); |
||
322 | |||
323 | return ed->err_save; |
||
324 | } |
||
325 | |||
326 | extern void (*ted_but_cut)(editor *) __attribute__((__stdcall__)); |
||
327 | static inline void editor_cut(editor *ed) |
||
328 | { |
||
329 | __asm__ __volatile__ ( |
||
330 | "push edi \n\t":::); |
||
331 | |||
332 | (*ted_but_cut)(ed); |
||
333 | |||
334 | __asm__ __volatile__ ( |
||
335 | "pop edi \n\t":::); |
||
336 | } |
||
337 | |||
338 | extern void (*ted_but_undo)(editor *) __attribute__((__stdcall__)); |
||
339 | static inline void editor_undo(editor *ed) |
||
340 | { |
||
341 | __asm__ __volatile__ ( |
||
342 | "push edi \n\t":::); |
||
343 | |||
344 | (*ted_but_undo)(ed); |
||
345 | |||
346 | __asm__ __volatile__ ( |
||
347 | "pop edi \n\t":::); |
||
348 | } |
||
349 | |||
350 | extern void (*ted_but_redo)(editor *) __attribute__((__stdcall__)); |
||
351 | static inline void editor_redo(editor *ed) |
||
352 | { |
||
353 | __asm__ __volatile__ ( |
||
354 | "push edi \n\t":::); |
||
355 | |||
356 | (*ted_but_redo)(ed); |
||
357 | |||
358 | __asm__ __volatile__ ( |
||
359 | "pop edi \n\t":::); |
||
360 | } |
||
361 | |||
362 | extern void (*ted_but_reverse)(editor *) __attribute__((__stdcall__)); |
||
363 | static inline void editor_reverse(editor *ed) |
||
364 | { |
||
365 | __asm__ __volatile__ ( |
||
366 | "push edi \n\t" |
||
367 | "push ebx\n\t":::); |
||
368 | |||
369 | (*ted_but_reverse)(ed); |
||
370 | |||
371 | __asm__ __volatile__ ( |
||
372 | "pop ebx \n\t" |
||
373 | "pop edi \n\t":::); |
||
374 | } |
||
375 | |||
376 | extern void (*ted_text_colored_asm)() __attribute__((__stdcall__)); |
||
377 | static inline void editor_text_colored(editor *ed) |
||
378 | { |
||
379 | __asm__ __volatile__ ( |
||
380 | "nop \n\t"::"D"(ed):); |
||
381 | |||
382 | (*ted_text_colored_asm)(); |
||
383 | } |
||
384 | |||
385 | static inline |
||
386 | uint32_t get_control_keys(void) |
||
387 | { |
||
388 | uint32_t ctrl; |
||
389 | |||
390 | __asm__ __volatile__( |
||
391 | "int $0x40 \n\t" |
||
392 | :"=a"(ctrl) |
||
393 | :"a"(66),"b"(3)); |
||
394 | |||
395 | return ctrl; |
||
396 | }; |
||
397 | |||
398 | static inline |
||
399 | int get_keyboard_layout(int opt, char* buf) |
||
400 | /// 128 byte buffer |
||
401 | /// opt: 1 - normal, 2 - shifted, 3 - alted, or 9 - return language |
||
402 | { |
||
403 | uint32_t lang; |
||
404 | |||
405 | __asm__ __volatile__( |
||
406 | "int $0x40 \n\t" |
||
407 | :"=a"(lang) |
||
408 | :"a"(26),"b"(2), "c"(opt), "d"(buf)); |
||
409 | |||
410 | return lang; |
||
411 | }; |
||
412 | |||
413 | |||
414 | static void editor_key(editor* ed) |
||
415 | // callback for gui |
||
416 | { |
||
417 | uint32_t control = get_control_keys(); |
||
418 | enum control_keys ed_ctrl = 0; |
||
419 | int ly_opt = 1; |
||
420 | if (control & 3) { ed_ctrl |= KM_SHIFT; ly_opt = 2; } |
||
421 | if (control & 0xC) ed_ctrl |= KM_CTRL; |
||
422 | if (control & 0x30){ ed_ctrl |= KM_ALT; ly_opt = 3; } |
||
423 | if (control & 0x80) ed_ctrl |= KM_NUMLOCK; |
||
424 | |||
425 | char conv_table[128]; |
||
426 | get_keyboard_layout(ly_opt, conv_table); |
||
427 | |||
428 | editor_keyboard(ed, conv_table, ed_ctrl, get_key().val); |
||
429 | } |
||
430 | |||
431 | inline void gui_add_editor(kolibri_window *wnd, editor* e) |
||
432 | { |
||
433 | kolibri_window_add_element(wnd, KOLIBRI_EDITOR, e); |
||
434 | } |
||
435 | |||
436 | static inline editor* kolibri_new_editor(uint32_t x_w, uint32_t y_h, uint32_t font, uint32_t max_chars, editor **editor_interlock) |
||
437 | /// font - 0b10SSS 8x16 size multiply (SSS+1), 0xSSS - 6x9 multiply (SSS+1) |
||
438 | |||
439 | { |
||
440 | editor *ed = (editor *)calloc(1, sizeof(editor)); |
||
441 | ed->x_pos = x_w >> 16; |
||
442 | ed->width = x_w & 0xFFFF; |
||
443 | ed->y_pos = y_h >> 16; |
||
444 | ed->hight = y_h & 0xFFFF; |
||
445 | |||
446 | // no panel, w_pane, h_pane == 0 |
||
447 | // font |
||
448 | if (font == 0) font = 0x10; // default 16 = 8x16 |
||
449 | int font_multipl = (font & 7) + 1; |
||
450 | ed->font_size = font << 24; |
||
451 | if (font & 0x10) // 8x16 |
||
452 | { |
||
453 | ed->width_sym = 8 * font_multipl; |
||
454 | ed->hight_sym = 16 * font_multipl; |
||
455 | } else // 6x9 |
||
456 | { |
||
457 | ed->width_sym = 6 * font_multipl; |
||
458 | ed->hight_sym = 9 * font_multipl; |
||
459 | } |
||
460 | // memory sizing for text & syntax |
||
461 | ed->max_chars = max_chars; |
||
462 | ed->increase_size = max_chars / 2; |
||
463 | ed->syntax_file_size = sizeof (default_syntax); |
||
464 | |||
465 | /* // loaded auto from syntax |
||
466 | ed->color_cursor = 0x808080; |
||
467 | ed->color_wnd_capt = 0x80; |
||
468 | ed->color_wnd_bord = 0xd0d0d0; |
||
469 | ed->color_select = 0x208080; |
||
470 | ed->color_cur_text = 0xff0000; |
||
471 | ed->color_wnd_text = 0xffff00; |
||
472 | */ |
||
473 | ed->symbol_new_line = 20; // ascii(20) |
||
474 | |||
475 | ed->scr_w = kolibri_new_scrollbar_def(0, 0, 100, 30, 0); |
||
476 | ed->scr_h = kolibri_new_scrollbar_def(0, 0, 100, 30, 0); |
||
477 | |||
478 | ed->buffer_size = TE_BUF_SIZE; |
||
479 | ed->buffer = malloc(TE_BUF_SIZE); |
||
480 | ed->buffer_find = malloc(TE_BUF_SIZE / 8); //where to store text to search |
||
481 | |||
482 | ed->cur_ins = 1; // insert mode default |
||
483 | ed->mode_color = 1; // can select text |
||
484 | ed->mode_invis = 1; // show nonprinted symbols |
||
485 | |||
486 | // ??? saveregs ax,cx,di |
||
487 | editor_init(ed); // memory allocation, cleaning |
||
488 | ed->syntax_file = (char*)&default_syntax; |
||
489 | (*ted_init_syntax_file)(ed); // load colors and syntax highlight |
||
490 | ed->help_text_f1 = f1_table; // override if not aligned immediately after syntax words |
||
491 | ed->key_words_data = &word1; |
||
492 | |||
493 | return ed; |
||
494 | } |
||
495 | |||
496 | |||
497 | #endif // KOLIBRI_EDITOR_H><> |