diff --git a/contrib/C_Layer/ASM/loadboxlib.asm b/contrib/C_Layer/ASM/loadboxlib.asm index b560c9f787..11d76363fd 100644 --- a/contrib/C_Layer/ASM/loadboxlib.asm +++ b/contrib/C_Layer/ASM/loadboxlib.asm @@ -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' diff --git a/contrib/C_Layer/INCLUDE/kolibri_editor.h b/contrib/C_Layer/INCLUDE/kolibri_editor.h index 61e8a961ab..2818fe4dd9 100644 --- a/contrib/C_Layer/INCLUDE/kolibri_editor.h +++ b/contrib/C_Layer/INCLUDE/kolibri_editor.h @@ -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 , 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) diff --git a/programs/develop/libraries/box_lib/trunk/box_lib.asm b/programs/develop/libraries/box_lib/trunk/box_lib.asm index b32a6be070..db1a10adff 100644 --- a/programs/develop/libraries/box_lib/trunk/box_lib.asm +++ b/programs/develop/libraries/box_lib/trunk/box_lib.asm @@ -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 diff --git a/programs/develop/libraries/box_lib/trunk/box_lib.mac b/programs/develop/libraries/box_lib/trunk/box_lib.mac index 5e15cb243c..d944c75ed8 100644 --- a/programs/develop/libraries/box_lib/trunk/box_lib.mac +++ b/programs/develop/libraries/box_lib/trunk/box_lib.mac @@ -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] ;указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста) diff --git a/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm b/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm index 053c13ffe0..55a765d822 100644 --- a/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm +++ b/programs/develop/libraries/box_lib/trunk/doc/t_edit/t_edit.htm @@ -37,6 +37,7 @@
  • ted_open_file
  • ted_text_add
  • ted_text_colored
  • +
  • ted_go_to_position
  • ╘юЁьрЄ Їрщыр яюфётхЄъш *.syn

    ╤ЄЁєъЄєЁр tedit

    @@ -48,8 +49,8 @@

    ┬ючьюцэюёЄш ¤ыхьхэЄр

    @@ -284,6 +285,14 @@ stdcall [ted_text_add], tedit0,text_buffer,30,ebx call [ted_text_colored] pop edi +

    ted_go_to_position

    +

    ╘єэъЎш  фы  яхЁхїюфр эр єърчрээє■ яючшЎш■. ╧ЁшэшьрхЄ 3 ярЁрьхЄЁр:

    +

    1) ёЄЁєъЄєЁр tedit,

    +

    2) эюьхЁ ёЄЁюъш,

    +

    3) эюьхЁ ёшьтюыр.

    +

    ╧ЁшьхЁ шёяюы№чютрэш :

    +
    stdcall [ted_go_to_position], tedit0,50,3
    +

    ┬эєЄЁхээшх ЇєэъЎшш:

    ted_get_text_perv_pos - яхЁхїюф эр яЁхф√фє∙шщ ёшьтюы т Ўхяш (ўхЁхч єърчрЄхы№ 'perv')

    ted_get_text_next_pos - яхЁхїюф эр ёыхфє■∙шщ ёшьтюы т Ўхяш (ўхЁхч єърчрЄхы№ 'next')

    @@ -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 фы  тЄюЁюую ёшёЄхьэюую °ЁшЇЄр)
    -

    ─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 21.01.19.

    +

    ─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 29.01.19.

    \ No newline at end of file diff --git a/programs/develop/libraries/box_lib/trunk/t_edit.asm b/programs/develop/libraries/box_lib/trunk/t_edit.asm index 56634f7600..e5a651a427 100644 --- a/programs/develop/libraries/box_lib/trunk/t_edit.asm +++ b/programs/develop/libraries/box_lib/trunk/t_edit.asm @@ -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 diff --git a/programs/network/ftpc/gui.inc b/programs/network/ftpc/gui.inc index aca98fc085..2ac6c68160 100755 --- a/programs/network/ftpc/gui.inc +++ b/programs/network/ftpc/gui.inc @@ -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, \ diff --git a/programs/other/t_edit/strlen.inc b/programs/other/t_edit/strlen.inc index ccac9e1747..5641bc0afc 100644 --- a/programs/other/t_edit/strlen.inc +++ b/programs/other/t_edit/strlen.inc @@ -89,4 +89,77 @@ align 4 stosb mov byte[edi],0 ;╨▓ ╨║╨╛╨╜╨╡╤Ж ╤Б╤В╤А╨╛╨║╨╕ ╤Б╤В╨░╨▓╨╕╨╝ 0, ╤З╤В╨╛-╨▒╤Л ╨╜╨╡ ╨▓╤Л╨╗╨░╨╖╨╕╨╗ ╨╝╤Г╤Б╨╛╤А @@: - ret \ No newline at end of file + 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 \ No newline at end of file diff --git a/programs/other/t_edit/t_button.inc b/programs/other/t_edit/t_button.inc index 9a8e37d707..eac0799e8c 100644 --- a/programs/other/t_edit/t_button.inc +++ b/programs/other/t_edit/t_button.inc @@ -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 diff --git a/programs/other/t_edit/t_data.inc b/programs/other/t_edit/t_data.inc index 02f5b1def7..ebd6bf214a 100644 --- a/programs/other/t_edit/t_data.inc +++ b/programs/other/t_edit/t_data.inc @@ -1 +1 @@ -fn_col_option dd def_col_file fn_syntax_dir db 'info/',0 def_col_file db 'default.syn',0 exit_code dd 0 ;переменная используемая для выхода из программы panel_but rb 21 ;настройки отображения кнопок на панели ;значения задаваемые по умолчанию, без ini файла ini_def_window_t equ 20 ini_def_window_l equ 200 ini_def_window_w equ 570 ini_def_window_h equ 470 ini_def_symbol_w equ 7 ini_def_symbol_h equ 10 ini_def_font_s equ 0 ini_def_scroll_type equ 0 ;описание параматров для ini файла ini_name db 't_edit.ini',0 ini_sec_window db 'Window',0 key_window_t db 't',0 key_window_l db 'l',0 key_window_w db 'w',0 key_window_h db 'h',0 key_symbol_w db 'symbol_w',0 key_symbol_h db 'symbol_h',0 key_font_s db 'font_s',0 key_scroll_type db 'scroll_type',0 key_but_new db 'but_new',0 key_but_open db 'but_open',0 key_but_save db 'but_save',0 key_but_save_as db 'but_save_as',0 key_but_select db 'but_select',0 key_but_cut db 'but_cut',0 key_but_copy db 'but_copy',0 key_but_paste db 'but_paste',0 key_but_find db 'but_find',0 key_but_replace db 'but_replace',0 key_but_key_words db 'but_key_words',0 key_but_upper db 'but_upper',0 key_but_lower db 'but_lower',0 key_but_reverse db 'but_reverse',0 key_but_undo db 'but_undo',0 key_but_redo db 'but_redo',0 key_but_invisible db 'but_invisible',0 key_but_syntax_list db 'but_syntax_list',0 key_but_syntax_mode db 'but_syntax_mode',0 key_but_convert_1251_866 db 'but_convert_1251_866',0 key_but_convert_866_1251 db 'but_convert_866_1251',0 ini_sec_options db 'Options',0 key_synt_file: db 'syntax_' .numb: db '0',0 key_synt_ext: db 'ext_' .numb: db '0',0 ini_def_synt_f db 0 align 4 max_synt_auto_open equ 10 synt_auto_open: rb 64*max_synt_auto_open db 0 system_dir_0 db '/sys/lib/' lib_name_0 db 'box_lib.obj',0 system_dir_1 db '/sys/lib/' lib_name_1 db 'msgbox.obj',0 system_dir_2 db '/sys/lib/' lib_name_2 db 'proc_lib.obj',0 system_dir_3 db '/sys/lib/' lib_name_3 db 'libimg.obj',0 system_dir_4 db '/sys/lib/' lib_name_4 db 'libini.obj',0 system_dir_5 db '/sys/lib/' lib_name_5 db 'kmenu.obj',0 ;--------------------------------------------------------------------- align 4 import_box_lib: dd alib_init0 ;функция запускается макросом 1 раз при подключении бибилиотеки, потому в программе метка на нее не нужна edit_box_draw dd aEdit_box_draw edit_box_key dd aEdit_box_key edit_box_mouse dd aEdit_box_mouse ;edit_box_set_text dd aEdit_box_set_text ;version_ed dd aVersion_ed option_box_draw dd aOption_box_draw option_box_mouse dd aOption_box_mouse ;version_op dd aVersion_op scrollbar_ver_draw dd aScrollbar_ver_draw scrollbar_ver_mouse dd aScrollbar_ver_mouse scrollbar_hor_draw dd aScrollbar_hor_draw scrollbar_hor_mouse dd aScrollbar_hor_mouse ;version_scrollbar dd aVersion_scrollbar tl_data_init dd sz_tl_data_init tl_data_clear dd sz_tl_data_clear tl_info_clear dd sz_tl_info_clear tl_key dd sz_tl_key tl_mouse dd sz_tl_mouse tl_draw dd sz_tl_draw tl_info_undo dd sz_tl_info_undo tl_info_redo dd sz_tl_info_redo tl_node_add dd sz_tl_node_add tl_node_set_data dd sz_tl_node_set_data tl_node_get_data dd sz_tl_node_get_data tl_node_delete dd sz_tl_node_delete tl_cur_beg dd sz_tl_cur_beg tl_cur_next dd sz_tl_cur_next tl_cur_perv dd sz_tl_cur_perv ;tl_node_close_open dd sz_tl_node_close_open tl_node_lev_inc dd sz_tl_node_lev_inc tl_node_lev_dec dd sz_tl_node_lev_dec ted_but_sumb_upper dd sz_ted_but_sumb_upper ted_but_sumb_lover dd sz_ted_but_sumb_lover ted_but_convert_by_table dd sz_ted_but_convert_by_table ted_can_save dd sz_ted_can_save ted_clear dd sz_ted_clear ted_delete dd sz_ted_delete ted_draw dd sz_ted_draw ted_init dd sz_ted_init ted_init_scroll_bars dd sz_ted_init_scroll_bars ted_init_syntax_file dd sz_ted_init_syntax_file ted_is_select dd sz_ted_is_select ted_key dd sz_ted_key ted_mouse dd sz_ted_mouse ted_open_file dd sz_ted_open_file ted_save_file dd sz_ted_save_file ted_text_add dd sz_ted_text_add ted_but_select_word dd sz_ted_but_select_word ted_but_cut dd sz_ted_but_cut ted_but_copy dd sz_ted_but_copy ted_but_paste dd sz_ted_but_paste ted_but_undo dd sz_ted_but_undo ted_but_redo dd sz_ted_but_redo ted_but_reverse dd sz_ted_but_reverse ted_but_find dd sz_ted_but_find ted_but_replace dd sz_ted_but_replace ted_text_colored dd sz_ted_text_colored version_text_edit dd sz_ted_version dd 0,0 alib_init0 db 'lib_init',0 aEdit_box_draw db 'edit_box',0 aEdit_box_key db 'edit_box_key',0 aEdit_box_mouse db 'edit_box_mouse',0 ;aEdit_box_set_text db 'edit_box_set_text',0 ;aVersion_ed db 'version_ed',0 aOption_box_draw db 'option_box_draw',0 aOption_box_mouse db 'option_box_mouse',0 ;aVersion_op db 'version_op',0 aScrollbar_ver_draw db 'scrollbar_v_draw',0 aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 aScrollbar_hor_draw db 'scrollbar_h_draw',0 aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 ;aVersion_scrollbar db 'version_scrollbar',0 sz_tl_data_init db 'tl_data_init',0 sz_tl_data_clear db 'tl_data_clear',0 sz_tl_info_clear db 'tl_info_clear',0 sz_tl_key db 'tl_key',0 sz_tl_mouse db 'tl_mouse',0 sz_tl_draw db 'tl_draw',0 sz_tl_info_undo db 'tl_info_undo',0 sz_tl_info_redo db 'tl_info_redo',0 sz_tl_node_add db 'tl_node_add',0 sz_tl_node_set_data db 'tl_node_set_data',0 sz_tl_node_get_data db 'tl_node_get_data',0 sz_tl_node_delete db 'tl_node_delete',0 sz_tl_cur_beg db 'tl_cur_beg',0 sz_tl_cur_next db 'tl_cur_next',0 sz_tl_cur_perv db 'tl_cur_perv',0 ;sz_tl_node_close_open db 'tl_node_close_open',0 sz_tl_node_lev_inc db 'tl_node_lev_inc',0 sz_tl_node_lev_dec db 'tl_node_lev_dec',0 sz_ted_but_sumb_upper db 'ted_but_sumb_upper',0 sz_ted_but_sumb_lover db 'ted_but_sumb_lover',0 sz_ted_but_convert_by_table db 'ted_but_convert_by_table',0 sz_ted_can_save db 'ted_can_save',0 sz_ted_clear db 'ted_clear',0 sz_ted_delete db 'ted_delete',0 sz_ted_draw db 'ted_draw',0 sz_ted_init db 'ted_init',0 sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0 sz_ted_init_syntax_file db 'ted_init_syntax_file',0 sz_ted_is_select db 'ted_is_select',0 sz_ted_key db 'ted_key',0 sz_ted_mouse db 'ted_mouse',0 sz_ted_open_file db 'ted_open_file',0 sz_ted_save_file db 'ted_save_file',0 sz_ted_text_add db 'ted_text_add',0 sz_ted_but_select_word db 'ted_but_select_word',0 sz_ted_but_cut db 'ted_but_cut',0 sz_ted_but_copy db 'ted_but_copy',0 sz_ted_but_paste db 'ted_but_paste',0 sz_ted_but_undo db 'ted_but_undo',0 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_but_replace db 'ted_but_replace',0 sz_ted_text_colored db 'ted_text_colored',0 sz_ted_version db 'version_text_edit',0 align 4 import_proclib: OpenDialog_Init dd aOpenDialog_Init OpenDialog_Start dd aOpenDialog_Start dd 0,0 aOpenDialog_Init db 'OpenDialog_init',0 aOpenDialog_Start db 'OpenDialog_start',0 align 4 import_msgbox_lib: mb_create dd amb_create mb_reinit dd amb_reinit mb_setfunctions dd amb_setfunctions dd 0,0 amb_create db 'mb_create',0 amb_reinit db 'mb_reinit',0 amb_setfunctions db 'mb_setfunctions',0 align 4 import_libimg: dd alib_init1 img_to_rgb2 dd aimg_to_rgb2 img_decode dd aimg_decode img_destroy dd aimg_destroy dd 0,0 alib_init1 db 'lib_init',0 aimg_to_rgb2 db 'img_to_rgb2',0 aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных aimg_destroy db 'img_destroy',0 align 4 import_libini: dd alib_init2 ini_get_str dd aini_get_str ini_get_int dd aini_get_int ini_get_color dd aini_get_color dd 0,0 alib_init2 db 'lib_init',0 aini_get_str db 'ini_get_str',0 aini_get_int db 'ini_get_int',0 aini_get_color db 'ini_get_color',0 align 4 import_libkmenu: kmenu_init dd akmenu_init kmainmenu_draw dd akmainmenu_draw kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent ksubmenu_new dd aksubmenu_new ksubmenu_delete dd aksubmenu_delete ksubmenu_draw dd aksubmenu_draw ksubmenu_add dd aksubmenu_add kmenuitem_new dd akmenuitem_new kmenuitem_delete dd akmenuitem_delete kmenuitem_draw dd akmenuitem_draw dd 0,0 akmenu_init db 'kmenu_init',0 akmainmenu_draw db 'kmainmenu_draw',0 akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0 aksubmenu_new db 'ksubmenu_new',0 aksubmenu_delete db 'ksubmenu_delete',0 aksubmenu_draw db 'ksubmenu_draw',0 aksubmenu_add db 'ksubmenu_add',0 akmenuitem_new db 'kmenuitem_new',0 akmenuitem_delete db 'kmenuitem_delete',0 akmenuitem_draw db 'kmenuitem_draw',0 ;--------------------------------------------------------------------- align 4 wScr scrollbar 16,50, 300,50, 15, 100,30,0, 0,0,0, 1 align 4 hScr scrollbar 150,0, 16,50, 15, 100,30,0, 0,0,0, 1 ;дочерний скроллинг для элемента ListBox align 4 ws_dir_lbox scrollbar 16,0, 30,70, 15, 100,30,0, 0,0,0, 1 ;--------------------------------------------------------------------- align 4 OpenDialog_data: .type dd 0 .procinfo dd procinfo ;+4 .com_area_name dd communication_area_name ;+8 .com_area dd 0 ;+12 .opendir_path dd plugin_path ;+16 .dir_default_path dd default_dir ;+20 .start_path dd file_name ;+24 путь к диалогу открытия файлов .draw_window dd draw_window ;+28 .status dd 0 ;+32 .openfile_path dd openfile_path ;+36 путь к открываемому файлу .filename_area dd filename_area ;+40 имя открываемого файла .filter_area dd Filter .x: .x_size dw 420 ;+48 ; Window X size .x_start dw 10 ;+50 ; Window X position .y: .y_size dw 320 ;+52 ; Window y size .y_start dw 10 ;+54 ; Window Y position default_dir db '/rd/1',0 ;директория по умолчанию communication_area_name: db 'FFFFFFFF_open_dialog',0 open_dialog_name: db 'opendial',0 communication_area_default_path: db '/rd/1/File managers/',0 Filter: dd Filter.end - Filter.1 .1: db 'ASM',0 db 'CPP',0 db 'INC',0 db 'MAC',0 db 'INI',0 db 'TXT',0 db 'H',0 db 'C',0 db 'HTM',0 db 'HTML',0 db 'PY',0 db 'SH',0 db 'BAT',0 db 'LUA',0 db 'INF',0 db 'LOG',0 db 'DBG',0 db 'DAT',0 .end: db 0 txt_Info db '" -tI',0 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 ;ширина панели count_of_dir_list_files equ 15 ;максимальное число файлов синтаксиса показываемых в окне элемента tree1 ;------------------------------------------------------------------------------ struct TexSelect x0 dd ? y0 dd ? x1 dd ? y1 dd ? ends ;------------------------------------------------------------------------------ align 4 tedit0: ;структура текстового редактора .wnd BOX 0,50,440,150 ;+ 0 .rec BOX 30,25,ini_def_symbol_w,ini_def_symbol_h ;+16 .drag_m db 0 ;+32 выделение от мыши .drag_k db 0 ;+33 выделение от клавиатуры .sel TexSelect 0,0,0,0 ;+34 структура выделения .seln TexSelect ;+50 дополнительная структура выделения .tex dd 0 ;+66 text memory pointer .tex_1 dd 0 ;+70 text first symbol pointer .tex_end dd 0 ;+74 text end memory pointer .cur_x dd 0 ;+78 координата x курсора .cur_y dd 0 ;+82 координата y курсора .max_chars dd maxChars ;+86 максимальное число символов в одном документе .count_colors_text dd 1 ;+90 колличество цветов текста .count_key_words dd 0 ;+94 колличество ключевых слов .color_cursor dd 0x808080 ;+98 цвет курсора .color_wnd_capt dd 0x80 ;+102 цвет полей вокруг окна .color_wnd_work dd 0x0 ;+106 цвет фона окна .color_wnd_bord dd 0xd0d0d0 ;+110 цвет текста на полях .color_select dd 0x208080 ;+114 цвет выделения .color_cur_text dd 0xff0000 ;+118 цвет символа под курсором .color_wnd_text dd 0xffff00 ;+122 цвет текста в окне .syntax_file dd 0 ;+126 указатель на начало файла синтаксиса .syntax_file_size dd maxSyntaxFileSize ;+130 максимальный размер файла синтаксиса .text_colors dd 0 ;+134 указатель на массив цветов текста .help_text_f1 dd 0 ;+138 указатель на текст справки (по нажатии F1) .help_id dd -1 ;+142 идентификатор для справки .key_words_data dd 0 ;+146 указатель на структуры ключевых слов TexColViv .tim_ch dd ? ;+150 количество изменений в файле .tim_undo dd ? ;+154 количество отмененных действий .tim_ls dd ? ;+158 время последнего сохранения .tim_co dd ? ;+162 время последней цветовой разметки .el_focus dd el_focus ;+166 указатель на переменную элемента в фокусе .err_save db 0 ;+170 ошибка сохранения файла .panel_id db 0 ;+171 номер открытой панели .key_new db 0 ;+172 символ, который будет добавлятся с клавиатуры .symbol_new_line db 20 ;+173 символ завершения строки .scr_w dd wScr ;+174 вертикальный скроллинг .scr_h dd hScr ;+178 горизонтальный скроллинг .arr_key_pos dd 0 ;+182 указатель на массив позиций ключевых слов .buffer dd buf ;+186 указатель на буфер копирования/вставки .buffer_find dd buf_find ;+190 указатель на буфер для поиска .cur_ins db 1 ;+194 режим работы курсора (обычный или замена) .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 ted_but_open_file ;+198 указатель на функцию вызываемую при нажатии Ctrl+O (открытие файла) .fun_on_key_ctrl_f dd but_panel_find ;+202 ... Ctrl+F (вызова/скрытия панели поиска) .fun_on_key_ctrl_n dd ted_but_new_file ;+206 ... Ctrl+N (создание нового документа) .fun_on_key_ctrl_s dd ted_but_save_file ;+210 ... Ctrl+S или Ctrl+Shiht+S (на входе eax =0 или =1) .buffer_size dd BUF_SIZE ;+214 размер буфера копирования/вставки .fun_find_err dd ted_on_find_err ;+218 указатель на функцию вызываемую если поиск закончился неудачно .fun_init_synt_err dd 0 ;+222 .fun_draw_panel_buttons dd draw_but_toolbar ;+226 указатель на функцию рисования панели с кнопками .fun_draw_panel_find dd draw_panel_find ;+230 указатель на функцию рисования панели поиска/замены .fun_draw_panel_syntax dd draw_panel_syntax ;+234 указатель на функцию рисования панели синтаксиса .fun_save_err dd ted_save_err_msg ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно .increase_size dd 200 ;+242 число символов на которые будет увечиваться память при нехватке .ptr_free_symb dd ? ;+246 используется внутри элемента для ускорения вставки текста .font_size dd 0 ;+250 множитель для размера шрифта ;------------------------------------------------------------------------------ conv_tabl rb 128 ; таблица для конвертирования scan-кода в ascii-код el_focus dd tedit0 mouse_dd dd 0 tree1 tree_list 264,count_of_dir_list_files+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\ 16,16, 0x8080ff,0x0000ff,0xffffff, 0,70,TED_PANEL_WIDTH-17,120, 0,0,0, el_focus,\ ws_dir_lbox,0 ;dir_list memory tree_file_struct: dd 1,0,0,count_of_dir_list_files dd dir_mem db 0 .f: dd file_name align 4 opt_gr1 dd opt1 opt_grlist1 dd opt1,opt2,opt3,0 ;end option group opt1 option_box opt_gr1, 5, 90,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_next,txt_f_opt_next.end-txt_f_opt_next opt2 option_box opt_gr1, 5,108,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_perv,txt_f_opt_perv.end-txt_f_opt_perv opt3 option_box opt_gr1, 5,126,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_beg,txt_f_opt_beg.end-txt_f_opt_beg if lang eq ru msgbox_1: db '"Замена',13,10,'Сделано замен: ' .z: rb 10 msgbox_2: db 3,0 db 'Внимание',0 db 'Сохранить изменения в файле?',0 db 'Сохранить',0 db 'Не сохранять',0 db 'Отмена',0 db 0 msgbox_3: db 1,0 db 'Внимание',0 db 'Ошибка при открытии файла с цветовыми настройками!',13,\ 'Потому выделение слов цветом не возможно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_4: db 1,0 db 'Внимание',0 db 'Ошибка при открытии файла!',13,\ 'Возможно имя файла введено не правильно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_6: db 1,0 db 'Внимание',0 db 'Ошибка при сохранении файла!',13,\ 'Возможно имя файла введено не правильно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_7: db '"Текст не найден',13,10 db 'Попробуйте или изменить запрос и повторить поиск." -tI',0 msgbox_9: db 3,0 db 'Внимание',0 db 'Не открылся ',39,'диалог открытия файла',39,'.',13 .fdp: rb 100 db 0 db 'Закрыть',0 db 0 txtFindCapt db 'Поиск:',0 txtFindNext db 'Найти далее',0 txtRerlaceCapt db 'Чем заменить:',0 txtRerlace db 'Заменить',0 txtRerlaceAll db 'Заменить все',0 txtFormatCapt db 'Формат',0 txtFormatApply db 'Применить',0 txtReplace db 'Заменить',0 txtReplaceAll db 'Заменить все',0 txt_f_opt_next: db 'Вниз' .end: db 0 txt_f_opt_perv: db 'Вверх' .end: db 0 txt_f_opt_beg: db 'С начала' .end: db 0 else msgbox_1: db '"Replace',13,10,'Made replacements: ' .z: rb 10 msgbox_2: db 3,0 db 'Warning',0 db 'Save changes to the file?',0 db 'Save',0 db 'Discard',0 db 'Cancel',0 db 0 msgbox_3: db 1,0 db 'Warning',0 db 'Error opening the file with the color settings!',13,\ 'Because color selection of words is not possible.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_4: db 1,0 db 'Warning',0 db 'Error opening file!',13,\ 'Maybe the file name is not entered correctly.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_6: db 1,0 db 'Warning',0 db 'Error saving file!',13,\ 'Maybe the file name is not entered correctly.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_7: db '"Text not found.',13,10 db 'Try change the query and search again." -tI',0 msgbox_9: db 3,0 db 'Warning',0 db 'Error run ',39,'open file dialog',39,'.',13 .fdp: rb 100 db 0 db 'Close',0 db 0 txtFindCapt db 'Search:',0 txtFindNext db 'Find next',0 txtRerlaceCapt db 'Replace with:',0 txtRerlace db 'Replace',0 txtRerlaceAll db 'Replace all',0 txtFormatCapt db 'Format',0 txtFormatApply db 'Apply',0 txtReplace db 'Replace',0 txtReplaceAll db 'Replace all',0 txt_f_opt_next: db 'Down' .end: db 0 txt_f_opt_perv: db 'Up' .end: db 0 txt_f_opt_beg: db 'At first' .end: db 0 end if ;функции для кнопок в сообщениях msgbox_2N_funct: dd On_SaveAndNewFile dd On_NewFile dd 0 msgbox_2O_funct: dd On_SaveAndOpenFile dd ted_but_open_file.no_msg dd 0 msgbox_2E_funct: dd On_SaveAndExit dd On_Exit dd 0 KM_SHIFT equ 0x00010000 KM_CTRL equ 0x00020000 KM_ALT equ 0x00040000 KM_NUMLOCK equ 0x00080000 ; KEY CODES KEY_F1 equ 0x0000003B KEY_F2 equ 0x0000003C KEY_F3 equ 0x0000003D \ No newline at end of file +fn_col_option dd def_col_file fn_syntax_dir db 'info/',0 def_col_file db 'default.syn',0 exit_code dd 0 ;переменная используемая для выхода из программы panel_but rb 21 ;настройки отображения кнопок на панели ;значения задаваемые по умолчанию, без ini файла ini_def_window_t equ 20 ini_def_window_l equ 200 ini_def_window_w equ 570 ini_def_window_h equ 470 ini_def_symbol_w equ 7 ini_def_symbol_h equ 10 ini_def_font_s equ 0 ini_def_scroll_type equ 0 ;описание параматров для ini файла ini_name db 't_edit.ini',0 ini_sec_window db 'Window',0 key_window_t db 't',0 key_window_l db 'l',0 key_window_w db 'w',0 key_window_h db 'h',0 key_symbol_w db 'symbol_w',0 key_symbol_h db 'symbol_h',0 key_font_s db 'font_s',0 key_scroll_type db 'scroll_type',0 key_but_new db 'but_new',0 key_but_open db 'but_open',0 key_but_save db 'but_save',0 key_but_save_as db 'but_save_as',0 key_but_select db 'but_select',0 key_but_cut db 'but_cut',0 key_but_copy db 'but_copy',0 key_but_paste db 'but_paste',0 key_but_find db 'but_find',0 key_but_replace db 'but_replace',0 key_but_key_words db 'but_key_words',0 key_but_upper db 'but_upper',0 key_but_lower db 'but_lower',0 key_but_reverse db 'but_reverse',0 key_but_undo db 'but_undo',0 key_but_redo db 'but_redo',0 key_but_invisible db 'but_invisible',0 key_but_syntax_list db 'but_syntax_list',0 key_but_syntax_mode db 'but_syntax_mode',0 key_but_convert_1251_866 db 'but_convert_1251_866',0 key_but_convert_866_1251 db 'but_convert_866_1251',0 ini_sec_options db 'Options',0 key_synt_file: db 'syntax_' .numb: db '0',0 key_synt_ext: db 'ext_' .numb: db '0',0 ini_def_synt_f db 0 align 4 max_synt_auto_open equ 10 synt_auto_open: rb 64*max_synt_auto_open db 0 system_dir_0 db '/sys/lib/' lib_name_0 db 'box_lib.obj',0 system_dir_1 db '/sys/lib/' lib_name_1 db 'msgbox.obj',0 system_dir_2 db '/sys/lib/' lib_name_2 db 'proc_lib.obj',0 system_dir_3 db '/sys/lib/' lib_name_3 db 'libimg.obj',0 system_dir_4 db '/sys/lib/' lib_name_4 db 'libini.obj',0 system_dir_5 db '/sys/lib/' lib_name_5 db 'kmenu.obj',0 ;--------------------------------------------------------------------- align 4 import_box_lib: dd alib_init0 ;функция запускается макросом 1 раз при подключении бибилиотеки, потому в программе метка на нее не нужна edit_box_draw dd aEdit_box_draw edit_box_key dd aEdit_box_key edit_box_mouse dd aEdit_box_mouse ;edit_box_set_text dd aEdit_box_set_text ;version_ed dd aVersion_ed option_box_draw dd aOption_box_draw option_box_mouse dd aOption_box_mouse ;version_op dd aVersion_op scrollbar_ver_draw dd aScrollbar_ver_draw scrollbar_ver_mouse dd aScrollbar_ver_mouse scrollbar_hor_draw dd aScrollbar_hor_draw scrollbar_hor_mouse dd aScrollbar_hor_mouse ;version_scrollbar dd aVersion_scrollbar tl_data_init dd sz_tl_data_init tl_data_clear dd sz_tl_data_clear tl_info_clear dd sz_tl_info_clear tl_key dd sz_tl_key tl_mouse dd sz_tl_mouse tl_draw dd sz_tl_draw tl_info_undo dd sz_tl_info_undo tl_info_redo dd sz_tl_info_redo tl_node_add dd sz_tl_node_add tl_node_set_data dd sz_tl_node_set_data tl_node_get_data dd sz_tl_node_get_data tl_node_delete dd sz_tl_node_delete tl_cur_beg dd sz_tl_cur_beg tl_cur_next dd sz_tl_cur_next tl_cur_perv dd sz_tl_cur_perv ;tl_node_close_open dd sz_tl_node_close_open tl_node_lev_inc dd sz_tl_node_lev_inc tl_node_lev_dec dd sz_tl_node_lev_dec ted_but_sumb_upper dd sz_ted_but_sumb_upper ted_but_sumb_lover dd sz_ted_but_sumb_lover ted_but_convert_by_table dd sz_ted_but_convert_by_table ted_can_save dd sz_ted_can_save ted_clear dd sz_ted_clear ted_delete dd sz_ted_delete ted_draw dd sz_ted_draw ted_init dd sz_ted_init ted_init_scroll_bars dd sz_ted_init_scroll_bars ted_init_syntax_file dd sz_ted_init_syntax_file ted_is_select dd sz_ted_is_select ted_key dd sz_ted_key ted_mouse dd sz_ted_mouse ted_open_file dd sz_ted_open_file ted_save_file dd sz_ted_save_file ted_text_add dd sz_ted_text_add ted_but_select_word dd sz_ted_but_select_word ted_but_cut dd sz_ted_but_cut ted_but_copy dd sz_ted_but_copy ted_but_paste dd sz_ted_but_paste ted_but_undo dd sz_ted_but_undo ted_but_redo dd sz_ted_but_redo ted_but_reverse dd sz_ted_but_reverse ted_but_find dd sz_ted_but_find ted_but_replace dd sz_ted_but_replace ted_text_colored dd sz_ted_text_colored ted_go_to_position dd sz_ted_go_to_position version_text_edit dd sz_ted_version dd 0,0 alib_init0 db 'lib_init',0 aEdit_box_draw db 'edit_box',0 aEdit_box_key db 'edit_box_key',0 aEdit_box_mouse db 'edit_box_mouse',0 ;aEdit_box_set_text db 'edit_box_set_text',0 ;aVersion_ed db 'version_ed',0 aOption_box_draw db 'option_box_draw',0 aOption_box_mouse db 'option_box_mouse',0 ;aVersion_op db 'version_op',0 aScrollbar_ver_draw db 'scrollbar_v_draw',0 aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 aScrollbar_hor_draw db 'scrollbar_h_draw',0 aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 ;aVersion_scrollbar db 'version_scrollbar',0 sz_tl_data_init db 'tl_data_init',0 sz_tl_data_clear db 'tl_data_clear',0 sz_tl_info_clear db 'tl_info_clear',0 sz_tl_key db 'tl_key',0 sz_tl_mouse db 'tl_mouse',0 sz_tl_draw db 'tl_draw',0 sz_tl_info_undo db 'tl_info_undo',0 sz_tl_info_redo db 'tl_info_redo',0 sz_tl_node_add db 'tl_node_add',0 sz_tl_node_set_data db 'tl_node_set_data',0 sz_tl_node_get_data db 'tl_node_get_data',0 sz_tl_node_delete db 'tl_node_delete',0 sz_tl_cur_beg db 'tl_cur_beg',0 sz_tl_cur_next db 'tl_cur_next',0 sz_tl_cur_perv db 'tl_cur_perv',0 ;sz_tl_node_close_open db 'tl_node_close_open',0 sz_tl_node_lev_inc db 'tl_node_lev_inc',0 sz_tl_node_lev_dec db 'tl_node_lev_dec',0 sz_ted_but_sumb_upper db 'ted_but_sumb_upper',0 sz_ted_but_sumb_lover db 'ted_but_sumb_lover',0 sz_ted_but_convert_by_table db 'ted_but_convert_by_table',0 sz_ted_can_save db 'ted_can_save',0 sz_ted_clear db 'ted_clear',0 sz_ted_delete db 'ted_delete',0 sz_ted_draw db 'ted_draw',0 sz_ted_init db 'ted_init',0 sz_ted_init_scroll_bars db 'ted_init_scroll_bars',0 sz_ted_init_syntax_file db 'ted_init_syntax_file',0 sz_ted_is_select db 'ted_is_select',0 sz_ted_key db 'ted_key',0 sz_ted_mouse db 'ted_mouse',0 sz_ted_open_file db 'ted_open_file',0 sz_ted_save_file db 'ted_save_file',0 sz_ted_text_add db 'ted_text_add',0 sz_ted_but_select_word db 'ted_but_select_word',0 sz_ted_but_cut db 'ted_but_cut',0 sz_ted_but_copy db 'ted_but_copy',0 sz_ted_but_paste db 'ted_but_paste',0 sz_ted_but_undo db 'ted_but_undo',0 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_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 align 4 import_proclib: OpenDialog_Init dd aOpenDialog_Init OpenDialog_Start dd aOpenDialog_Start dd 0,0 aOpenDialog_Init db 'OpenDialog_init',0 aOpenDialog_Start db 'OpenDialog_start',0 align 4 import_msgbox_lib: mb_create dd amb_create mb_reinit dd amb_reinit mb_setfunctions dd amb_setfunctions dd 0,0 amb_create db 'mb_create',0 amb_reinit db 'mb_reinit',0 amb_setfunctions db 'mb_setfunctions',0 align 4 import_libimg: dd alib_init1 img_to_rgb2 dd aimg_to_rgb2 img_decode dd aimg_decode img_destroy dd aimg_destroy dd 0,0 alib_init1 db 'lib_init',0 aimg_to_rgb2 db 'img_to_rgb2',0 aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных aimg_destroy db 'img_destroy',0 align 4 import_libini: dd alib_init2 ini_get_str dd aini_get_str ini_get_int dd aini_get_int ini_get_color dd aini_get_color dd 0,0 alib_init2 db 'lib_init',0 aini_get_str db 'ini_get_str',0 aini_get_int db 'ini_get_int',0 aini_get_color db 'ini_get_color',0 align 4 import_libkmenu: kmenu_init dd akmenu_init kmainmenu_draw dd akmainmenu_draw kmainmenu_dispatch_cursorevent dd akmainmenu_dispatch_cursorevent ksubmenu_new dd aksubmenu_new ksubmenu_delete dd aksubmenu_delete ksubmenu_draw dd aksubmenu_draw ksubmenu_add dd aksubmenu_add kmenuitem_new dd akmenuitem_new kmenuitem_delete dd akmenuitem_delete kmenuitem_draw dd akmenuitem_draw dd 0,0 akmenu_init db 'kmenu_init',0 akmainmenu_draw db 'kmainmenu_draw',0 akmainmenu_dispatch_cursorevent db 'kmainmenu_dispatch_cursorevent',0 aksubmenu_new db 'ksubmenu_new',0 aksubmenu_delete db 'ksubmenu_delete',0 aksubmenu_draw db 'ksubmenu_draw',0 aksubmenu_add db 'ksubmenu_add',0 akmenuitem_new db 'kmenuitem_new',0 akmenuitem_delete db 'kmenuitem_delete',0 akmenuitem_draw db 'kmenuitem_draw',0 ;--------------------------------------------------------------------- align 4 wScr scrollbar 16,50, 300,50, 15, 100,30,0, 0,0,0, 1 align 4 hScr scrollbar 150,0, 16,50, 15, 100,30,0, 0,0,0, 1 ;дочерний скроллинг для элемента ListBox align 4 ws_dir_lbox scrollbar 16,0, 30,70, 15, 100,30,0, 0,0,0, 1 ;--------------------------------------------------------------------- align 4 OpenDialog_data: .type dd 0 .procinfo dd procinfo ;+4 .com_area_name dd communication_area_name ;+8 .com_area dd 0 ;+12 .opendir_path dd plugin_path ;+16 .dir_default_path dd default_dir ;+20 .start_path dd file_name ;+24 путь к диалогу открытия файлов .draw_window dd draw_window ;+28 .status dd 0 ;+32 .openfile_path dd openfile_path ;+36 путь к открываемому файлу .filename_area dd filename_area ;+40 имя открываемого файла .filter_area dd Filter .x: .x_size dw 420 ;+48 ; Window X size .x_start dw 10 ;+50 ; Window X position .y: .y_size dw 320 ;+52 ; Window y size .y_start dw 10 ;+54 ; Window Y position default_dir db '/rd/1',0 ;директория по умолчанию communication_area_name: db 'FFFFFFFF_open_dialog',0 open_dialog_name: db 'opendial',0 communication_area_default_path: db '/rd/1/File managers/',0 Filter: dd Filter.end - Filter.1 .1: db 'ASM',0 db 'CPP',0 db 'INC',0 db 'MAC',0 db 'INI',0 db 'TXT',0 db 'H',0 db 'C',0 db 'HTM',0 db 'HTML',0 db 'PY',0 db 'SH',0 db 'BAT',0 db 'LUA',0 db 'INF',0 db 'LOG',0 db 'DBG',0 db 'DAT',0 .end: db 0 txt_Info db '" -tI',0 TED_PANEL_NULL equ 0 ;нет открытой панели TED_PANEL_FIND equ 1 ;панель поиска TED_PANEL_REPLACE equ 2 ;панель замены TED_PANEL_SYNTAX equ 3 ;панель выбора файлов подсветки TED_PANEL_GOTO equ 4 ;панель перехода TED_PANEL_WIDTH equ 150 ;ширина панели count_of_dir_list_files equ 15 ;максимальное число файлов синтаксиса показываемых в окне элемента tree1 ;------------------------------------------------------------------------------ struct TexSelect x0 dd ? y0 dd ? x1 dd ? y1 dd ? ends ;------------------------------------------------------------------------------ align 4 tedit0: ;структура текстового редактора .wnd BOX 0,50,440,150 ;+ 0 .rec BOX 30,25,ini_def_symbol_w,ini_def_symbol_h ;+16 .drag_m db 0 ;+32 выделение от мыши .drag_k db 0 ;+33 выделение от клавиатуры .sel TexSelect 0,0,0,0 ;+34 структура выделения .seln TexSelect ;+50 дополнительная структура выделения .tex dd 0 ;+66 text memory pointer .tex_1 dd 0 ;+70 text first symbol pointer .tex_end dd 0 ;+74 text end memory pointer .cur_x dd 0 ;+78 координата x курсора .cur_y dd 0 ;+82 координата y курсора .max_chars dd maxChars ;+86 максимальное число символов в одном документе .count_colors_text dd 1 ;+90 колличество цветов текста .count_key_words dd 0 ;+94 колличество ключевых слов .color_cursor dd 0x808080 ;+98 цвет курсора .color_wnd_capt dd 0x80 ;+102 цвет полей вокруг окна .color_wnd_work dd 0x0 ;+106 цвет фона окна .color_wnd_bord dd 0xd0d0d0 ;+110 цвет текста на полях .color_select dd 0x208080 ;+114 цвет выделения .color_cur_text dd 0xff0000 ;+118 цвет символа под курсором .color_wnd_text dd 0xffff00 ;+122 цвет текста в окне .syntax_file dd 0 ;+126 указатель на начало файла синтаксиса .syntax_file_size dd maxSyntaxFileSize ;+130 максимальный размер файла синтаксиса .text_colors dd 0 ;+134 указатель на массив цветов текста .help_text_f1 dd 0 ;+138 указатель на текст справки (по нажатии F1) .help_id dd -1 ;+142 идентификатор для справки .key_words_data dd 0 ;+146 указатель на структуры ключевых слов TexColViv .tim_ch dd ? ;+150 количество изменений в файле .tim_undo dd ? ;+154 количество отмененных действий .tim_ls dd ? ;+158 время последнего сохранения .tim_co dd ? ;+162 время последней цветовой разметки .el_focus dd el_focus ;+166 указатель на переменную элемента в фокусе .err_save db 0 ;+170 ошибка сохранения файла .panel_id db 0 ;+171 номер открытой панели .key_new db 0 ;+172 символ, который будет добавлятся с клавиатуры .symbol_new_line db 20 ;+173 символ завершения строки .scr_w dd wScr ;+174 вертикальный скроллинг .scr_h dd hScr ;+178 горизонтальный скроллинг .arr_key_pos dd 0 ;+182 указатель на массив позиций ключевых слов .buffer dd buf ;+186 указатель на буфер копирования/вставки .buffer_find dd buf_find ;+190 указатель на буфер для поиска .cur_ins db 1 ;+194 режим работы курсора (обычный или замена) .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_all dd ted_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 ted_on_find_err ;+218 указатель на функцию вызываемую если поиск закончился неудачно .fun_init_synt_err dd 0 ;+222 .fun_draw_panel_buttons dd draw_but_toolbar ;+226 указатель на функцию рисования панели с кнопками .fun_draw_panels dd draw_panels ;+230 указатель на функцию рисования панели поиска/замены dd 0 ;+234 зарезервировано .fun_save_err dd ted_save_err_msg ;+238 указатель на функцию вызываемую если сохранение файла закончилось неудачно .increase_size dd 200 ;+242 число символов на которые будет увечиваться память при нехватке .ptr_free_symb dd ? ;+246 используется внутри элемента для ускорения вставки текста .font_size dd 0 ;+250 множитель для размера шрифта ;------------------------------------------------------------------------------ conv_tabl rb 128 ; таблица для конвертирования scan-кода в ascii-код el_focus dd tedit0 mouse_dd dd 0 tree1 tree_list 264,count_of_dir_list_files+2, tl_key_no_edit+tl_draw_par_line+tl_list_box_mode,\ 16,16, 0x8080ff,0x0000ff,0xffffff, 0,70,TED_PANEL_WIDTH-17,120, 0,0,0, el_focus,\ ws_dir_lbox,0 ;dir_list memory tree_file_struct: dd 1,0,0,count_of_dir_list_files dd dir_mem db 0 .f: dd file_name align 4 opt_gr1 dd opt1 opt_grlist1 dd opt1,opt2,opt3,0 ;end option group opt1 option_box opt_gr1, 5, 90,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_next,txt_f_opt_next.end-txt_f_opt_next opt2 option_box opt_gr1, 5,108,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_perv,txt_f_opt_perv.end-txt_f_opt_perv opt3 option_box opt_gr1, 5,126,6,12,0xd0d0ff, 0xff, 0x80ff,txt_f_opt_beg,txt_f_opt_beg.end-txt_f_opt_beg if lang eq ru msgbox_1: db '"Замена',13,10,'Сделано замен: ' .z: rb 10 msgbox_2: db 3,0 db 'Внимание',0 db 'Сохранить изменения в файле?',0 db 'Сохранить',0 db 'Не сохранять',0 db 'Отмена',0 db 0 msgbox_3: db 1,0 db 'Внимание',0 db 'Ошибка при открытии файла с цветовыми настройками!',13,\ 'Потому выделение слов цветом не возможно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_4: db 1,0 db 'Внимание',0 db 'Ошибка при открытии файла!',13,\ 'Возможно имя файла введено не правильно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_6: db 1,0 db 'Внимание',0 db 'Ошибка при сохранении файла!',13,\ 'Возможно имя файла введено не правильно.',13,\ ' (код ошибки =' .err: db '?' db ')',0 db 'Закрыть',0 db 0 msgbox_7: db '"Текст не найден',13,10 db 'Попробуйте или изменить запрос и повторить поиск." -tI',0 msgbox_9: db 3,0 db 'Внимание',0 db 'Не открылся ',39,'диалог открытия файла',39,'.',13 .fdp: rb 100 db 0 db 'Закрыть',0 db 0 txtFindCapt db 'Поиск:',0 txtFindNext db 'Найти далее',0 txtRerlaceCapt db 'Чем заменить:',0 txtRerlace db 'Заменить',0 txtRerlaceAll db 'Заменить все',0 txtFormatCapt db 'Формат',0 txtFormatApply db 'Применить',0 txtReplace db 'Заменить',0 txtReplaceAll db 'Заменить все',0 txtGotoCapt db 'Переход на строку:',0 txtGoto db 'Перейти',0 txt_f_opt_next: db 'Вниз' .end: db 0 txt_f_opt_perv: db 'Вверх' .end: db 0 txt_f_opt_beg: db 'С начала' .end: db 0 else msgbox_1: db '"Replace',13,10,'Made replacements: ' .z: rb 10 msgbox_2: db 3,0 db 'Warning',0 db 'Save changes to the file?',0 db 'Save',0 db 'Discard',0 db 'Cancel',0 db 0 msgbox_3: db 1,0 db 'Warning',0 db 'Error opening the file with the color settings!',13,\ 'Because color selection of words is not possible.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_4: db 1,0 db 'Warning',0 db 'Error opening file!',13,\ 'Maybe the file name is not entered correctly.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_6: db 1,0 db 'Warning',0 db 'Error saving file!',13,\ 'Maybe the file name is not entered correctly.',13,\ ' (error code =' .err: db '?' db ')',0 db 'Close',0 db 0 msgbox_7: db '"Text not found.',13,10 db 'Try change the query and search again." -tI',0 msgbox_9: db 3,0 db 'Warning',0 db 'Error run ',39,'open file dialog',39,'.',13 .fdp: rb 100 db 0 db 'Close',0 db 0 txtFindCapt db 'Search:',0 txtFindNext db 'Find next',0 txtRerlaceCapt db 'Replace with:',0 txtRerlace db 'Replace',0 txtRerlaceAll db 'Replace all',0 txtFormatCapt db 'Format',0 txtFormatApply db 'Apply',0 txtReplace db 'Replace',0 txtReplaceAll db 'Replace all',0 txtGotoCapt db 'Go to line:',0 txtGoto db 'Go to',0 txt_f_opt_next: db 'Down' .end: db 0 txt_f_opt_perv: db 'Up' .end: db 0 txt_f_opt_beg: db 'At first' .end: db 0 end if ;функции для кнопок в сообщениях msgbox_2N_funct: dd On_SaveAndNewFile dd On_NewFile dd 0 msgbox_2O_funct: dd On_SaveAndOpenFile dd ted_but_open_file.no_msg dd 0 msgbox_2E_funct: dd On_SaveAndExit dd On_Exit dd 0 KM_SHIFT equ 0x00010000 KM_CTRL equ 0x00020000 KM_ALT equ 0x00040000 KM_NUMLOCK equ 0x00080000 ; KEY CODES KEY_F1 equ 0x0000003B KEY_F2 equ 0x0000003C KEY_F3 equ 0x0000003D \ No newline at end of file diff --git a/programs/other/t_edit/t_draw.inc b/programs/other/t_edit/t_draw.inc index 5ebdd1d778..ebf17a5729 100644 --- a/programs/other/t_edit/t_draw.inc +++ b/programs/other/t_edit/t_draw.inc @@ -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 diff --git a/programs/other/t_edit/t_edit.asm b/programs/other/t_edit/t_edit.asm index d6f875ff28..ee4e7da07f 100644 --- a/programs/other/t_edit/t_edit.asm +++ b/programs/other/t_edit/t_edit.asm @@ -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 diff --git a/programs/other/t_edit/t_edit.png b/programs/other/t_edit/t_edit.png index 79986425dd..494c2efb69 100644 Binary files a/programs/other/t_edit/t_edit.png and b/programs/other/t_edit/t_edit.png differ diff --git a/programs/other/t_edit_synt/te_data.inc b/programs/other/t_edit_synt/te_data.inc index 7d13ab0949..fb8d7f794d 100644 --- a/programs/other/t_edit_synt/te_data.inc +++ b/programs/other/t_edit_synt/te_data.inc @@ -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 указатель на свободную память, в которую можно добавлять символ (используется внутри элемента для ускорения вставки текста) diff --git a/programs/other/t_edit_synt/te_syntax.asm b/programs/other/t_edit_synt/te_syntax.asm index c2b7eb5766..3b63ddd029 100644 --- a/programs/other/t_edit_synt/te_syntax.asm +++ b/programs/other/t_edit_synt/te_syntax.asm @@ -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