Subversion Repositories Kolibri OS

Rev

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