; 24.07.2008 <Lrz> ®¡®¢«¥ Edit ¡®ªá ; 01.02.07 - ®¡®¢«ñ editbox ; 31.01.07 - ¨á¯à ¢«¥ ¥ª®à४â ï ®âà¨á®¢ª ¯à¨ ¡®«ì讬 § 票¨ ¢ëá®âë ᪨ ; ¢ëà ¢¨¢ ¨¥ ᨧ㠮â®á¨â¥«ì® à ¡®ç¥© ®¡« á⨠íªà window_y=67 window_x=400 ;--- ¤à㣨¥ ¬ ªà®áë --- include '../../../develop/libraries/box_lib/load_lib.mac' include '../../../develop/libraries/box_lib/trunk/box_lib.mac' include 'txtbut.inc' include '../../../macros.inc' include 'run.mac' include 'lang.inc' use32 org 0x0 db 'MENUET01' dd 0x1 dd start dd i_end dd mem dd mem dd par dd cur_dir_path ; meos_app_start ; use_edit_box @use_library use_txt_button ; code ;load system lib align 4 start: sys_load_library library_name, cur_dir_path, library_path, system_path, \ err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i cmp eax,-1 jz close cmp [par],byte 0 jne read_par mcall 40,EVM_MOUSE+EVM_BUTTON+EVM_KEY+EVM_REDRAW+EVM_MOUSE_FILTER red: mcall 48,3,sc,40 edit_boxes_set_sys_color input_fn,input_fn_end,sc set_sys_colors_txt_button run_but,sc push dword [sc.work_graph] pop [input_fn.focus_border_color] call draw_window still: ;®á®¢®© ®¡à ¡®â稪 mcall 10 ;Ž¦¨¤ âì ᮡëâ¨ï dec eax jz red dec eax jz key dec eax jz button ; mouse_edit_box input_fn push dword input_fn call [edit_box_mouse] jmp still ;¥á«¨ ¨ç¥£® ¨§ ¯¥à¥ç¨á«¥®£® ⮠ᮢ ¢ 横« key: mcall 2 cmp ah,13 je run ; key_edit_box input_fn push dword input_fn call [edit_box_key] jmp still button: mcall 17 dec ah jz close dec ah jz run jmp still read_par: mov esi,par mov edi,fn mov ecx,256 rep movsb run: xor eax,eax mov edi,file_info.name mov ecx,512 rep stosb mov edi,run_par mov ecx,256 rep stosb mov esi,fn mov edi,file_info.name cmp [esi],byte '"' je copy_fn_with_spaces copy_fn: cmp [esi],byte ' ' je .stop cmp [esi],byte 0 je .stop mov al,[esi] mov [edi],al inc esi inc edi jmp copy_fn .stop: jmp copy_par copy_fn_with_spaces: inc esi @@: cmp [esi],byte '"' je .stop cmp [esi],byte 0 je .stop mov al,[esi] mov [edi],al inc esi inc edi jmp @b .stop: copy_par: @@: inc esi cmp [esi],byte ' ' je @b mov edi,run_par @@: cmp [esi],byte 0 je .stop mov al,[esi] mov [edi],al inc esi inc edi jmp @b .stop: mcall 70,file_info cmp eax,0 jl error mov [status],run_ok call draw_status jmp still close: mcall -1 error: neg eax cmp_err 3,bad_file_sys cmp_err 5,file_not_find cmp_err 9,bad_fat_table cmp_err 10,acces_denyied cmp_err 11,device_error cmp_err 30,out_of_memory cmp_err 31,file_not_executable cmp_err 32,many_processes call draw_status jmp still draw_window: mcall 48,5 mov si,bx mcall 12,1 mcall 48,4 mov dx,ax mcall 14 xor ecx,ecx sub cx,window_y+2 sub cx,dx add cx,si shl ecx,16 mov cx,dx add cx,window_y shr eax,16 mov bx,ax sub bx,window_x shl ebx,15 mov bx,window_x mov edx,[sc.work] or edx,0x33000000 xor esi,esi mov edi,grab_text mcall 0 mcall 9,procinfo,-1 mov eax,[procinfo.box.width] sub eax,20 mov [input_fn.width],eax mov [run_but.width],ax xor bx,bx shl ebx,16 mov bx,ax add bx,10 mov cx,45 push cx shl ecx,16 pop cx mov edx,[sc.work_graph] mcall 38 ; draw_edit_box input_fn push dword input_fn call [edit_box_draw] draw_txt_button run_but call draw_status_text mcall 12,2 ret draw_status: mov ebx,[procinfo.box.width] sub bx,10 mov ecx,(50)*65536+12 mov edx,[sc.work] mcall 13 draw_status_text: mov edx,[status] xor esi,esi @@: cmp [edx+esi],byte 0 je @f inc esi jmp @b @@: mov ecx,[sc.work_text] mcall 4,5*65536+(50) ret run_but txt_button 0,5,15,25,2,0,0,run_but_text, input_fn edit_box 0,5,5,0xffffff,0x6a9480,0,0xaaaaaa,0,511,fn,mouse_dd,ed_focus+ed_always_focus ;mouse_flag: dd 0x0 input_fn_end: if lang eq ru hello db '‚¢¥¤¨â¥ ¯®«ë© ¯ãâì ª ä ©«ã ¨ ¦¬¨â¥ Enter',0 bad_file_sys db '¥¨§¢¥áâ ï ä ©«®¢ ï á¨á⥬ ',0 ; 3 file_not_find db '” ©« ¥ ©¤¥',0 ; 5 bad_fat_table db '’ ¡«¨æ FAT à §àãè¥ ',0 ; 9 acces_denyied db '„®áâ㯠§ ¯à¥é¥',0 ; 10 device_error db 'Žè¨¡ª ãáâனá⢠',0 ; 11 out_of_memory db '¥¤®áâ â®ç® ¯ ¬ïâ¨',0 ; 30 file_not_executable db '” ©« ¥ ï¥âáï ¨á¯®«ï¥¬ë¬',0 ; 31 many_processes db '‘«¨èª®¬ ¬®£® ¯à®æ¥áᮢ',0 ; 32 run_ok db 'à®£à ¬¬ ãá¯¥è® § ¯ãé¥ ',0 grab_text db '‡ ¯ã᪠¯à®£à ¬¬ë',0 run_but_text db '‡€“‘’ˆ’œ',0 else if lang eq it hello db 'Inserisci percorso completo al file e premi <Enter>',0 bad_file_sys db 'Filesysrem sconosciuto',0 ; 3 file_not_find db 'File non trovato',0 ; 5 bad_fat_table db 'Tabella FAT corrotta',0 ; 9 acces_denyied db 'Accesso negato',0 ; 10 device_error db 'Device error',0 ; 11 out_of_memory db 'Out of memory',0 ; 30 file_not_executable db 'File non eseguibile',0 ; 31 many_processes db 'Troppo processi',0 ; 32 run_ok db 'Il programma eseguito correttamente',0 grab_text db 'RUN',0 run_but_text db 'Esegui',0 else hello db 'Enter full path to file and press <Enter>',0 bad_file_sys db 'Unknown file system',0 ; 3 file_not_find db 'File not found',0 ; 5 bad_fat_table db 'FAT table corrupted',0 ; 9 acces_denyied db 'Access denied',0 ; 10 device_error db 'Device error',0 ; 11 out_of_memory db 'Out of memory',0 ; 30 file_not_executable db 'File is not executable',0 ; 31 many_processes db 'Too many processes',0 ; 32 run_ok db 'The program was started successfully',0 grab_text db 'RUN',0 run_but_text db 'RUN',0 end if status dd hello ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;DATA ¤ ë¥ ;‚ᥣ¤ ᮡ«î¤ âì ¯®á«¥¤®¢ ⥫ì®áâì ¢ ¨¬¥¨. system_path db '/sys/lib/' library_name db 'box_lib.obj',0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; if lang eq ru err_message_found_lib db 'Žè¨¡ª ¯à¨ ¯®¨áª¥ box_lib.obj',0 head_f_i: head_f_l db '‘¨á⥬ ï ®è¨¡ª ',0 err_message_import db 'Žè¨¡ª ¯à¨ ¨¬¯®à⥠box_lib.obj',0 else err_message_found_lib db 'Sorry I cannot load library box_lib.obj',0 head_f_i: head_f_l db 'System error',0 err_message_import db 'Error on load import library box_lib.obj',0 end if myimport: edit_box_draw dd aEdit_box_draw edit_box_key dd aEdit_box_key edit_box_mouse dd aEdit_box_mouse version_ed dd aVersion_ed dd 0 dd 0 aEdit_box_draw db 'edit_box',0 aEdit_box_key db 'edit_box_key',0 aEdit_box_mouse db 'edit_box_mouse',0 aVersion_ed db 'version_ed',0 file_info: .mode dd 7 .flags dd 0 .par dd run_par dd 0,0 .name rb 512 flags rw 1 sc system_colors procinfo process_information run_par rb 256 par rb 256 fn rb 512 mouse_dd rd 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; cur_dir_path rb 4096 library_path rb 4096 i_end: rb 1024 mem: ;meos_app_end ;udata