Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 1218 → Rev 1219

/programs/develop/libraries/box_lib/asm/trunk/cnv_bmp.obj
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/programs/develop/libraries/box_lib/asm/trunk/reload_16x16_8b.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/programs/develop/libraries/box_lib/asm/trunk/d_button.mac
File deleted
/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 <organization> 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 <copyright holder> 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 '<DIR> '
;---------------------------------------------------------------------
.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:
 
/programs/develop/libraries/box_lib/asm/trunk/build.bat
1,10 → 1,17
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
 
/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
 
 
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/programs/develop/libraries/box_lib/asm/trunk/cnv_png.obj
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/develop/libraries/box_lib/asm/trunk/ctrldemo.asm
1,6 → 1,6
;
;*****************************************************************************
; 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
14,7 → 14,7
; 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 <copyright holder> 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 <Lrz>
;---------------------------------------------------------------------
 
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,70 → 55,26
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
 
; 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
jnz 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
 
mov [fileinfo+0],dword 0
135,7 → 96,7
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
;---------------------------------------------------------------------
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
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
329,6 → 331,11
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
; of moving of a "runner", for acceleration of output -
365,19 → 372,35
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
;---------------------------------------------------------------------
openfile_pach:
rb 4096
;---------------------------------------------------------------------
file_name:
library_path:
rb 4096
;---------------------------------------------------------------------
plugin_pach:
rb 4096
;---------------------------------------------------------------------
file_info:
rb 40
;---------------------------------------------------------------------
procinfo:
rb 1024
;---------------------------------------------------------------------
I_END:
 
/programs/develop/libraries/box_lib/asm/trunk/data.inc
1,7 → 1,6
;---------------------------------------------------------------------
;--- ÄÀÍÍÛÅ ÏÐÎÃÐÀÌÌÛ ----------------------------------------------
;---------------------------------------------------------------------
@use_library
header_1 db 'Box_lib Control Demo by Mario79',0
 
ok_btn db 'Ok',0
8,12 → 7,18
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
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
 
;---------------------------------------------------------------------
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
.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
.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_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
.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
.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
.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
.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
;---------------------------------------------------------------------
/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
/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 <organization> 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 <copyright holder> 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
}
;*****************************************************************************
/programs/develop/libraries/box_lib/asm/trunk/reload_16x16_8b.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/develop/libraries/box_lib/asm/trunk/z_icons.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property