Subversion Repositories Kolibri OS

Rev

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

  1. ; 01.02.07 - ®¡­®¢«ñ­ editbox
  2. ; 31.01.07 - ¨á¯à ¢«¥­  ­¥ª®àà¥ªâ­ ï ®âà¨á®¢ª  ¯à¨ ¡®«ì讬 §­ ç¥­¨¨ ¢ëá®âë ᪨­ 
  3. ;            ¢ëà ¢­¨¢ ­¨¥ á­¨§ã ®â­®á¨â¥«ì­® à ¡®ç¥© ®¡« á⨠íªà ­ 
  4. window_y=67
  5. ;window_x=320
  6. window_x=640
  7. ;--- ¤à㣨¥ ¬ ªà®áë ---
  8. include '../../../develop/examples/editbox/trunk/editbox.inc'
  9. ;include 'editbox.inc'
  10. include 'txtbut.inc'
  11. include '../../../macros.inc'
  12. ;include 'macros.inc'
  13. include 'run.mac'
  14. include 'lang.inc'
  15.         meos_app_start
  16.         use_edit_box procinfo,22,5
  17.         use_txt_button
  18.         code
  19.         cmp     [par],byte 0
  20.         jne     read_par
  21.         mcall   40,EVM_MOUSE+EVM_BUTTON+EVM_KEY+EVM_REDRAW
  22. red:
  23.         mcall   48,3,sc,40
  24.         set_sys_colors_txt_button run_but,sc
  25.         push    dword [sc.work_graph]
  26.         pop     [input_fn.focus_border_color]
  27.         call    draw_window
  28. still:
  29.         mcall   10
  30.         cmp al,0x1    ;¥á«¨ ¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
  31.         jz red
  32.         cmp al,0x2    ;¥á«¨ ­ ¦ â  ª« ¢¨è  â® ¯¥à¥©â¨
  33.         jz key
  34.         cmp al,0x3    ;¥á«¨ ­ ¦ â  ª­®¯ª  â® ¯¥à¥©â¨
  35.         jz button
  36.         mouse_edit_box input_fn
  37.         jmp still    ;¥á«¨ ­¨ç¥£® ¨§ ¯¥à¥ç¨á«¥­­®£® â® á­®¢  ¢ 横«
  38. key:
  39.         mcall   2
  40.         cmp     ah,13
  41.         je      run
  42.         key_edit_box input_fn
  43.         jmp     still
  44. button:
  45.         mcall   17
  46.         dec     ah
  47.         jz      close
  48.         dec     ah
  49.         jz      run
  50.         jmp     still
  51.  
  52. read_par:
  53.         mov     esi,par
  54.         mov     edi,fn
  55.         mov     ecx,256
  56.         rep     movsb
  57. run:
  58.         xor     eax,eax
  59.         mov     edi,file_info.name
  60.         mov     ecx,512
  61.         rep     stosb
  62.         mov     edi,run_par
  63.         mov     ecx,256
  64.         rep     stosb
  65.  
  66.         mov     esi,fn
  67.         mov     edi,file_info.name
  68.         cmp     [esi],byte '"'
  69.         je      copy_fn_with_spaces
  70. copy_fn:
  71.         cmp     [esi],byte ' '
  72.         je      .stop
  73.         cmp     [esi],byte 0
  74.         je      .stop
  75.         mov     al,[esi]
  76.         mov     [edi],al
  77.         inc     esi
  78.         inc     edi
  79.         jmp     copy_fn
  80. .stop:
  81.  
  82.         jmp     copy_par
  83.  
  84. copy_fn_with_spaces:
  85.         inc     esi
  86. @@:
  87.         cmp     [esi],byte '"'
  88.         je      .stop
  89.         cmp     [esi],byte 0
  90.         je      .stop
  91.         mov     al,[esi]
  92.         mov     [edi],al
  93.         inc     esi
  94.         inc     edi
  95.         jmp     @b
  96. .stop:
  97.  
  98. copy_par:
  99. @@:
  100.         inc     esi
  101.         cmp     [esi],byte ' '
  102.         je      @b
  103.         mov     edi,run_par
  104. @@:
  105.         cmp     [esi],byte 0
  106.         je      .stop
  107.         mov     al,[esi]
  108.         mov     [edi],al
  109.         inc     esi
  110.         inc     edi
  111.         jmp     @b
  112. .stop:
  113.         mcall   70,file_info
  114.  
  115.         cmp     eax,0
  116.         jl      error
  117.         mov     [status],run_ok
  118.         call    draw_status
  119.         jmp     still
  120. close:
  121.         mcall -1
  122.  
  123. error:
  124.         neg     eax
  125.         cmp_err 3,bad_file_sys
  126.         cmp_err 5,file_not_find
  127.         cmp_err 9,bad_fat_table
  128.         cmp_err 10,acces_denyied
  129.         cmp_err 11,device_error
  130.         cmp_err 30,out_of_memory
  131.         cmp_err 31,file_not_executable
  132.         cmp_err 32,many_processes
  133.  
  134.         call    draw_status
  135.         jmp     still
  136.  
  137. draw_window:
  138.         mcall   48,5
  139.         mov     si,bx
  140.  
  141.         mcall   12,1
  142.         mcall   48,4
  143.         mov     dx,ax
  144.         mcall   14
  145.         xor     ecx,ecx
  146.         sub     cx,window_y+2
  147.         sub     cx,dx
  148.         add     cx,si
  149.         shl     ecx,16
  150.         mov     cx,dx
  151.         add     cx,window_y
  152.         shr     eax,16
  153.         mov     bx,ax
  154.         sub     bx,window_x
  155.         shl     ebx,15
  156.         mov     bx,window_x
  157.         mov     edx,[sc.work]
  158.         or      edx,0x33000000
  159.         xor     esi,esi
  160.         mov     edi,grab_text
  161.         mcall   0
  162.  
  163.         mcall   9,procinfo,-1
  164.  
  165.         mov     eax,[procinfo.box.width]
  166.         sub     eax,20
  167.         mov     [input_fn.width],eax
  168.         mov     [run_but.width],ax
  169.  
  170.         xor     bx,bx
  171.         shl     ebx,16
  172.         mov     bx,ax
  173.         add     bx,10
  174.         mov     cx,45
  175.         push    cx
  176.         shl     ecx,16
  177.         pop     cx
  178.         mov     edx,[sc.work_graph]
  179.         mcall   38
  180.         draw_edit_box input_fn
  181.         draw_txt_button run_but
  182.  
  183.         call    draw_status_text
  184.  
  185.         mcall   12,2
  186. ret
  187.  
  188. draw_status:
  189.         mov     ebx,[procinfo.box.width]
  190.         sub     bx,10
  191.         mov     ecx,(50)*65536+12
  192.         mov     edx,[sc.work]
  193.         mcall   13
  194. draw_status_text:
  195.         mov     edx,[status]
  196.         xor     esi,esi
  197. @@:
  198.         cmp     [edx+esi],byte 0
  199.         je      @f
  200.         inc     esi
  201.         jmp     @b
  202. @@:
  203.         mov     ecx,[sc.work_text]
  204.         mcall   4,5*65536+(50)
  205. ret
  206.  
  207. run_but txt_button 0,5,15,25,2,0,0,run_but_text,
  208. input_fn edit_box 0,5,5,0xffffff,0x6a9480,0,0xaaaaaa,0,511,fn,ed_focus+ed_always_focus
  209. mouse_flag: dd 0x0
  210.  
  211. if lang eq ru
  212. hello db '‚¢¥¤¨â¥ ¯®«­ë© ¯ãâì ª ä ©«ã ¨ ­ ¦¬¨â¥ Enter',0
  213. bad_file_sys db '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0 ; 3
  214. file_not_find db '” ©« ­¥ ­ ©¤¥­',0              ; 5
  215. bad_fat_table db '’ ¡«¨æ  FAT à §àã襭 ',0       ; 9
  216. acces_denyied db '„®áâ㯠§ ¯à¥é¥­',0             ; 10
  217. device_error db 'Žè¨¡ª  ãáâனá⢠',0            ; 11
  218. out_of_memory db '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0         ; 30
  219. file_not_executable db '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0 ; 31
  220. many_processes db '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0    ; 32
  221. run_ok db 'à®£à ¬¬  ãᯥ譮 § ¯ã饭 ',0
  222. grab_text db '‡€“‘Š Žƒ€ŒŒ›',0
  223. run_but_text db '‡€“‘’ˆ’œ',0
  224. else
  225. hello db 'Enter full path to file and press <Enter>',0
  226. bad_file_sys db 'Unknown file system',0                ; 3
  227. file_not_find db 'File not found',0                    ; 5
  228. bad_fat_table db 'FAT table corrupted',0               ; 9
  229. acces_denyied db 'Access denied',0                     ; 10
  230. device_error db 'Device error',0                       ; 11
  231. out_of_memory db 'Out of memory',0                     ; 30
  232. file_not_executable db 'File is not executable',0      ; 31
  233. many_processes db 'Too many processes',0               ; 32
  234. run_ok db 'The program was started successfully',0
  235. grab_text db 'RUN',0
  236. run_but_text db 'RUN',0
  237. end if
  238. status dd hello
  239.  
  240. file_info:
  241. .mode dd 7
  242. .flags dd 0
  243. .par dd run_par
  244. dd 0,0
  245. .name rb 512
  246.  
  247. flags dw ?
  248.  
  249. sc system_colors
  250.  
  251. procinfo process_information
  252.  
  253. run_par rb 256
  254. par rb 256
  255. fn rb 512
  256. meos_app_end
  257. udata
  258.