forked from KolibriOS/kolibrios
t_edit:
1) add keys Ctrl+H, Ctrl+G 2) update panels code git-svn-id: svn://kolibrios.org@7579 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
ef5713e675
commit
c30f9415d3
@ -119,6 +119,7 @@ import lib_boxlib, \
|
||||
ted_but_find, 'ted_but_find' , \
|
||||
ted_but_replace, 'ted_but_replace' , \
|
||||
ted_text_colored, 'ted_text_colored' , \
|
||||
ted_go_to_position, 'ted_go_to_position' , \
|
||||
frame_draw, 'frame_draw' , \
|
||||
progressbar_draw,'progressbar_draw' , \
|
||||
progressbar_progress, 'progressbar_progress'
|
||||
@ -186,6 +187,7 @@ public ted_but_reverse as '_ted_but_reverse'
|
||||
public ted_but_find as '_ted_but_find'
|
||||
public ted_but_replace as '_ted_but_replace'
|
||||
public ted_text_colored as 'ted_text_colored_asm'
|
||||
public ted_go_to_position as '_ted_go_to_position'
|
||||
|
||||
public tl_data_init as '_tl_data_init'
|
||||
public tl_data_clear as '_tl_data_clear'
|
||||
|
@ -77,16 +77,16 @@ typedef struct __attribute__ ((__packed__)) {
|
||||
uint8_t mode_color; // 1 ðåæèì âûäåëåíèÿ ñëîâ öâåòîì (0-âûêë. 1-âêë.)
|
||||
uint8_t mode_invis; // 0 ðåæèì ïîêàçà íåïå÷àòàåìûõ ñèìâîëîâ
|
||||
uint8_t gp_opt; // 0 îïöèè âîçâðàùàåìûå ôóíêöèåé ted_get_pos_by_cursor
|
||||
editor_callback fun_on_key_ctrl_o; // óêàçàòåëü íà ôóíêöèþ âûçûâàåìóþ ïðè íàæàòèè Ctrl+O (îòêðûòèå ôàéëà), can be NULL
|
||||
editor_callback fun_on_key_ctrl_f; // ... Ctrl+F (âûçîâà/ñêðûòèÿ ïàíåëè ïîèñêà)
|
||||
editor_callback fun_on_key_ctrl_n; // ... Ctrl+N (ñîçäàíèå íîâîãî äîêóìåíòà)
|
||||
editor_callback fun_on_key_ctrl_s; // ... Ctrl+S
|
||||
editor_callback fun_on_key_ctrl_all; // óêàçàòåëü íà ôóíêöèþ âûçûâàåìóþ ïðè íàæàòèè Ctrl+N,O,S,F,G,H, can be NULL
|
||||
uint32_t reserved_1; // ...
|
||||
uint32_t reserved_2; // ...
|
||||
uint32_t reserved_3; // ...
|
||||
uint32_t buffer_size;// BUF_SIZE ðàçìåð áóôåðà êîïèðîâàíèÿ/âñòàâêè
|
||||
editor_callback fun_find_err; // óêàçàòåëü íà ôóíêöèþ âûçûâàåìóþ åñëè ïîèñê çàêîí÷èëñÿ íåóäà÷íî
|
||||
editor_callback fun_init_synt_err; // unused óêàçàòåëü íà ôóíêöèþ âûçûâàåìóþ ïðè îøèáî÷íîì îòêðûòèè ôàéëà ñèíòàêñèñà
|
||||
editor_callback fun_draw_panel_buttons; // óêàçàòåëü íà ôóíêöèþ ðèñîâàíèÿ ïàíåëè ñ êíîïêàìè
|
||||
editor_callback fun_draw_panel_find; // óêàçàòåëü íà ôóíêöèþ ðèñîâàíèÿ ïàíåëè ïîèñêà
|
||||
editor_callback fun_draw_panel_syntax; // óêàçàòåëü íà ôóíêöèþ ðèñîâàíèÿ ïàíåëè ñèíòàêñèñà
|
||||
editor_callback fun_draw_panels; // óêàçàòåëü íà ôóíêöèþ ðèñîâàíèÿ ïàíåëè ïîèñêà|çàìåíû|ïåðåõîäà|ñèíòàêñèñà
|
||||
uint32_t reserved_4; // ...
|
||||
editor_callback fun_save_err; // óêàçàòåëü íà ôóíêöèþ âûçûâàåìóþ åñëè ñîõðàíåíèå ôàéëà çàêîí÷èëîñü íåóäà÷íî
|
||||
uint32_t increase_size; //200 ÷èñëî ñèìâîëîâ íà êîòîðûå áóäåò óâå÷èâàòüñÿ ïàìÿòü ïðè íåõâàòêå
|
||||
void *ptr_free_symb; // èñïîëüçóåòñÿ âíóòðè ýëåìåíòà äëÿ óñêîðåíèÿ âñòàâêè òåêñòà
|
||||
@ -145,19 +145,19 @@ extern void (*ted_draw)(editor *) __attribute__((__stdcall__));
|
||||
extern void (*ted_init_scroll_bars)(editor *, int opt) __attribute__((__stdcall__));
|
||||
/// opt bits = 1 - ìåíÿòü öâåò ñêðîëëèíãîâ, 2 - èçìåíèëèñü ðàçìåðû îêíà, 4 - èçìåíèëèñü ðàçìåðû äîêóìåíòà
|
||||
extern void (*ted_init_syntax_file)(editor *) __attribute__((__stdcall__));
|
||||
extern void (*ted_mouse)(editor *) __attribute__((__stdcall__));
|
||||
extern void (*ted_mouse)(editor *) __attribute__((__stdcall__));
|
||||
extern void (*ted_text_add)(editor *, char *text, int textlen, int opt) __attribute__((__stdcall__));
|
||||
/// add text to cursor pos
|
||||
/// opt == ted_opt_ed_change_time, ted_opt_ed_move_cursor
|
||||
///ted_opt_ed_move_cursor equ 1 ;äâèãàòü êóðñîð ïîñëå äîáàâëåíèÿ òåêñòà
|
||||
///ted_opt_ed_change_time equ 2 ;äîáàâëÿòü èçìåíåíèÿ ïðè ðåäàêòèðîâàíèè òåêñòà
|
||||
extern void (*ted_but_select_word)(editor *) __attribute__((__stdcall__));
|
||||
extern void (*ted_but_select_word)(editor *) __attribute__((__stdcall__));
|
||||
/// select word under cursor
|
||||
extern void (*ted_but_copy)(editor *) __attribute__((__stdcall__));
|
||||
extern void (*ted_but_paste)(editor *) __attribute__((__stdcall__));
|
||||
extern void (*ted_but_copy)(editor *) __attribute__((__stdcall__));
|
||||
extern void (*ted_but_paste)(editor *) __attribute__((__stdcall__));
|
||||
|
||||
extern void (*ted_but_find)(editor *) __attribute__((__stdcall__));
|
||||
extern void (*ted_but_replace)(editor *) __attribute__((__stdcall__));
|
||||
extern void (*ted_but_replace)(editor *) __attribute__((__stdcall__));
|
||||
///move cursor to <ed_buffer_find>, calls ted_fun_find_err() if exist
|
||||
|
||||
|
||||
@ -170,7 +170,7 @@ extern void (*ted_but_convert_by_table)(editor *, char* table) __attribute__((__
|
||||
|
||||
/// return 1 if need to be saved (has changes), 0 otherwise
|
||||
extern int (*ted_can_save)(editor *) __attribute__((__stdcall__));
|
||||
|
||||
|
||||
/// all==1 - clear all memory
|
||||
extern void (*ted_clear)(editor *, int all) __attribute__((__stdcall__));
|
||||
|
||||
@ -183,7 +183,7 @@ static inline void editor_delete(editor *ed)
|
||||
free(ed->scr_h);
|
||||
free(ed->buffer);
|
||||
free(ed->buffer_find);
|
||||
}
|
||||
}
|
||||
|
||||
/// allocate memory
|
||||
extern void (*ted_init)(editor *) __attribute__((__stdcall__));
|
||||
@ -214,7 +214,7 @@ static inline __attribute__((__stdcall__)) void editor_keyboard(editor *ed, char
|
||||
"nop \n\t"::"a"(ch):);
|
||||
(*ted_key_asm)(ed, table, control);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
extern void (*ted_open_file_asm)(editor *, struct fs_dirinfo*, char *fname) __attribute__((__stdcall__));
|
||||
static inline int editor_openfile(editor *ed, char *fname, int *readbytes)
|
||||
@ -230,7 +230,7 @@ static inline int editor_openfile(editor *ed, char *fname, int *readbytes)
|
||||
__asm__ __volatile__ (
|
||||
"pop %%edi \n\t":"=b"(*readbytes), "=a"(ret)::);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
extern void (*ted_save_file_asm)(editor *, struct fs_dirinfo*, char *fname) __attribute__((__stdcall__));
|
||||
static inline int editor_savefile(editor *ed, char *fname)
|
||||
@ -241,7 +241,7 @@ static inline int editor_savefile(editor *ed, char *fname)
|
||||
(*ted_save_file_asm)(ed, &di, fname);
|
||||
|
||||
return ed->err_save;
|
||||
}
|
||||
}
|
||||
|
||||
extern void (*ted_but_cut)(editor *) __attribute__((__stdcall__));
|
||||
|
||||
@ -257,7 +257,7 @@ static inline void editor_text_colored(editor *ed)
|
||||
__asm__ __volatile__ (
|
||||
"call *%0 \n\t"::"m"(ted_text_colored_asm), "D"(ed):);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static inline
|
||||
uint32_t get_control_keys(void)
|
||||
@ -309,7 +309,7 @@ static void editor_key(editor* ed, oskey_t key)
|
||||
|
||||
static inline void gui_add_editor(kolibri_window *wnd, editor* e)
|
||||
{
|
||||
kolibri_window_add_element(wnd, KOLIBRI_EDITOR, e);
|
||||
kolibri_window_add_element(wnd, KOLIBRI_EDITOR, e);
|
||||
}
|
||||
|
||||
static inline editor* kolibri_new_editor(uint32_t x_w, uint32_t y_h, uint32_t font, uint32_t max_chars, void *editor_interlock)
|
||||
@ -317,11 +317,11 @@ static inline editor* kolibri_new_editor(uint32_t x_w, uint32_t y_h, uint32_t fo
|
||||
|
||||
{
|
||||
editor *ed = (editor *)calloc(1, sizeof(editor));
|
||||
ed->x_pos = x_w >> 16;
|
||||
ed->width = x_w & 0xFFFF;
|
||||
ed->y_pos = y_h >> 16;
|
||||
ed->x_pos = x_w >> 16;
|
||||
ed->width = x_w & 0xFFFF;
|
||||
ed->y_pos = y_h >> 16;
|
||||
ed->hight = y_h & 0xFFFF;
|
||||
|
||||
|
||||
ed->w_pane = 30;
|
||||
ed->h_pane = 20;
|
||||
// font
|
||||
@ -352,8 +352,8 @@ static inline editor* kolibri_new_editor(uint32_t x_w, uint32_t y_h, uint32_t fo
|
||||
*/
|
||||
ed->symbol_new_line = 20; // ascii(20)
|
||||
|
||||
ed->scr_w = kolibri_new_scrollbar_def(X_Y(0, 16), X_Y(0, 0), 100, 30, 0); // cur_area will be inited ltr, max & pos undef
|
||||
ed->scr_h = kolibri_new_scrollbar_def(X_Y(0, 0), X_Y(0, 16), 100, 30, 0); // cur_area will be inited ltr, max & pos undef
|
||||
ed->scr_w = kolibri_new_scrollbar_def(X_Y(0, 16), X_Y(0, 0), 100, 30, 0); // cur_area will be inited ltr, max & pos undef
|
||||
ed->scr_h = kolibri_new_scrollbar_def(X_Y(0, 0), X_Y(0, 16), 100, 30, 0); // cur_area will be inited ltr, max & pos undef
|
||||
|
||||
ed->buffer_size = TE_BUF_SIZE;
|
||||
ed->buffer = malloc(TE_BUF_SIZE);
|
||||
@ -372,7 +372,7 @@ static inline editor* kolibri_new_editor(uint32_t x_w, uint32_t y_h, uint32_t fo
|
||||
ed->key_words_data = &word1;
|
||||
|
||||
return ed;
|
||||
}
|
||||
}
|
||||
|
||||
/// return 1 if symbol is not visible (deleted or undo-ed)
|
||||
static inline int editor_symbol_not_vis(editor* ed, struct editor_symbol* sym)
|
||||
|
@ -321,7 +321,8 @@ dd sz_ted_but_reverse, ted_but_reverse
|
||||
dd sz_ted_but_find, ted_but_find
|
||||
dd sz_ted_but_replace, ted_but_replace
|
||||
dd sz_ted_text_colored, ted_text_colored
|
||||
dd sz_ted_version, 0x00000005
|
||||
dd sz_ted_go_to_position, ted_go_to_position
|
||||
dd sz_ted_version, 6
|
||||
|
||||
dd sz_Frame_draw, frame.draw
|
||||
dd szVersion_frame, 0x00010001
|
||||
@ -434,6 +435,7 @@ sz_ted_but_reverse db 'ted_but_reverse',0
|
||||
sz_ted_but_find db 'ted_but_find',0
|
||||
sz_ted_but_replace db 'ted_but_replace',0
|
||||
sz_ted_text_colored db 'ted_text_colored',0
|
||||
sz_ted_go_to_position db 'ted_go_to_position',0
|
||||
sz_ted_version db 'version_text_edit',0
|
||||
|
||||
sz_Frame_draw db 'frame_draw',0
|
||||
|
@ -408,16 +408,13 @@ ted_cur_ins equ byte[edi+194] ;०
|
||||
ted_mode_color equ byte[edi+195] ;०¨¬ ¢ë¤¥«¥¨ï á«®¢ 梥⮬ (0-¢ëª«. 1-¢ª«.)
|
||||
ted_mode_invis equ byte[edi+196] ;०¨¬ ¯®ª § ¥¯¥ç â ¥¬ëå ᨬ¢®«®¢
|
||||
ted_gp_opt equ byte[edi+197] ;®¯æ¨¨ ¢®§¢à é ¥¬ë¥ äãªæ¨¥© ted_get_pos_by_cursor
|
||||
ted_fun_on_key_ctrl_o equ dword[edi+198] ;㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ¦ ⨨ Ctrl+O (®âªàë⨥ ä ©« )
|
||||
ted_fun_on_key_ctrl_f equ dword[edi+202] ;... Ctrl+F (¢ë§®¢ /áªàëâ¨ï ¯ ¥«¨ ¯®¨áª )
|
||||
ted_fun_on_key_ctrl_n equ dword[edi+206] ;... Ctrl+N (ᮧ¤ ¨¥ ®¢®£® ¤®ªã¬¥â )
|
||||
ted_fun_on_key_ctrl_s equ dword[edi+210] ;... Ctrl+S
|
||||
ted_fun_on_key_ctrl_all equ dword[edi+198] ;㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ¦ ⨨ Ctrl+N,O,F,S,H,G
|
||||
;+202,+206,+210 § १¥à¢¨à®¢ ®
|
||||
ted_buffer_size equ dword[edi+214] ;à §¬¥à ¡ãä¥à ª®¯¨à®¢ ¨ï/¢áâ ¢ª¨
|
||||
ted_fun_find_err equ dword[edi+218] ;㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¥á«¨ ¯®¨áª § ª®ç¨«áï ¥ã¤ ç®
|
||||
;ted_fun_init_synt_err equ dword[edi+222] ;㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ®è¨¡®ç®¬ ®âªàë⨨ ä ©« á¨â ªá¨á
|
||||
ted_fun_draw_panel_buttons equ dword[edi+226] ;㪠§ ⥫ì äãªæ¨î à¨á®¢ ¨ï ¯ ¥«¨ á ª®¯ª ¬¨
|
||||
ted_fun_draw_panel_find equ dword[edi+230] ;㪠§ ⥫ì äãªæ¨î à¨á®¢ ¨ï ¯ ¥«¨ ¯®¨áª
|
||||
ted_fun_draw_panel_syntax equ dword[edi+234] ;㪠§ ⥫ì äãªæ¨î à¨á®¢ ¨ï ¯ ¥«¨ á¨â ªá¨á
|
||||
ted_fun_draw_panels equ dword[edi+230] ;㪠§ ⥫ì äãªæ¨î à¨á®¢ ¨ï ¯ ¥«¨ ¯®¨áª |...|á¨â ªá¨á
|
||||
ted_fun_save_err equ dword[edi+238] ;㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¥á«¨ á®åà ¥¨¥ ä ©« § ª®ç¨«®áì ¥ã¤ ç®
|
||||
ted_increase_size equ dword[edi+242] ;ç¨á«® ᨬ¢®«®¢ ª®â®àë¥ ¡ã¤¥â 㢥稢 âìáï ¯ ¬ïâì ¯à¨ ¥å¢ ⪥
|
||||
ted_ptr_free_symb equ dword[edi+246] ;㪠§ ⥫ì ᢮¡®¤ãî ¯ ¬ïâì, ¢ ª®â®àãî ¬®¦® ¤®¡ ¢«ïâì ᨬ¢®« (¨á¯®«ì§ã¥âáï ¢ãâà¨ í«¥¬¥â ¤«ï ãáª®à¥¨ï ¢áâ ¢ª¨ ⥪áâ )
|
||||
|
@ -37,6 +37,7 @@
|
||||
<li><a href="#fun_open_file">ted_open_file</a></li>
|
||||
<li><a href="#fun_text_add">ted_text_add</a></li>
|
||||
<li><a href="#fun_text_colored">ted_text_colored</a></li>
|
||||
<li><a href="#fun_go_to_position">ted_go_to_position</a></li>
|
||||
</ul>
|
||||
<p><a href="#syn_file">Формат файла подсветки *.syn</a></p>
|
||||
<p><a href="#struc_tedit">Структура tedit</a></p>
|
||||
@ -48,8 +49,8 @@
|
||||
|
||||
<h2>Возможности элемента</h2>
|
||||
<ul>
|
||||
<li>Открытие (Ctrl+O)/Сохранение файла.</li>
|
||||
<li>Редактирование: Повтор/Отмена действия (Ctrl+Z), Вырезать/Копировать (Ctrl+C)/Вставить (Ctrl+V), Поиск (Ctrl+F, F3).</li>
|
||||
<li>Открытие (Ctrl+O), Сохранение файла (Ctrl+S, Ctrl+Shift+S).</li>
|
||||
<li>Редактирование: Повтор/Отмена действия (Ctrl+Z), Вырезать, Копировать (Ctrl+C), Вставить (Ctrl+V), Поиск (Ctrl+F, F3), Замена (Ctrl+H), Переход на строку (Ctrl+G).</li>
|
||||
<li>Выделение цветом слов, заданных в файле синтаксиса. Вывод справки по ним, если она есть (нажатием F1 когда курсор на слове).</li>
|
||||
</ul>
|
||||
|
||||
@ -284,6 +285,14 @@ stdcall [ted_text_add], tedit0,text_buffer,30,ebx</pre>
|
||||
call [ted_text_colored]
|
||||
pop edi</pre>
|
||||
|
||||
<h4><a name="fun_go_to_position">ted_go_to_position</a></h4>
|
||||
<p>Функция для перехода на указанную позицию. Принимает 3 параметра:</p>
|
||||
<p>1) структура tedit,</p>
|
||||
<p>2) номер строки,</p>
|
||||
<p>3) номер символа.</p>
|
||||
<p>Пример использования:</p>
|
||||
<pre>stdcall [ted_go_to_position], tedit0,50,3</pre>
|
||||
|
||||
<h2>Внутренние функции:</h2>
|
||||
<p><b>ted_get_text_perv_pos</b> - переход на предыдущий символ в цепи (через указатель 'perv')</p>
|
||||
<p><b>ted_get_text_next_pos</b> - переход на следующий символ в цепи (через указатель 'next')</p>
|
||||
@ -373,22 +382,20 @@ tedit0: ;
|
||||
.mode_color db 1 ;+195 режим выделения слов цветом (0-выкл. 1-вкл.)
|
||||
.mode_invis db 0 ;+196 режим показа непечатаемых символов
|
||||
.gp_opt db 0 ;+197 опции возвращаемые функцией ted_get_pos_by_cursor
|
||||
.fun_on_key_ctrl_o dd but_ctrl_o ;+198 указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла)
|
||||
.fun_on_key_ctrl_f dd 0 ;+202 ... Ctrl+F (вызова/скрытия панели поиска)
|
||||
.fun_on_key_ctrl_n dd but_ctrl_n ;+206 ... Ctrl+N (создание нового документа)
|
||||
.fun_on_key_ctrl_s dd 0 ;+210 ... Ctrl+S
|
||||
.buffer_size dd BUF_SIZE ;+214 размер буфера копирования/вставки
|
||||
.fun_find_err dd 0 ;+218 указатель на функцию вызываемую если поиск закончился неудачно
|
||||
.fun_on_key_ctrl_all dd but_ctrl_all ;+198 указатель на функцию вызываемую при нажатии Ctrl+N,O,S,F,H,G
|
||||
dd 0,0,0 ;зарезервировано
|
||||
.buffer_size dd BUF_SIZE ;+214 размер буфера копирования/вставки
|
||||
.fun_find_err dd 0 ;+218 указатель на функцию вызываемую если поиск закончился неудачно
|
||||
.fun_init_synt_err dd 0 ;+222 указатель на функцию вызываемую при ошибочном открытии файла синтаксиса
|
||||
.fun_draw_panel_buttons dd 0 ;+226 указатель на функцию рисования панели с кнопками
|
||||
.fun_draw_panel_find dd 0 ;+230 указатель на функцию рисования панели поиска
|
||||
.fun_draw_panel_syntax dd 0 ;+234 указатель на функцию рисования панели синтаксиса
|
||||
.fun_save_err dd 0 ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно
|
||||
.fun_draw_panels dd 0 ;+230 указатель на функцию рисования панели поиска/замены/перехода/синтаксиса
|
||||
dd 0 ;зарезервировано
|
||||
.fun_save_err dd 0 ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно
|
||||
.increase_size dd 225 ;+242 число символов на которые будет увечиваться память при нехватке
|
||||
.ptr_free_symb dd ? ;+246 указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста)
|
||||
.font_s dd ? ;+250 стили для шрифта (от 0 до 7 множитель для размера, +16 для второго системного шрифта)</pre>
|
||||
<hr>
|
||||
<p>Документация обновлялась последний раз 21.01.19.</p>
|
||||
<p>Документация обновлялась последний раз 29.01.19.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
; ¬ ªà®á ¤«ï á¨á⥬®© ¡¨¡«¨®â¥ª¨ box_lib.obj
|
||||
; í«¥¬¥â TextEditor ¤«ï Kolibri OS
|
||||
; ä ©« ¯®á«¥¤¨© à § ¨§¬¥ï«áï 21.10.2018 IgorA
|
||||
; ä ©« ¯®á«¥¤¨© à § ¨§¬¥ï«áï 29.01.2019 IgorA
|
||||
; ª®¤ ¯à¨¬¥¥ GPL2 «¨æ¥§¨ï
|
||||
|
||||
;input:
|
||||
@ -20,12 +20,6 @@ macro ColToIndexOffset ind_reg,out_reg {
|
||||
add out_reg,ted_key_words_data
|
||||
}
|
||||
|
||||
TED_PANEL_NULL equ 0 ;¥â ®âªàë⮩ ¯ ¥«¨
|
||||
TED_PANEL_FIND equ 1 ;¯ ¥«ì ¯®¨áª
|
||||
TED_PANEL_SYNTAX equ 2 ;¯ ¥«ì ¢ë¡®à ä ©«®¢ ¯®¤á¢¥âª¨
|
||||
TED_PANEL_REPLACE equ 3 ;¯ ¥«ì § ¬¥ë
|
||||
TED_PANEL_WIDTH equ 150 ;è¨à¨ ¯ ¥«¨
|
||||
|
||||
TED_LINES_IN_NEW_FILE equ 30 ;ç¨á«® áâப ¢ ®¢®¬ ä ©«¥
|
||||
MAX_COLOR_WORD_LEN equ 40
|
||||
;------------------------------------------------------------------------------
|
||||
@ -241,38 +235,44 @@ proc ted_key, edit:dword, table:dword, control:dword
|
||||
test esi,KM_CTRL ;Ctrl+...
|
||||
jz .key_Ctrl
|
||||
; *** ¢ë§®¢ ¢¥è¨å äãªæ¨© ª®â®àë¥ âॡãîâ ®ª ®âªàëâ¨ï/á®åà ¥¨ï/¯®¨áª /...
|
||||
cmp ted_fun_on_key_ctrl_all,0
|
||||
je .end0
|
||||
xor al,al
|
||||
cmp ah,24 ;Ctrl+O
|
||||
jne @f
|
||||
cmp ted_fun_on_key_ctrl_o,0
|
||||
je .end_key_fun
|
||||
call ted_fun_on_key_ctrl_o
|
||||
mov al,'O'
|
||||
@@:
|
||||
cmp ah,31 ;Ctrl+S
|
||||
jne .end_ctrl_s
|
||||
cmp ted_fun_on_key_ctrl_s,0
|
||||
je .end_key_fun
|
||||
xor eax,eax
|
||||
test esi,KM_SHIFT
|
||||
jz @f
|
||||
inc eax
|
||||
@@:
|
||||
call ted_fun_on_key_ctrl_s
|
||||
jmp .end_key_fun
|
||||
.end_ctrl_s:
|
||||
jne @f
|
||||
mov al,'S'
|
||||
@@:
|
||||
cmp ah,33 ;Ctrl+F
|
||||
jne @f
|
||||
cmp ted_panel_id,TED_PANEL_FIND
|
||||
je @f
|
||||
cmp ted_fun_on_key_ctrl_f,0
|
||||
je .end_key_fun
|
||||
call ted_fun_on_key_ctrl_f
|
||||
mov al,'F'
|
||||
@@:
|
||||
cmp ah,34 ;Ctrl+G
|
||||
jne @f
|
||||
mov al,'G'
|
||||
@@:
|
||||
cmp ah,35 ;Ctrl+H
|
||||
jne @f
|
||||
mov al,'H'
|
||||
@@:
|
||||
cmp ah,49 ;Ctrl+N
|
||||
jne @f
|
||||
cmp ted_fun_on_key_ctrl_n,0
|
||||
je .end_key_fun
|
||||
call ted_fun_on_key_ctrl_n
|
||||
mov al,'N'
|
||||
@@:
|
||||
or al,al
|
||||
jz .end0
|
||||
and eax,0xff
|
||||
test esi,KM_SHIFT
|
||||
jz @f
|
||||
or eax,0x100
|
||||
@@:
|
||||
stdcall ted_fun_on_key_ctrl_all, eax
|
||||
jmp .end_key_fun
|
||||
.end0:
|
||||
|
||||
; *** ¢ë§®¢ ¢ãâ२å äãªæ¨©
|
||||
cmp ah,30 ;Ctrl+A
|
||||
jne @f
|
||||
@ -441,7 +441,7 @@ proc ted_key, edit:dword, table:dword, control:dword
|
||||
|
||||
cmp dword[table],0
|
||||
je @f
|
||||
stdcall KeyConvertToASCII, dword[table]
|
||||
stdcall KeyConvertToASCII, [table]
|
||||
@@:
|
||||
|
||||
;mov ted_drag_k,0 ;§ ª 稢 ¥¬ ¢ë¤¥«¥¨¥ ®â ª« ¢¨ âãàë
|
||||
@ -1157,7 +1157,7 @@ proc ted_text_add, edit:dword, text:dword, t_len:dword, add_opt:dword
|
||||
jg .no_cur_mov
|
||||
inc ted_cur_x ;move cursor
|
||||
;call ted_go_to_pos
|
||||
cmp byte [esi],13
|
||||
cmp byte[esi],13
|
||||
jne .no_cur_mov
|
||||
mov ted_cur_x,0
|
||||
inc ted_cur_y
|
||||
@ -1169,18 +1169,18 @@ proc ted_text_add, edit:dword, text:dword, t_len:dword, add_opt:dword
|
||||
; *** ¢áâ ¢ª ⥪ã饣® ᨬ¢®« ¨§ áâப¨ ***
|
||||
mov ecx,ted_opt_ed_change_time
|
||||
not ecx
|
||||
and dword[add_opt],ecx ;n_tim=false;
|
||||
and [add_opt],ecx ;n_tim=false;
|
||||
|
||||
mov cl,byte [esi] ;tex[i].c=ta[ns];
|
||||
mov byte [edx],cl
|
||||
m2m dword [edx+10],ted_tim_ch ;tex[i].tc=ted_tim_ch;
|
||||
mov cl,byte[esi] ;tex[i].c=ta[ns];
|
||||
mov byte[edx],cl
|
||||
m2m dword[edx+10],ted_tim_ch ;tex[i].tc=ted_tim_ch;
|
||||
mov [edx+2],eax ;tex[i].perv=po_t;
|
||||
|
||||
mov ecx,eax
|
||||
imul ecx,sizeof.symbol
|
||||
add ecx,ted_tex ; *** ecx = tex[po_t] ***
|
||||
add ecx,6 ; *** ecx = tex[po_t].next ***
|
||||
m2m dword [edx+6],dword [ecx] ;tex[i].next=tex[po_t].next;
|
||||
m2m dword[edx+6],dword[ecx] ;tex[i].next=tex[po_t].next;
|
||||
|
||||
call ted_get_text_arr_index ;*** eax = i ***
|
||||
mov [ecx],eax ;tex[po_t].next=i; // áá뫪¨ ¯¥à¥ ¯à ¢«ï¥¬
|
||||
@ -1968,7 +1968,7 @@ ted_get_num_lines:
|
||||
call ted_iterat_next
|
||||
cmp edx,ted_tex_1
|
||||
jle @f
|
||||
cmp byte [edx],13
|
||||
cmp byte[edx],13
|
||||
jne @b
|
||||
inc eax
|
||||
jmp @b
|
||||
@ -2046,6 +2046,38 @@ proc ted_set_undo
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; ¯¥à¥å®¤ 㪠§ ãî ¯®§¨æ¨î
|
||||
;input:
|
||||
; row = ®¬¥à áâப¨
|
||||
; col = ᨬ¢®«
|
||||
align 16
|
||||
proc ted_go_to_position uses ecx edx edi, edit:dword, row:dword, col:dword
|
||||
mov edi,[edit]
|
||||
; ¯®¤£®â®¢ª áâப¨
|
||||
mov edx,[row]
|
||||
call ted_get_num_lines
|
||||
cmp edx,eax
|
||||
jle @f
|
||||
mov edx,eax ;®£à ¨ç¥¨¥ ¯® áâப¥ max
|
||||
@@:
|
||||
dec edx
|
||||
cmp edx,0
|
||||
jge @f
|
||||
xor edx,edx ;®£à ¨ç¥¨¥ ¯® áâப¥ min
|
||||
@@:
|
||||
; ¯®¤£®â®¢ª ᨬ¢®«
|
||||
mov ecx,[col]
|
||||
dec ecx
|
||||
cmp ecx,0
|
||||
jge @f
|
||||
xor ecx,ecx
|
||||
@@:
|
||||
call ted_go_to_pos
|
||||
stdcall ted_draw,edi
|
||||
ret
|
||||
endp
|
||||
|
||||
;input:
|
||||
; ecx = Col
|
||||
; edx = Row
|
||||
@ -3498,13 +3530,9 @@ align 4
|
||||
inc bx
|
||||
int 0x40
|
||||
|
||||
cmp ted_fun_draw_panel_find,0
|
||||
cmp ted_fun_draw_panels,0
|
||||
je @f
|
||||
call ted_fun_draw_panel_find
|
||||
@@:
|
||||
cmp ted_fun_draw_panel_syntax,0
|
||||
je @f
|
||||
call ted_fun_draw_panel_syntax
|
||||
stdcall ted_fun_draw_panels, edi
|
||||
@@:
|
||||
popad
|
||||
ret
|
||||
@ -3515,7 +3543,6 @@ endp
|
||||
align 16
|
||||
proc ted_draw_main_cursor
|
||||
pushad
|
||||
|
||||
mov eax,SF_DRAW_RECT ;draw cursor
|
||||
mov ecx,ted_wnd_t ;calc rect -> y0,y1
|
||||
add ecx,ted_rec_t
|
||||
@ -3811,8 +3838,7 @@ endp
|
||||
align 16
|
||||
proc KeyConvertToASCII uses ebx, table:dword
|
||||
mov ebx,[table] ;convert scan to ascii
|
||||
ror ax,8
|
||||
xor ah,ah
|
||||
shr ax,8
|
||||
add bx,ax ;? ebx,eax
|
||||
mov ah,byte[ebx]
|
||||
ret
|
||||
|
@ -1025,16 +1025,14 @@ tedit0:
|
||||
.mode_color db 1 ;+195
|
||||
.mode_invis db 0 ;+196
|
||||
.gp_opt db 0 ;+197
|
||||
dd 0;.fun_on_key_ctrl_o dd but_ctrl_o ;+198
|
||||
.fun_on_key_ctrl_f dd 0 ;+202 ... Ctrl+F
|
||||
dd 0;.fun_on_key_ctrl_n dd but_ctrl_n ;+206 ... Ctrl+N
|
||||
.fun_on_key_ctrl_s dd 0 ;+210 ... Ctrl+S
|
||||
dd 0 ;.fun_on_key_ctrl_all dd but_ctrl_all ;+198
|
||||
dd 0,0,0 ;reserved
|
||||
.buffer_size dd 4096 ;+214
|
||||
.fun_find_err dd 0 ;+218
|
||||
.fun_init_synt_err dd 0 ;+222
|
||||
.fun_draw_panel_buttons dd 0 ;+226
|
||||
.fun_draw_panel_find dd 0 ;+230
|
||||
.fun_draw_panel_syntax dd 0 ;+234
|
||||
dd 0 ;+234 reserved
|
||||
.fun_save_err dd 0 ;+238
|
||||
.increase_size dd 1000 ;+242
|
||||
.ptr_free_symb dd ? ;+246
|
||||
@ -1161,6 +1159,8 @@ import box_lib, \
|
||||
ted_but_find, 'ted_but_find', \
|
||||
ted_but_replace, 'ted_but_replace', \
|
||||
ted_text_colored, 'ted_text_colored', \
|
||||
ted_text_colored, 'ted_text_colored', \
|
||||
ted_go_to_position, 'ted_go_to_position', \
|
||||
progressbar_draw, 'progressbar_draw'
|
||||
|
||||
import libimg, \
|
||||
|
@ -89,4 +89,77 @@ align 4
|
||||
stosb
|
||||
mov byte[edi],0 ;в конец строки ставим 0, что-бы не вылазил мусор
|
||||
@@:
|
||||
ret
|
||||
ret
|
||||
|
||||
;input:
|
||||
; buf - указатель на строку, число должно быть в 10 или 16 ричном виде
|
||||
;output:
|
||||
; eax - число
|
||||
align 4
|
||||
proc conv_str_to_int, buf:dword
|
||||
xor eax,eax
|
||||
push ebx ecx esi
|
||||
xor ebx,ebx
|
||||
mov esi,[buf]
|
||||
;определение отрицательных чисел
|
||||
xor ecx,ecx
|
||||
inc ecx
|
||||
cmp byte[esi],'-'
|
||||
jne @f
|
||||
dec ecx
|
||||
inc esi
|
||||
@@:
|
||||
|
||||
cmp word[esi],'0x'
|
||||
je .load_digit_16
|
||||
|
||||
.load_digit_10: ;считывание 10-тичных цифр
|
||||
mov bl,byte[esi]
|
||||
cmp bl,'0'
|
||||
jl @f
|
||||
cmp bl,'9'
|
||||
jg @f
|
||||
sub bl,'0'
|
||||
imul eax,10
|
||||
add eax,ebx
|
||||
inc esi
|
||||
jmp .load_digit_10
|
||||
jmp @f
|
||||
|
||||
.load_digit_16: ;считывание 16-ричных цифр
|
||||
add esi,2
|
||||
.cycle_16:
|
||||
mov bl,byte[esi]
|
||||
cmp bl,'0'
|
||||
jl @f
|
||||
cmp bl,'f'
|
||||
jg @f
|
||||
cmp bl,'9'
|
||||
jle .us1
|
||||
cmp bl,'A'
|
||||
jl @f ;отсеиваем символы >'9' и <'A'
|
||||
.us1: ;составное условие
|
||||
cmp bl,'F'
|
||||
jle .us2
|
||||
cmp bl,'a'
|
||||
jl @f ;отсеиваем символы >'F' и <'a'
|
||||
sub bl,32 ;переводим символы в верхний регистр, для упрощения их последущей обработки
|
||||
.us2: ;составное условие
|
||||
sub bl,'0'
|
||||
cmp bl,9
|
||||
jle .cor1
|
||||
sub bl,7 ;convert 'A' to '10'
|
||||
.cor1:
|
||||
shl eax,4
|
||||
add eax,ebx
|
||||
inc esi
|
||||
jmp .cycle_16
|
||||
@@:
|
||||
cmp ecx,0 ;если число отрицательное
|
||||
jne @f
|
||||
sub ecx,eax
|
||||
mov eax,ecx
|
||||
@@:
|
||||
pop esi ecx ebx
|
||||
ret
|
||||
endp
|
@ -137,7 +137,7 @@ button:
|
||||
@@:
|
||||
cmp ah,ID_BUT_SYNTAX_MODE
|
||||
jne @f
|
||||
stdcall but_panel_choose_syntax, tedit0
|
||||
call but_panel_choose_syntax
|
||||
jmp still
|
||||
@@:
|
||||
cmp ah,ID_BUT_CONVERT_1251_866
|
||||
@ -172,10 +172,15 @@ button:
|
||||
jmp still
|
||||
.no_change:
|
||||
cmp ah,203 ;§ ¬¥¨âì ¢á¥
|
||||
jne .no_change_a
|
||||
jne @f
|
||||
call but_replace_all
|
||||
jmp still
|
||||
.no_change_a:
|
||||
@@:
|
||||
cmp ah,204 ;¯¥à¥©â¨ áâபã
|
||||
jne @f
|
||||
call but_goto_line
|
||||
jmp still
|
||||
@@:
|
||||
|
||||
cmp ah,1
|
||||
jne @f
|
||||
@ -258,6 +263,13 @@ proc but_replace_all uses ebx ecx edx
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc but_goto_line uses eax
|
||||
stdcall conv_str_to_int, buf_goto
|
||||
stdcall [ted_go_to_position], tedit0,eax,1
|
||||
ret
|
||||
endp
|
||||
|
||||
;input:
|
||||
; al = ª®¤ ®è¨¡ª¨
|
||||
align 4
|
||||
@ -366,6 +378,44 @@ proc but_no_msg_OpenFile uses eax ebx esi
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; äãªæ¨ï ¢ë§ë¢ ¥¬ãî ¯à¨ ¦ ⨨ Ctrl+N,O,F,S,H,G
|
||||
align 4
|
||||
proc ted_but_ctrl_all uses eax, opt_key:dword
|
||||
mov eax,[opt_key]
|
||||
cmp al,'N' ;Ctrl+N
|
||||
jne @f
|
||||
call ted_but_new_file
|
||||
jmp .end0
|
||||
@@:
|
||||
cmp al,'O' ;Ctrl+O
|
||||
jne @f
|
||||
call ted_but_open_file
|
||||
jmp .end0
|
||||
@@:
|
||||
cmp al,'S' ;Ctrl+S
|
||||
jne @f
|
||||
shr eax,8
|
||||
call ted_but_save_file
|
||||
jmp .end0
|
||||
@@:
|
||||
cmp al,'F' ;Ctrl+F
|
||||
jne @f
|
||||
call but_panel_find
|
||||
jmp .end0
|
||||
@@:
|
||||
cmp al,'G' ;Ctrl+G
|
||||
jne @f
|
||||
call but_panel_goto
|
||||
jmp .end0
|
||||
@@:
|
||||
cmp al,'H' ;Ctrl+H
|
||||
jne .end0
|
||||
call but_panel_replace
|
||||
.end0:
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; äãªæ¨ï ®âªàëâ¨ï ä ©« á ¢®§¬®¦ë¬ ®ª®¬ á®®¡é¥¨ï (® ¢®§¬®¦®á⨠®â¬¥¨âì ®âªàë⨥)
|
||||
align 4
|
||||
@ -598,60 +648,64 @@ endp
|
||||
;description:
|
||||
; ¢ë§®¢/áªàë⨥ ¯ ¥«¨ ¯®¨áª
|
||||
align 4
|
||||
proc but_panel_find uses edi
|
||||
mov edi,tedit0
|
||||
proc but_panel_find
|
||||
stdcall on_panel_change, tedit0,TED_PANEL_FIND
|
||||
;or word[edit_find.flags],ed_focus
|
||||
ret
|
||||
endp
|
||||
|
||||
cmp ted_panel_id,TED_PANEL_NULL
|
||||
je @f
|
||||
mov ted_panel_id,TED_PANEL_NULL
|
||||
mov ted_wnd_l,0
|
||||
jmp .e_if
|
||||
@@:
|
||||
mov ted_panel_id,TED_PANEL_FIND
|
||||
mov ted_wnd_l,TED_PANEL_WIDTH
|
||||
.e_if:
|
||||
call EvSize
|
||||
stdcall [ted_draw],edi
|
||||
;description:
|
||||
; ¢ë§®¢/áªàë⨥ ¯ ¥«¨ ¯¥à¥å®¤
|
||||
align 4
|
||||
proc but_panel_goto
|
||||
stdcall on_panel_change, tedit0,TED_PANEL_GOTO
|
||||
;or word[edit_goto.flags],ed_focus
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; ¢ë§®¢/áªàë⨥ ¯ ¥«¨ § ¬¥ë
|
||||
align 4
|
||||
proc but_panel_replace uses edi
|
||||
mov edi,tedit0
|
||||
|
||||
cmp ted_panel_id,TED_PANEL_NULL
|
||||
je @f
|
||||
mov ted_panel_id,TED_PANEL_NULL
|
||||
mov ted_wnd_l,0
|
||||
jmp .e_if
|
||||
@@:
|
||||
mov ted_panel_id,TED_PANEL_REPLACE
|
||||
mov ted_wnd_l,TED_PANEL_WIDTH
|
||||
.e_if:
|
||||
call EvSize
|
||||
stdcall [ted_draw],edi
|
||||
proc but_panel_replace
|
||||
stdcall on_panel_change, tedit0,TED_PANEL_REPLACE
|
||||
;or word[edit_find.flags],ed_focus
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; ¢ë§®¢/áªàë⨥ ¯ ¥«¨ á ä ©« ¬¨ á¨â ªá¨á
|
||||
align 4
|
||||
proc but_panel_choose_syntax uses edi, edit:dword
|
||||
mov edi,[edit]
|
||||
proc but_panel_choose_syntax
|
||||
stdcall on_panel_change, tedit0,TED_PANEL_SYNTAX
|
||||
ret
|
||||
endp
|
||||
|
||||
cmp ted_panel_id,TED_PANEL_NULL
|
||||
je @f
|
||||
align 4
|
||||
proc on_panel_change uses eax edi, edit:dword, new_id:dword
|
||||
mov edi,[edit]
|
||||
mov eax,[new_id]
|
||||
|
||||
;if(panel_id==new_id) panel_id=0, draw all
|
||||
cmp ted_panel_id,al
|
||||
jne @f
|
||||
mov ted_panel_id,TED_PANEL_NULL
|
||||
mov ted_wnd_l,0
|
||||
jmp .e_if
|
||||
@@:
|
||||
mov ted_panel_id,TED_PANEL_SYNTAX
|
||||
;elseif(panel_id==0) panel_id=new_id, draw all
|
||||
cmp ted_panel_id,TED_PANEL_NULL
|
||||
jne @f
|
||||
mov ted_panel_id,al
|
||||
mov ted_wnd_l,TED_PANEL_WIDTH
|
||||
.e_if:
|
||||
call EvSize
|
||||
stdcall [ted_draw],edi
|
||||
jmp .end0
|
||||
;else panel_id=new_id, draw panel
|
||||
@@:
|
||||
mov ted_panel_id,al
|
||||
stdcall draw_panels,edi
|
||||
.end0:
|
||||
ret
|
||||
endp
|
||||
|
||||
@ -692,7 +746,7 @@ but_find_key_w:
|
||||
jne @f
|
||||
pushad
|
||||
mcall SF_CREATE_THREAD,1,prop_start,thread_coords
|
||||
mov dword[wnd_k_words_run],eax
|
||||
mov [wnd_k_words_run],eax
|
||||
popad
|
||||
@@:
|
||||
ret
|
||||
@ -701,7 +755,7 @@ but_find_key_w:
|
||||
; ¢ë¤¥«¥¨¥/áªàë⨥ ¥¯¥ç â ¥¬ëå ᨬ¢®«®¢
|
||||
align 4
|
||||
proc but_sumb_invis uses edi, edit:dword
|
||||
mov edi,dword[edit]
|
||||
mov edi,[edit]
|
||||
|
||||
xor ted_mode_invis,1
|
||||
call draw_but_toolbar
|
||||
@ -713,7 +767,7 @@ endp
|
||||
; ¢ë¤¥«¥¨¥/áªàë⨥ ª«î祢ëå á«®¢
|
||||
align 4
|
||||
proc but_use_syntax uses edi, edit:dword
|
||||
mov edi,dword[edit]
|
||||
mov edi,[edit]
|
||||
|
||||
xor ted_mode_color,1
|
||||
cmp ted_mode_color,0
|
||||
|
File diff suppressed because one or more lines are too long
@ -216,10 +216,9 @@ draw_but_toolbar: ;
|
||||
;txtBRi db 26
|
||||
;txtBLe db 27
|
||||
|
||||
;input:
|
||||
; edi = pointer to tedit struct
|
||||
align 4
|
||||
proc draw_panel_find
|
||||
proc draw_panels uses edi, edit:dword
|
||||
mov edi,[edit]
|
||||
cmp ted_panel_id,TED_PANEL_FIND
|
||||
jne @f
|
||||
call p_find
|
||||
@ -230,10 +229,22 @@ proc draw_panel_find
|
||||
call p_replace
|
||||
jmp .end_f
|
||||
@@:
|
||||
cmp ted_panel_id,TED_PANEL_GOTO
|
||||
jne @f
|
||||
call p_goto
|
||||
jmp .end_f
|
||||
@@:
|
||||
cmp ted_panel_id,TED_PANEL_SYNTAX
|
||||
jne @f
|
||||
call p_syntax
|
||||
jmp .end_f
|
||||
@@:
|
||||
push eax edx
|
||||
mcall SF_DEFINE_BUTTON,,,0x80000000+201
|
||||
mcall SF_DEFINE_BUTTON,,,0x80000000+200
|
||||
mcall ,,,0x80000000+201
|
||||
mcall ,,,0x80000000+202
|
||||
mcall ,,,0x80000000+203
|
||||
mcall ,,,0x80000000+204
|
||||
pop edx eax
|
||||
.end_f:
|
||||
ret
|
||||
@ -256,7 +267,7 @@ p_find:
|
||||
sub cx,20+15-1 ; 15 - height text box
|
||||
mcall ,,,[sc.work]
|
||||
|
||||
stdcall [edit_box_draw], edit2
|
||||
stdcall [edit_box_draw], edit_find
|
||||
|
||||
mov ecx,ted_wnd_t
|
||||
shl ecx,16
|
||||
@ -296,8 +307,8 @@ p_replace:
|
||||
sub cx,20+15-1 ; 15 - height text box
|
||||
mcall ,,,[sc.work]
|
||||
|
||||
stdcall [edit_box_draw], edit1
|
||||
stdcall [edit_box_draw], edit2
|
||||
stdcall [edit_box_draw], edit_replace
|
||||
stdcall [edit_box_draw], edit_find
|
||||
|
||||
mov ecx,ted_wnd_t
|
||||
shl ecx,16
|
||||
@ -327,12 +338,48 @@ p_replace:
|
||||
pop edx ecx ebx eax
|
||||
ret
|
||||
|
||||
align 4
|
||||
p_goto:
|
||||
push eax ebx ecx edx
|
||||
mov ecx,ted_wnd_t
|
||||
shl ecx,16
|
||||
mov cx,20
|
||||
mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work]
|
||||
|
||||
mov ecx,ted_wnd_t
|
||||
add cx,20+15 ; 15 - height text box
|
||||
shl ecx,16
|
||||
add ecx,ted_wnd_h
|
||||
mov edx,ted_scr_h
|
||||
add cx,word[edx+sb_offs_size_y]
|
||||
sub cx,20+15-1 ; 15 - height text box
|
||||
mcall ,,,[sc.work]
|
||||
|
||||
stdcall [edit_box_draw], edit_goto
|
||||
|
||||
mov ecx,ted_wnd_t
|
||||
shl ecx,16
|
||||
add ecx,(40 shl 16)+20
|
||||
mcall SF_DEFINE_BUTTON,(5 shl 16)+85,,204,[sc.work_button]
|
||||
|
||||
mov ebx,(23 shl 16)+7
|
||||
add ebx,ted_wnd_t
|
||||
mov ecx,[sc.work_text]
|
||||
or ecx,0x80000000
|
||||
mcall SF_DRAW_TEXT,,,txtGotoCapt
|
||||
|
||||
mov ecx,[sc.work_button_text]
|
||||
or ecx,0x80000000
|
||||
mov ebx,(15 shl 16)+47
|
||||
add ebx,ted_wnd_t
|
||||
mcall ,,,txtGoto
|
||||
pop edx ecx ebx eax
|
||||
ret
|
||||
|
||||
;input:
|
||||
; edi = pointer to tedit struct
|
||||
align 4
|
||||
proc draw_panel_syntax
|
||||
cmp ted_panel_id,TED_PANEL_SYNTAX ;if not panel
|
||||
jne @f
|
||||
p_syntax:
|
||||
pushad
|
||||
|
||||
mov ecx,ted_wnd_t
|
||||
@ -378,15 +425,7 @@ proc draw_panel_syntax
|
||||
mcall ,,,txtFormatApply
|
||||
|
||||
popad
|
||||
jmp .end_f
|
||||
@@:
|
||||
push eax edx
|
||||
mov edx,0x80000000+200
|
||||
mcall SF_DEFINE_BUTTON ;åñëè íåò ïàíåëè òî óäàëÿåì êíîïêó
|
||||
pop edx eax
|
||||
.end_f:
|
||||
ret
|
||||
endp
|
||||
|
||||
MIN_M_WND_H equ 100 ;ìèíèìàëüíàÿ âûñîòà ãëàâíîãî îêíà
|
||||
;input:
|
||||
@ -421,10 +460,12 @@ EvSize:
|
||||
mov tl_box_top,eax ;=ted_wnd_t
|
||||
add tl_box_top,20
|
||||
|
||||
mov [edit2.top],eax ;=ted_wnd_t
|
||||
add dword[edit2.top],20
|
||||
mov [edit1.top],eax ;=ted_wnd_t
|
||||
add dword[edit1.top],113
|
||||
mov [edit_find.top],eax ;=ted_wnd_t
|
||||
add dword[edit_find.top],20
|
||||
mov [edit_replace.top],eax
|
||||
add dword[edit_replace.top],113
|
||||
mov [edit_goto.top],eax
|
||||
add dword[edit_goto.top],20
|
||||
popad
|
||||
ret
|
||||
|
||||
|
@ -241,19 +241,23 @@ mouse:
|
||||
;¯à®¢¥àª ¡®ª®¢ëå ¯ ¥«¥©
|
||||
cmp byte[tedit0.panel_id],TED_PANEL_FIND
|
||||
jne @f
|
||||
stdcall [edit_box_mouse], edit2
|
||||
stdcall [edit_box_mouse], edit_find
|
||||
stdcall [option_box_mouse], opt_grlist1
|
||||
@@:
|
||||
cmp byte[tedit0.panel_id],TED_PANEL_REPLACE
|
||||
jne @f
|
||||
stdcall [edit_box_mouse], edit2
|
||||
stdcall [edit_box_mouse], edit1
|
||||
stdcall [edit_box_mouse], edit_find
|
||||
stdcall [edit_box_mouse], edit_replace
|
||||
stdcall [option_box_mouse], opt_grlist1
|
||||
@@:
|
||||
cmp byte[tedit0.panel_id],TED_PANEL_SYNTAX
|
||||
jne @f
|
||||
stdcall [tl_mouse], tree1
|
||||
@@:
|
||||
cmp byte[tedit0.panel_id],TED_PANEL_GOTO
|
||||
jne @f
|
||||
stdcall [edit_box_mouse], edit_goto
|
||||
@@:
|
||||
ret
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
@ -262,8 +266,7 @@ mouse:
|
||||
align 16
|
||||
proc KeyConvertToASCII uses ebx, table:dword
|
||||
mov ebx,dword[table] ;convert scan to ascii
|
||||
ror ax,8
|
||||
xor ah,ah
|
||||
shr ax,8
|
||||
add bx,ax
|
||||
mov ah,byte[ebx]
|
||||
ret
|
||||
@ -274,7 +277,7 @@ key:
|
||||
mcall SF_KEYBOARD,SSF_GET_CONTROL_KEYS ;66.3 ¯®«ãç¨âì á®áâ®ï¨¥ ã¯à ¢«ïîé¨å ª« ¢¨è
|
||||
xor esi,esi
|
||||
mov ecx,1
|
||||
test al,0x03 ;[Shift]
|
||||
test al,3 ;[Shift]
|
||||
jz @f
|
||||
mov cl,2
|
||||
or esi,KM_SHIFT
|
||||
@ -297,7 +300,7 @@ key:
|
||||
mcall SF_GET_KEY
|
||||
stdcall [tl_key], tree1
|
||||
|
||||
test word [edit1.flags],10b ;ed_focus ;¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||||
test word[edit_replace.flags],ed_focus ;¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||||
je @f
|
||||
cmp ah,0x80 ;if key up
|
||||
ja still
|
||||
@ -313,10 +316,10 @@ key:
|
||||
je still
|
||||
|
||||
stdcall KeyConvertToASCII, conv_tabl
|
||||
stdcall [edit_box_key], edit1
|
||||
stdcall [edit_box_key], edit_replace
|
||||
jmp still
|
||||
@@:
|
||||
test word [edit2.flags],10b ;ed_focus ;¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||||
test word[edit_find.flags],ed_focus ;¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||||
je @f
|
||||
cmp ah,0x80 ;if key up
|
||||
ja still
|
||||
@ -332,7 +335,26 @@ key:
|
||||
je still
|
||||
|
||||
stdcall KeyConvertToASCII, conv_tabl
|
||||
stdcall [edit_box_key], edit2
|
||||
stdcall [edit_box_key], edit_find
|
||||
jmp still
|
||||
@@:
|
||||
test word[edit_goto.flags],ed_focus ;¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬
|
||||
je @f
|
||||
cmp ah,0x80 ;if key up
|
||||
ja still
|
||||
cmp ah,42 ;[Shift] (left)
|
||||
je still
|
||||
cmp ah,54 ;[Shift] (right)
|
||||
je still
|
||||
cmp ah,56 ;[Alt]
|
||||
je still
|
||||
cmp ah,29 ;[Ctrl]
|
||||
je still
|
||||
cmp ah,69 ;[Pause Break]
|
||||
je still
|
||||
|
||||
stdcall KeyConvertToASCII, conv_tabl
|
||||
stdcall [edit_box_key], edit_goto
|
||||
jmp still
|
||||
@@:
|
||||
|
||||
@ -340,8 +362,9 @@ key:
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
edit1 edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_replace, mouse_dd, 0
|
||||
edit2 edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0
|
||||
edit_replace edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_replace, mouse_dd, 0
|
||||
edit_find edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0
|
||||
edit_goto edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 10, buf_goto, mouse_dd, 0
|
||||
|
||||
unpac_mem dd 0
|
||||
|
||||
@ -405,6 +428,7 @@ i_end:
|
||||
buf rb BUF_SIZE ;¡ãä¥à ¤«ï ª®¯¨à®¢ ¨ï ¨ ¢áâ ¢ª¨
|
||||
buf_find rb 302 ;¡ãä¥à ¤«ï ¯®¨áª ⥪áâ
|
||||
buf_replace rb 302 ;¡ãä¥à ¤«ï § ¬¥ë ⥪áâ
|
||||
buf_goto rb 12 ;¡ãä¥à ¤«ï ¯¥à室 áâபã
|
||||
sc system_colors
|
||||
IncludeUGlobals
|
||||
align 16
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 20 KiB |
@ -130,6 +130,7 @@ sz_ted_but_redo db 'ted_but_redo',0
|
||||
sz_ted_but_reverse db 'ted_but_reverse',0
|
||||
sz_ted_but_find db 'ted_but_find',0
|
||||
sz_ted_text_colored db 'ted_text_colored',0
|
||||
sz_ted_go_to_position db 'ted_go_to_position',0
|
||||
|
||||
sz_PathShow_prepare db 'PathShow_prepare',0
|
||||
sz_PathShow_draw db 'PathShow_draw',0
|
||||
@ -223,16 +224,14 @@ tedit0: ;
|
||||
.mode_color db 1 ;+195 ०¨¬ ¢ë¤¥«¥¨ï á«®¢ 梥⮬ (0-¢ëª«. 1-¢ª«.)
|
||||
.mode_invis db 0 ;+196 ०¨¬ ¯®ª § ¥¯¥ç â ¥¬ëå ᨬ¢®«®¢
|
||||
.gp_opt db 0 ;+197 ®¯æ¨¨ ¢®§¢à é ¥¬ë¥ äãªæ¨¥© ted_get_pos_by_cursor
|
||||
.fun_on_key_ctrl_o dd but_ctrl_o ;+198 㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ¦ ⨨ Ctrl+O (®âªàë⨥ ä ©« )
|
||||
.fun_on_key_ctrl_f dd 0 ;+202 ... Ctrl+F (¢ë§®¢ /áªàëâ¨ï ¯ ¥«¨ ¯®¨áª )
|
||||
.fun_on_key_ctrl_n dd but_ctrl_n ;+206 ... Ctrl+N (ᮧ¤ ¨¥ ®¢®£® ¤®ªã¬¥â )
|
||||
.fun_on_key_ctrl_s dd 0 ;+210 ... Ctrl+S
|
||||
.fun_on_key_ctrl_all dd ted_but_ctrl_all ;+198 㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ¦ ⨨ Ctrl+N,O,S,F,G,H
|
||||
dd 0,0,0
|
||||
.buffer_size dd BUF_SIZE ;+214 à §¬¥à ¡ãä¥à ª®¯¨à®¢ ¨ï/¢áâ ¢ª¨
|
||||
.fun_find_err dd 0 ;+218 㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¥á«¨ ¯®¨áª § ª®ç¨«áï ¥ã¤ ç®
|
||||
.fun_init_synt_err dd 0 ;+222 㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¯à¨ ®è¨¡®ç®¬ ®âªàë⨨ ä ©« á¨â ªá¨á
|
||||
.fun_draw_panel_buttons dd 0 ;+226 㪠§ ⥫ì äãªæ¨î à¨á®¢ ¨ï ¯ ¥«¨ á ª®¯ª ¬¨
|
||||
.fun_draw_panel_find dd 0 ;+230 㪠§ ⥫ì äãªæ¨î à¨á®¢ ¨ï ¯ ¥«¨ ¯®¨áª
|
||||
.fun_draw_panel_syntax dd 0 ;+234 㪠§ ⥫ì äãªæ¨î à¨á®¢ ¨ï ¯ ¥«¨ á¨â ªá¨á
|
||||
.fun_draw_panels dd 0 ;+230 㪠§ ⥫ì äãªæ¨î à¨á®¢ ¨ï ¯ ¥«¨ ¯®¨áª |...|á¨â ªá¨á
|
||||
dd 0
|
||||
.fun_save_err dd 0 ;+238 㪠§ ⥫ì äãªæ¨î ¢ë§ë¢ ¥¬ãî ¥á«¨ á®åà ¥¨¥ ä ©« § ª®ç¨«®áì ¥ã¤ ç®
|
||||
.increase_size dd 1000 ;+242 ç¨á«® ᨬ¢®«®¢ ª®â®àë¥ ¡ã¤¥â 㢥稢 âìáï ¯ ¬ïâì ¯à¨ ¥å¢ ⪥
|
||||
.ptr_free_symb dd ? ;+246 㪠§ ⥫ì ᢮¡®¤ãî ¯ ¬ïâì, ¢ ª®â®àãî ¬®¦® ¤®¡ ¢«ïâì ᨬ¢®« (¨á¯®«ì§ã¥âáï ¢ãâà¨ í«¥¬¥â ¤«ï ãáª®à¥¨ï ¢áâ ¢ª¨ ⥪áâ )
|
||||
|
@ -198,8 +198,7 @@ align 4
|
||||
proc KeyConvertToASCII, table:dword
|
||||
push ebx
|
||||
mov ebx,dword[table] ;convert scan to ascii
|
||||
ror ax,8
|
||||
xor ah,ah
|
||||
shr ax,8
|
||||
add bx,ax
|
||||
mov ah,byte[ebx]
|
||||
pop ebx
|
||||
@ -294,6 +293,28 @@ but_SaveSyntax:
|
||||
stdcall [ted_save_file], tedit0,run_file_70,[edit1.text]
|
||||
ret
|
||||
|
||||
;description:
|
||||
; äãªæ¨ï ¢ë§ë¢ ¥¬ãî ¯à¨ ¦ ⨨ Ctrl+N,O,F,S,H,G
|
||||
align 4
|
||||
proc ted_but_ctrl_all uses eax, opt_key:dword
|
||||
mov eax,[opt_key]
|
||||
cmp al,'N' ;Ctrl+N
|
||||
jne @f
|
||||
call but_ctrl_n
|
||||
jmp .end0
|
||||
@@:
|
||||
cmp al,'O' ;Ctrl+O
|
||||
jne @f
|
||||
call but_ctrl_o
|
||||
@@:
|
||||
;cmp al,'S' ;Ctrl+S
|
||||
;cmp al,'F' ;Ctrl+F
|
||||
;cmp al,'G' ;Ctrl+G
|
||||
;cmp al,'H' ;Ctrl+H
|
||||
.end0:
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
but_ctrl_o:
|
||||
push eax
|
||||
@ -332,7 +353,7 @@ get_wnd_in_focus:
|
||||
;@@:
|
||||
ret
|
||||
|
||||
hed db 'TextEditor syntax file converter 23.01.19',0 ;¯®¤¯¨áì ®ª
|
||||
hed db 'TextEditor syntax file converter 29.01.19',0 ;¯®¤¯¨áì ®ª
|
||||
conv_tabl rb 128 ; â ¡«¨æ ¤«ï ª®¢¥àâ¨à®¢ ¨ï scan-ª®¤ ¢ ascii-ª®¤
|
||||
|
||||
txt_load_f db '‡ £à. ä ©«',0
|
||||
|
Loading…
Reference in New Issue
Block a user