Subversion Repositories Kolibri OS

Rev

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