diff --git a/programs/develop/libraries/box_lib/asm/trunk/OpenDial.asm b/programs/develop/libraries/box_lib/asm/trunk/OpenDial.asm new file mode 100644 index 0000000000..275dcb33a2 --- /dev/null +++ b/programs/develop/libraries/box_lib/asm/trunk/OpenDial.asm @@ -0,0 +1,2501 @@ +;***************************************************************************** +; Open Dialog - for Kolibri OS +; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario +; All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of the nor the +; names of its contributors may be used to endorse or promote products +; derived from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +; DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;***************************************************************************** + +use32 +org 0x0 + +db 'MENUET01' +dd 0x01 +dd START +dd IM_END +dd I_END +dd stacktop +dd param +dd path + +include '../../../../../macros.inc' +include '../../load_lib.mac' +;include 'macros.inc' +;include 'load_lib.mac' +@use_library +;--------------------------------------------------------------------- +;--------------------------------------------------------------------- +START: + mcall 68,11 + mcall 66,1,1 + mcall 40,0x27 + call get_active_pocess + + call get_communication_area + + + load_libraries l_libs_start,end_l_libs + test eax,eax + jnz button.exit +; initialize sort + push dword 1 + call dword [sort_init] +; unpack deflate + mov eax,[unpack_DeflateUnpack2] + mov [deflate_unpack],eax + + call load_root_directory + call load_start_directory + call sort_directory + call load_icons + call convert_icons + call load_ini + call calc_ini +;--------------------------------------------------------------------- +red: + call control_minimal_window_size +red_1: + call draw_window +;--------------------------------------------------------------------- +still: + mcall 10 + cmp eax,1 + je red + cmp eax,2 + je key + cmp eax,3 + je button + cmp eax,6 + je mouse + jmp still +;--------------------------------------------------------------------- +control_minimal_window_size: + pusha + call get_window_param + test [window_status],10b + jnz .end ;red_1 + test [window_status],100b + jnz .end ;red_1 + test [window_status],1b + jnz .end ;red_1 + mov esi,-1 + mov eax,procinfo + mov eax,[eax+66] + cmp eax,200 + jae @f + mov esi,200 + mcall 67,-1,ebx,ebx +@@: + mov edx,-1 + mov eax,procinfo + mov eax,[eax+62] + cmp eax,300 + jae @f + mov edx,300 + mcall 67,-1,ebx, ,ebx +@@: +.end: + popa + ret +;--------------------------------------------------------------------- +key: + mcall 2 + xor ebx,ebx + cmp [extended_key],1 + je .extended_key + test al, al + jnz still + cmp ah, 0xE0 + jne @f + mov [extended_key],1 + jmp still +@@: + cmp ah,72 ; arrow up + je .2 + cmp ah,80 ; arrow down + je .1 + cmp ah,28 ; Enter + je .7 + cmp ah,1 ; Esc + je button.exit + cmp ah,14 ; Backspace + je button.exit_dir + cmp ah,187 ; F1 + je select_disk + cmp ah,188 ; F2 + je select_sort + cmp ah,189 ; F3 + je select_filter + cmp ah,19 ; R + je button.reload_dir + cmp ah,42 + je key_shift_up + cmp ah,54 + je key_shift_up + cmp ah,170 + je key_shift_down + cmp ah,182 + je key_shift_down + cmp ah,29 + je key_ctrl_up + cmp ah,157 + je key_ctrl_down + cmp ah,56 + je key_alt_up + cmp ah,184 + je key_alt_down + cmp ah,206 ; NumPad+ Up + je NumPad_plus_Up + cmp ah,202 ; NumPad- Up + je NumPad_minus_Up + cmp ah,183 ; NumPad* Up + je NumPad_invert_Up + cmp ah,158 + je symbol_a_up + jmp still +.extended_key: + mov [extended_key],0 + cmp ah,80 ; arrow down + je .1 + cmp ah,72 ; arrow up + je .2 + cmp ah,81 ; PageDown + je .3 + cmp ah,73 ; PageUp + je .4 + cmp ah,71 ; Home + je .5 + cmp ah,79 ; End + je .6 + cmp ah,28 ; Enter + je .7 + cmp ah,82 ; Insert + je .8 + + cmp ah,29 + je key_ctrl_up + cmp ah,157 + je key_ctrl_down + cmp ah,56 + je key_alt_up + cmp ah,184 + je key_alt_down + jmp still +;--------------------------------- +.11: + inc ebx ; 11 +;--------------------------------- +.10: + inc ebx ; 10 +;--------------------------------- +.9: + inc ebx ; 9 +;--------------------------------- +.8: + inc ebx ; 8 +;--------------------------------- +.7: + inc ebx ; 7 +;--------------------------------- +.6: + inc ebx ; 6 +;--------------------------------- +.5: + inc ebx ; 5 +;--------------------------------- +.4: + inc ebx ; 4 +;--------------------------------- +.3: + inc ebx ; 3 +;--------------------------------- +.2: + inc ebx ; 2 +;--------------------------------- +.1: + inc ebx ; 1 +;--------------------------------- + call .key_action + +; movzx ecx,word [file_browser_data_1.start_draw_cursor_line] +; mcall 47,0x80000,,<50,0>,0x40000000,0xffffff +; movzx ecx,word [file_browser_data_1.size_y] +; mcall 47,0x80000,,<150,0>,0x40000000,0xffffff + + mov eax,file_browser_data_1.mouse_keys_delta + cmp [eax],dword 3 + jne still + xor ebx,ebx + mov [eax],ebx + call load_next_dir + jmp still +;------------------------------------------------------- +.key_action: + mov [file_browser_data_1.key_action],ebx + + push dword file_browser_data_1 + call [FileBrowser_key] + + cmp [file_browser_data_1.draw_scroll_bar],0 + je @f + call draw_scrollbar1 + mov [file_browser_data_1.draw_scroll_bar],0 +@@: + ret +;--------------------------------------------------------------------- +select_disk: + call check_alt +.1: + xor eax,eax + mov [menu_data_1.ret_key],eax + + push dword menu_data_1 + call [menu_bar_activate] + + call clear_control_key_flag + + mov eax,[menu_data_1.ret_key] + mov [menu_data_1.ret_key],dword 0 + cmp eax,1 + je select_filter.1 + + cmp eax,2 + je select_sort.1 + + cmp [menu_data_1.click],dword 1 + jne still + + cmp [menu_data_1.cursor_out],dword 0 + jne analyse_out_menu_1 + jmp still +;--------------------------------------------------------------------- +select_sort: + call check_alt +.1: + xor eax,eax + mov [menu_data_2.ret_key],eax + + push dword menu_data_2 + call [menu_bar_activate] + + call clear_control_key_flag + + mov eax,[menu_data_2.ret_key] + mov [menu_data_2.ret_key],dword 0 + cmp eax,1 + je select_disk.1 + + cmp eax,2 + je select_filter.1 + + + cmp [menu_data_2.click],dword 1 + jne still + + cmp [menu_data_2.cursor_out],dword 0 + jne analyse_out_menu_2 + jmp still +;--------------------------------------------------------------------- +select_filter: + call check_alt +.1: + xor eax,eax + mov [menu_data_3.ret_key],eax + + push dword menu_data_3 + call [menu_bar_activate] + + call clear_control_key_flag + + mov eax,[menu_data_3.ret_key] + mov [menu_data_3.ret_key],dword 0 + cmp eax,1 + je select_sort.1 + + cmp eax,2 + je select_disk.1 + + + cmp [menu_data_3.click],dword 1 + jne still + + cmp [menu_data_3.cursor_out],dword 0 + jne analyse_out_menu_3 + jmp still +;--------------------------------------------------------------------- +symbol_a_up: +NumPad_plus_Up: + call check_ctrl + jmp key.9 +;--------------------------------------- +NumPad_minus_Up: + call check_ctrl + jmp key.10 +;--------------------------------------- +NumPad_invert_Up: + call check_ctrl + jmp key.11 +;--------------------------------------- +check_alt: + xor eax,eax + mov al,[alt_flag] + test eax,eax + jz @f + xor ebx,ebx + ret +@@: + add esp,4 + jmp still +;--------------------------------------- +check_ctrl: + xor eax,eax + mov al,[ctrl_flag] + test eax,eax + jz @f + xor ebx,ebx + ret +@@: + add esp,4 + jmp still +;--------------------------------------------------------------------- +clear_control_key_flag: + xor eax,eax + mov [shift_flag],al + mov [ctrl_flag],al + mov [alt_flag],al + ret +;--------------------------------------------------------------------- +key_shift_up: + mov [shift_flag],1 + jmp still +;--------------------------------------------------------------------- +key_shift_down: + mov [shift_flag],0 + jmp still +;--------------------------------------------------------------------- +key_ctrl_up: + mov [ctrl_flag],1 + jmp still +;--------------------------------------------------------------------- +key_ctrl_down: + mov [ctrl_flag],0 + jmp still +;--------------------------------------------------------------------- +key_alt_up: + mov [alt_flag],1 + jmp still +;--------------------------------------------------------------------- +key_alt_down: + mov [alt_flag],0 + jmp still +;--------------------------------------------------------------------- +button: + mcall 17 + cmp ah,6 + je .reload_dir_1 + cmp ah,4 + je .exit + cmp ah,3 + je .open_dir_or_file + cmp ah,2 + je .exit_dir + cmp ah, 1 + jne still +.exit: + mov eax,[communication_area] + test eax,eax + jz @f + cmp [eax],dword 1 + je @f + mov [eax],dword 3 +@@: + mov eax,[N_error] + test eax,eax + jz @f + call start_error_window_thread +@@: + mcall -1 +;--------------------------------------------------------------------- +.reload_dir: + call check_ctrl +.reload_dir_1: + call load_next_dir.1 + jmp still +;--------------------------------------------------------------------- +.exit_dir: + call load_next_dir.exit_dir + jmp still +;--------------------------------------------------------------------- +.open_dir_or_file: + xor ebx,ebx + jmp key.7 +;--------------------------------------------------------------------- +thread_start: + mov eax,[N_error] + cmp al,1 + jne @f + mov [N_error],load_ini_error_type + mov [error_path],file_name + jmp .error_type +@@: + cmp al,2 + jne @f + mov [N_error],load_icons_error_type + mov [error_path],file_name + jmp .error_type +@@: + cmp al,3 + jne @f + mov [N_error],memory_free_error_type + xor eax,eax + mov [error_path],eax + mov [error_type],eax + jmp .red +@@: + cmp al,4 + jne @f + mov [N_error],memory_get_error_type + xor eax,eax + mov [error_path],eax + mov [error_type],eax + jmp .red +@@: + cmp al,5 + jne @f + mov [N_error],load_directory_error_type + mov [error_path],dir_pach + jmp .error_type +@@: + cmp al,6 + jne .button + mov [N_error],convert_icons_error_type + mov [error_path],file_name + xor eax,eax + mov [error_type],eax + jmp .red +.error_type: + mov eax,[error_type] + shl eax,2 + add eax,error_fs_text_pointers + mov eax,[eax] + mov [error_type],eax +.red: + call draw_error_window +.still: + mcall 10 + cmp eax,1 + je .red + cmp eax,2 + je .key + cmp eax,3 + je .button + jmp .still +.key: + mcall 2 + jmp .still +.button: + mcall -1 + jmp .still +;--------------------------------------------------------------------- +draw_error_window: + mcall 12, 1 + mcall 0,[error_window_x] ,[error_window_y], 0x03ff0000 + mcall 71,1,title + mcall 4,<10,30>,0x90ffffff,[N_error] + mov eax,[error_path] + test eax,eax + jz @f + mcall 4,<10,50>, ,[error_path] +@@: + mov eax,[error_type] + test eax,eax + jz @f + mcall 4,<10,70>, ,[error_type] +@@: + mcall 12, 2 + ret +;--------------------------------------------------------------------- +start_error_window_thread: + mcall 9, procinfo, -1 + mov eax,[ebx+46] + shr eax,1 + add eax,[ebx+38] + sub eax,40 + mov [error_window_y+2],ax + mov eax,[ebx+42] + shr eax,1 + add eax,[ebx+34] + sub eax,125 + mov [error_window_x+2],ax + mcall 51,1,thread_start,thread_stack + ret +;--------------------------------------------------------------------- +mouse: + mcall 18,7 + cmp [active_process],eax + jne still + + mcall 37,7 + mov [mouse_scroll_data],eax + + mcall 37,1 + mov [mouse_position],eax + + cmp [scroll_bar_data_vertical.delta2],0 + jne .scrollbar + + push dword file_browser_data_1 + call [FileBrowser_mouse] + + mov eax,file_browser_data_1.mouse_keys_delta + cmp [eax],dword 3 + jne .scrollbar + mov [eax],dword 0 + call load_next_dir + jmp still + +.scrollbar: + mov eax,[scroll_bar_data_vertical.max_area] + cmp eax,[scroll_bar_data_vertical.cur_area] + jbe .menu_bar ;still + + push dword scroll_bar_data_vertical + call [scrollbar_ver_mouse] + + cmp [scroll_bar_data_vertical.redraw],0 + je .menu_bar ;still + mov [scroll_bar_data_vertical.redraw],0 +.draw: + call draw_draw_file_browser2 + jmp still + +;--------------------------------------------------- +.menu_bar: + cmp [scroll_bar_data_vertical.delta2],0 + jne still + +.menu_bar_1: + call .set_mouse_flag +@@: + push dword menu_data_1 + call [menu_bar_mouse] + + cmp [menu_data_1.click],dword 1 + jne .menu_bar_2 + + cmp [menu_data_1.cursor_out],dword 0 + jne analyse_out_menu_1 + jmp .menu_bar_1 +;-------------------------------------------- +.menu_bar_2: + push dword menu_data_2 + call [menu_bar_mouse] + + cmp [menu_data_2.click],dword 1 + jne .menu_bar_3 + + cmp [menu_data_2.cursor_out],dword 0 + jne analyse_out_menu_2 + jmp .menu_bar_1 +;--------------------------------------------------- +.menu_bar_3: + push dword menu_data_3 + call [menu_bar_mouse] + + cmp [menu_data_3.click],dword 1 + jne .check_scroll_event + + cmp [menu_data_3.cursor_out],dword 0 + jne analyse_out_menu_3 + jmp .menu_bar_1 +;--------------------------------------------------- +.check_scroll_event: + mov eax,[mouse_position] + xor ebx,ebx + mov bx,ax ; EBX mouse y + shr eax,16 ; EAX mouse x + + mov cx,[file_browser_data_1.start_x] + mov dx,[file_browser_data_1.start_y] + + cmp ax,cx + jb .mouse_next ; min x + + cmp bx,dx + jb .mouse_next ; min y + + add cx,[file_browser_data_1.size_x] + cmp ax,cx + ja .mouse_next ; max x + + add dx,[file_browser_data_1.size_y] + cmp bx,dx + ja .mouse_next ; max y + + xor ecx,ecx + xor ebx,ebx + mov eax,[mouse_scroll_data] + test eax,eax + jz .mouse_next + test ax,0x8000 + jnz .decr + shr eax,16 + test ax,0x8000 + jnz .decr_1 + + mov cx,[mouse_scroll_data.vertical] + test ecx,ecx + jnz @f + mov cx,[mouse_scroll_data.horizontal] + test ecx,ecx + jz .mouse_next +@@: + mov ebx,1 +@@: + push ebx ecx + call key.key_action + pop ecx ebx + dec ecx + jnz @r + jmp still +;---------------------------------------- +.decr: + mov bx,[mouse_scroll_data.vertical] + jmp @f +.decr_1: + mov bx,[mouse_scroll_data.horizontal] +@@: + mov ecx,0xffff + sub ecx,ebx + inc ecx + mov ebx,2 +@@: + push ebx ecx + call key.key_action + pop ecx ebx + dec ecx + jnz @r + jmp still +;--------------------------------------------------- +.mouse_next: + jmp still +;--------------------------------------------------------------------- +.set_mouse_flag: + xor eax,eax + inc eax + mov [menu_data_1.get_mouse_flag],eax + mov [menu_data_2.get_mouse_flag],eax + ret +;--------------------------------------------------------------------- +analyse_out_menu_1: +; Available disks + mov eax,[menu_data_1.cursor_out] + dec eax + imul esi,eax,10 + add esi,retrieved_devices_table + mov edi,dir_pach + call copy_dir_name + call load_next_dir.1 + jmp still +;--------------------------------------------------------------------- +analyse_out_menu_2: +; Sort + mov eax,[menu_data_2.cursor_out] + xor ebx,ebx + cmp eax,dword 1 + je .1 + cmp eax,dword 2 + je .2 + cmp eax,dword 3 + je .3 + cmp eax,dword 4 + je .4 + jmp still +.4: + add ebx,2 +.3: + add ebx,2 +.2: + add ebx,2 +.1: + mov [sort_type],ebx + call sort_directory + call draw_draw_file_browser1 + jmp still +;--------------------------------------------------------------------- +analyse_out_menu_3: +; Filter + mov eax,[menu_data_3.cursor_out] + cmp eax,dword 1 + jne @f + mov [filter_flag],0 + call load_next_dir.1 + jmp still +@@: + cmp eax,dword 2 + jne still + mov [filter_flag],1 + call load_next_dir.1 + jmp still +;--------------------------------------------------------------------- +get_communication_area: + xor eax,eax + mov al,[param] + test eax,eax + jz @f + mcall 68,22,param,,0x01 + mov [communication_area],eax +@@: + ret +;--------------------------------------------------------------------- +load_start_directory: + mov eax,[communication_area] + test eax,eax + jz @f + mov ebx,[eax] + test eax,eax + jz @f + add eax,4 + mov esi,eax + jmp .1 +@@: + mov esi,start_pach +.1: + mov edi,dir_pach + call copy_dir_name + call load_directory + mov eax,[N_error] + test eax,eax + jnz button.exit + ret +;--------------------------------------------------------------------- +load_next_dir: + mov ebx,[file_browser_data_1.selected_BDVK_adress] + add ebx,40 + test [ebx-40],byte 0x10 + jz file_no_folder + cmp [ebx],word '..' + jne @f + cmp [ebx+2],byte 0 + je .exit_dir +@@: + mov esi,dir_pach + call copy_dir_path + +@@: +.1: + call load_directory + mov eax,[N_error] + test eax,eax + jz @f + call error_handler + jmp .1 +@@: + call sort_directory + + mov ebx,[scroll_bar_data_vertical.x] + inc ebx + mov ecx,[scroll_bar_data_vertical.y] + inc ecx + mcall 13,,,0xcccccc + + call draw_draw_file_browser1 + ret +.exit_dir: + mov esi,dir_pach + call copy_exit_dir + jmp .1 +;--------------------------------------------------------------------- +error_handler: +.red: + call .draw_window +;------------------------------------ +.still: + mcall 10 + cmp eax,1 + je .red + cmp eax,2 + je .key + cmp eax,3 + je .button + jmp .still +;------------------------------------ +.draw_window: + xor eax,eax + inc eax + mov [error_window],al + call control_minimal_window_size + call draw_window + xor eax,eax + mov [error_window],al + ret +;------------------------------------ +.key: + mcall 2 + xor ebx,ebx + cmp [extended_key],1 + je .extended_key + test al, al + jnz .still + cmp ah, 0xE0 + jne @f + mov [extended_key],1 + jmp .still +@@: + cmp ah,129 ; Esc + je .exit + jmp .still +.extended_key: + jmp .still +;------------------------------------ +.button: + mcall 17 + cmp ah,5 + je .exit + cmp ah, 1 + jne .still + xor eax,eax + mov [N_error],eax + jmp button.exit +;------------------------------------ +.exit: + mov esi,start_pach + mov edi,dir_pach + call copy_dir_name + ret +;--------------------------------------------------------------------- +file_no_folder: + mov esi,dir_pach + mov edi,file_name + call copy_dir_name + + mov esi,file_name + call copy_dir_path + + mov eax,[communication_area] + test eax,eax + jnz @f + call control_minimal_window_size + call draw_window + ret +@@: + mov edi,eax + add edi,4 + mov esi,file_name + call copy_dir_name + mov eax,[communication_area] + mov [eax],dword 1 + jmp button.exit +;--------------------------------------------------------------------- +load_root_directory: + mov esi,root_pach + mov edi,dir_pach + call copy_dir_name + call load_directory + mov eax,[N_error] + test eax,eax + jnz button.exit + + mov eax,[dirinfo.return] + mov [root_folder_area],eax + mov eax,[eax+4] + mov [root_folder_block],eax + + xor eax,eax + mov [dirinfo.return],eax + mov [file_browser_data_1.folder_data],eax + mov [temp_counter_1],eax ;0 + + mov [retrieved_devices_table_counter],eax ;0 +.start_temp_counter_1: + imul esi,[temp_counter_1],304 + add esi,[root_folder_area] + add esi,32+40 + mov edi,dir_pach+1 + mov [edi-1],byte '/' + call copy_dir_name + call load_directory + mov eax,[N_error] + test eax,eax + jnz button.exit + + mov eax,[dirinfo.return] + mov [root1_folder_area],eax + mov eax,[eax+4] + test eax,eax + jz .continue + mov [root1_folder_block],eax + + mov ebp,0 +.start_copy_device_patch: + imul edi,[retrieved_devices_table_counter],10 + add edi,retrieved_devices_table + mov [edi],byte '/' + inc edi + imul esi,[temp_counter_1],304 + add esi,[root_folder_area] + add esi,32+40 + + call copy_dir_name + + imul esi,ebp,304 + add esi,[root1_folder_area] + add esi,32+40 + mov [edi-1],byte '/' + + call copy_dir_name + + inc [retrieved_devices_table_counter] + inc ebp + cmp ebp,[root1_folder_block] + jb .start_copy_device_patch +.continue: + inc [temp_counter_1] + mov eax,[temp_counter_1] + cmp eax,[root_folder_block] + jb .start_temp_counter_1 + + cmp [root_folder_area],dword 0 + je @f + mcall 68, 13, [root_folder_area] + test eax,eax + jz memory_free_error +@@: + + xor ecx,ecx + mov edi,menu_text_area_1_1 ;.1 +@@: + imul esi,ecx,10 + add esi,retrieved_devices_table + call copy_dir_name + inc ecx + cmp ecx,[retrieved_devices_table_counter] + jb @b + mov [menu_data_1.text_end],edi + xor eax,eax + mov [edi],eax + ret +;--------------------------------------------------------------------- +memory_free_error: + mov [N_error],3 + jmp button.exit +;--------------------------------------------------------------------- +memory_get_error: + mov [N_error],4 + jmp button.exit +;--------------------------------------------------------------------- +draw_window: + + mcall 12,1 + + mcall 0,<10,420>,<10,320>,0x63AABBCC, + +; mov ecx,[communication_area] +; add ecx,4096+4+4 + + mcall 71,1, title ;;param ;file_name ;dir_pach + + call get_window_param + + mov eax,[window_high] + sub eax,25+45 + mov [file_browser_data_1.size_y],ax + mov [scroll_bar_data_vertical.size_y],ax + + mov eax,[window_width] + sub eax,10+20 + mov [file_browser_data_1.size_x],ax + add ax,10 + mov [scroll_bar_data_vertical.start_x],ax + + + mcall 13,[window_width],45,0xcccccc + + push ecx + rol ecx,16 + add cx,[file_browser_data_1.size_y] + add cx,45 + ror ecx,16 + mov cx,25 + mcall + pop ecx + add ecx,45 shl 16 + mov cx,[file_browser_data_1.size_y] + mov bx,10 + mcall + mov bx,[file_browser_data_1.size_x] + add bx,10 + shl ebx,16 + mov bx,20 + mcall + + cmp [error_window],0 + je @f + call draw_for_fs_errors + jmp .1 +@@: + call draw_draw_file_browser1 +.1: + push dword menu_data_1 + call [menu_bar_draw] + push dword menu_data_2 + call [menu_bar_draw] + push dword menu_data_3 + call [menu_bar_draw] + + mov ebx,[file_browser_data_1.x] + mov ax,bx + shl eax,16 + add ebx,eax + mov eax,50 + mov bx,ax + shl eax,16 + sub ebx,eax + mov ecx,26 shl 16+15 + + mcall 8,,,2,0xffffff + + pusha + shr ecx,16 + mov bx,cx + add ebx,20 shl 16+ 2 + mcall 4,,0x90000000,message_ExitDir_button + add ebx,4 + mcall + add ebx,4 + mcall + popa + + push ebx + sub ebx,70 shl 16 + mov bx,60 + mcall 8,,,6 + + shr ecx,16 + mov bx,cx + add ebx,5 shl 16+ 4 + mcall 4,,0x90000000,message_ReloadDir_button + pop ebx + + mov ebx,[file_browser_data_1.x] + + mov ax,bx + shl eax,16 + add ebx,eax + mov eax,55 + mov bx,ax + shl eax,16 + sub ebx,eax + + mov ecx,[file_browser_data_1.y] + mov ax,cx + add eax,3 + shl eax,16 + add ecx,eax + mov cx,15 + + mcall 8,,,3 + + pusha + shr ecx,16 + mov bx,cx + add ebx,12 shl 16+ 4 + mcall 4,,0x90000000,message_open_button + popa + + + sub ebx, 65 shl 16 + mcall 8,,,4 + + shr ecx,16 + mov bx,cx + add ebx,6 shl 16+ 4 + mcall 4,,0x90000000,message_cancel_button + + +; mcall 47,0x80000,[file_browser_data_1.ini_file_start],<250, 0>,0x0 +; mcall 4, <3, 420>, 0, fb_extension_start, 3 + mcall 12,2 + + ret +;--------------------------------------------------------------------- +draw_for_fs_errors: + call draw_dir_pach + + mov ebx,[file_browser_data_1.x] + mov ecx,[file_browser_data_1.y] + mcall 13,,,[file_browser_data_1.background_color] + push ebx ecx + add ebx,10 shl 16 + sub ebx,20 + add ecx,10 shl 16 + sub ecx,20 + mov edx,0xff0000 + mcall + + shr ecx,16 + mov bx,cx + add ebx,5 shl 16+15 + mcall 4,,0x90ffffff,load_directory_error_type + + add ebx,20 + mcall 4,,,dir_pach + + mov eax,[error_type] + shl eax,2 + add eax,error_fs_text_pointers + mov edx,[eax] + add ebx,20 + mcall 4 + + pop ecx ebx + + mov ebx,[file_browser_data_1.x] + mov ax,bx + shr eax,1 + shl eax,16 + add ebx,eax + mov eax,50 + mov bx,ax + shr eax,1 + shl eax,16 + sub ebx,eax + + mov ecx,[file_browser_data_1.y] + mov ax,cx + sub eax,40 + shl eax,16 + add ecx,eax + mov cx,15 + + mcall 8,,,5,0xffffff + + shr ecx,16 + mov bx,cx + add ebx,4 shl 16+ 4 + mcall 4,,0x90000000,message_cancel_button + + + ret +;--------------------------------------------------------------------- +draw_dir_pach: + mov ebx,[file_browser_data_1.x] + mcall 13,,<7,15>,0xffffb0 + mov bx,10 + add ebx,4 shl 16 + mcall 4,,0xC0000000,dir_pach,,0xffffb0 + ret +;--------------------------------------------------------------------- +draw_draw_file_browser1: + call draw_dir_pach + xor eax,eax + inc eax + mov [file_browser_data_1.all_redraw],eax + mov [scroll_bar_data_vertical.all_redraw],eax + + push dword file_browser_data_1 + call [FileBrowser_draw] + + + call prepare_scrollbar_data + + call draw_scrollbar + + xor eax,eax + mov [file_browser_data_1.all_redraw],eax + mov [scroll_bar_data_vertical.all_redraw],eax + ret +;--------------------------------------------------------------------- +draw_draw_file_browser2: + mov eax,2 + mov [file_browser_data_1.all_redraw],eax + + call get_scrollbar_data + + push dword file_browser_data_1 + call [FileBrowser_draw] + + xor eax,eax + mov [file_browser_data_1.all_redraw],eax + ret +;--------------------------------------------------------------------- +draw_scrollbar1: + mov eax,[file_browser_data_1.start_draw_line] + mov [scroll_bar_data_vertical.position],eax + + call draw_scrollbar + + ret +;--------------------------------------------------------------------- +draw_scrollbar: + mov eax,[scroll_bar_data_vertical.max_area] + cmp eax,[scroll_bar_data_vertical.cur_area] + jbe @f + cmp [scroll_bar_data_vertical.cur_area],0 + je @f + push dword scroll_bar_data_vertical + call [scrollbar_ver_draw] +@@: + ret +;--------------------------------------------------------------------- +get_scrollbar_data: + mov eax,[scroll_bar_data_vertical.position] + mov [file_browser_data_1.start_draw_line],eax + ret +;--------------------------------------------------------------------- +prepare_scrollbar_data: + mov eax,[file_browser_data_1.folder_block] + mov [scroll_bar_data_vertical.max_area],eax + mov eax,[file_browser_data_1.max_panel_line] + mov [scroll_bar_data_vertical.cur_area],eax + ret +;--------------------------------------------------------------------- +get_active_pocess: + mcall 9, procinfo, -1 + mov eax,[ebx+30] + mov [PID],eax + xor ecx,ecx +@@: + inc ecx + mcall 9, procinfo + mov eax,[PID] + cmp eax,[ebx+30] + jne @r + mov [active_process],ecx + ret +;--------------------------------------------------------------------- +get_window_param: + mcall 9, procinfo, -1 + mov eax,[ebx+66] + inc eax + mov [window_high],eax + mov eax,[ebx+62] + inc eax + mov [window_width],eax + mov eax,[ebx+70] + mov [window_status],eax + ret +;--------------------------------------------------------------------- +convert_icons: + xor eax,eax + mov [return_code],eax + mov eax,image_file + call [cnv_png_import.Start] + + mov ecx,[image_file] + mcall 68, 13, + test eax,eax + jz memory_free_error + + cmp [return_code],dword 0 + je @f + mov [N_error],6 + jmp button.exit +@@: + + mov ebx,[raw_pointer] + mov eax,[ebx+4] +; set of icon size x + mov [file_browser_data_1.icon_size_x],ax +; mov eax,[ebx+8] +; set of icon size y + mov [file_browser_data_1.icon_size_y],ax + inc ax + mov [file_browser_data_1.line_size_y],ax + mov eax,[ebx+12] +; set of RAW resolution to pixel + mov [file_browser_data_1.resolution_raw],eax + + mov eax,[ebx+20] + add eax,ebx +; set RAW palette, use else resolution 8bit or less + mov [file_browser_data_1.palette_raw],eax + + mov eax,[ebx+28] + add eax,ebx +; set RAW area for icon + mov [file_browser_data_1.icon_raw_area],eax + ret +;--------------------------------------------------------------------- +calc_ini: + mov eax,[image_file] + mov [file_browser_data_1.ini_file_start],eax + add eax,[img_size] + mov [file_browser_data_1.ini_file_end],eax + ret +;--------------------------------------------------------------------- +load_ini: + mov ebx,ini_file_name + mov esi,path + mov edi,file_name + call copy_file_path + + mov [fileinfo.subfunction],dword 5 + mov [fileinfo.size],dword 0 + mov [fileinfo.return],dword file_info + mcall 70, fileinfo + test eax,eax + jnz .error + + mov [fileinfo.subfunction],dword 0 + + mov ecx,[file_info+32] + mov [fileinfo.size],ecx + mov [img_size],ecx + + mcall 68, 12 + test eax,eax + jz memory_get_error + + mov [fileinfo.return],eax + mov [image_file],eax + + mcall 70, fileinfo + test eax,eax + jnz .error + ret +.error: + mov [N_error],1 + mov [error_type],eax + jmp button.exit +;--------------------------------------------------------------------- +load_icons: + mov ebx,icons_file_name_2 + mov esi,path + mov edi,file_name + call copy_file_path + + mov [fileinfo.subfunction],dword 5 + mov [fileinfo.size],dword 0 + mov [fileinfo.return],dword file_info + mcall 70, fileinfo + test eax,eax + jz @f + + mov ebx,icons_file_name + mov esi,path + mov edi,file_name + call copy_file_path + + mov [fileinfo.subfunction],dword 5 + mov [fileinfo.size],dword 0 + mov [fileinfo.return],dword file_info + mcall 70, fileinfo + test eax,eax + jnz .error +@@: + mov [fileinfo.subfunction],dword 0 + + mov ecx,[file_info+32] + mov [fileinfo.size],ecx + mov [img_size],ecx + + mcall 68, 12 + test eax,eax + jz memory_get_error + + mov [fileinfo.return],eax + mov [image_file],eax + + mcall 70, fileinfo + test eax,eax + jnz .error + ret +.error: + mov [N_error],2 + mov [error_type],eax + jmp button.exit +;--------------------------------------------------------------------- +sort_directory: + push dword [sort_type] ; sort mode + mov eax,[file_browser_data_1.folder_data] + push dword [eax+4] ; number of files + add eax,32 + push eax ; data files + call [sort_dir] + ret +;-------------------------------------------------------------------- +load_directory: + xor eax,eax + mov [N_error],eax + cmp [file_browser_data_1.folder_data],eax + je @f + mcall 68, 13, [file_browser_data_1.folder_data] + test eax,eax + jz memory_free_error + +@@: + mov [dirinfo.size],dword 0 + mov [dirinfo.return],dir_header + mcall 70, dirinfo + test eax,eax + jz @f + xor ebx,ebx + mov [file_browser_data_1.folder_data],ebx + jmp .error +@@: + + mov ecx,[dir_header.totl_blocks] + mov [dirinfo.size],ecx + imul ecx,304 + add ecx,32 + mcall 68, 12 + test eax,eax + jz memory_get_error + + mov [dirinfo.return],eax + mov [file_browser_data_1.folder_data],eax + + mcall 70, dirinfo + test eax,eax + jnz .error + + call delete_point_dir + call files_name_normalize + call check_filter + call prepare_extension_and_mark + call clear_data_fb_and_sb + + ret + +.error: + mov [N_error],5 + mov [error_type],eax + ret +;--------------------------------------------------------------------- +clear_data_fb_and_sb: + xor eax,eax + mov [file_browser_data_1.start_draw_cursor_line],ax + mov [file_browser_data_1.start_draw_line],eax + mov [scroll_bar_data_vertical.position],eax + ret +;--------------------------------------------------------------------- +check_filter: + xor eax,eax + mov al,[filter_flag] + test eax,eax + jz @f + + mov eax,[communication_area] + test eax,eax + jz @f + mov eax,[eax+4096] + test eax,eax + jz @f + call delete_unsupported_BDFE +@@: + ret +;--------------------------------------------------------------------- +delete_unsupported_BDFE: + mov ebx,[file_browser_data_1.folder_data] + add ebx,4 + xor ecx,ecx + dec ecx + + mov eax,[file_browser_data_1.folder_data] + add eax,32+40 + sub eax,304 +.start: + inc ecx + add eax,304 +.1: + cmp [ebx],ecx + je .end + cmp [eax],byte '.' + jne @f + cmp [eax+1],byte 0 + je .delete +@@: + test [eax-40],byte 0x10 + jnz .start + + push eax ebx + mov esi,eax + call search_expansion + test eax,eax + pop ebx eax + jnz .delete + + push eax ebx ecx esi + mov edi,[communication_area] + add edi,4096+4 + call compare_expansion + test eax,eax + pop esi ecx ebx eax + jz .start + +;------------------------------------------- +.delete: + dec dword [ebx] + mov esi,[ebx] + sub esi,ecx + + push ecx + mov ecx,esi + imul ecx,304/4 + mov edi,eax + sub edi,40 + mov esi,edi + add esi,304 + cld + rep movsd + pop ecx + + jmp .1 +.end: + ret +;--------------------------------------------------------------------- +search_expansion: + mov edi,esi + xor eax,eax +@@: + cld + lodsb + test eax,eax + jnz @b + mov ebx,esi + dec esi +@@: + std + lodsb + cmp esi,edi + jb .end_err + cmp al,'.' + jne @b + + add esi,2 + sub ebx,esi + dec ebx + mov [expansion_length],ebx + cld + xor eax,eax + ret + +.end_err: + cld + xor eax,eax + inc eax + ret +;--------------------------------------------------------------------- +compare_expansion: + mov ebx,[edi] + add ebx,edi + add edi,3 +.start: + cmp ebx,edi + jb .end_err + mov ecx,[expansion_length] + inc edi + + push esi edi +@@: + cld + lodsb + xchg esi,edi + shl eax,8 + lodsb + xchg esi,edi + call char_todown + xchg al,ah + call char_todown + cmp al,ah + jne @f + dec ecx + jnz @b + jmp .end +@@: + pop edi esi + jmp .start +.end: + pop edi esi + xor eax,eax + ret + +.end_err: + xor eax,eax + inc eax + ret +;--------------------------------------------------------------------- +prepare_extension_and_mark: + mov esi,[dirinfo.return] + mov ebp,[esi+4] + add esi,32+40 +.start: + push esi + call search_extension_start + mov eax,esi + pop esi + sub eax,esi + sub ebx,esi + shl eax,16 + mov ax,bx + mov [esi+300-40],eax + mov [esi+299-40],byte 0 + add esi,304 + dec ebp + jnz .start + ret +;--------------------------------------------------------------------- +search_extension_start: + mov edx,esi + xor eax,eax + cld +@@: + lodsb + test eax,eax + jnz @b + dec esi + dec edx + push esi + std +@@: + lodsb + cmp esi,edx + je .end + cmp al,'.' + jnz @b + add esi,2 + cld + pop ebx + ret +.end: + cld + pop esi + mov ebx,esi + ret +;--------------------------------------------------------------------- +delete_point_dir: + mov eax,[dirinfo.return] + cmp [eax+32+40],byte '.' + jne @f + cmp [eax+32+40+1],byte 0 + jne @f + mov edi,eax + add edi,32 + mov esi,edi + add esi,304 + mov ecx,[eax+4] + dec ecx + mov [eax+4],ecx + imul ecx,304 + shr ecx,2 + cld + rep movsd +@@: + ret +;--------------------------------------------------------------------- +files_name_normalize: + mov esi,[dirinfo.return] + mov ebp,[esi+4] + add esi,32+40 +.start: + push esi + mov al,[esi] + call char_toupper + mov [esi],al +@@: + inc esi + mov al,[esi] + test al,al + jz @f + call char_todown + mov [esi],al + jmp @b +@@: + pop esi + add esi,304 + dec ebp + jnz .start + ret +;--------------------------------------------------------------------- +char_toupper: +; convert character to uppercase, using cp866 encoding +; in: al=symbol +; out: al=converted symbol + cmp al,'a' + jb .ret + cmp al,'z' + jbe .az + cmp al,'' + jb .ret + cmp al,'' + jb .rus1 + cmp al,'' + ja .ret +; 0xE0-0xEF -> 0x90-0x9F + sub al,''-'' +.ret: + ret +.rus1: +; 0xA0-0xAF -> 0x80-0x8F +.az: + and al,not 0x20 + ret +;--------------------------------------------------------------------- +char_todown: +; convert character to uppercase, using cp866 encoding +; in: al=symbol +; out: al=converted symbol + cmp al,'A' + jb .ret + cmp al,'Z' + jbe .az + cmp al,'' + jb .ret + cmp al,'' + jb .rus1 + cmp al,'' + ja .ret +; 0x90-0x9F -> 0xE0-0xEF + add al,''-'' +.ret: + ret +.rus1: +; 0x80-0x8F -> 0xA0-0xAF +.az: + add al, 0x20 + ret +;--------------------------------------------------------------------- +copy_file_path: + xor eax,eax + cld +@@: + lodsb + stosb + test eax,eax + jnz @b + mov esi,edi + dec esi + std +@@: + lodsb + cmp al,'/' + jnz @b + mov edi,esi + add edi,2 + mov esi,ebx + cld +@@: + lodsb + stosb + test eax,eax + jnz @b + ret +;--------------------------------------------------------------------- +copy_dir_path: + mov ecx,esi + inc ecx + inc ecx + xor eax,eax + cld +@@: + lodsb + test eax,eax + jnz @b + + cmp ecx,esi + jb @f + dec esi +@@: + mov [esi-1],byte '/' + mov edi,esi + mov esi,ebx +@@: + lodsb + stosb + test eax,eax + jnz @b + ret +;--------------------------------------------------------------------- +copy_exit_dir: + mov ebx,esi + inc ebx + xor eax,eax + cld +@@: + lodsb + test eax,eax + jnz @b + sub esi,2 + std +@@: + lodsb + cmp al,'/' + jnz @b + xor eax,eax + cmp ebx,esi + jb @f + inc esi +@@: + mov [esi+1],al + cld + ret +;--------------------------------------------------------------------- +copy_dir_name: + xor eax,eax + cld +@@: + lodsb + stosb + test eax,eax + jnz @b + ret +;--------------------------------------------------------------------- +;--------------------------------------------------------------------- + +;plugins_directory db 'plugins/',0 +plugins_directory db 0 + +system_dir_Boxlib db '/sys/lib/box_lib.obj',0 +system_dir_CnvPNG db '/sys/lib/cnv_png.obj',0 +system_dir_Sort db '/sys/lib/sort.obj',0 +system_dir_UNPACK db '/sys/lib/archiver.obj',0 + +ihead_f_i: +ihead_f_l db 'System error',0 + +er_message_found_lib db 'box_lib.obj - Not found!',0 +er_message_import db 'box_lib.obj - Wrong import!',0 + +er_message_found_lib2 db 'cnv_png.obj - Not found!',0 +er_message_import2 db 'cnv_png.obj - Wrong import!',0 + +err_message_found_lib3 db 'sort.obj - Not found!',0 +err_message_import3 db 'sort.obj - Wrong import!',0 + +err_message_found_lib4 db 'archiver.obj - Not found!',0 +err_message_import4 db 'archiver.obj - Wrong import!',0 + +align 4 +l_libs_start: +library01 l_libs system_dir_Boxlib+9, path, file_name, system_dir_Boxlib, \ +er_message_found_lib, ihead_f_l, Box_lib_import, er_message_import, ihead_f_i, plugins_directory + +library02 l_libs system_dir_CnvPNG+9, path, file_name, system_dir_CnvPNG,\ +er_message_found_lib2, ihead_f_l, cnv_png_import, er_message_import2, ihead_f_i, plugins_directory + +library03 l_libs system_dir_Sort+9, path, file_name, system_dir_Sort, \ +err_message_found_lib3, ihead_f_l, Sort_import, err_message_import3, ihead_f_i, plugins_directory + +library04 l_libs system_dir_UNPACK+9, path, file_name, system_dir_UNPACK, \ +err_message_found_lib4, ihead_f_l, UNPACK_import, err_message_import4, ihead_f_i, plugins_directory + +end_l_libs: + +;--------------------------------------------------------------------- +align 4 +UNPACK_import: +;unpack_Version dd aUnpack_Version +;unpack_PluginLoad dd aUnpack_PluginLoad +;unpack_OpenFilePlugin dd aUnpack_OpenFilePlugin +;unpack_ClosePlugin dd aUnpack_ClosePlugin +;unpack_ReadFolder dd aUnpack_ReadFolder +;unpack_SetFolder dd aUnpack_SetFolder +;unpack_GetFiles dd aUnpack_GetFiles +;unpack_GetOpenPluginInfo dd aUnpack_GetOpenPluginInfo +;unpack_Getattr dd aUnpack_Getattr +;unpack_Open dd aUnpack_Open +;unpack_Read dd aUnpack_Read +;unpack_Setpos dd aUnpack_Setpos +;unpack_Close dd aUnpack_Close +;unpack_DeflateUnpack dd aUnpack_DeflateUnpack +unpack_DeflateUnpack2 dd aUnpack_DeflateUnpack2 + dd 0 + dd 0 + +;aUnpack_Version db 'version',0 +;aUnpack_PluginLoad db 'plugin_load',0 +;aUnpack_OpenFilePlugin db 'OpenFilePlugin',0 +;aUnpack_ClosePlugin db 'ClosePlugin',0 +;aUnpack_ReadFolder db 'ReadFolder',0 +;aUnpack_SetFolder db 'SetFolder',0 +;aUnpack_GetFiles db 'GetFiles',0 +;aUnpack_GetOpenPluginInfo db 'GetOpenPluginInfo',0 +;aUnpack_Getattr db 'getattr',0 +;aUnpack_Open db 'open',0 +;aUnpack_Read db 'read',0 +;aUnpack_Setpos db 'setpos',0 +;aUnpack_Close db 'close',0 +;aUnpack_DeflateUnpack db 'deflate_unpack',0 +aUnpack_DeflateUnpack2 db 'deflate_unpack2',0 + +;--------------------------------------------------------------------- +;--------------------------------------------------------------------- +align 4 +Sort_import: +sort_init dd aSort_init +sort_version dd aSort_version +sort_dir dd aSort_SortDir +sort_strcmpi dd aSort_strcmpi + dd 0 + dd 0 + +aSort_init db 'START',0 +aSort_version db 'version',0 +aSort_SortDir db 'SortDir',0 +aSort_strcmpi db 'strcmpi',0 + +;--------------------------------------------------------------------- +align 4 +cnv_png_import: +.Start dd aCP_Start +.Version dd aCP_Version +.Check dd aCP_Check +.Assoc dd aCP_Assoc + dd 0 + dd 0 +aCP_Start db 'START',0 +aCP_Version db 'version',0 +aCP_Check db 'Check_Header',0 +aCP_Assoc db 'Associations',0 +;--------------------------------------------------------------------- +align 4 +Box_lib_import: +;init_lib dd a_init +;version_lib dd a_version + + +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 + +check_box_draw dd aCheck_box_draw +check_box_mouse dd aCheck_box_mouse +;version_ch dd aVersion_ch + +option_box_draw dd aOption_box_draw +option_box_mouse dd aOption_box_mouse +;version_op dd aVersion_op + +scrollbar_ver_draw dd aScrollbar_ver_draw +scrollbar_ver_mouse dd aScrollbar_ver_mouse +scrollbar_hor_draw dd aScrollbar_hor_draw +scrollbar_hor_mouse dd aScrollbar_hor_mouse +;version_scrollbar dd aVersion_scrollbar + +dinamic_button_draw dd aDbutton_draw +dinamic_button_mouse dd aDbutton_mouse +;version_dbutton dd aVersion_dbutton + +menu_bar_draw dd aMenu_bar_draw +menu_bar_mouse dd aMenu_bar_mouse +menu_bar_activate dd aMenu_bar_activate +;version_menu_bar dd aVersion_menu_bar + +FileBrowser_draw dd aFileBrowser_draw +FileBrowser_mouse dd aFileBrowser_mouse +FileBrowser_key dd aFileBrowser_key +;Version_FileBrowser dd aVersion_FileBrowser + dd 0 + dd 0 + +;a_init db 'lib_init',0 +;a_version db 'version',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 + +aCheck_box_draw db 'check_box_draw',0 +aCheck_box_mouse db 'check_box_mouse',0 +;aVersion_ch db 'version_ch',0 + +aOption_box_draw db 'option_box_draw',0 +aOption_box_mouse db 'option_box_mouse',0 +;aVersion_op db 'version_op',0 + +aScrollbar_ver_draw db 'scrollbar_v_draw',0 +aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 +aScrollbar_hor_draw db 'scrollbar_h_draw',0 +aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 +;aVersion_scrollbar db 'version_scrollbar',0 + +aDbutton_draw db 'dbutton_draw',0 +aDbutton_mouse db 'dbutton_mouse',0 +;aVersion_dbutton db 'version_dbutton',0 + +aMenu_bar_draw db 'menu_bar_draw',0 +aMenu_bar_mouse db 'menu_bar_mouse',0 +aMenu_bar_activate db 'menu_bar_activate',0 +;aVersion_menu_bar db 'version_menu_bar',0 + +aFileBrowser_draw db 'FileBrowser_draw',0 +aFileBrowser_mouse db 'FileBrowser_mouse',0 +aFileBrowser_key db 'FileBrowser_key',0 +;aVersion_FileBrowser db 'version_FileBrowser',0 +;--------------------------------------------------------------------- +;--------------------------------------------------------------------- +align 4 +window_high dd 0 +window_width dd 0 +window_status dd 0 + +active_process dd 0 +PID dd 0 +sort_type dd 2 +root_folder_area dd 0 +root_folder_block dd 0 +root1_folder_area dd 0 +root1_folder_block dd 0 +temp_counter_1 dd 0 +retrieved_devices_table_counter dd 0 +communication_area dd 0 +;--------------------------------------------------------------------- +expansion_length dd 0 +;--------------------------------------------------------------------- +N_error dd 0 +error_type dd 0 +error_path dd 0 +error_window_x: dd 100 shl 16 + 250 +error_window_y: dd 100 shl 16 + 120 +;--------------------------------------------------------------------- +mouse_scroll_data: + .vertical dw 0 + .horizontal dw 0 + +mouse_position: + .y dw 0 + .x dw 0 +;--------------------------------------------------------------------- +; not change this section!!! +; start section +;--------------------------------------------------------------------- +align 4 +image_file dd 0 +raw_pointer dd 0 +return_code dd 0 +img_size dd 0 +deflate_unpack dd 0 +raw_pointer_2 dd 0 ;+20 +;--------------------------------------------------------------------- +; end section +;--------------------------------------------------------------------- +align 4 +fileinfo: +.subfunction dd 5 +.Offset dd 0 +.Offset_1 dd 0 +.size dd 0 +.return dd file_info + db 0 +.name: dd file_name +;--------------------------------------------------------------------- +align 4 +dirinfo: +.subfunction dd 1 +.start dd 0 +.flags dd 0 +.size dd 0 +.return dd 0 + db 0 +.name: dd dir_pach +;--------------------------------------------------------------------- +align 4 +dir_header: +.version dd 0 ;+0 +.curn_blocks dd 0 ;+4 +.totl_blocks dd 0 ;+8 +.other rb 20 +;--------------------------------------------------------------------- +load_ini_error_type: + db 'Error loading INI file',0 + +load_icons_error_type: + db 'Error loading of icons file',0 + +memory_free_error_type: + db 'Error of free memory',0 + +memory_get_error_type: + db 'Memory allocation error',0 + +load_directory_error_type: + db 'Error loading directory',0 + +convert_icons_error_type: + db 'Unsupported or corrupt data for icons file',0 +;--------------------------------------------------------------------- +align 4 +error_fs_text_pointers: + dd error_fs_text_0 + dd error_fs_text_1 + dd error_fs_text_2 + dd error_fs_text_3 + dd error_fs_text_4 + dd error_fs_text_5 + dd error_fs_text_6 + dd error_fs_text_7 + dd error_fs_text_8 + dd error_fs_text_9 + dd error_fs_text_10 + dd error_fs_text_11 + +error_fs_text_0: db '0 - Success full',0 +error_fs_text_1: db '1 - Base and/or partition of a hard disk is not defined',0 +error_fs_text_2: db '2 - Function is not supported for the given file system',0 +error_fs_text_3: db '3 - Unknown file system',0 +error_fs_text_4: db '4 - Reserved, is never returned in the current implementation',0 +error_fs_text_5: db '5 - File not found',0 +error_fs_text_6: db '6 - End of file, EOF',0 +error_fs_text_7: db '7 - Pointer lies outside of application memory',0 +error_fs_text_8: db '8 - Disk is full',0 +error_fs_text_9: db '9 - FAT table is destroyed',0 +error_fs_text_10: db '10 - Access denied',0 +error_fs_text_11: db '11 - Device error',0 +;--------------------------------------------------------------------- + +extended_key db 0 + +shift_flag db 0 +ctrl_flag db 0 +alt_flag db 0 + +error_window db 0 + +filter_flag db 1 + +start_pach: + db '/rd/1',0 + +root_pach: + db '/',0 + +icons_file_name_2 db 'buttons/' +icons_file_name db 'z_icons.png',0 +ini_file_name db 'icons.ini',0 +;--------------------------------------------------------------------- + +message: + db 'Press any key...',0 + +message_cancel_button: + db 'Cancel',0 + +message_open_button: + db 'Open',0 + +message_ReloadDir_button: + db 'Refresh',0 + +message_ExitDir_button: + db '^',0 + +title: + db 'Open Dialog',0 +;--------------------------------------------------------------------- +align 4 +menu_data_1: +.type: dd 0 ;+0 +.x: +.size_x dw 80 ;+4 +.start_x dw 10 ;+6 +.y: +.size_y dw 15 ;+8 +.start_y dw 26 ;+10 +.text_pointer: dd menu_text_area_1 ;0 ;+12 +.pos_pointer: dd menu_text_area_1_1 ;0 ;+16 +.text_end dd menu_text_area_1_1 ;0 ;+20 +.ret_key dd 0 ;+24 +.mouse_keys dd 0 ;+28 +.x1: +.size_x1 dw 80 ;+32 +.start_x1 dw 10 ;+34 +.y1: +.size_y1 dw 100 ;+36 +.start_y1 dw 41 ;+38 +.bckg_col dd 0xffffff ;0xe5e5e5 ;+40 +.frnt_col dd 0xff ;+44 +.menu_col dd 0xeef0ff ;0xffffff ;+48 +.select dd 0 ;+52 +.out_select dd 0 ;+56 +.buf_adress dd 0 ;+60 +.procinfo dd procinfo ;+64 +.click dd 0 ;+68 +.cursor dd 0 ;+72 +.cursor_old dd 0 ;+76 +.interval dd 16 ;+80 +.cursor_max dd 0 ;+84 +.extended_key dd 0 ;+88 +.menu_sel_col dd 0x00cc00 ;+92 +.bckg_text_col dd 0 ; +96 +.frnt_text_col dd 0xffffff ;+100 +.mouse_keys_old dd 0 ;+104 +.font_height dd 8 ;+108 +.cursor_out dd 0 ;+112 +.get_mouse_flag dd 0 ;+116 +;--------------------------------------------------------------------- +menu_text_area_1: +db 'Select Disk',0 +;--------------------------------------------------------------------- +align 4 +menu_data_2: +.type: dd 0 ;+0 +.x: +.size_x dw 30 ;+4 +.start_x dw 95 ;+6 +.y: +.size_y dw 15 ;+8 +.start_y dw 26 ;+10 +.text_pointer: dd menu_text_area_2 ;0 ;+12 +.pos_pointer: dd menu_text_area_2.1 ;0 ;+16 +.text_end dd menu_text_area_2.end ;0 ;+20 +.ret_key dd 0 ;+24 +.mouse_keys dd 0 ;+28 +.x1: +.size_x1 dw 30 ;+32 +.start_x1 dw 95 ;+34 +.y1: +.size_y1 dw 100 ;+36 +.start_y1 dw 41 ;+38 +.bckg_col dd 0xffffff ; 0xe5e5e5 ;+40 +.frnt_col dd 0xff ;+44 +.menu_col dd 0xeef0ff ;0xffffff ;+48 +.select dd 0 ;+52 +.out_select dd 0 ;+56 +.buf_adress dd 0 ;+60 +.procinfo dd procinfo ;+64 +.click dd 0 ;+68 +.cursor dd 0 ;+72 +.cursor_old dd 0 ;+76 +.interval dd 16 ;+80 +.cursor_max dd 0 ;+84 +.extended_key dd 0 ;+88 +.menu_sel_col dd 0x00cc00 ;+92 +.bckg_text_col dd 0 ; +96 +.frnt_text_col dd 0xffffff ;+100 +.mouse_keys_old dd 0 ;+104 +.font_height dd 8 ;+108 +.cursor_out dd 0 ;+112 +.get_mouse_flag dd 0 ;+116 +;--------------------------------------------------------------------- +menu_text_area_2: +db 'Sort',0 +.1: +db 'Name',0 +db 'Type',0 +db 'Date',0 +db 'Size',0 +.end: +db 0 +;--------------------------------------------------------------------- +align 4 +menu_data_3: +.type: dd 0 ;+0 +.x: +.size_x dw 45 ;+4 +.start_x dw 130 ;+6 +.y: +.size_y dw 15 ;+8 +.start_y dw 26 ;+10 +.text_pointer: dd menu_text_area_3 ;0 ;+12 +.pos_pointer: dd menu_text_area_3.1 ;0 ;+16 +.text_end dd menu_text_area_3.end ;0 ;+20 +.ret_key dd 0 ;+24 +.mouse_keys dd 0 ;+28 +.x1: +.size_x1 dw 95 ;+32 +.start_x1 dw 130 ;+34 +.y1: +.size_y1 dw 100 ;+36 +.start_y1 dw 41 ;+38 +.bckg_col dd 0xffffff ; 0xe5e5e5 ;+40 +.frnt_col dd 0xff ;+44 +.menu_col dd 0xeef0ff ;0xffffff ;+48 +.select dd 0 ;+52 +.out_select dd 0 ;+56 +.buf_adress dd 0 ;+60 +.procinfo dd procinfo ;+64 +.click dd 0 ;+68 +.cursor dd 0 ;+72 +.cursor_old dd 0 ;+76 +.interval dd 16 ;+80 +.cursor_max dd 0 ;+84 +.extended_key dd 0 ;+88 +.menu_sel_col dd 0x00cc00 ;+92 +.bckg_text_col dd 0 ; +96 +.frnt_text_col dd 0xffffff ;+100 +.mouse_keys_old dd 0 ;+104 +.font_height dd 8 ;+108 +.cursor_out dd 0 ;+112 +.get_mouse_flag dd 0 ;+116 +;--------------------------------------------------------------------- +menu_text_area_3: +db 'Filter',0 +.1: +db '*.* - show all',0 +db 'Only supported',0 +.end: +db 0 +;--------------------------------------------------------------------- + +align 4 +scroll_bar_data_vertical: +.x: +.size_x dw 15 ;+0 +.start_x dw 500 ;+2 +.y: +.size_y dw 300 ;+4 +.start_y dw 45 ;+6 +.btn_high dd 15 ;+8 +.type dd 1 ;+12 +.max_area dd 10 ;+16 +.cur_area dd 2 ;+20 +.position dd 0 ;+24 +.bckg_col dd 0xeeeeee ;+28 +.frnt_col dd 0xbbddff ;+32 ;0x8aeaa0 +.line_col dd 0 ;+36 +.redraw dd 0 ;+40 +.delta dw 0 ;+44 +.delta2 dw 0 ;+46 +.run_x: +.r_size_x dw 0 ;+48 +.r_start_x dw 0 ;+50 +.run_y: +.r_size_y dw 0 ;+52 +.r_start_y dw 0 ;+54 +.m_pos dd 0 ;+56 +.m_pos_2 dd 0 ;+60 +.m_keys dd 0 ;+64 +.run_size dd 0 ;+68 +.position2 dd 0 ;+72 +.work_size dd 0 ;+76 +.all_redraw dd 0 ;+80 +.ar_offset dd 1 ;+84 +;--------------------------------------------------------------------- +align 4 +file_browser_data_1: +.type dd 0 ;+0 +.x: +.size_x dw 400 ;+4 +.start_x dw 10 ;+6 +.y: +.size_y dw 550 ;+8 +.start_y dw 45 ;+10 +.icon_size_y dw 16 ; +12 +.icon_size_x dw 16 ; +14 +.line_size_x dw 0 ; +16 +.line_size_y dw 18 ; +18 +.type_size_x dw 0 ; +20 +.size_size_x dw 0 ; +22 +.date_size_x dw 0 ; +24 +.attributes_size_x dw 0 ; +26 +.icon_assoc_area dd 0 ; +28 +.icon_raw_area dd 0 ; +32 +.resolution_raw dd 0 ; +36 +.palette_raw dd 0 ; +40 +.directory_path_area dd 0 ; +44 +.file_name_area dd 0 ; +48 +.select_flag dd 0 ; +52 +.background_color dd 0xffffff ; +56 +.select_color dd 0xbbddff ; +60 +.seclect_text_color dd 0 ; +64 +.text_color dd 0 ; +68 +.reduct_text_color dd 0xff0000 ; +72 +.marked_text_color dd 0 ; +76 +.max_panel_line dd 0 ; +80 +.select_panel_counter dd 1 ; +84 +.folder_block dd 0 ; +88 +.start_draw_line dd 0 ; +92 +.start_draw_cursor_line dw 0 ; +96 ; pixels +.folder_data dd 0 ; +98 +.temp_counter dd 0 ; +102 +.file_name_length dd 0 ; +106 +.marked_file dd 0 ; +110 +.extension_size dd 0 ; +114 +.extension_start dd 0 ; +118 +.type_table dd features_table ; +122 +.ini_file_start dd 0 ; +126 +.ini_file_end dd 0 ; +130 +.draw_scroll_bar dd 0 ; +134 +.font_size_y dw 9 ; +138 +.font_size_x dw 6 ; +140 +.mouse_keys dd 0 ; +142 +.mouse_keys_old dd 0 ; +146 +.mouse_pos dd 0 ; +150 +.mouse_keys_delta dd 0 ; +154 +.mouse_key_delay dd 50 ; +158 +.mouse_keys_tick dd 0 ; +162 +.start_draw_cursor_line_2 dw 0 ;+166 +.all_redraw dd 0 ;+168 +.selected_BDVK_adress dd 0 ;+172 +.key_action dd 0 ;+176 +.name_temp_area dd name_temp_area ;+180 +.max_name_temp_size dd 0 ;+184 +.display_name_max_length dd 0 ;+188 +.draw_panel_selection_flag dd 0 ;+192 +.mouse_pos_old dd 0 ;+196 +.marked_counter dd 0 ;+200 +;--------------------------------------------------------------------- +;--------------------------------------------------------------------- +features_table: +.type_table: + db ' ' +;--------------------------------------------------------------------- +.size_table: + db '1023b ' +;--------------------------------------------------------------------- +.date_table: + db '00.00.00 00:00 ' +;--------------------------------------------------------------------- +.year_table: + db ' ' +;--------------------------------------------------------------------- +IM_END: +menu_text_area_1_1: +rb 256 +;--------------------------------------------------------------------- + rb 1024 +stacktop: +;--------------------------------------------------------------------- +; window error message + rb 1024 +thread_stack: +;--------------------------------------------------------------------- +retrieved_devices_table: + rb 200 +;--------------------------------------------------------------------- +name_temp_area: + rb 256 +;--------------------------------------------------------------------- +param: + rb 256 +;--------------------------------------------------------------------- +path: + rb 4096 +;--------------------------------------------------------------------- +file_name: + rb 4096 +;--------------------------------------------------------------------- +dir_pach: + rb 4096 +;--------------------------------------------------------------------- +procinfo: +process_info: + rb 1024 +;---------------------- +file_info: + rb 40 +I_END: + diff --git a/programs/develop/libraries/box_lib/asm/trunk/build.bat b/programs/develop/libraries/box_lib/asm/trunk/build.bat index 763558ae74..5c249cb5c9 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/build.bat +++ b/programs/develop/libraries/box_lib/asm/trunk/build.bat @@ -1,9 +1,16 @@ REM compiling examples if not exist bin mkdir bin + @fasm.exe -m 16384 ctrldemo.asm bin\ctrldemo.kex @kpack bin\ctrldemo.kex -@copy cnv_bmp.obj bin\cnv_bmp.obj -@copy reload_16x16_8b.bmp bin\reload_16x16_8b.bmp + +@fasm.exe -m 16384 OpenDial.asm bin\OpenDial.kex +@kpack bin\OpenDial.kex + +@copy reload_16x16_8b.png bin\reload_16x16_8b.png +@copy cnv_png.obj bin\cnv_png.obj +@copy icons.ini bin\icons.ini +@copy z_icons.png bin\z_icons.png @fasm.exe -m 16384 editbox_ex.asm bin\editbox_ex.kex @kpack bin\editbox_ex.kex diff --git a/programs/develop/libraries/box_lib/asm/trunk/build.sh b/programs/develop/libraries/box_lib/asm/trunk/build.sh new file mode 100755 index 0000000000..4d6645044c --- /dev/null +++ b/programs/develop/libraries/box_lib/asm/trunk/build.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# This script does for Linux the same as build.bat for DOS, +# it compiles the current KolibriOS applications + + echo "lang fix en" + echo "lang fix en" > lang.inc + mkdir bin + fasm -m 16384 ctrldemo.asm ./bin/ctrldemo.kex + fasm -m 16384 OpenDial.asm ./bin/OpenDial.kex + fasm -m 16384 editbox_ex.asm ./bin/editbox_ex.kex + rm -f lang.inc + cp reload_16x16_8b.png ./bin/reload_16x16_8b.png + cp cnv_png.obj ./bin/cnv_png.obj + cp icons.ini ./bin/icons.ini + cp z_icons.png ./bin/z_icons.png + exit 0 + + + diff --git a/programs/develop/libraries/box_lib/asm/trunk/cnv_bmp.obj b/programs/develop/libraries/box_lib/asm/trunk/cnv_bmp.obj deleted file mode 100644 index 667053069f..0000000000 Binary files a/programs/develop/libraries/box_lib/asm/trunk/cnv_bmp.obj and /dev/null differ diff --git a/programs/develop/libraries/box_lib/asm/trunk/cnv_png.obj b/programs/develop/libraries/box_lib/asm/trunk/cnv_png.obj new file mode 100644 index 0000000000..096b85dc33 Binary files /dev/null and b/programs/develop/libraries/box_lib/asm/trunk/cnv_png.obj differ diff --git a/programs/develop/libraries/box_lib/asm/trunk/ctrldemo.asm b/programs/develop/libraries/box_lib/asm/trunk/ctrldemo.asm index 143ab04b3d..f0f9f49578 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/ctrldemo.asm +++ b/programs/develop/libraries/box_lib/asm/trunk/ctrldemo.asm @@ -1,20 +1,20 @@ -; +;***************************************************************************** ; Example for Box_lib: scrollbar, menubar, dinamic_button -; Copyright (c) 2009, Mario79 +; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario ; All rights reserved. ; ; Redistribution and use in source and binary forms, with or without ; modification, are permitted provided that the following conditions are met: -; * Redistributions of source code must retain the above copyright -; notice, this list of conditions and the following disclaimer. -; * Redistributions in binary form must reproduce the above copyright -; notice, this list of conditions and the following disclaimer in the -; documentation and/or other materials provided with the distribution. -; * Neither the name of the nor the -; names of its contributors may be used to endorse or promote products -; derived from this software without specific prior written permission. +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of the nor the +; names of its contributors may be used to endorse or promote products +; derived from this software without specific prior written permission. ; -; THIS SOFTWARE IS PROVIDED BY Mario79 ''AS IS'' AND ANY +; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY ; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ; DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY @@ -24,7 +24,7 @@ ; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -;***************************************************************************** +;****************************************************************************** ; import_boxlib procedure written by ;--------------------------------------------------------------------- @@ -42,6 +42,11 @@ include '../../../../../macros.inc' include '../../load_lib.mac' +;include 'macros.inc' +;include 'load_lib.mac' + @use_library +include 'opendial.mac' + use_OpenDialog ;--------------------------------------------------------------------- ;--- Start of program ---------------------------------------------- ;--------------------------------------------------------------------- @@ -50,69 +55,25 @@ START: mcall 66, 1, 1 mcall 40, 0x27 ;--------------------------------------------------------------------- -; Procinfo area for function 9 in MenuBar - mcall 68,12,1024 - mov [menu_data_1.procinfo],eax - mov [menu_data_2.procinfo],eax -;--------------------------------------------------------------------- -; loading Box_Lib library + load_libraries l_libs_start,end_l_libs -;sys_load_library boxlib_name, path, file_name, system_dir, \ -;er_message_found_lib, ihead_f_l, myimport, er_message_import, ihead_f_i -; test eax,eax -; jnz button.exit -;----------------------------------old -; mov ebx,boxlib_name -; mov esi,path -; mov edi,file_name -; call copy_path -; -; mcall 68,19,file_name ; load of alternative -; test eax,eax -; jnz @f -; -; mcall 68,19,system_dir ; load of sys directory -; test eax,eax -; jz button.exit -;@@: -; call import_boxlib -;--------------------------------------------------------------------- -; Load and convert BMP file for DinamicButton -; This procedures use cnv_bmp.obj and this module used only for -; demonstration of use DinamicButton + test eax,eax + jnz button.exit -; mov ebx,plugin_BMP_name -; mov esi,path -; mov edi,file_name - copy_path plugin_BMP_name,path,file_name -; - mcall 68,19,file_name - test eax,eax - jz button.exit - - mov eax,[eax+4] - mov [plugin],eax +; unpack deflate + mov eax,[unpack_DeflateUnpack2] + mov [deflate_unpack],eax +;OpenDialog initialisation +init_OpenDialog OpenDialog_data -; - mov ebp,library01 - cmp dword [ebp+ll_struc_size-4],0 - jnz button.exit -; -; mov ebp,library02 -; cmp dword [ebp+ll_struc_size-4],0x2 -; jnz button.exit -; mov eax,dword [ebp+36] -; mov eax,[eax+4] -; mov [plugin],eax - - ; mov ebx,icons_file_name ; mov esi,path ; mov edi,file_name - copy_path icons_file_name,path,file_name + + copy_path icons_file_name,path,library_path,0 mcall 70, fileinfo @@ -135,7 +96,7 @@ load_libraries l_libs_start,end_l_libs xor eax,eax mov [return_code],eax mov eax,image_file - call [plugin] + call [cnv_png_import.Start] mov ecx,[image_file] mcall 68, 13, @@ -296,7 +257,10 @@ mouse: ;--------------------------------------------------------------------- analyse_out_menu_1: ; analyse result of Menu 1 - cmp [menu_data_1.cursor_out],dword 3 + mov eax,[menu_data_1.cursor_out] + cmp eax,dword 1 + je OpenDialog_start + cmp eax,dword 3 je button.exit jmp still @@ -310,6 +274,44 @@ analyse_out_menu_2: mcall 51,1,thread3,thread jmp still ;--------------------------------------------------------------------- +OpenDialog_start: +; mov ebx,open_dialog_name +; mov esi,path +; mov edi,library_path +; call copy_file_path + call get_filter_data + + copy_path open_dialog_name,path,library_path,0 + + +start_OpenDialog OpenDialog_data + + cmp [OpenDialog_data.status],2 ; OpenDialog does not start + je still ; some kind of alternative, instead OpenDialog + cmp [OpenDialog_data.status],1 + jne still ; OpenDialog user say cancel +; copy path + call draw_window + jmp still ; OpenDialog user selected the target file + ; [OpenDialog_data.openfile_pach] pointer of area the target file +;--------------------------------------------------------------------- +get_filter_data: + mov edi,[OpenDialog_data.com_area] + test edi,edi + jnz @f + add esp,4 + jmp still +@@: + add edi,4096+4 + mov esi,Filter + mov ecx,[esi] + inc ecx + cld + rep movsb + mov edi,[OpenDialog_data.com_area] + mov [edi+4096],dword 1 + ret +;--------------------------------------------------------------------- draw_window: mcall 12, 1 mcall 0, <0,400>, <0,400>, 0x03AABBCC, 0x805080D0, 0x005080D0 @@ -328,6 +330,11 @@ draw_window: ; draw for Dinamic Button 2 push dword dinamic_button_data_2 call [dinamic_button_draw] +;--------------------------------------------- + mcall 13,<170,200>,<25,15>,0xffffb0 + mov bx,28 + add ebx,2 shl 16 + mcall 4,,0xC0000000,openfile_pach,,0xffffb0 ;--------------------------------------------- ; set all_redraw flag for draw all ScrollBar ; In some cases it is necessity to draw only the area @@ -365,19 +372,35 @@ draw_cube: mov bx,30 mcall 13, , , 0x0 ret - +;--------------------------------------------------------------------- include 'data.inc' include 'w_about.inc' +;--------------------------------------------------------------------- IM_END: rb 1024 thread: +;--------------------------------------------------------------------- rb 1024 stacktop: +;--------------------------------------------------------------------- path: - rb 4096 -file_name: rb 4096 +;--------------------------------------------------------------------- +openfile_pach: + rb 4096 +;--------------------------------------------------------------------- +file_name: +library_path: + rb 4096 +;--------------------------------------------------------------------- +plugin_pach: + rb 4096 +;--------------------------------------------------------------------- file_info: rb 40 +;--------------------------------------------------------------------- +procinfo: + rb 1024 +;--------------------------------------------------------------------- I_END: diff --git a/programs/develop/libraries/box_lib/asm/trunk/d_button.mac b/programs/develop/libraries/box_lib/asm/trunk/d_button.mac deleted file mode 100644 index d946148930..0000000000 --- a/programs/develop/libraries/box_lib/asm/trunk/d_button.mac +++ /dev/null @@ -1,170 +0,0 @@ -;************************************************************** -; Dinamic Button Macro for Kolibri OS -; Copyright (c) 2009, Mario79 -; All rights reserved. -; -; Redistribution and use in source and binary forms, with or without -; modification, are permitted provided that the following conditions are met: -; * Redistributions of source code must retain the above copyright -; notice, this list of conditions and the following disclaimer. -; * Redistributions in binary form must reproduce the above copyright -; notice, this list of conditions and the following disclaimer in the -; documentation and/or other materials provided with the distribution. -; * Neither the name of the nor the -; names of its contributors may be used to endorse or promote products -; derived from this software without specific prior written permission. -; -; THIS SOFTWARE IS PROVIDED BY Mario79 ''AS IS'' AND ANY -; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -; DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -;***************************************************************************** -macro dinamic_button_exit -{ -popa -ret 4 -} -;***************************************************************************** -macro use_dinamic_button -{ -dinamic_button: -db_type equ [edi] -db_size_x equ [edi+4] -db_start_x equ [edi+6] -db_size_y equ [edi+8] -db_start_y equ [edi+10] -db_mouse_pos equ [edi+12] -db_mouse_keys equ [edi+16] -db_mouse_keys_old equ [edi+20] -db_active_raw equ [edi+24] -db_passive_raw equ [edi+28] -db_click_raw equ [edi+32] -db_resolution_raw equ [edi+36] -db_palette_raw equ [edi+40] -db_offset_raw equ [edi+44] -db_select equ [edi+48] -db_click equ [edi+52] -;***************************************************************************** -;***************************************************************************** -; draw event -;***************************************************************************** -;***************************************************************************** -.draw: - pusha - mov edi,dword [esp+36] - call .draw_1 -dinamic_button_exit - -.draw_1: - cmp db_select,dword 1 - je .active_1 - cmp db_select,dword 2 - je .click_2 - mov ebx,db_passive_raw - jmp .draw_2 ;@f -.active_1: - mov ebx,db_active_raw - jmp .draw_2 ;@f -.click_2: - mov ebx,db_click_raw -@@: -.draw_2: - mov cx,db_size_x - shl ecx,16 - mov cx,db_size_y - - mov dx,db_start_x - shl edx,16 - mov dx,db_start_y - - mov esi,db_resolution_raw - - mov ebp,db_offset_raw - - push edi - mov edi,db_palette_raw - mcall 65 - pop edi - ret -;***************************************************************************** -;***************************************************************************** -; mouse event -;***************************************************************************** -;***************************************************************************** -.mouse: - pusha - mov edi,dword [esp+36] - mcall 37,2 - mov ebx,db_mouse_keys - mov db_mouse_keys_old,ebx - - mov db_mouse_keys,eax - - mcall 37,1 - mov db_mouse_pos,eax - - test eax,0x80000000 - jnz .exit_menu - test eax,0x8000 - jnz .exit_menu - - mov ebx,eax - shr ebx,16 ; x position - shl eax,16 - shr eax,16 ; y position - - mov cx,db_start_x - cmp bx,cx - jb .exit_menu - - add cx,db_size_x - cmp bx,cx - ja .exit_menu - - mov cx,db_start_y - cmp ax,cx - jb .exit_menu - - add cx,db_size_y - cmp ax,cx - ja .exit_menu - - test db_mouse_keys,dword 1b - jnz @f - cmp db_select,dword 1 - je .exit_menu_1 - mov db_select,dword 1 - call .draw_1 - jmp .exit_menu_1 -@@: - mov eax,db_mouse_keys - cmp eax,db_mouse_keys_old - je .exit_menu_1 - - mov db_select,dword 2 - call .draw_1 - mcall 5, 25 - mov db_select,dword 1 - call .draw_1 - - mov db_click,dword 1 - jmp .exit_menu_2 - -.exit_menu: - cmp db_select,dword 0 - je .exit_menu_1 - mov db_select,dword 0 - - call .draw_1 - -.exit_menu_1: -; mov db_click,dword 0 -.exit_menu_2: -dinamic_button_exit -} diff --git a/programs/develop/libraries/box_lib/asm/trunk/data.inc b/programs/develop/libraries/box_lib/asm/trunk/data.inc index d53c8efbba..bdea3db733 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/data.inc +++ b/programs/develop/libraries/box_lib/asm/trunk/data.inc @@ -1,19 +1,24 @@ ;--------------------------------------------------------------------- ;--- ---------------------------------------------- ;--------------------------------------------------------------------- - @use_library header_1 db 'Box_lib Control Demo by Mario79',0 ok_btn db 'Ok',0 labelt3 db 'About program',0 ;--------------------------------------------------------------------- -icons_file_name: db 'reload_16x16_8b.bmp',0 +icons_file_name: db 'reload_16x16_8b.png',0 system_dir1 db '/sys/lib/' plugin_BMP_name db 'cnv_bmp.obj',0 system_dir db '/sys/lib/' -boxlib_name db 'box_lib.obj',0 + +;plugins_directory db 'plugins/',0 +plugins_directory db 0 + +system_dir_Boxlib db '/sys/lib/box_lib.obj',0 +system_dir_CnvPNG db '/sys/lib/cnv_png.obj',0 +system_dir_UNPACK db '/sys/lib/archiver.obj',0 ; , ;system_path db '/sys/lib/box_lib.obj',0 ;... . @@ -25,20 +30,76 @@ ihead_f_l db 'System error',0 er_message_found_lib db 'Sorry I cannot load library box_lib.obj',0 er_message_import db 'Error on load import library box_lib.obj',0 -er_message_found_lib2 db 'Sorry I cannot load library cnv_bmp.obj',0 -er_message_import2 db 'Error on load import library cnv_bmp.obj',0 +er_message_found_lib2 db 'cnv_png.obj - Not found!',0 +er_message_import2 db 'cnv_png.obj - Wrong import!',0 + +err_message_found_lib3 db 'archiver.obj - Not found!',0 +err_message_import3 db 'archiver.obj - Wrong import!',0 align 4 l_libs_start: -library01 l_libs boxlib_name, path, file_name, system_dir, \ -er_message_found_lib, ihead_f_l, myimport, er_message_import, ihead_f_i +library01 l_libs system_dir_Boxlib+9, path, file_name, system_dir_Boxlib, \ +er_message_found_lib, ihead_f_l, Box_lib_import, er_message_import, ihead_f_i, plugins_directory -;library02 l_libs plugin_BMP_name, path, file_name, system_dir1,\ -;er_message_found_lib2, ihead_f_l, myimport, er_message_import2, ihead_f_i +library02 l_libs system_dir_CnvPNG+9, path, file_name, system_dir_CnvPNG,\ +er_message_found_lib2, ihead_f_l, cnv_png_import, er_message_import2, ihead_f_i, plugins_directory + +library03 l_libs system_dir_UNPACK+9, path, file_name, system_dir_UNPACK, \ +err_message_found_lib3, ihead_f_l, UNPACK_import, err_message_import3, ihead_f_i, plugins_directory end_l_libs: +;--------------------------------------------------------------------- +align 4 +cnv_png_import: +.Start dd aCP_Start +.Version dd aCP_Version +.Check dd aCP_Check +.Assoc dd aCP_Assoc + dd 0 + dd 0 +aCP_Start db 'START',0 +aCP_Version db 'version',0 +aCP_Check db 'Check_Header',0 +aCP_Assoc db 'Associations',0 +;--------------------------------------------------------------------- +align 4 +UNPACK_import: +;unpack_Version dd aUnpack_Version +;unpack_PluginLoad dd aUnpack_PluginLoad +;unpack_OpenFilePlugin dd aUnpack_OpenFilePlugin +;unpack_ClosePlugin dd aUnpack_ClosePlugin +;unpack_ReadFolder dd aUnpack_ReadFolder +;unpack_SetFolder dd aUnpack_SetFolder +;unpack_GetFiles dd aUnpack_GetFiles +;unpack_GetOpenPluginInfo dd aUnpack_GetOpenPluginInfo +;unpack_Getattr dd aUnpack_Getattr +;unpack_Open dd aUnpack_Open +;unpack_Read dd aUnpack_Read +;unpack_Setpos dd aUnpack_Setpos +;unpack_Close dd aUnpack_Close +unpack_DeflateUnpack dd aUnpack_DeflateUnpack +unpack_DeflateUnpack2 dd aUnpack_DeflateUnpack2 + dd 0 + dd 0 + +;aUnpack_Version db 'version',0 +;aUnpack_PluginLoad db 'plugin_load',0 +;aUnpack_OpenFilePlugin db 'OpenFilePlugin',0 +;aUnpack_ClosePlugin db 'ClosePlugin',0 +;aUnpack_ReadFolder db 'ReadFolder',0 +;aUnpack_SetFolder db 'SetFolder',0 +;aUnpack_GetFiles db 'GetFiles',0 +;aUnpack_GetOpenPluginInfo db 'GetOpenPluginInfo',0 +;aUnpack_Getattr db 'getattr',0 +;aUnpack_Open db 'open',0 +;aUnpack_Read db 'read',0 +;aUnpack_Setpos db 'setpos',0 +;aUnpack_Close db 'close',0 +aUnpack_DeflateUnpack db 'deflate_unpack',0 +aUnpack_DeflateUnpack2 db 'deflate_unpack2',0 ;--------------------------------------------------------------------- + fileinfo: dd 5 dd 0 @@ -65,69 +126,81 @@ deflate_unpack dd 0 ;--------------------------------------------------------------------- align 4 -myimport: -init_lib dd a_init -version_lib dd a_version +Box_lib_import: +;init_lib dd a_init +;version_lib dd a_version -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 +;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 -check_box_draw dd aCheck_box_draw -check_box_mouse dd aCheck_box_mouse -version_ch dd aVersion_ch +;check_box_draw dd aCheck_box_draw +;check_box_mouse dd aCheck_box_mouse +;version_ch dd aVersion_ch -option_box_draw dd aOption_box_draw -option_box_mouse dd aOption_box_mouse -version_op dd aVersion_op +;option_box_draw dd aOption_box_draw +;option_box_mouse dd aOption_box_mouse +;version_op dd aVersion_op scrollbar_ver_draw dd aScrollbar_ver_draw scrollbar_ver_mouse dd aScrollbar_ver_mouse scrollbar_hor_draw dd aScrollbar_hor_draw scrollbar_hor_mouse dd aScrollbar_hor_mouse -version_scrollbar dd aVersion_scrollbar +;version_scrollbar dd aVersion_scrollbar dinamic_button_draw dd aDbutton_draw dinamic_button_mouse dd aDbutton_mouse -version_dbutton dd aVersion_dbutton +;version_dbutton dd aVersion_dbutton menu_bar_draw dd aMenu_bar_draw menu_bar_mouse dd aMenu_bar_mouse -version_menu_bar dd aVersion_menu_bar +menu_bar_activate dd aMenu_bar_activate +;version_menu_bar dd aVersion_menu_bar + +;FileBrowser_draw dd aFileBrowser_draw +;FileBrowser_mouse dd aFileBrowser_mouse +;FileBrowser_key dd aFileBrowser_key +;Version_FileBrowser dd aVersion_FileBrowser dd 0 dd 0 -a_init db 'lib_init',0 -a_version db 'version',0 +;a_init db 'lib_init',0 +;a_version db 'version',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 +;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 -aCheck_box_draw db 'check_box_draw',0 -aCheck_box_mouse db 'check_box_mouse',0 -aVersion_ch db 'version_ch',0 +;aCheck_box_draw db 'check_box_draw',0 +;aCheck_box_mouse db 'check_box_mouse',0 +;aVersion_ch db 'version_ch',0 -aOption_box_draw db 'option_box_draw',0 -aOption_box_mouse db 'option_box_mouse',0 -aVersion_op db 'version_op',0 +;aOption_box_draw db 'option_box_draw',0 +;aOption_box_mouse db 'option_box_mouse',0 +;aVersion_op db 'version_op',0 aScrollbar_ver_draw db 'scrollbar_v_draw',0 aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 aScrollbar_hor_draw db 'scrollbar_h_draw',0 aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 -aVersion_scrollbar db 'version_scrollbar',0 +;aVersion_scrollbar db 'version_scrollbar',0 aDbutton_draw db 'dbutton_draw',0 aDbutton_mouse db 'dbutton_mouse',0 -aVersion_dbutton db 'version_dbutton',0 +;aVersion_dbutton db 'version_dbutton',0 aMenu_bar_draw db 'menu_bar_draw',0 aMenu_bar_mouse db 'menu_bar_mouse',0 -aVersion_menu_bar db 'version_menu_bar',0 +aMenu_bar_activate db 'menu_bar_activate',0 +;aVersion_menu_bar db 'version_menu_bar',0 + +;aFileBrowser_draw db 'FileBrowser_draw',0 +;aFileBrowser_mouse db 'FileBrowser_mouse',0 +;aFileBrowser_key db 'FileBrowser_key',0 +;aVersion_FileBrowser db 'version_FileBrowser',0 ;--------------------------------------------------------------------- ;--------------------------------------------------------------------- @@ -214,7 +287,7 @@ menu_data_1: .mouse_pos dd 0 ;+24 .mouse_keys dd 0 ;+28 .x1: -.size_x1 dw 40 ;+32 +.size_x1 dw 80 ;+32 .start_x1 dw 20 ;+34 .y1: .size_y1 dw 100 ;+36 @@ -225,7 +298,7 @@ menu_data_1: .select dd 0 ;+52 .out_select dd 0 ;+56 .buf_adress dd 0 ;+60 -.procinfo dd 0 ;+64 +.procinfo dd procinfo ;+64 .click dd 0 ;+68 .cursor dd 0 ;+72 .cursor_old dd 0 ;+76 @@ -243,8 +316,8 @@ menu_data_1: menu_text_area: db 'File',0 .1: +db 'OpenDialog',0 db 'Test1',0 -db 'Test2',0 db 'Exit',0 .end: db 0 @@ -275,7 +348,7 @@ menu_data_2: .select dd 0 ;+52 .out_select dd 0 ;+56 .buf_adress dd 0 ;+60 -.procinfo dd 0 ;+64 +.procinfo dd procinfo ;+64 .click dd 0 ;+68 .cursor dd 0 ;+72 .cursor_old dd 0 ;+76 @@ -303,7 +376,7 @@ dinamic_button_data_1: .type dd 0 ;+0 .x: .size_x dw 20 ;+4 -.start_x dw 150 ;+6 +.start_x dw 110 ;+6 .y: .size_y dw 20 ;+8 .start_y dw 25 ;+10 @@ -324,7 +397,7 @@ dinamic_button_data_2: .type dd 0 ;+0 .x: .size_x dw 20 ;+4 -.start_x dw 180 ;+6 +.start_x dw 140 ;+6 .y: .size_y dw 20 ;+8 .start_y dw 25 ;+10 @@ -339,4 +412,35 @@ dinamic_button_data_2: .offset_raw dd 0 ;+44 .select dd 0 ;+48 .click dd 0 ;+52 +;--------------------------------------------------------------------- +OpenDialog_data: +.type dd 0 +.procinfo dd procinfo ;+4 +.com_area_name dd communication_area_name ;+8 +.com_area dd 0 ;+12 +.opendir_pach dd plugin_pach ;+16 +.dir_default_pach dd communication_area_default_pach ;+20 +.start_path dd library_path ;+24 +.draw_window dd draw_window ;+28 +.status dd 0 ;+32 +.openfile_pach dd openfile_pach ;+36 + +communication_area_name: + db 'FFFFFFFF_open_dialog',0 +open_dialog_name: + db 'opendial',0 +communication_area_default_pach: + db '/rd/1',0 + +Filter: +dd Filter.end - Filter +db 'JPEG',0 +db 'JPG',0 +db 'JPE',0 +db 'PNG',0 +db 'GIF',0 +db 'BMP',0 +db 'KEX',0 +.end: +db 0 ;--------------------------------------------------------------------- \ No newline at end of file diff --git a/programs/develop/libraries/box_lib/asm/trunk/icons.ini b/programs/develop/libraries/box_lib/asm/trunk/icons.ini new file mode 100644 index 0000000000..454649a180 --- /dev/null +++ b/programs/develop/libraries/box_lib/asm/trunk/icons.ini @@ -0,0 +1,128 @@ +asm=4 +inc=4 +txt=3 +rtf=3 +ini=3 +log=3 +dic=3 +doc=3 +exc=3 +wtx=3 +inf=3 +jpg=6 +jpe=6 +jpeg=6 +jif=6 +jfif=6 +jp2=6 +jpx=6 +jpk=6 +j2k=6 +jpc=6 +j2c=6 +bmp=6 +dib=6 +rle=6 +pbm=6 +wbm=6 +wbmp=6 +xbm=6 +xpm=6 +gif=6 +png=6 +ico=6 +cur=6 +ani=6 +tif=6 +tiff=6 +xif=6 +tga=6 +pcx=6 +dcx=6 +ppm=6 +psd=6 +psp=6 +raw=6 +raf=6 +x3f=6 +orf=6 +nef=6 +mrw=6 +dcr=6 +crw=6 +cr2=6 +ras=6 +pix=6 +pict=6 +pct=6 +pic=6 +pgm=6 +pef=6 +pcd=6 +iff=6 +lbm=6 +ilbm=6 +fpx=6 +djv=6 +djvu=6 +iw4=6 +wav=7 +mp3=7 +xm=7 +mid=7 +midi=7 +aif=7 +aifc=7 +aiff=7 +au=7 +snd=7 +wma=7 +wm=7 +avi=11 +mpg=11 +mpe=11 +mpeg=11 +flv=11 +3gp=11 +img=5 +ima=5 +imz=5 +bwz=5 +dsk=5 +vfd=5 +wil=5 +wlz=5 +exe=8 +com=8 +bat=8 +7z=9 +rar=9 +zip=9 +cab=9 +arj=9 +lha=9 +lzh=9 +tar=9 +taz=9 +tbz=9 +tbz2=9 +bz=9 +bz2=9 +ice=9 +gz=9 +tgz=9 +uue=9 +uu=9 +xxe=9 +z=9 +dat=10 +ttf=12 +ttc=12 +chr=12 +mt=12 +htm=13 +html=13 +lif=14 +3ds=15 +kex=16 +skn=17 diff --git a/programs/develop/libraries/box_lib/asm/trunk/opendial.mac b/programs/develop/libraries/box_lib/asm/trunk/opendial.mac new file mode 100644 index 0000000000..b3c8cf729c --- /dev/null +++ b/programs/develop/libraries/box_lib/asm/trunk/opendial.mac @@ -0,0 +1,170 @@ +;***************************************************************************** +; Macro for use Open Dialog - for Kolibri OS +; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario +; All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of the nor the +; names of its contributors may be used to endorse or promote products +; derived from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +; DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;***************************************************************************** +;***************************************************************************** +macro OpenDialog_exit +{ +popa +ret +} +;***************************************************************************** +macro use_OpenDialog +{ +OpenDialog: +od_type equ dword [ebp] +od_procinfo equ dword [ebp+4] +od_com_area_name equ dword [ebp+8] +od_com_area equ dword [ebp+12] +od_opendir_pach equ dword [ebp+16] +od_dir_default_pach equ dword [ebp+20] +od_start_path equ dword [ebp+24] +od_draw_window equ dword [ebp+28] +od_status equ dword [ebp+32] +od_openfile_pach equ dword [ebp+36] +;***************************************************************************** +.init: + pusha + mcall 9, od_procinfo, -1 + mov ebx,[ebx+30] + mov edi,od_com_area_name + add edi,7 +; mov edi,communication_area_name+7 + std + mov ecx,4 +@@: + mov al,bl + and al,1111b + add al,0x30 + stosb + mov al,bl + shr al,4 + and al,1111b + add al,0x30 + stosb + shr ebx,8 + dec ecx + jnz @r + cld + + mcall 68,22,od_com_area_name,8192,0x09 + mov od_com_area,eax +OpenDialog_exit +;***************************************************************************** +;***************************************************************************** +.start: + pusha + mov eax,od_com_area + test eax,eax + jz .1 + mov [eax],dword 2 ; folder for open + mov edi,eax + add edi,4 + + mov esi,od_opendir_pach + xor eax,eax + mov al,[esi] + test eax,eax + jnz @f + mov esi,od_dir_default_pach ;communication_area_default_pach +@@: + call .copy + + mov eax,od_com_area_name + mov [start_open_dialog.parameter],eax + + mov eax,od_start_path + mov [start_open_dialog.name],eax + + mcall 70, start_open_dialog + shr eax,31 + test eax,eax + jnz .1 + jmp .still +.red: + pusha + call od_draw_window + popa +.still: + mcall 23, 50 + cmp eax,1 + je .red + mov eax,od_com_area + mov ebx,[eax] + test ebx,ebx + jz .still + cmp ebx,3 + je .2 ;still + cmp ebx,1 + jne .still + + mov esi,od_com_area + add esi,4 + mov edi,od_openfile_pach ;string + call .copy + mov od_status,1 + jmp .3 ;kopen_1 +.2: + mov od_status,0 + jmp .3 ; still +.1: + mov od_status,2 ; thread1 +.3: +OpenDialog_exit +;---------------------------------------------- +.copy: + xor eax,eax + cld +@@: + lodsb + stosb + test eax,eax + jnz @b + ret +;---------------------------------------------- +align 4 +start_open_dialog: +.subfunction dd 7 +.flags dd 0 +.parameter dd 0 ;od_com_area_name +.reserved1 dd 0 +.reserved2 dd 0 + db 0 +.name: dd 0 ;od_start_path +} +;***************************************************************************** +macro init_OpenDialog od_ptr +{ + mov ebp,od_ptr + call OpenDialog.init +} +;***************************************************************************** +macro start_OpenDialog od_ptr +{ + mov ebp,od_ptr + call OpenDialog.start +} +;***************************************************************************** \ No newline at end of file diff --git a/programs/develop/libraries/box_lib/asm/trunk/reload_16x16_8b.bmp b/programs/develop/libraries/box_lib/asm/trunk/reload_16x16_8b.bmp deleted file mode 100644 index 9e9940ea89..0000000000 Binary files a/programs/develop/libraries/box_lib/asm/trunk/reload_16x16_8b.bmp and /dev/null differ diff --git a/programs/develop/libraries/box_lib/asm/trunk/reload_16x16_8b.png b/programs/develop/libraries/box_lib/asm/trunk/reload_16x16_8b.png new file mode 100644 index 0000000000..db09b0519d Binary files /dev/null and b/programs/develop/libraries/box_lib/asm/trunk/reload_16x16_8b.png differ diff --git a/programs/develop/libraries/box_lib/asm/trunk/z_icons.png b/programs/develop/libraries/box_lib/asm/trunk/z_icons.png new file mode 100644 index 0000000000..c7bda12b05 Binary files /dev/null and b/programs/develop/libraries/box_lib/asm/trunk/z_icons.png differ