Subversion Repositories Kolibri OS

Rev

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

  1. ;Îãðîìíàÿ áëàãîäàðíîñòü Maxxxx32, Diamond, Heavyiron
  2. ;è äðóãèì ïðîãðàììèñòàì, à òàêæå
  3. ;Òåïëîâó Àëåêñåþ (<Lrz> www.lrz.land.ru)
  4.  
  5.  
  6. use32
  7.   org 0x0
  8.   db 'MENUET01' ;èäåíòèô. èñïîëíÿåìîãî ôàéëà âñåãäà 8 áàéò
  9.   dd 0x01
  10.   dd start
  11.   dd i_end ; ðàçìåð ïðèëîæåíèÿ
  12.   dd mem
  13.   dd stacktop
  14.   dd file_name;buf_cmd_lin
  15.   dd sys_path
  16.  
  17. MAX_COLOR_WORD_LEN equ 40
  18. maxChars equ 100002 ;(...+2)
  19. BUF_SIZE equ 1000 ;bufer for copy|paste
  20. maxColWords equ 10000
  21.  
  22.  
  23. include '../../macros.inc'
  24. include '../../develop/libraries/box_lib/load_lib.mac'
  25. include '../../develop/libraries/box_lib/trunk/tree_list.mac'
  26. include '../../develop/libraries/box_lib/trunk/editbox.mac'
  27.  
  28. include 'lang.inc'
  29. include 't_data.inc'
  30. include 'strlen.inc'
  31. include 't_work.inc' ;text work functions
  32. include 't_draw.inc' ;draw main window functions
  33. include 't_button.inc'
  34.  
  35. @use_library
  36.  
  37. start:
  38.   mov eax,48
  39.   mov ebx,3
  40.   mov ecx,sc
  41.   mov edx,sizeof.system_colors
  42.   mcall
  43.  
  44.   m2m [wScr.bckg_col],[sc.work]
  45.   m2m [wScr.frnt_col],[sc.work_button]
  46.   m2m [wScr.line_col],[sc.work_button_text]
  47.  
  48.   m2m [hScr.bckg_col],[sc.work]
  49.   m2m [hScr.frnt_col],[sc.work_button]
  50.   m2m [hScr.line_col],[sc.work_button_text]
  51.  
  52.  
  53.   mcall 68,11
  54.   or eax,eax
  55.   jz button.exit
  56.  
  57.   mcall 66,1,1 ;scan code
  58.   ;mcall 26,2,1,conv_tabl
  59.  
  60.   mov ecx,sizeof.symbol*maxChars
  61.   call mem_Alloc
  62.   mov [tex],eax
  63.   mov [tex_1],eax
  64.   add [tex_1],sizeof.symbol
  65.   mov [tex_end],eax
  66.   add [tex_end],sizeof.symbol*maxChars
  67.  
  68.   mcall 40,0x27
  69.  
  70.   call Clear
  71.  
  72. ;-------------------------------------------------
  73.   mov ecx,maxColWords*sizeof.TexColViv+40
  74.   ;add ecx,40
  75.   call mem_Alloc
  76.   mov [options_file],eax
  77.   mov [options_file_end],eax
  78.   add [options_file_end],maxColWords*sizeof.TexColViv
  79.   add [options_file_end],40
  80.  
  81. ;-------------------------------------------------
  82. ; init bmp file
  83.   mov ecx,1200*18
  84.   call mem_Alloc
  85.   mov [bmp_icon],eax
  86.  
  87.   mov esi,file_name
  88.   call strlen
  89.   mov ecx,eax
  90.   mov edi,buf_cmd_lin
  91.   rep movsb
  92.  
  93.   copy_path fn_icon,sys_path,file_name,0x0
  94.  
  95.   mov eax,70 ;load icon file
  96.   mov [run_file_70.func_n], 0
  97.   mov [run_file_70.param1], 54
  98.   mov [run_file_70.param2], 0
  99.   mov [run_file_70.param3], 1200*18
  100.   m2m [run_file_70.param4], [bmp_icon]
  101.   mov [run_file_70.rezerv], 0
  102.   mov [run_file_70.name], file_name
  103.   mov ebx,run_file_70
  104.   int 0x40
  105.  
  106.   cmp ebx,-1
  107.   mov [err_ini0],1
  108.   je @f ;if open file
  109.     mov [err_ini0],0
  110.   @@:
  111.  
  112. load_libraries l_libs_start,load_lib_end
  113.  
  114. ;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
  115.         mov     ebp,lib0
  116.         cmp     dword [ebp+ll_struc_size-4],0
  117.         jz      @f
  118.         mcall   -1      ;exit not correct
  119. @@:
  120.         mov     ebp,lib1 ;
  121.         cmp     dword [ebp+ll_struc_size-4],0
  122.         jz      @f
  123.         mcall   -1      ;exit not correct
  124. @@:
  125.  
  126.  
  127. ;---------------------------------------------------------------------
  128.   push dword tree1
  129.   call dword[tl_data_init]
  130. ;---------------------------------------------------------------------
  131. ; ÷èòàåì bmp ôàéë ñ êóðñîðàìè è ëèíèÿìè
  132.   copy_path fn_icon_tl_sys,sys_path,file_name,0x0
  133.  
  134.   mov ecx,3*256*13
  135.   call mem_Alloc
  136.   mov dword[tree1.data_img_sys],eax
  137.  
  138.   ;mov [run_file_70.func_n], 0
  139.   ;mov [run_file_70.param1], 54
  140.   ;mov [run_file_70.param2], 0
  141.   mov [run_file_70.param3], 3*256*13
  142.   mov [run_file_70.param4], eax
  143.   ;mov [run_file_70.rezerv], 0
  144.   ;mov [run_file_70.name], file_name
  145.  
  146.   mov eax,70 ;load icon file
  147.   mov ebx,run_file_70
  148.   int 0x40
  149.   cmp ebx,0
  150.   jg @f
  151.     mov dword[tree1.data_img_sys],0
  152.   @@:
  153. ;---------------------------------------------------------------------
  154. ; ÷èòàåì bmp ôàéë ñ èêîíêàìè óçëîâ
  155.   copy_path fn_icon_tl_nod,sys_path,file_name,0x0
  156.  
  157.   mov ecx,3*256*2
  158.   call mem_Alloc
  159.   mov dword[tree1.data_img],eax
  160.  
  161. ;  mov [run_file_70.func_n], 0
  162. ;  mov [run_file_70.param1], 54
  163. ;  mov [run_file_70.param2], 0
  164.   mov [run_file_70.param3], 3*256*2
  165.   mov [run_file_70.param4], eax
  166. ;  mov [run_file_70.rezerv], 0
  167. ;  mov [run_file_70.name], file_name
  168.  
  169.   mov eax,70 ;load icon file
  170.   mov ebx,run_file_70
  171.   int 0x40
  172.   cmp ebx,0
  173.   jg @f
  174.     mov dword[tree1.data_img],0
  175.   @@:
  176. ;------------------------------------------------------------------------------
  177.   copy_path fn_syntax_dir,sys_path,file_name,0x0 ;áåðåì ïóòü ê ïàïêå ñ ôàéëàìè ñèíòàêñèñà
  178.   mov eax,70
  179.   mov ebx,tree_file_struct
  180.   int 0x40
  181.  
  182. cmp ebx,-1
  183. je .end_dir_init
  184.  
  185.   mov eax,dir_mem
  186.   add eax,32+4+1+3+4*6+8
  187. mov ecx,ebx
  188. @@:
  189.   cmp byte[eax],'.' ;ôèëüòðóåì ôàéëû ñ èìåíàìè '.' è '..'
  190.   je .filter
  191.     push dword tree1
  192.     push dword 0x10000 ;1*2^16 - ãäå 1 íîìåð èêîíêè ñ êíèãîé
  193.     push dword eax
  194.     call dword[tl_node_add]
  195.  
  196.     push dword tree1
  197.     call dword[tl_cur_next]
  198.   .filter:
  199.   add eax,304
  200.   loop @b
  201. .end_dir_init:
  202.  
  203. ;  push dword tree1
  204. ;  push dword 0
  205. ;  push dword file_name
  206. ;  call dword[tl_node_add]
  207.  
  208.  
  209. ;--- load color option file ---
  210.   call InitColText
  211.  
  212. ;--- get cmd line ---
  213.   cmp byte[buf_cmd_lin+3],0 ;buf_cmd_lin
  214.   je @f ;if file names exist
  215.     mov esi,buf_cmd_lin
  216.     call strlen ;eax=strlen
  217.     mov [edit1.size],eax
  218.     call but_OpenFile
  219.   @@:
  220.  
  221.  
  222. red_win:
  223.   mcall 12,1
  224.  
  225.   xor eax,eax
  226.   mov ebx,10*65536+485
  227.   mov ecx,10*65536+280
  228.   mov edx,[sc.work]
  229.   or  edx,0x73000000
  230.   mov edi,hed
  231.   mcall
  232.  
  233.   mcall 9,procinfo,-1
  234.   call EvSize
  235.  
  236.   mov eax,13 ;rect
  237.   xor ebx,ebx
  238.   xor ecx,ecx
  239.   mov bx,word [procinfo.client_box.width]
  240.   inc bx
  241.   mov cx,word [wndMain.top]
  242.   mcall
  243.  
  244.   push dword edit1
  245.   call [edit_box_draw]
  246.  
  247. ; draw for Menu 1
  248.   push dword menu_data_1
  249.   call [menu_bar_draw]
  250.  
  251.   call draw_but_toolbar
  252.  
  253.   cmp [err_ini0],1
  254.   jne @f
  255.     mov eax,4
  256.     mov ebx,[wndMain.left]
  257.     add ebx,[recMain.left]
  258.     shl ebx,16
  259.     add ebx,[wndMain.top]
  260.     add ebx,[recMain.top]
  261.     mov ecx,0x80ff0000
  262.     mov edx,txtErrIni0
  263.     int 0x40
  264.  
  265.     add ebx,10 ;move <--y-->
  266.     mov ecx,0x80ff0080
  267.     mov edx,file_name
  268.     int 0x40
  269.   @@:
  270.  
  271.   cmp [err_ini0],1
  272.   je @f
  273.     call draw_main_win
  274.   @@:
  275.  
  276.   cmp [err_opn],1
  277.   jne @f
  278.     ;mov eax,4
  279.     mov ebx,10*65536+35
  280.     mov ecx,0x80ff0000
  281.     mov edx,txtErrOpen
  282.     mcall
  283.   @@:
  284.  
  285.   mcall 12,2
  286.  
  287. still:
  288.   mov eax,10
  289.   mcall
  290.  
  291.   cmp al,1 ;èçì. ïîëîæåíèå îêíà
  292.   jz red_win
  293.   cmp al,2
  294.   jz key
  295.   cmp al,3
  296.   jz button
  297.   cmp al,6
  298.   jz mouse
  299.  
  300.   jmp still
  301.  
  302.  
  303.  
  304. mouse:
  305.   push dword edit1
  306.   call [edit_box_mouse]
  307.  
  308.   test word [edit1.flags],10b;ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
  309.   jne still
  310.  
  311. ;-----------------------------------------------
  312.   cmp [hScr.delta2],0
  313.   jne .horizontal
  314. .vertical:
  315.   mov eax,[wScr.max_area]
  316.   cmp eax,[wScr.cur_area]
  317.   jbe .horizontal
  318. ; mouse event for Vertical ScrollBar
  319.   push dword wScr
  320.   call [scrollbar_ver_mouse]
  321.   mov eax,wScr.redraw
  322.   xor ebx,ebx
  323.   cmp [eax],ebx
  324.   je @f
  325.   mov [eax],ebx
  326.  
  327.   call draw_main_win
  328.   ;call mouse_wnd_main
  329.   jmp still
  330. @@:
  331.   cmp [wScr.delta2],0
  332.   jne still
  333. .horizontal:
  334.     mov   eax,[hScr.max_area]
  335.     cmp   eax,[hScr.cur_area]
  336.     jbe   .other
  337. ; mouse event for Horizontal ScrollBar
  338.         push dword hScr
  339.         call [scrollbar_hor_mouse]
  340.         mov eax,hScr.redraw
  341.         xor ebx,ebx
  342.         cmp [eax],ebx
  343.         je .other
  344.         mov [eax],ebx
  345.   call draw_main_win
  346.   jmp still
  347. .other:
  348.   cmp [wScr.delta2],0
  349.   jne still
  350.   cmp [hScr.delta2],0
  351.   jne still
  352.  
  353.   call mouse_wnd_main
  354.  
  355.   cmp byte[panel_id],TE_PANEL_FIND ;if not panel
  356.   jne @f
  357.     push dword edit2
  358.     call [edit_box_mouse]
  359.   @@:
  360.   cmp byte[panel_id],TE_PANEL_SYNTAX ;if not panel
  361.   jne .menu_bar_1 ;@f
  362.   push dword tree1
  363.   call [tl_mouse]
  364. ;-----------------------------------------------
  365. .menu_bar_1:
  366.   mov [menu_data_1.get_mouse_flag],1
  367. ; mouse event for Menu 1
  368.   push  dword menu_data_1
  369.   call  [menu_bar_mouse]
  370.   cmp   [menu_data_1.click],dword 1
  371.   jne   .mnu_1
  372.   cmp [menu_data_1.cursor_out],dword 4
  373.   je    button.exit    
  374.   cmp [menu_data_1.cursor_out],dword 3
  375.   jne   @f
  376.     call but_SaveFile
  377.   @@:
  378.   cmp [menu_data_1.cursor_out],dword 2
  379.   jne   @f
  380.     call but_OpenFile
  381.   @@:
  382.   cmp [menu_data_1.cursor_out],dword 1
  383.   jne   @f
  384.     call but_NewFile
  385.   @@:
  386.   ;cmp [menu_data_1.cursor_out],dword 0
  387.   ;jne @f
  388. .mnu_1:
  389.   jmp still
  390. ;---------------------------------------------------------------------
  391.  
  392. KeyConvertToASCII:
  393.   mov ebx,conv_tabl ;convert scan to ascii
  394.   ror ax,8
  395.   xor ah,ah
  396.   add bx,ax
  397.   mov ah,byte[ebx]
  398.   ret
  399.  
  400. key:
  401.   mov ecx,1
  402.   mcall 66,3
  403.   xor ebx,ebx
  404.   test al,0x03 ;[Shift]
  405.   jz @f
  406.     inc cl
  407.     or ebx,KM_SHIFT
  408.   @@:
  409.   test al,0x0c ;[Ctrl]
  410.   jz @f
  411.     or ebx,KM_CTRL
  412.   @@:
  413.   test al,0x30 ;[Alt]
  414.   jz @f
  415.     or ebx,KM_ALT
  416.   @@:
  417.   test al,0x80 ;[NumLock]
  418.   jz @f
  419.     or ebx,KM_NUMLOCK
  420.   @@:
  421.  
  422.   mov [keyUpr],ebx
  423.   mcall 26,2,,conv_tabl
  424.   mcall 2
  425.  
  426. ;  push dword tree1 ;???
  427. ;  call [tl_key]    ;???
  428.  
  429.   test word [edit1.flags],10b;ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
  430.   je @f
  431.     cmp ah,0x80 ;if key up
  432.     ja still
  433.     cmp ah,42 ;[Shift] (left)
  434.     je still
  435.     cmp ah,54 ;[Shift] (right)
  436.     je still
  437.     cmp ah,56 ;[Alt]
  438.     je still
  439.     cmp ah,29 ;[Ctrl]
  440.     je still
  441.     cmp ah,69 ;[Pause Break]
  442.     je still
  443. ;    cmp [keyUpr],0
  444. ;    jne still
  445.  
  446.     call KeyConvertToASCII
  447.  
  448.     push dword edit1
  449.     call [edit_box_key]
  450.     jmp still
  451.   @@:
  452.  
  453.   test word [edit2.flags],10b;ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
  454.   je @f
  455.     cmp ah,0x80 ;if key up
  456.     ja still
  457.     cmp ah,42 ;[Shift] (left)
  458.     je still
  459.     cmp ah,54 ;[Shift] (right)
  460.     je still
  461.     cmp ah,56 ;[Alt]
  462.     je still
  463.     cmp ah,29 ;[Ctrl]
  464.     je still
  465.     cmp ah,69 ;[Pause Break]
  466.     je still
  467. ;    cmp [keyUpr],0
  468. ;    jne still
  469.  
  470.     call KeyConvertToASCII
  471.     push dword edit2
  472.     call [edit_box_key]
  473.     jmp still
  474.   @@:
  475.  
  476.   cmp ah,KEY_F1 ;[F1]
  477.   jne @f
  478.     call ShowHelpF1
  479.     jmp still
  480.   @@:
  481.   cmp ah,KEY_F3 ;[F3]
  482.   jne @f
  483.     call but_FindText
  484.     jmp still
  485.   @@:
  486.  
  487.   test [keyUpr],KM_CTRL ;Ctrl+...
  488.   jz .key_Ctrl
  489.  
  490.     cmp ah,24 ;Ctrl+O
  491.     jne @f
  492.       call but_OpenFile
  493.     @@:
  494.     cmp ah,33 ;Ctrl+F
  495.     jne @f
  496.     cmp byte[panel_id],TE_PANEL_FIND
  497.     je @f
  498.       call but_find
  499.     @@:
  500.     cmp ah,44 ;Ctrl+Z
  501.     je but_undo
  502.     cmp ah,46 ;Ctrl+C
  503.     jne @f
  504.       call but_Copy
  505.     @@:
  506.     cmp ah,47 ;Ctrl+V
  507.     je but_paste
  508.     cmp ah,49 ;Ctrl+N
  509.     jne @f
  510.       call but_NewFile
  511.     @@:
  512.     cmp ah,199 ;Ctrl+Home
  513.     jne @f
  514.       call but_CtrlHome
  515.     @@:
  516.     ;jmp still
  517.   .key_Ctrl:
  518.  
  519.   test [keyUpr],KM_SHIFT ;Shift+...
  520.   jz .key_Shift
  521.     cmp ah,72 ;Shift+Up
  522.     jne @f
  523.       call sel_KeyUp
  524.     @@:
  525.     cmp ah,75 ;Shift+Left
  526.     jne @f
  527.       call sel_KeyLeft
  528.     @@:
  529.     cmp ah,77 ;Shift+Right
  530.     jne @f
  531.       call sel_KeyRight
  532.     @@:
  533.     cmp ah,80 ;Shift+Down
  534.     jne @f
  535.       call sel_KeyDown
  536.     @@:
  537.     ;mov [dragk],1 ;íà÷èíàåì âûäåëåíèå îò êëàâèàòóðû
  538.     jmp .key_MoveCur
  539.   .key_Shift:
  540. ;-------------------------------------------------
  541.   cmp ah,72 ;178 ;Up
  542.   jne @f
  543.     push dx
  544.     call draw_cursor_sumb
  545.     call CurMoveUp
  546.     cmp dl,8
  547.     jne .no_red_0
  548.       call OnInitialUpdate
  549.       call draw_main_win
  550.       pop dx
  551.       jmp @f
  552.     .no_red_0:
  553.     call draw_main_cursor
  554.     pop dx
  555.     mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
  556.   @@:
  557.   cmp ah,80 ;177 ;Down
  558.   jne @f
  559.     push dx
  560.     call draw_cursor_sumb
  561.     call CurMoveDown
  562.     cmp dl,8
  563.     jne .no_red_1
  564.       call OnInitialUpdate
  565.       call draw_main_win
  566.       pop dx
  567.       jmp @f
  568.     .no_red_1:
  569.     call draw_main_cursor
  570.     pop dx
  571.     mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
  572.   @@:
  573.   cmp ah,75 ;176 ;Left
  574.   jne @f
  575.     push dx
  576.     call draw_cursor_sumb
  577.     call CurMoveLeft
  578.     cmp dl,8
  579.     jne .no_red_2
  580.       call OnInitialUpdate
  581.       call draw_main_win
  582.       pop dx
  583.       jmp @f
  584.     .no_red_2:
  585.     call draw_main_cursor
  586.     pop dx
  587.     mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
  588.   @@:
  589.   cmp ah,77 ;179 ;Right
  590.   jne @f
  591.     push dx
  592.     call draw_cursor_sumb
  593.     call CurMoveRight
  594.     cmp dl,8
  595.     jne .no_red_3
  596.       call OnInitialUpdate
  597.       call draw_main_win
  598.       pop dx
  599.       jmp @f
  600.     .no_red_3:
  601.     call draw_main_cursor
  602.     pop dx
  603.     mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
  604.   @@:
  605.   cmp ah,71 ;180 ;Home
  606.   jne @f
  607.     push dx
  608.     call draw_cursor_sumb
  609.     call CurMoveX_FirstChar
  610.     cmp dl,8
  611.     jne .no_red_4
  612.       call OnInitialUpdate
  613.       call draw_main_win
  614.       pop dx
  615.       jmp @f
  616.     .no_red_4:
  617.     call draw_main_cursor
  618.     pop dx
  619.     mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
  620.   @@:
  621.   cmp ah,79 ;181 ;End
  622.   jne @f
  623.     push dx
  624.     call draw_cursor_sumb
  625.     call CurMoveX_LastChar
  626.     cmp dl,8
  627.     jne .no_red_5
  628.       call OnInitialUpdate
  629.       call draw_main_win
  630.       pop dx
  631.       jmp @f
  632.     .no_red_5:
  633.     call draw_main_cursor
  634.     pop dx
  635.     mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
  636.   @@:
  637.   cmp ah,73 ;184 ;PageUp
  638.   jne @f
  639.     push dx
  640.     call CurMovePageUp
  641.     cmp dl,0
  642.     pop dx
  643.     je @f
  644.     call OnInitialUpdate
  645.     call draw_main_win
  646.   @@:
  647.   cmp ah,81 ;183 ;PageDown
  648.   jne @f
  649.     push dx
  650.     call CurMovePageDown
  651.     cmp dl,0
  652.     pop dx
  653.     je @f
  654.     call OnInitialUpdate
  655.     call draw_main_win
  656.     mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
  657.   @@:
  658. ;-------------------------------------------------
  659.     cmp [keyUpr],0
  660.     jne still
  661.   .key_MoveCur:
  662.  
  663.   cmp ah,69 ;[Pause Break]
  664.   je still
  665.   cmp ah,120 ;[Fn]
  666.   je still
  667.   cmp ah,0x80 ;if key up
  668.   ja still
  669.   call KeyConvertToASCII
  670.  
  671.   ;mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû
  672.  
  673.   push ebx
  674.   xor ebx,ebx
  675.   mov bl,ah
  676.   add ebx,EvChar ;add char to text
  677.   cmp byte [ebx],1
  678.   jne @f
  679.     push esi edi
  680.     call SetUndo
  681.     mov bx,0x0101
  682.     call SelTextDel
  683.     mov esi,1
  684.     mov byte [key_new],ah
  685.     mov edi,dword key_new
  686.     cmp [curMod],1
  687.     je .no_ins_mod
  688.       call TextDel
  689.       xor bl,1
  690.     .no_ins_mod:
  691.     call TextAdd
  692.     call draw_but_toolbar
  693.     cmp byte [key_new],13
  694.     jne .dr_m_win
  695.       call draw_main_win
  696.       jmp .dr_cur_l
  697.     .dr_m_win:
  698.       call draw_cur_line
  699.     .dr_cur_l:
  700.     pop edi esi
  701.   @@:
  702.   pop ebx
  703.  
  704.   cmp ah,8 ;[<-]
  705.   jne @f
  706.     push ax bx
  707.     call SetUndo
  708.  
  709.     mov bx,0x0001
  710.     call SelTextDel
  711.     cmp al,1
  712.     je .del_one_b
  713.       call TextDel
  714.     .del_one_b:
  715.     call draw_but_toolbar
  716.     call draw_main_win
  717.     pop bx ax
  718.   @@:
  719.  
  720.   cmp ah,182 ;Delete
  721.   jne @f
  722.     push ax bx
  723.     call SetUndo
  724.  
  725.     mov bx,0x0101
  726.     call SelTextDel
  727.     cmp al,1
  728.     je .del_one_d
  729.       call TextDel
  730.     .del_one_d:
  731.     call draw_but_toolbar
  732.     call draw_main_win
  733.     pop bx ax
  734.   @@:
  735.  
  736.   cmp ah,185 ;Ins
  737.   jne @f
  738.     call draw_cursor_sumb
  739.     xor [curMod],1
  740.     call draw_main_cursor
  741.   @@:
  742.  
  743.   jmp still
  744.  
  745. button:
  746. ;  cmp [menu_active],1 ;åñëè íàæàëè ìåíþ, òî ñíà÷àëà ðåàêöèÿ íà ìåíþ
  747. ;  jne @f ;mouse.menu_bar_1
  748. ;    mov [menu_active],0
  749. ;    jmp still
  750. ;  @@:
  751.  
  752.   mcall 17 ;ïîëó÷èòü êîä íàæàòîé êíîïêè
  753.   cmp ah,3
  754.   jne @f
  755.     call but_NewFile
  756.   @@:
  757.   cmp ah,4
  758.   jne @f
  759.     call but_OpenFile
  760.   @@:
  761.   cmp ah,5
  762.   jne @f
  763.     call but_SaveFile
  764.   @@:
  765.   cmp ah,6
  766.   jz  but_select_word
  767.   cmp ah,7
  768.   jz  but_cut
  769.   cmp ah,8
  770.   jne @f
  771.     call but_Copy
  772.   @@:
  773.   cmp ah,9
  774.   jz  but_paste
  775.   cmp ah,10
  776.   jz  but_find
  777.   cmp ah,11
  778.   jz  but_replace
  779.   cmp ah,12
  780.   jz  but_find_key_w
  781.   cmp ah,13
  782.   jz  but_sumb_upper
  783.   cmp ah,14
  784.   jz  but_sumb_lover
  785.   cmp ah,15
  786.   jz  but_reverse
  787.   cmp ah,16
  788.   jz  but_undo
  789.   cmp ah,17
  790.   jz  but_redo
  791.   cmp ah,18
  792.   jz  but_sumb_invis
  793.   cmp ah,19
  794.   jz  but_k_words_show
  795.   cmp ah,20
  796.   jz  but_synt_show
  797.  
  798.   cmp ah,200
  799.   jne @f
  800.     call but_OpenSyntax
  801.   @@:
  802.   cmp ah,201
  803.   jne @f
  804.     call but_FindText
  805.   @@:
  806.  
  807.   cmp ah,1
  808.   jne still
  809. .exit:
  810.   ;push eax
  811.   call CanSave
  812.   cmp al,1
  813.   jne @f
  814.     push thread
  815.     push msgbox_8
  816.     call [mb_create] ;message: save changes in file?
  817.     jmp still
  818.   @@:
  819.   mov ecx,[tex]
  820.   call mem_Free
  821.   mov ecx,[bmp_icon]
  822.   call mem_Free
  823.   mov ecx,[options_file]
  824.   call mem_Free
  825.   push dword tree1
  826.   call dword[tl_data_clear]
  827.   mcall -1 ;âûõîä èç ïðîãðàììû
  828.  
  829.  
  830.  
  831. txtErrOpen db '¥ ­ ©¤¥­ ä ©«, ¯à®¢¥àì⥠¯à ¢¨«ì­®áâì ¨¬¥­¨',0
  832. txtErrIni0 db '¥ ®âªàë«áï ä ©« á ¨ª®­ª ¬¨',0
  833. err_ini0 db 0
  834.  
  835. edit1 edit_box 250, 220, 5, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_cmd_lin, mouse_dd, 0
  836. edit2 edit_box TE_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0
  837.  
  838. buf_cmd_lin db 302 dup(0)
  839. buf_find db 302 dup(0)
  840.  
  841. if lang eq ru
  842.   err_message_found_lib0 db 'ˆ§¢¨­¨â¥ ­¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã box_lib.obj',0
  843.   head_f_i0:
  844.   head_f_l0  db '‘¨á⥬­ ï ®è¨¡ª ',0
  845.   err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',0
  846.   err_message_found_lib1 db 'ˆ§¢¨­¨â¥ ­¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã msgbox.obj',0
  847.   err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ msgbox.obj',0
  848. else
  849.   err_message_found_lib0 db 'Sorry I cannot found library box_lib.obj',0
  850.   head_f_i0:
  851.   head_f_l0  db 'System error',0
  852.   err_message_import0 db 'Error on load import library box_lib.obj',0
  853.   err_message_found_lib1 db 'Sorry I cannot found library msgbox.obj',0
  854.   ;head_f_i1:
  855.   ;head_f_l1 db 'System error',0
  856.   err_message_import1 db 'Error on load import library msgbox.obj',0
  857. end if
  858.  
  859. ;library structures
  860. l_libs_start:
  861.   lib0 l_libs boxlib_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l0, myimport,err_message_import0, head_f_i0
  862.   lib1 l_libs msgbox_name, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l0, msgbox_lib_import, err_message_import1, head_f_i0
  863. load_lib_end:
  864.  
  865.  
  866. i_end:
  867.   align 16
  868.   procinfo process_information
  869.   thread:
  870.     rb 1024
  871. stacktop:
  872.   sys_path:
  873.     rb 4096
  874.   file_name:
  875.     rb 4096
  876.   file_name_rez:
  877.     rb 4096
  878.   file_info:
  879.     rb 40
  880. mem:
  881.