Subversion Repositories Kolibri OS

Rev

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

  1. ;**************************************************************
  2. ; KFM - Kolibri File Manager
  3. ;**************************************************************
  4. use32
  5.     db    'MENUET01'
  6.     dd    0x01
  7.     dd    START
  8.     dd    I_END
  9.     dd    mem
  10.     dd    stacktop
  11.     dd    0x0
  12.     dd    path
  13.  
  14. ;include   'lang.inc'
  15. ;include   'kglobals.inc'
  16. include   'macros.inc'
  17. include   'editbox.inc'
  18. ;use_edit_box
  19. use_edit_box procinfo
  20. ;include   'ASCGL.INC'
  21. ;---------------------------------------------------------------------
  22. include   'files.inc'
  23. ;---------------------------------------------------------------------
  24. STRLEN = 1024
  25. ;---------------------------------------------------------------------
  26. START:
  27.     mcall 9, procinfo, -1
  28.     mov   eax,[ebx+30]
  29.     mov   [PID],eax
  30.     xor   ecx,ecx
  31. @@:
  32.     inc   ecx
  33.     mcall 9, procinfo
  34.     mov   eax,[PID]
  35.     cmp   eax,[ebx+30]
  36.     jne   @r
  37.     mov  [active_process],ecx
  38.     mov   [appl_memory],mem
  39.     mov   ax,[select_disk_char]
  40.     mov   [read_folder_name],ax
  41.     mov   [read_folder_1_name],ax
  42.     call  load_icon_and_convert_to_img
  43.     call  load_buttons_and_convert_to_img
  44.     call  load_initiation_file
  45.     call  add_memory_for_folders
  46.     call  device_detect
  47.     call  device_detect_f70
  48.     mcall 66, 1, 1
  49. ;    call  draw_window
  50. ;    xor   eax,eax
  51.     mov   eax,1
  52.     mov   [left_sort_flag],eax
  53.     mov   [right_sort_flag],eax
  54.  
  55.     call  proc_read_left_folder
  56.     test  eax,eax
  57.     jz    @f
  58.     cmp   eax,6
  59.     jne   read_folder_error
  60. @@:
  61.     call  proc_read_right_folder
  62.     test  eax,eax
  63.     jz    @f
  64.     cmp   eax,6
  65.     jne   read_folder_1_error
  66. @@:
  67.         mcall 40, 0x27
  68.         jmp   red_1
  69. ;---------------------------------------------------------------------
  70. red:
  71.     call  get_window_param
  72.     test  [window_status],10b
  73.     jnz   red_1   ;still
  74.     test  [window_status],100b
  75.     jnz   red_1
  76.     cmp   [window_high],180
  77.     ja    @f
  78.     mov   esi,180
  79.     mcall 67,-1,ebx,ebx
  80. @@:
  81.     cmp   [window_width],495
  82.     ja    red_1
  83.     mov   edx,495
  84.     mcall 67,-1,ebx, ,ebx
  85. red_1:
  86.     call  draw_window
  87. ;---------------------------------------------------------------------
  88. still:
  89.     mcall 10
  90.     cmp   eax,1
  91.     je    red
  92.     cmp   eax,2
  93.     je    key
  94.     cmp   eax,3
  95.     je    button
  96.     cmp   eax,6
  97.     je    mouse
  98.     jmp   still
  99. ;---------------------------------------------------------------------
  100. get_window_param:
  101.     mcall 9, procinfo, -1
  102.     mov   eax,[ebx+46]
  103.     mov   [window_high],eax
  104.     mov   eax,[ebx+42]
  105.     mov   [window_width],eax
  106.     mov   eax,[ebx+70]
  107.     mov   [window_status],eax
  108.     mcall 48,4
  109.     mov   [skin_high],eax
  110.     ret
  111. ;---------------------------------------------------------------------
  112. draw_window:
  113.     mcall 12, 1
  114. ;    mcall 0, <20,620>, <20,460>, 0x03cccccc   ; 0x805080D0, 0x005080D0
  115.         xor     esi,esi
  116.     mcall 0, <20,620>, <20,460>, 0x43cccccc   ; 0x805080D0, 0x005080D0
  117.     call  get_window_param
  118. ;    mov   ecx,[temp_esi]
  119.     test  [window_status],10b
  120.     jnz   @f
  121.     mcall 71, 1 , header
  122.     ; create_dir_name
  123.     ; start_parameter
  124.     ; file_name
  125.     ; [temp_edi]
  126.     ; header
  127.     ; delete_file_data.name
  128.     ; start_file_data.name
  129.     ; start_parameter
  130.      ; start_file_data.name
  131.       ; read_icon_file.name
  132.                 ; read_file_features.name ;path ;header
  133.  
  134.     cmp   [window_high],180
  135.     jb    @f
  136.     cmp   [window_width],495
  137.     jb    @f
  138.  
  139. ;    pusha
  140. ;    mcall 4,<15,25>,0,read_folder.name,100
  141. ;    popa
  142.     call  draw_fbutton
  143.  
  144. ;    mov   [left_panel_clear_all],1
  145.  
  146.     call  draw_left_panel
  147.  
  148. ;    mov   [right_panel_clear_all],1
  149.  
  150.     call  draw_right_panel
  151.     call  draw_device_button
  152.     call  draw_left_select_disk_button
  153.     call  draw_left_sort_button
  154.     call  draw_right_select_disk_button
  155.     call  draw_right_sort_button
  156.     call  draw_menu_bar
  157.     call  draw_buttons_panel
  158.     call  draw_ATAPI_tray_control
  159.    
  160. ;    mcall 47,0x80000,[left_scroll_compens],<300, 5>,0xffffff
  161. ;    call  mouse.draw_data
  162. ;    mcall 18, 7
  163. ;    mov   [temp_eax],eax
  164. ;    mcall 47,0x80000,[active_process],<300, 5>,0xffffff
  165. ;    mcall 47,0x80000,[left_marked_counter],<300, 5>,0xffffff
  166. ;    mcall 47,0x80000,[right_marked_counter],<400, 5>,0xffffff
  167. ;    mcall 47,0x80000,[sorting_low_limit],<100, 5>,0xffffff
  168. ;    mcall 47,0x80000,[sort_counter],<200, 5>,0xffffff
  169. ;    mcall 47,0x80000,[sorting_high_limit],<300, 5>,0xffffff
  170. ;    mcall 47,0x80000,[dir_temp_counter],<400, 5>,0xffffff
  171.  
  172. ;    mcall 47,0x80000,[timer_tick],<500, 5>,0xffffff
  173. ;    mcall 47,0x80000,[temp_eax],<400, 5>,0xffffff
  174. ;    mcall 47,0x80000,[temp_ebx],<400, 5>,0xffffff
  175. ;    mcall 47,0x80000,[temp_ecx],<500, 5>,0xffffff
  176. ;    mcall 47,0x80000,[temp_ebx],<500, 5>,0xffffff
  177. ;    mcall 47,0x80000,[ini_file_start],<100, 5>,0xffffff
  178. ;    mcall 47,0x80000,[left_folder_data],<200, 5>,0xffffff
  179. ;    mcall 47,0x80000,[right_folder_data],<300, 5>,0xffffff
  180. ;    mcall 47,0x80000,[appl_memory],<500, 5>,0xffffff
  181. ;    mcall 47,0x80000,[temp_znak],<500, 5>,0xffffff
  182.  
  183. ;    mcall 47,0x80000,[sort_counter],<200, 5>,0xffffff
  184. ;    mcall 47,0x80000,[temp_edi],<250, 5>,0xffffff
  185. ;    mcall 47,0x80000,[temp_esi],<300, 5>,0xffffff
  186. ;    mcall 47,0x80000,[temp_ecx],<350, 5>,0xffffff
  187. ;    mcall 47,0x80000,[temp_znak],<400, 5>,0xffffff
  188.  
  189. ;    movzx ecx,[left_start_draw_cursor_line]
  190. ;    mcall 47,0x40000, ,<300, 5>,0xffffff
  191. ;    mcall 47,0x40000,[left_start_draw_line],<400, 5>,0xffffff
  192.  
  193. ;    mcall 47,0x40000,[window_width],<100, 5>,0xffffff
  194. ;    mcall 47,0x40000,[window_high],<130, 5>,0xffffff
  195.  
  196. ;    mcall 47,0x80100,[left_panel_x],<200, 5>,0xffffff
  197. ;    mcall 47,0x80100,[left_panel_y],<250, 5>,0xffffff
  198. ;    mov   edx,[temp_counter_dword_1]
  199. ;    mcall 4,<150,3>,0x80000000
  200. ;    mov   edx,[temp_counter_dword]
  201. ;    mcall 4,<5,3>,0x80000000
  202. @@:
  203.     mcall 12, 2
  204.     ret
  205. ;temp_eax dd 0
  206. ;temp_ebx dd 0
  207. ;temp_ecx dd 0
  208. ;temp_edx dd 0
  209. ;temp_esi dd 0
  210. ;temp_edi dd 0
  211. ;temp_ebp dd 0
  212. ;temp_esp dd 0
  213. ;temp_znak dd 0
  214. ;temp_counter_dword_1 dd 0
  215. ;extension_size_1 dd 0
  216. ;timer_tick dd 0
  217. ;---------------------------------------------------------------------
  218. prepare_load_data:
  219.     mov   esi,path
  220.     mov   edi,file_name
  221.     call  copy_path
  222.     call  get_file_size
  223.     test  eax,eax
  224.     ret
  225. ;---------------------------------------------------------------------
  226. prepare_load_data_1:
  227.     mov   [read_file.return],eax
  228.     mov   ebp,eax
  229. prepare_load_data_4:
  230.     call  load_file
  231.     test  eax,eax
  232.     ret
  233. ;---------------------------------------------------------------------
  234. prepare_load_data_2:
  235.     call  add_application_memory
  236. prepare_load_data_3:
  237.     call  add_application_memory
  238.     mov   eax,[file_features_temp_area+32]
  239.     mov   [read_file.size],eax
  240.     ret
  241. ;---------------------------------------------------------------------
  242. load_icon_and_convert_to_img:
  243.     mov   ebx,icons_file_name
  244.     call  prepare_load_data
  245.     jnz   icon_error
  246.     call  prepare_load_data_2
  247.     add   eax,mem
  248.     call  prepare_load_data_1
  249.     jnz   icon_error
  250.     call  convert_bmp_to_img
  251.     call  sub_application_memory
  252.     ret
  253. ;---------------------------------------------------------------------
  254. load_buttons_and_convert_to_img:
  255.     mov   ebx,buttons_file_name
  256.     call  prepare_load_data
  257.     jnz   buttons_error
  258.     mov   eax,[appl_memory]
  259.     mov   [buttons_img_start],eax
  260.     call  prepare_load_data_2
  261.     add   eax,[buttons_img_start]
  262.     call  prepare_load_data_1
  263.     jnz   buttons_error
  264.     call  convert_bmp_to_img
  265.     call  sub_application_memory
  266.     ret
  267. ;---------------------------------------------------------------------
  268. load_initiation_file:
  269.     mov   ebx,ini_file_name
  270.     call  prepare_load_data
  271.     jnz   initiation_error
  272.     call  prepare_load_data_3
  273.     mov   eax,[appl_memory]
  274.     mov   [left_folder_data],eax
  275.     sub   eax,[read_file.size]
  276.     mov   [read_file.return],eax
  277.     mov   [ini_file_start],eax
  278.     call  load_file
  279.     test  eax,eax
  280.     jnz   initiation_error
  281.     mov   ebp,icons_associations
  282.     call  search_star_and_end_tags
  283. ;    cmp   ebp,-1
  284. ;    je    .end
  285.     mov   eax,[end_tag]
  286.     mov   [icons_end_tag],eax
  287.     ret
  288. ;---------------------------------------------------------------------
  289. add_memory_for_folders:
  290.     mov   ecx,[appl_memory]
  291.     add   ecx,304*32+32
  292.     mov   [right_folder_data],ecx
  293.     add   ecx,304*32+32
  294.     mov   [appl_memory],ecx
  295.     mcall 64,1
  296.     ret
  297. ;---------------------------------------------------------------------
  298. copy_path:
  299.     xor   eax,eax
  300. @@:
  301.     cld
  302.     lodsb
  303.     stosb
  304.     test  eax,eax
  305.     jnz   @b
  306.     mov   esi,edi
  307. ;    dec   esi
  308. @@:
  309.     std
  310.     lodsb
  311.     cmp   al,'/'
  312.     jnz   @b
  313.     mov   edi,esi
  314.     add   edi,2
  315.     mov   esi,ebx
  316. @@:
  317.     cld
  318.     lodsb
  319.     stosb
  320.     test  eax,eax
  321.     jnz   @b
  322.     ret
  323. ;---------------------------------------------------------------------
  324. copy_path_1:
  325.     xor   eax,eax
  326. @@:
  327.     cld
  328.     lodsb
  329.     stosb
  330.     test  eax,eax
  331.     jnz   @b
  332.     mov   esi,ebx
  333.     mov   [edi-1],byte '/'
  334. @@:
  335.     cld
  336.     lodsb
  337.     stosb
  338.     test  eax,eax
  339.     jnz   @b
  340.     ret
  341. ;---------------------------------------------------------------------
  342. add_application_memory:
  343.     mov   ecx,[file_features_temp_area+32]
  344. .1:
  345.     add   ecx,[appl_memory]
  346.     mov   [appl_memory],ecx
  347.     mcall 64,1
  348.     ret
  349. ;---------------------------------------------------------------------
  350. sub_application_memory:
  351.     mov   ecx,[appl_memory]
  352.     sub   ecx,[file_features_temp_area+32]
  353. .1:
  354.     mov   [appl_memory],ecx
  355.     mcall 64,1
  356.     ret
  357. ;---------------------------------------------------------------------
  358. include   'key.inc'
  359. ;---------------------------------------------------------------------
  360. include   'markfile.inc'
  361. ;---------------------------------------------------------------------
  362. include   'button.inc'
  363. ;---------------------------------------------------------------------
  364. include   'mouse.inc'
  365. ;---------------------------------------------------------------------
  366. include   'openfile.inc'
  367. ;---------------------------------------------------------------------
  368. include   'draw.inc'
  369. ;---------------------------------------------------------------------
  370. include   'menu_bar.inc'
  371. ;---------------------------------------------------------------------
  372. include   'menu_drv.inc'
  373. ;---------------------------------------------------------------------
  374. include   'delete.inc'
  375. ;---------------------------------------------------------------------
  376. include   'copy.inc'
  377. ;---------------------------------------------------------------------
  378. include   'creatdir.inc'
  379. ;---------------------------------------------------------------------
  380. include   'confirm.inc'
  381. ;---------------------------------------------------------------------
  382. include   'err_wind.inc'
  383. ;---------------------------------------------------------------------
  384. include   'detect.inc'
  385. ;---------------------------------------------------------------------
  386. include   'conv_bmp.inc'
  387. ;---------------------------------------------------------------------
  388. include   'tran_ini.inc'
  389. ;---------------------------------------------------------------------
  390. include   'help.inc'
  391. ;---------------------------------------------------------------------
  392. include   'convchar.inc'
  393. ;---------------------------------------------------------------------
  394. include   'sort.inc'
  395. ;---------------------------------------------------------------------
  396. include   'exit.inc'
  397. ;---------------------------------------------------------------------
  398. include   'progrbar.inc'
  399. ;---------------------------------------------------------------------
  400. include   'scroll.inc'
  401. ;---------------------------------------------------------------------
  402. include   'file_inf.inc'
  403. ;---------------------------------------------------------------------
  404. include   'text.inc'
  405. ;---------------------------------------------------------------------
  406. I_END:
  407. ;---------------------------------------------------------------------
  408. include   'data.inc'
  409. ;---------------------------------------------------------------------
  410. mem:
  411.