Subversion Repositories Kolibri OS

Rev

Rev 7576 | Rev 7579 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. struct symbol
  2.         c db ?    ; +0 символ
  3.         col db ?  ; +1 цвет
  4.         perv dd ? ; +2
  5.         next dd ? ; +6 указатели
  6.         tc dd ?   ;+10 врем. создания
  7.         td dd ?   ;+14 врем. удаления
  8. ends
  9.  
  10. ID_BUT_0 equ 3 ;минимальный ID кнопки на панели
  11.  
  12. ID_BUT_NEW equ 3
  13. ID_BUT_OPEN equ 4
  14. ID_BUT_SAVE equ 5
  15. ID_BUT_SAVE_AS equ 6
  16. ID_BUT_SELECT equ 7
  17. ID_BUT_CUT equ 8
  18. ID_BUT_COPY equ 9
  19. ID_BUT_PASTE equ 10
  20. ID_BUT_FIND equ 11
  21. ID_BUT_REPLACE equ 12
  22. ID_BUT_KEY_WORDS equ 13
  23. ID_BUT_UPPER equ 14
  24. ID_BUT_LOWER equ 15
  25. ID_BUT_REVERSE equ 16
  26. ID_BUT_UNDO equ 17
  27. ID_BUT_REDO equ 18
  28. ID_BUT_INVISIBLE equ 19
  29. ID_BUT_SYNTAX_LIST equ 20
  30. ID_BUT_SYNTAX_MODE equ 21
  31. ID_BUT_CONVERT_1251_866 equ 22
  32. ID_BUT_CONVERT_866_1251 equ 23
  33.  
  34. macro ini_panel b_key,b_id
  35. {
  36.         stdcall [ini_get_int],file_name,ini_sec_window,b_key,1
  37.         mov byte[panel_but+b_id-ID_BUT_0],al
  38. }
  39.  
  40. bmp_icon dd 0
  41.  
  42. align 16
  43. button:
  44.         mcall SF_GET_BUTTON
  45.         cmp ah,ID_BUT_NEW
  46.         jne @f
  47.                 call ted_but_new_file
  48.                 jmp still
  49.         @@:
  50.         cmp ah,ID_BUT_OPEN
  51.         jne @f
  52.                 call ted_but_open_file
  53.                 jmp still
  54.         @@:
  55.         cmp ah,ID_BUT_SAVE
  56.         jne @f
  57.                 xor eax,eax
  58.                 call ted_but_save_file ;сохранение без диалога
  59.                 jmp still
  60.         @@:
  61.         cmp ah,ID_BUT_SAVE_AS
  62.         jne @f
  63.                 xor eax,eax
  64.                 inc eax
  65.                 call ted_but_save_file ;сохранение с диалогом
  66.                 jmp still
  67.         @@:
  68.         cmp ah,ID_BUT_SELECT
  69.         jne @f
  70.                 stdcall [ted_but_select_word], tedit0
  71.                 jmp still
  72.         @@:
  73.         cmp ah,ID_BUT_CUT
  74.         jne @f
  75.                 stdcall [ted_but_cut], tedit0
  76.                 jmp still
  77.         @@:
  78.         cmp ah,ID_BUT_COPY
  79.         jne @f
  80.                 stdcall [ted_but_copy], tedit0
  81.                 jmp still
  82.         @@:
  83.         cmp ah,ID_BUT_PASTE
  84.         jne @f
  85.                 stdcall [ted_but_paste], tedit0
  86.                 jmp still
  87.         @@:
  88.         cmp ah,ID_BUT_FIND
  89.         jne @f
  90.                 call but_panel_find
  91.                 jmp still
  92.         @@:
  93.         cmp ah,ID_BUT_REPLACE
  94.         jne @f
  95.                 call but_panel_replace
  96.                 jmp still
  97.         @@:
  98.         cmp ah,ID_BUT_KEY_WORDS
  99.         jne @f
  100.                 call but_find_key_w
  101.                 jmp still
  102.         @@:
  103.         cmp ah,ID_BUT_UPPER
  104.         jne @f
  105.                 stdcall [ted_but_sumb_upper], tedit0
  106.                 jmp still
  107.         @@:
  108.         cmp ah,ID_BUT_LOWER
  109.         jne @f
  110.                 stdcall [ted_but_sumb_lover], tedit0
  111.                 jmp still
  112.         @@:
  113.         cmp ah,ID_BUT_REVERSE
  114.         jne @f
  115.                 stdcall [ted_but_reverse], tedit0
  116.                 jmp still
  117.         @@:
  118.         cmp ah,ID_BUT_UNDO
  119.         jne @f
  120.                 stdcall [ted_but_undo], tedit0
  121.                 jmp still
  122.         @@:
  123.         cmp ah,ID_BUT_REDO
  124.         jne @f
  125.                 stdcall [ted_but_redo], tedit0
  126.                 jmp still
  127.         @@:
  128.         cmp ah,ID_BUT_INVISIBLE
  129.         jne @f
  130.                 stdcall but_sumb_invis, tedit0
  131.                 jmp still
  132.         @@:
  133.         cmp ah,ID_BUT_SYNTAX_LIST
  134.         jne @f
  135.                 stdcall but_use_syntax, tedit0
  136.                 jmp still
  137.         @@:
  138.         cmp ah,ID_BUT_SYNTAX_MODE
  139.         jne @f
  140.                 stdcall but_panel_choose_syntax, tedit0
  141.                 jmp still
  142.         @@:
  143.         cmp ah,ID_BUT_CONVERT_1251_866
  144.         jne @f
  145.                 stdcall [ted_but_convert_by_table],tedit0,tbl_1251_866
  146.                 jmp still
  147.         @@:
  148.         cmp ah,ID_BUT_CONVERT_866_1251
  149.         jne @f
  150.                 stdcall [ted_but_convert_by_table],tedit0,tbl_866_1251
  151.                 jmp still
  152.         @@:
  153.  
  154.         cmp ah,200
  155.         jne @f
  156.                 stdcall ted_but_open_syntax, tedit0
  157.                 jmp still
  158.         @@:
  159.         cmp ah,201 ;найти далее
  160.         jne .no_find
  161.                 call get_find_options
  162.                 stdcall [ted_but_find], tedit0, eax
  163.                 jmp still
  164.         .no_find:
  165.         cmp ah,202 ;заменить
  166.         jne .no_change
  167.                 call get_find_options
  168.                 stdcall [ted_but_replace], tedit0, buf_replace, eax, 1
  169.                 or eax,eax
  170.                 jz still
  171.                 stdcall [ted_draw], tedit0
  172.                 jmp still
  173.         .no_change:
  174.         cmp ah,203 ;заменить все
  175.         jne .no_change_a
  176.                 call but_replace_all
  177.                 jmp still
  178.         .no_change_a:
  179.  
  180.         cmp ah,1
  181.         jne @f
  182.                 call ted_Exit
  183.                 jmp still
  184.         @@:
  185.  
  186.         cmp ah,199
  187.         jne still
  188.                 call ted_Exit
  189.         jmp still
  190.  
  191. align 4
  192. ted_Exit:
  193.         cmp dword[wnd_k_words_run],0
  194.         je @f
  195.                 push ebx ecx
  196.                 mcall SF_SYSTEM, SSF_TERMINATE_THREAD_ID,[wnd_k_words_run]
  197.                 pop ecx ebx
  198.                 mov dword[wnd_k_words_run],0
  199.                 ;test eax,eax
  200.         @@:
  201.         cmp dword[exit_code],1
  202.         je @f
  203.         stdcall [ted_can_save], tedit0
  204.         cmp al,1
  205.         jne @f
  206.                 stdcall [mb_create],msgbox_2,thread ;message: save buf in file?
  207.                 stdcall [mb_setfunctions],msgbox_2E_funct
  208.                 ret
  209.         @@:
  210.         stdcall mem.Free,[bmp_icon]
  211.         cmp dword[unpac_mem],0
  212.         je @f
  213.                 stdcall mem.Free,[unpac_mem]
  214.         @@:
  215.         stdcall [ted_delete], tedit0
  216.         stdcall [tl_data_clear], tree1
  217.         mcall SF_TERMINATE_PROCESS ;выход из программы
  218.         ;ret
  219.  
  220. align 4
  221. get_find_options:
  222.         xor eax,eax
  223.         cmp [opt_gr1],opt1
  224.         je @f
  225.                 inc eax
  226.         cmp [opt_gr1],opt2
  227.         je @f
  228.                 inc eax
  229.         @@:
  230.         ret
  231.  
  232. align 4
  233. proc but_replace_all uses ebx ecx edx
  234.         call get_find_options
  235.         mov ebx,eax
  236.         stdcall [ted_but_replace], tedit0, buf_replace, ebx, 1
  237.         xor edx,edx
  238.         or eax,eax
  239.         jz @f
  240.         inc edx
  241.         mov ecx,0x1000
  242.         .cycle0:
  243.                 stdcall [ted_but_replace], tedit0, buf_replace, ebx, 0
  244.                 or eax,eax
  245.                 jz @f
  246.                 inc edx
  247.                 loop .cycle0
  248.         @@:
  249.         or edx,edx
  250.         jz @f
  251.                 stdcall [ted_draw], tedit0
  252.         @@:
  253.         mov eax,edx
  254.         mov edi,msgbox_1.z
  255.         stdcall convert_int_to_str, 8
  256.         stdcall str_cat, edi,txt_Info
  257.         notify_window_run msgbox_1
  258.         ret
  259. endp
  260.  
  261. ;input:
  262. ; al = код ошибки
  263. align 4
  264. ted_on_init_synt_err:
  265.         mov byte[msgbox_3.err],'0'
  266.         add byte[msgbox_3.err],al
  267.         stdcall [mb_create],msgbox_3,thread ;message: Can-t open color options file!
  268.         ret
  269.  
  270. align 4
  271. ted_but_new_file:
  272.         push eax ebx
  273.         stdcall [ted_can_save], tedit0
  274.         cmp al,1
  275.         jne @f
  276.                 stdcall [mb_create],msgbox_2,thread ;message: save changes in file?
  277.                 stdcall [mb_setfunctions],msgbox_2N_funct
  278.                 jmp .ret_f
  279.         @@:
  280.         call On_NewFile
  281.         .ret_f:
  282.                 mov byte[openfile_path],0
  283.                 mcall SF_SET_CAPTION,1,hed
  284.         pop ebx eax
  285.         ret
  286.  
  287. align 4
  288. On_NewFile:
  289.         stdcall [ted_clear], tedit0,1
  290.         call draw_but_toolbar
  291.         stdcall [ted_draw], tedit0
  292.         mov dword[openfile_path],0
  293.         ret
  294.  
  295. align 4
  296. On_SaveAndNewFile:
  297.         push edi
  298.         mov edi, tedit0
  299.  
  300.         call ted_but_save_file
  301.         cmp ted_err_save,0
  302.         jne @f
  303.                 call On_NewFile
  304.         @@:
  305.         pop edi
  306.         ret
  307.  
  308. align 4
  309. On_SaveAndOpenFile:
  310.         push edi
  311.         mov edi, tedit0
  312.  
  313.         call ted_but_save_file
  314.         cmp ted_err_save,0
  315.         jne @f
  316.                 call ted_but_open_file.no_msg
  317.         @@:
  318.         pop edi
  319.         ret
  320.  
  321. align 4
  322. On_SaveAndExit:
  323.         push edi
  324.         mov edi, tedit0
  325.  
  326.         call ted_but_save_file
  327.         cmp ted_err_save,0
  328.         jne @f
  329.                 mov dword[exit_code],1
  330.         @@:
  331.         pop edi
  332.         ret
  333.  
  334. align 4
  335. On_Exit:
  336.         mov dword[exit_code],1
  337.         ret
  338.  
  339. ;description:
  340. ; функция открытия файла без окна сообщения
  341. align 4
  342. proc but_no_msg_OpenFile uses eax ebx esi
  343.         stdcall [ted_open_file], tedit0,run_file_70,openfile_path
  344.         call ted_messages_after_open_file
  345.  
  346.         mov esi,openfile_path
  347.         stdcall str_len,esi
  348.         add esi,eax
  349.         @@: ;цикл для поиска начала имени файла
  350.                 dec esi
  351.                 cmp byte[esi],'/'
  352.                 je @f
  353.                 cmp byte[esi],0x5c ;'\'
  354.                 je @f
  355.                 cmp esi,openfile_path
  356.                 jg @b
  357.         @@:
  358.         inc esi
  359.         stdcall str_len,esi
  360.         cmp eax,255
  361.         jle @f
  362.                 mov eax,255
  363.         @@:
  364.         inc eax ;для 0 в конце строки
  365.         stdcall mem_cpy, filename_area,esi,eax ;копируем имя файла в диалог сохранения
  366.         ret
  367. endp
  368.  
  369. ;description:
  370. ; функция открытия файла с возможным окном сообщения (о возможности отменить открытие)
  371. align 4
  372. ted_but_open_file:
  373.         pushad
  374.  
  375.         stdcall [ted_can_save], tedit0
  376.         cmp al,1
  377.         jne @f
  378.                 stdcall [mb_create],msgbox_2,thread ;message: save changes in file?
  379.                 stdcall [mb_setfunctions],msgbox_2O_funct
  380.                 jmp .ret_f
  381.         .no_msg: ;метка для вызова функции через кнопку в сообщении msgbox_5
  382.                 pushad
  383.         @@:
  384.  
  385.         copy_path open_dialog_name,communication_area_default_path,file_name,0
  386.         mov [OpenDialog_data.type],0
  387.         stdcall [OpenDialog_Start],OpenDialog_data
  388.         cmp [OpenDialog_data.status],2
  389.         jne @f
  390.                 stdcall mem_spac, msgbox_9.fdp,100
  391.                 stdcall str_len,file_name
  392.                 cmp eax,100
  393.                 jle .no_crop
  394.                         mov eax,100
  395.                 .no_crop:
  396.                 stdcall mem_cpy, msgbox_9.fdp,esi,eax
  397.                 stdcall [mb_create],msgbox_9,thread ;message: error run 'open file dialog'
  398.                 jmp .ret_f
  399.         @@:
  400.         cmp [OpenDialog_data.status],1
  401.         jne .ret_f
  402.                 stdcall auto_open_syntax,[OpenDialog_data.openfile_path]
  403.                 stdcall [ted_open_file], tedit0,run_file_70,openfile_path
  404.                 call ted_messages_after_open_file
  405.         .ret_f:
  406.         popad
  407.         ret
  408.  
  409. proc auto_open_syntax, of_path:dword
  410. pushad
  411.         ;ищем есть ли файл подсветки для открываемого текстового файла
  412.         stdcall str_len,[of_path]
  413.         mov edx,[of_path]
  414.         add edx,eax
  415.         .f_beg:
  416.         cmp byte[edx],'.'
  417.         je .found
  418.                 dec edx
  419.                 cmp edx,[of_path]
  420.                 jg .f_beg
  421.         .found:
  422.         inc edx ;edx - указатель на расширение открытого файла
  423.  
  424.         mov ebx,synt_auto_open
  425.         .cycle_0:
  426.                 add ebx,32
  427.                 stdcall strcmp,ebx,edx ;сравниваем расширение открытого файла со значениями открытыми с ini файла
  428.                 test eax,eax
  429.                 jz .ok
  430.                 add ebx,32
  431.                 cmp byte[ebx],0
  432.                 jne .cycle_0
  433.         jmp .end_0
  434.         .ok: ;открытие файла подсветки в зависимости от найденного расширения
  435.                 sub ebx,32
  436.                 stdcall open_unpac_synt_file,ebx
  437.         .end_0:
  438. popad
  439.         ret
  440. endp
  441.  
  442. ;input:
  443. ; eax если равен: 0 - сохранение без диалога, 1 - сохранение с диалогом
  444. ;description:
  445. ; функция сохранения файла
  446. align 4
  447. proc ted_but_save_file
  448.         or eax,eax
  449.         jnz .init_dlg
  450.                 ; сохраняем без вызова диалогового окна
  451.                 cmp byte[openfile_path],0
  452.                 jne @f
  453.         .init_dlg:
  454.                 ; вызов диалогового окна для сохранения файла
  455.                 copy_path open_dialog_name,communication_area_default_path,file_name,0
  456.                 mov [OpenDialog_data.type],1
  457.                 stdcall [OpenDialog_Start],OpenDialog_data
  458.                 cmp [OpenDialog_data.status],1 ;if status==1 then save
  459.                 jne .end_save
  460.         @@:
  461.                 stdcall [ted_save_file],tedit0,run_file_70,openfile_path
  462.         .end_save:
  463.         ret
  464. endp
  465.  
  466. ;description:
  467. ; копирование памяти
  468. align 4
  469. proc mem_cpy uses ecx esi edi, destination:dword, source:dword, len:dword
  470.         cld
  471.         mov esi,[source]
  472.         mov edi,[destination]
  473.         mov ecx,[len]
  474.         rep movsb
  475.         ret
  476. endp
  477.  
  478. ;description:
  479. ; заполнение памяти пробелами
  480. align 4
  481. proc mem_spac uses eax ecx edi, mem:dword, len:dword
  482.         cld
  483.         mov al,' '
  484.         mov edi,[mem]
  485.         mov ecx,[len]
  486.         repne stosb
  487.         ret
  488. endp
  489.  
  490. ;input:
  491. ; eax = код ошибки
  492. ; ebx = колличество прочитанных байт
  493. align 4
  494. ted_messages_after_open_file:
  495.         push ecx edi
  496.         or eax,eax
  497.         jz @f
  498.                 cmp ax,10
  499.                 jl .zifra_0_9
  500.                         mov al,'?'
  501.                         sub ax,48
  502.                 .zifra_0_9:
  503.                 add ax,48
  504.  
  505.                 mov byte[msgbox_4.err],al
  506.                 stdcall [mb_create],msgbox_4,thread ;message: Can-t open text file!
  507.         @@:
  508.         pop edi ecx
  509.         ret
  510.  
  511. align 4
  512. ted_save_err_msg:
  513.         mov byte[msgbox_6.err],al
  514.         stdcall [mb_create],msgbox_6,thread ;message: Can-t save text file!
  515.         ret
  516.  
  517. ;description:
  518. ; функция нажатия на кнопку [Применить] в панели синтаксиса
  519. align 4
  520. proc ted_but_open_syntax uses eax ebx ecx edi, edit:dword
  521.         mov edi,[edit]
  522.         cmp ted_panel_id,TED_PANEL_SYNTAX
  523.         jne @f
  524.                 stdcall [tl_node_get_data], tree1
  525.                 mov [fn_col_option],eax
  526.                 stdcall open_unpac_synt_file,eax
  527.                 cmp ebx,-1
  528.                 je @f
  529.  
  530.                 call [ted_text_colored]
  531.                 stdcall [ted_draw],edi
  532.         @@:
  533.         ret
  534. endp
  535.  
  536. ;открытие и распаковка файла подсветки синтаксиса
  537. ;input:
  538. ; f_name - указатель на имя открываемого файла синтаксиса (без пути и папки info)
  539. ;output:
  540. ; ebx - число прочитанных байт из файла
  541. ; ecx - разрушается
  542. align 4
  543. proc open_unpac_synt_file uses eax edi esi, f_name:dword
  544.         mov ebx,[f_name]
  545.         cmp byte[ebx],0
  546.         je @f
  547.         mov edi,last_open_synt_file
  548.         stdcall strcmp,ebx,edi ;сравниваем имя подключенного файла с подключенным ранее файлом
  549.         test eax,eax
  550.         jz @f
  551.  
  552.         ;копируем имя подключенного файла (для избежания повторных подключений)
  553.         mov esi,ebx
  554.         mov ecx,32/4
  555.         cld
  556.         rep movsd
  557.  
  558.         copy_path ebx,fn_syntax_dir,syntax_path,0
  559.         copy_path syntax_path,sys_path,file_name,0
  560.         mov edi, tedit0
  561.         mov [run_file_70.Function], SSF_READ_FILE
  562.         mov [run_file_70.Position], 0
  563.         mov [run_file_70.Flags], 0
  564.         mov ecx, ted_syntax_file_size
  565.         mov dword[run_file_70.Count], ecx
  566.         m2m dword[run_file_70.Buffer], ted_syntax_file
  567.         mov byte[run_file_70+20], 0
  568.         mov [run_file_70.FileName], file_name
  569.         mcall SF_FILE, run_file_70
  570.         cmp ebx,-1
  571.         jne .end_0
  572.                 call ted_on_init_synt_err
  573.                 jmp @f
  574.         .end_0:
  575.                 mov eax,ted_syntax_file
  576.                 cmp dword[eax],'KPCK'
  577.                 jne .end_unpack
  578.                 cmp dword[eax+4],ecx
  579.                 jg @f ;если для распакованого файла не хватает выделенной памяти
  580.                 cmp dword[unpac_mem],0
  581.                 jne .end_1
  582.                         ;выделение памяти для распаковки файла
  583.                         stdcall mem.Alloc,ecx
  584.                         mov [unpac_mem],eax
  585.                 .end_1:
  586.                 stdcall unpack,ted_syntax_file,[unpac_mem]
  587.                 mov edi,ted_syntax_file
  588.                 mov esi,[unpac_mem]
  589.                 mov ecx,[edi+4]
  590.                 cld
  591.                 rep movsb
  592.                 .end_unpack:
  593.                 stdcall [ted_init_syntax_file], tedit0
  594.         @@:
  595.         ret
  596. endp
  597.  
  598. ;description:
  599. ; вызов/скрытие панели поиска
  600. align 4
  601. proc but_panel_find uses edi
  602.         mov edi,tedit0
  603.  
  604.         cmp ted_panel_id,TED_PANEL_NULL
  605.         je @f
  606.                 mov ted_panel_id,TED_PANEL_NULL
  607.                 mov ted_wnd_l,0
  608.                 jmp .e_if
  609.         @@:
  610.                 mov ted_panel_id,TED_PANEL_FIND
  611.                 mov ted_wnd_l,TED_PANEL_WIDTH
  612.         .e_if:
  613.         call EvSize
  614.         stdcall [ted_draw],edi
  615.         ret
  616. endp
  617.  
  618. ;description:
  619. ; вызов/скрытие панели замены
  620. align 4
  621. proc but_panel_replace uses edi
  622.         mov edi,tedit0
  623.  
  624.         cmp ted_panel_id,TED_PANEL_NULL
  625.         je @f
  626.                 mov ted_panel_id,TED_PANEL_NULL
  627.                 mov ted_wnd_l,0
  628.                 jmp .e_if
  629.         @@:
  630.                 mov ted_panel_id,TED_PANEL_REPLACE
  631.                 mov ted_wnd_l,TED_PANEL_WIDTH
  632.         .e_if:
  633.         call EvSize
  634.         stdcall [ted_draw],edi
  635.         ret
  636. endp
  637.  
  638. ;description:
  639. ; вызов/скрытие панели с файлами синтаксиса
  640. align 4
  641. proc but_panel_choose_syntax uses edi, edit:dword
  642.         mov edi,[edit]
  643.  
  644.         cmp ted_panel_id,TED_PANEL_NULL
  645.         je @f
  646.                 mov ted_panel_id,TED_PANEL_NULL
  647.                 mov ted_wnd_l,0
  648.                 jmp .e_if
  649.         @@:
  650.                 mov ted_panel_id,TED_PANEL_SYNTAX
  651.                 mov ted_wnd_l,TED_PANEL_WIDTH
  652.         .e_if:
  653.         call EvSize
  654.         stdcall [ted_draw],edi
  655.         ret
  656. endp
  657.  
  658. align 4
  659. tbl_1251_866:
  660. rb 128
  661. db   0,  0,  0,  0,  0,  0,  0,  0,  0,0,0,0,0,0,0,0 ;128
  662. db   0,  0,  0,  0,  0,  0,  0,  0,  0,0,0,0,0,0,0,0 ;144
  663. db   0,  0,  0,  0,  0,  0,  0,  0,240,0,0,0,0,0,0,0 ;160
  664. db   0,  0,  0,  0,  0,  0,  0,  0,241,0,0,0,0,0,0,0 ;176
  665. db 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143 ;192
  666. db 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159 ;208
  667. db 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175 ;224
  668. db 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239 ;240
  669.  
  670. align 4
  671. tbl_866_1251:
  672. rb 128
  673. db 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207 ;128
  674. db 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223 ;144
  675. db 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239 ;160
  676. db   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;176
  677. db   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;192
  678. db   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;208
  679. db 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 ;224
  680. db 168,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;240
  681.  
  682. align 4
  683. ted_on_find_err:
  684.         notify_window_run msgbox_7 ;message: Can not find text
  685.         ret
  686.  
  687. ;description:
  688. ; функция поиска информации в списке ключевых слов
  689. align 4
  690. but_find_key_w:
  691.         cmp dword[wnd_k_words_run],0
  692.         jne @f
  693.                 pushad
  694.                 mcall SF_CREATE_THREAD,1,prop_start,thread_coords
  695.                 mov dword[wnd_k_words_run],eax
  696.                 popad
  697.         @@:
  698.         ret
  699.  
  700. ;description:
  701. ; выделение/скрытие непечатаемых символов
  702. align 4
  703. proc but_sumb_invis uses edi, edit:dword
  704.         mov edi,dword[edit]
  705.  
  706.         xor ted_mode_invis,1
  707.         call draw_but_toolbar
  708.         stdcall [ted_draw],edi
  709.         ret
  710. endp
  711.  
  712. ;description:
  713. ; выделение/скрытие ключевых слов
  714. align 4
  715. proc but_use_syntax uses edi, edit:dword
  716.         mov edi,dword[edit]
  717.  
  718.         xor ted_mode_color,1
  719.         cmp ted_mode_color,0
  720.         je @f
  721.                 call [ted_text_colored]
  722.         @@:
  723.         call draw_but_toolbar
  724.         stdcall [ted_draw],edi
  725.         ret
  726. endp
  727.  
  728.