Subversion Repositories Kolibri OS

Rev

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

  1. use32
  2.   org 0
  3.   db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
  4.   dd 1, start, i_end, mem, stacktop, file_name, sys_path
  5.  
  6. MAX_COLOR_WORD_LEN equ 40
  7. BUF_SIZE equ 4096 ;buffer for copy|paste
  8. CAPT_PATH_WIDTH equ 50 ;è¨à¨­  ¯®¤¯¨á¨ ¯¥à¥¤ ⥪áâ®¢ë¬ ¯®«¥¬
  9.  
  10. include '../../macros.inc'
  11. include '../../proc32.inc'
  12. include '../../KOSfuncs.inc'
  13. include '../../load_img.inc'
  14. include '../../develop/libraries/box_lib/trunk/box_lib.mac'
  15. include '../../system/skincfg/trunk/kglobals.inc'
  16. include '../../system/skincfg/trunk/unpacker.inc'
  17. include 'te_data.inc'
  18. include 'te_work.inc' ;text work functions
  19.  
  20. @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
  21.  
  22. icon_tl_sys dd 0 ;㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
  23.  
  24. align 4
  25. start:
  26.         mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
  27.  
  28.         mcall SF_SYS_MISC,SSF_HEAP_INIT
  29.         or eax,eax
  30.         jz button.exit
  31.  
  32.         mcall SF_KEYBOARD,SSF_SET_INPUT_MODE,1 ;scan code
  33.         mcall SF_SET_EVENTS_MASK,0xC0000027
  34.  
  35.         load_libraries l_libs_start,load_lib_end
  36.  
  37.         ;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ¡¨¡«¨®â¥ª 
  38.         cmp dword[lib0+ll_struc_size-4],0
  39.         jz @f
  40.                 mcall -1 ;exit not correct
  41.         @@:
  42.  
  43. ;---------------------------------------------------------------------
  44.         stdcall [tl_data_init], tree1
  45.  
  46. ; ç¨â ¥¬ ä ©« á ªãàá®à ¬¨ ¨ «¨­¨ï¬¨
  47.         include_image_file '..\..\media\log_el\trunk\tl_sys_16.png', icon_tl_sys
  48.         mov eax,[icon_tl_sys]
  49.         mov [tree1.data_img_sys],eax
  50. ;---------------------------------------------------------------------
  51. ; ç¨â ¥¬ bmp ä ©« á ¨ª®­ª ¬¨ 㧫®¢
  52.         include_image_file '..\t_edit\tl_nod_16.png', icon_tl_sys
  53.         mov eax,[icon_tl_sys]
  54.         mov [tree1.data_img],eax
  55. ;------------------------------------------------------------------------------
  56.         copy_path fn_syntax_dir,sys_path,file_name,0 ;¡¥à¥¬ ¯ãâì ª ¯ ¯ª¥ á ä ©« ¬¨ ᨭ⠪á¨á 
  57.         mcall SF_FILE,tree_file_struct
  58.  
  59.         cmp ebx,2
  60.         jg @f
  61.                 notify_window_run file_name ;á®®¡é¥­¨¥ ¥á«¨ ­¥ 㤠«®áì ®âªàëâì ä ©«ë
  62.                 jmp .end_dir_init
  63.         @@:
  64.         ;cmp ebx,0
  65.         ;jle .end_dir_init
  66.                 mov eax,dir_mem+32+40
  67.                 mov ecx,ebx
  68.                 @@:
  69.                         cmp byte[eax],'.' ;䨫ìâà㥬 ä ©«ë á ¨¬¥­ ¬¨ '.' ¨ '..'
  70.                         je .filter
  71.                         stdcall [tl_node_add],tree1,0x10000,eax ;1*2^16 - £¤¥ 1 ­®¬¥à ¨ª®­ª¨ á ª­¨£®©
  72.                         stdcall [tl_cur_next],tree1
  73.                 .filter:
  74.                         add eax,304
  75.                 loop @b
  76.                 stdcall [tl_cur_beg],tree1 ;áâ ¢¨¬ ªãàá®à ­  ­ ç «® ᯨ᪠
  77.                 or dword[tree1.style], tl_cursor_pos_limited ;®£à ­¨ç¨¢ ¥¬ ¤¢¨¦¥­¨¥ ªãàá®à  ¢ ¯à¥¤¥« å ᯨ᪠
  78.         .end_dir_init:
  79.  
  80.         xor eax,eax
  81.         inc eax
  82.         mov [scrol_w1.type],eax
  83.         mov [scrol_h1.type],eax
  84.         mov [ws_dir_lbox.type],eax
  85.  
  86. ;--- load color option file ---
  87. stdcall [ted_init], tedit0
  88. mov byte[file_name],0
  89.  
  90. align 4
  91. red_win:
  92.         call draw_window
  93.  
  94. align 4
  95. still:
  96.   mcall SF_WAIT_EVENT
  97.  
  98.   cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
  99.   jz red_win
  100.   cmp al,2
  101.   jz key
  102.   cmp al,3
  103.   jz button
  104.   cmp al,6
  105.   jz mouse
  106.  
  107.   jmp still
  108.  
  109.  
  110. align 4
  111. draw_window:
  112.         pushad
  113.         mcall SF_REDRAW,SSF_BEGIN_DRAW
  114.  
  115.         mov edx,[sc.work]
  116.         or  edx,0x33000000
  117.         mov edi,hed
  118.         mcall SF_CREATE_WINDOW,<10,555>,<10,333>
  119.  
  120.         mcall SF_THREAD_INFO,procinfo,-1
  121.         mov edi,tedit0 ;§­ ç¥­¨¥ edi ­ã¦­® ¤«ï EvSize ¨ ted_wnd_t
  122.         call EvSize
  123.  
  124.         mov esi,[sc.work_button];0xd0
  125.         mcall SF_DEFINE_BUTTON,5*65536+90,195*65536+20,200
  126.  
  127.         mov ebx,100*65536+85
  128.         mov ecx,195*65536+20
  129.         mov edx,201
  130.         mov esi,0xd00000
  131.         mcall
  132.  
  133.         mov ecx,[sc.work_button_text]
  134.         or  ecx,0x80000000
  135.         mcall SF_DRAW_TEXT,10*65536+200,,txt_load_f
  136.  
  137.         mov ecx,0xffff00
  138.         or  ecx,0x80000000
  139.         mcall ,105*65536+200,,txt_save_f
  140.  
  141.         mov ecx,[sc.work_text]
  142.         or  ecx,0x80000000
  143.         mcall ,195*65536+10,,txt_inp_file
  144.  
  145.         add ebx,20
  146.         mov edx,txt_out_file
  147.         int 0x40
  148.  
  149.         stdcall [PathShow_draw], PathShow_data_1
  150.        
  151.         stdcall [edit_box_draw], edit1
  152.         stdcall [tl_draw], tree1
  153.  
  154.         ;scroll 1
  155.         mov [ws_dir_lbox.all_redraw],1
  156.         stdcall [scrollbar_ver_draw],ws_dir_lbox
  157.         stdcall [ted_draw], tedit0
  158.  
  159.         mcall SF_REDRAW,SSF_END_DRAW
  160.         popad
  161.         ret
  162.  
  163. MIN_M_WND_H equ 100 ;¬¨­¨¬ «ì­ ï ¢ëá®â  £« ¢­®£® ®ª­ 
  164. ;input:
  165. ; edi = pointer to tedit struct
  166. align 4
  167. EvSize:
  168.         pushad
  169.         mov ebx,ted_scr_h
  170.         mov esi,ted_scr_w
  171.  
  172.         m2m ted_wnd_w,[procinfo.client_box.width] ;áâ ¢¨¬ è¨à¨­ã ®ª­  । ªâ®à  à ¢­®© è¨à¨­¥ ¢á¥£® ®ª­ 
  173.         mov eax,ted_wnd_l
  174.         sub ted_wnd_w,eax ;®â­¨¬ ¥¬ ®âáâ㯠᫥¢ 
  175.         movzx eax,word[esi+sb_offs_size_x]
  176.         sub ted_wnd_w,eax ;®â­¨¬ ¥¬ è¨à¨­ã ¢¥àâ. áªà®««¨­£ 
  177.  
  178.         m2m ted_wnd_h,[procinfo.client_box.height] ;áâ ¢¨¬ ¢ëá®âã ®ª­  । ªâ®à  à ¢­®© ¢ëá®â¥ ¢á¥£® ®ª­ 
  179.         cmp ted_wnd_h,MIN_M_WND_H
  180.         jg @f
  181.                 mov ted_wnd_h,MIN_M_WND_H
  182.         @@:
  183.  
  184.         movzx eax,word[ebx+sb_offs_size_y]
  185.         sub ted_wnd_h,eax             ;®â­¨¬ ¥¬ ¢ëá®âã £®à¨§. áªà®««¨­£ 
  186.         mov eax,ted_wnd_t
  187.         sub ted_wnd_h,eax             ;®â­¨¬ ¥¬ ®âáâ㯠ᢥàåã
  188.  
  189.         stdcall [ted_init_scroll_bars], tedit0,2
  190.         popad
  191.         ret
  192.  
  193. align 4
  194. mouse:
  195.         stdcall [tl_mouse],tree1
  196.         stdcall [edit_box_mouse],edit1
  197.         stdcall [ted_mouse], tedit0
  198.         jmp still
  199.  
  200. ;output:
  201. ; ah = symbol
  202. align 4
  203. proc KeyConvertToASCII, table:dword
  204.         push ebx
  205.         mov ebx,dword[table] ;convert scan to ascii
  206.         shr ax,8
  207.         add bx,ax
  208.         mov ah,byte[ebx]
  209.         pop ebx
  210.         ret
  211. endp
  212.  
  213. align 4
  214. key:
  215.         mcall SF_KEYBOARD,SSF_GET_CONTROL_KEYS ;66.3 ¯®«ãç¨âì á®áâ®ï­¨¥ ã¯à ¢«ïîé¨å ª« ¢¨è
  216.         xor esi,esi
  217.         mov ecx,1
  218.         test al,3 ;[Shift]
  219.         jz @f
  220.                 mov cl,2
  221.                 or esi,KM_SHIFT
  222.         @@:
  223.         test al,0x0c ;[Ctrl]
  224.         jz @f
  225.                 or esi,KM_CTRL
  226.         @@:
  227.         test al,0x30 ;[Alt]
  228.         jz @f
  229.                 mov cl,3
  230.                 or esi,KM_ALT
  231.         @@:
  232.         test al,0x80 ;[NumLock]
  233.         jz @f
  234.                 or esi,KM_NUMLOCK
  235.         @@:
  236.  
  237.         mcall SF_SYSTEM_GET,SSF_KEYBOARD_LAYOUT,,conv_tabl ;26.2 ¯®«ãç¨âì à áª« ¤ªã ª« ¢¨ âãàë
  238.         mcall SF_GET_KEY
  239.         stdcall [tl_key],tree1
  240.  
  241.         test word [edit1.flags],10b;ed_focus ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
  242.         je @f
  243.                 cmp ah,0x80 ;if key up
  244.                 ja still
  245.                 cmp ah,42 ;[Shift] (left)
  246.                 je still
  247.                 cmp ah,54 ;[Shift] (right)
  248.                 je still
  249.                 cmp ah,56 ;[Alt]
  250.                 je still
  251.                 cmp ah,29 ;[Ctrl]
  252.                 je still
  253.                 cmp ah,69 ;[Pause Break]
  254.                 je still
  255.  
  256.                 stdcall KeyConvertToASCII, conv_tabl
  257.                 stdcall [edit_box_key],edit1
  258.                 jmp still
  259.         @@:
  260.  
  261.         stdcall [ted_key], tedit0, conv_tabl,esi
  262.         jmp still
  263.  
  264. align 4
  265. button:
  266.         mcall SF_GET_BUTTON
  267.  
  268.         cmp ah,200
  269.         jne @f
  270.                 call but_OpenSyntax
  271.         @@:
  272.         cmp ah,201
  273.         jne @f
  274.                 call but_SaveSyntax
  275.         @@:
  276.  
  277.         cmp ah,1
  278.         jne still
  279. .exit:
  280.         stdcall mem.Free,[options_file]
  281.         stdcall mem.Free,[unpac_mem]
  282.  
  283.         stdcall [tl_data_clear], tree1
  284.         stdcall [ted_delete], tedit0
  285.         mcall SF_TERMINATE_PROCESS ;¢ë室 ¨§ ¯à®£à ¬¬ë
  286.  
  287. align 4
  288. but_OpenSyntax:
  289. push eax
  290.         stdcall [tl_node_get_data],tree1
  291.         mov [fn_col_option],eax
  292.         call InitColText
  293. pop eax
  294.         ret
  295.  
  296. align 4
  297. but_SaveSyntax:
  298.         stdcall [ted_save_file], tedit0,run_file_70,[edit1.text]
  299.         ret
  300.  
  301. ;description:
  302. ; äã­ªæ¨ï ¢ë§ë¢ ¥¬ãî ¯à¨ ­ ¦ â¨¨ Ctrl+N,O,F,S,H,G
  303. align 4
  304. proc ted_but_ctrl_all uses eax, opt_key:dword
  305.         mov eax,[opt_key]
  306.         cmp al,'N' ;Ctrl+N
  307.         jne @f
  308.                 call but_ctrl_n
  309.                 jmp .end0
  310.         @@:
  311.         cmp al,'O' ;Ctrl+O
  312.         jne @f
  313.                 call but_ctrl_o
  314.         @@:
  315.         ;cmp al,'S' ;Ctrl+S
  316.         ;cmp al,'F' ;Ctrl+F
  317.         ;cmp al,'G' ;Ctrl+G
  318.         ;cmp al,'H' ;Ctrl+H
  319.         .end0:
  320.         ret
  321. endp
  322.  
  323. align 4
  324. but_ctrl_o:
  325.         push eax
  326.         call get_wnd_in_focus
  327.         cmp eax,0
  328.         je @f
  329.                 stdcall [ted_open_file], eax,str_file_70,[edit1.text]
  330.         @@:
  331.         pop eax
  332.         ret
  333.  
  334. ;ᮧ¤ ­¨¥ ­®¢®£® ä ©« 
  335. align 4
  336. but_ctrl_n:
  337.         push eax
  338.         call get_wnd_in_focus
  339.         cmp eax,0
  340.         je @f
  341.                 stdcall [ted_clear], eax,1
  342.                 stdcall [ted_draw], eax
  343.         @@:
  344.         pop eax
  345.         ret
  346.  
  347. ;®¯à¥¤¥«ï¥¬ ª ª®¥ ¨§ ®ª®­ । ªâ®à  ¢ 䮪ãá¥
  348. align 4
  349. get_wnd_in_focus:
  350.         xor eax,eax
  351.         cmp dword[el_focus],tedit0
  352.         jne @f
  353.                 mov eax,tedit0
  354.         @@:
  355.         ;cmp dword[el_focus],tedit1
  356.         ;jne @f
  357.         ;       mov eax,tedit1
  358.         ;@@:
  359.         ret
  360.  
  361. hed db 'TextEditor syntax file converter 06.02.20',0 ;¯®¤¯¨áì ®ª­ 
  362. conv_tabl rb 128 ; â ¡«¨æ  ¤«ï ª®­¢¥àâ¨à®¢ ­¨ï scan-ª®¤  ¢ ascii-ª®¤
  363.  
  364. txt_load_f db '‡ £à. ä ©«',0
  365. txt_save_f db '‘®åà. ä ©«',0
  366. txt_inp_file db 'ˆáå. ä ©«:',0
  367. txt_out_file db '‚ëå. ä ©«:',0
  368.  
  369. head_f_i:
  370. head_f_l db '"System error',0
  371. err_message_found_lib_0 db 'Sorry I cannot found library ',39,'box_lib.obj',39,'" -tE',0
  372. err_message_import_0 db 'Error on load import library ',39,'box_lib.obj',39,'" -tW',0
  373. err_message_found_lib_1 db 'Sorry I cannot found library ',39,'libimg.obj',39,'" -tE',0
  374. err_message_import_1 db 'Error on load import library ',39,'libimg.obj',39,'" -tW',0
  375.  
  376. ;library structures
  377. l_libs_start:
  378.         lib0 l_libs lib_name_0, sys_path, file_name, system_dir_0, err_message_found_lib_0, head_f_l, import_box_lib,err_message_import_0, head_f_i
  379.         lib1 l_libs lib_name_1, sys_path, file_name, system_dir_1, err_message_found_lib_1, head_f_l, import_libimg,err_message_import_1, head_f_i
  380. load_lib_end:
  381.  
  382. IncludeIGlobals
  383.  
  384. align 16
  385. i_end:
  386. IncludeUGlobals
  387.         procinfo process_information
  388.                 rb 1024
  389.         thread:
  390.                 rb 1024
  391. stacktop:
  392.   sys_path:
  393.     rb 4096
  394.   file_name:
  395.     rb 4096
  396.   file_name_rez:
  397.     rb 4096
  398. mem:
  399.