From c2b5a1b2a8ba1441ab7e8b9705db848f53853d60 Mon Sep 17 00:00:00 2001 From: "Marat Zakiyanov (Mario79)" Date: Sat, 17 Oct 2009 19:26:18 +0000 Subject: [PATCH] Open Dialog - component to select the file Build.sh - script to compile examples Box_lib under Linux git-svn-id: svn://kolibrios.org@1219 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../libraries/box_lib/asm/trunk/OpenDial.asm | 2501 +++++++++++++++++ .../libraries/box_lib/asm/trunk/build.bat | 11 +- .../libraries/box_lib/asm/trunk/build.sh | 19 + .../libraries/box_lib/asm/trunk/cnv_bmp.obj | Bin 907 -> 0 bytes .../libraries/box_lib/asm/trunk/cnv_png.obj | Bin 0 -> 3214 bytes .../libraries/box_lib/asm/trunk/ctrldemo.asm | 165 +- .../libraries/box_lib/asm/trunk/d_button.mac | 170 -- .../libraries/box_lib/asm/trunk/data.inc | 196 +- .../libraries/box_lib/asm/trunk/icons.ini | 128 + .../libraries/box_lib/asm/trunk/opendial.mac | 170 ++ .../box_lib/asm/trunk/reload_16x16_8b.bmp | Bin 1956 -> 0 bytes .../box_lib/asm/trunk/reload_16x16_8b.png | Bin 0 -> 1458 bytes .../libraries/box_lib/asm/trunk/z_icons.png | Bin 0 -> 6780 bytes 13 files changed, 3071 insertions(+), 289 deletions(-) create mode 100644 programs/develop/libraries/box_lib/asm/trunk/OpenDial.asm create mode 100755 programs/develop/libraries/box_lib/asm/trunk/build.sh delete mode 100644 programs/develop/libraries/box_lib/asm/trunk/cnv_bmp.obj create mode 100644 programs/develop/libraries/box_lib/asm/trunk/cnv_png.obj delete mode 100644 programs/develop/libraries/box_lib/asm/trunk/d_button.mac create mode 100644 programs/develop/libraries/box_lib/asm/trunk/icons.ini create mode 100644 programs/develop/libraries/box_lib/asm/trunk/opendial.mac delete mode 100644 programs/develop/libraries/box_lib/asm/trunk/reload_16x16_8b.bmp create mode 100644 programs/develop/libraries/box_lib/asm/trunk/reload_16x16_8b.png create mode 100644 programs/develop/libraries/box_lib/asm/trunk/z_icons.png 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 667053069f29c1f314efd50610ef6fd569873ad8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 zcmV;619bdLP(w>}1^@to00000Yyc)VCrqqlSs9{Rkz=}Nul9F}&JMviSF0OozG(=` z&@Jjj1j?-Jf=vy?At-TG+uuH~bbC}$KzMy>j?zSDoG0SV?z)%kNu9TwR!kI3L(Ler zCmv;a0!UAgb`VemhGXQl%OHHRH5gK771Q+FQY|$;Dl?Iw+D^X(Te_frfT;4KeRl%N z(1L(cG*fj9=@W>97UJOm{=}H*ZnaVTm1tDkMU4oGw8ZjDEh57MpeSPSy!y&k#wyPN zDjd7F6O7g$c_3T@1xIF4TkC@MpzppN|E~HO*9nF8uDy>KX)K22YnaG-!{2I2D{CSh zHf!T%)I|~jkbg0fT(_aPAU|x&ov|ApLM;gAZu!A(7Z>_Ts*cEb2GjEd?G12S1Luxc zNcYmJecc$Ly|Ug6Z4}u+se9Dq#XHoV0m4==Xwt##DKDyY=pf+gNn^&o9kAghC*=qN}9XiCWl5+aysCOKftXPKE{Z_Yd>B6TK zkEl!-CQf+T*<_eK)e2ruc}ddo(CbrvOw-UYm=2w05ZLr^>D7z5h_U`b4&~W$rK3&7 zY`=2IQ)x}!j(K#^(`u{t6Y~O{t;Zs2(%DCxwZb_oyH(|+K~e++pGz?T#pme8F0suQ z02CI$Q76XelH&G|KE@NVBQlSB8-0%jcGMl_wuuf)0@R?Yc666yPMs>0$GGV0Ux zuxG;Md;T`6%+d7ISHQNofV2aW!&(WKq_ujbcB=M#nt)Y`d61jw=#xJ7Mb zuY6Y(j1ldt5AYD091!EWzcP^rnw{|AD*aI#!uQnh77USEBsy% z))c6Jp&-8Yn|PZ+cYu810L}I^=7(})97fOF6FK6LkGd7mcGTqt%&ov!iHk0{ hnOA)HlysnnYYsY&QYMk464*f{3^`BEvkw3O0022a#`6FG 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 0000000000000000000000000000000000000000..096b85dc3347ff84a0a09c1d3b6670257bd6fabf GIT binary patch literal 3214 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 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 9e9940ea898f0c07f5e1011d828182967570424f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1956 zcmX|>dsI|a6vn^HTxJHDYOotgW|ov$rYM10P%5T|X@vR6jFjYg5G5x>jT8;kP)NjQ zTIK^&(QvYZQfL}RS(cWWW?`misfYu^!-0X_zC(4_`qn!8JA0qK_wSDzF=m?yo^OB( z^x~71)sLmX%mQW@fX==h;_&~Eh~R2;VpgyZ@?RT)@~wq9UbY8kjvm0tL;G;?%t>7N z{TEc9`x$Y)y^;R7k#mhm>t{r2kP%6Jj7VgqhnNum82iB{h#(UZ`Cjb z+zm^jdLd(YAm)zjiMOMJkQE(_MdL!TX4+t6PZ)%Erwqp8NnuzTGX%?GpF!TVk=Sf| z5&3bESS_B%iloulmN5w{MHJS|9FL;RsrV=>9vf!AiudPC#iq% z+-gE=iwl(J2g+sTcjhx|*`0jmH}kuI3c7*{13{}E08#nH!}EETMWCZgK*#bx$Jc_+*+Ca8Kv#bP)tm)6 zE`Xd@xEIe*z%vx^3`I|Z>=Qs&j)9u4bAR^N-UWJ(wSng=i3A<7fvWhejeNJ6{mlWO zJt5pPnR}*!E_?#2F6X!SZadc$@%;|oscaP2GOvnQX0#que;(9Q&#Gfi4WM>6+S=Su zNP*JCYGBo~Y7}^p7rY!^FfUfUgk6o?+RJV{!>-EfR*8HLEYNJLQ-M%RzVcp8tf^P7=(>!E0W@16(0_3=IP(TG((Yyk?X*Y`9#VB?a!|t+UKkdiCmV>CE z3LI`ZjLOzZoM=6PQ|?nZ?LLjF_9|4jRpVOwH8{utCppp7-UJu9;3hXz1(wE3$EEzf zx>@0me+sIiv|ThysMYPB*s8SuDCNwlk-QvS-Y0i$wB%BohbHad?<`Io1z`E&V) zNrAVkQXX>Ye;4)2{=+S11?qJvuX1eo>A)}W;kZT0-}Ly~@;|{9MsEFu{6Tk4l>g3; z!&G~utzF8~Y(YJL@EhVz=Grn@cT>ts>{%TLPqy;7H$Ic{@^?};=$>-U%~nmheV?q5 z@{~T4RnfE9vfDqEWnbN5Pv6*4URqje|3rS(q;Kf0!1va*vtO1TkQX`-@QkMVt3Q9; z5$P50ESxPw#*|!kJi97N+yb+JIwj#>MhSC-m=&`)`z;~FqL23QxJzaTu_#@LmAa?w{Ftrx*5sv# z*HcsH>N8oD-E3_x+PEPvS)|&Qv8QjmW!u)R8&~BE8#nG?RJ?1)_BHw9)eZzYqm?;t zzR?ls6+R>SX>7V^wf2_Pm9nQz3_1bbG~{rz9!amRGCSe^~ivt-clc|M`u@jg;@Ckw@AB7% Rbs*3gO&B%sF;B!b{{a7ln+5;? 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 0000000000000000000000000000000000000000..db09b0519d789e5b301e1d5e59476b305980b03e GIT binary patch literal 1458 zcmV;j1x@;iP)Px&08mU+MF0Q*|NsB<_4x@hazNo0;rYL!fAkXd)6Pim4?Z$k*1~<>l$`2R3+hALS{Qvg&`uY0%5sm*5ivJRh{}PS=6N~>8j{g{r{~MA2Ba{Cnl>a7`|1FsRJD>kP zp#MUm|463)O{o7*tN%}_|52*{RIC4Iwf}Ir|8>0ocD(<7!2g26|A)l?jmiI)%>S|4 z|HI<{(&_)$?Em2K|K{`m5|sZFk^dBt|2n1rR0qg++{{jN=0t5F01MC9?@&p9z z1O@*E2mc2L><0<$2@CNH4DAdN{}B}K6c+9l80{Dt?inBMA0z)GBJLt9{3|Z+E-~;i zH1ISx@HadEJ3Rk9Jn%e1_d-GOK|}FFMe#*S`btUhNl*VzO!7=s|5Z}*QeFRDTk~6C z|6yJ8U19TKX#Z$t^k!`IY;*K;b@g?6_IiBve1G+Sh53b%|B;aQkgWf#tNg30`Kz({ zvA6%Xz52bw|HHugz{dN=&->5Q{L|I^)!qKx5UR*^V5jE%L5hsq@Xn1Y+pxY0 z7+KB5rBZntW>-dlVw{YqQMR0QMP_T~#zFTYQrx-%Ys^?jN=nvgGn$hjH6>|4E5=+& z@4C$r#T`pqX=o`)av<$$_cFy=HuOJF0B#NJ|1H^x|xM6t!EKa=ICmdBNL zXw6t#M=NTcFBBQHV3rviJg{$1bOcOLKPxYd**}7W{~^o$$4E8zE(hvUZ>M(k7DX? z0se6ES+CVf%Fzmba=C_RI>$i1XT=5G0j&&m4}XY&=1g_ubUr|^~R^Dg1(JVMhE z(?l@+aTW0cFJ`=pcrh*O<6}g8S}3*@yhT|VMtR(?^c#pbGYsPWA7eJ-V{YIqoB#j- M07*qoM6N<$f=wR)RR910 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..c7bda12b05b08cb877c144848003bcf7f4a82c4a GIT binary patch literal 6780 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 e{r!z=;Qs>fMW#q}v-^Dj0000