KFM 0.47j - dynamic generation the buttons "select disk"

git-svn-id: svn://kolibrios.org@4631 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Marat Zakiyanov (Mario79) 2014-03-12 02:26:12 +00:00
parent 9967176fae
commit 7bf3b20fcc
8 changed files with 257 additions and 502 deletions

View File

@ -1,267 +1,199 @@
;------------------------------------------------------------------------------
button: button:
mcall 17 mcall 17
;--------------------------------------
.1: .1:
cmp ah,101 cmp ah,101
je f_key_f1 je f_key_f1
cmp ah,102
je f_key_f2 cmp ah,102
cmp ah,103 je f_key_f2
je f_key_f3 ;sort_name
cmp ah,104 cmp ah,103
je f_key_f4 ;sort_type je f_key_f3 ;sort_name
cmp ah,105
je f_key_f5 ;sort_size cmp ah,104
cmp ah,106 je f_key_f4 ;sort_type
je f_key_f6 ;sort_date
cmp ah,107 cmp ah,105
je f_key_f7 ;create dir je f_key_f5 ;sort_size
cmp ah,108
je f_key_f8 ;delete_file cmp ah,106
cmp ah,112 je f_key_f6 ;sort_date
je f_key_f12
cmp ah,120 cmp ah,107
jne .121 je f_key_f7 ;create di
mov esi,read_folder_device_name.rd
call copy_folder_name cmp ah,108
jmp left_panel_read_folder je f_key_f8 ;delete_file
.121:
cmp ah,121 cmp ah,112
jne .122 je f_key_f12
mov esi,read_folder_device_name.fd ;--------------------------------------
call copy_folder_name .120:
jmp left_panel_read_folder cmp ah,120
.122: jb .140
cmp ah,122
jne .123 cmp ah,139
mov esi,read_folder_device_name.hd0 ja .140
call copy_folder_name
jmp left_panel_read_folder sub ah,120
.123: movzx eax,ah
cmp ah,123 imul eax,10
jne .124 add eax,retrieved_devices_table+1
mov esi,read_folder_device_name.hd1 mov esi,eax ; selected path
call copy_folder_name
jmp left_panel_read_folder cmp [select_panel_counter],0
.124: jne @f
cmp ah,124
jne .125 call copy_folder_name
mov esi,read_folder_device_name.hd2 jmp left_panel_read_folder
call copy_folder_name ;--------------------------------------
jmp left_panel_read_folder @@:
.125: call copy_folder_name_1
cmp ah,125 jmp right_panel_read_folder
jne .126 ;--------------------------------------
mov esi,read_folder_device_name.hd3 .140:
call copy_folder_name cmp ah,140
jmp left_panel_read_folder je draw_left_select_disk_menu
.126:
cmp ah,126 cmp ah,141
jne .127 je draw_right_select_disk_menu
mov esi,read_folder_device_name.cd0
call copy_folder_name cmp ah,142
jmp left_panel_read_folder je left_sort_name
.127:
cmp ah,127 cmp ah,143
jne .128 je left_sort_type
mov esi,read_folder_device_name.cd1
call copy_folder_name cmp ah,144
jmp left_panel_read_folder je left_sort_size
.128:
cmp ah,128 cmp ah,145
jne .129 je left_sort_date
mov esi,read_folder_device_name.cd2
call copy_folder_name cmp ah,146
jmp left_panel_read_folder je right_sort_name
.129:
cmp ah,129 cmp ah,147
jne .130 je right_sort_type
mov esi,read_folder_device_name.cd3
call copy_folder_name cmp ah,148
jmp left_panel_read_folder je right_sort_size
.130:
cmp ah,130 cmp ah,149
jne .131 je right_sort_date
mov esi,read_folder_device_name.rd
call copy_folder_name_1 cmp ah,150
jmp right_panel_read_folder je exit_dir_1
.131:
cmp ah,131 cmp ah,151
jne .132 je reload_dir
mov esi,read_folder_device_name.fd
call copy_folder_name_1 cmp ah,152
jmp right_panel_read_folder je create_directory
.132:
cmp ah,132 cmp ah,153
jne .133 je copy_file_f5
mov esi,read_folder_device_name.hd0
call copy_folder_name_1 cmp ah,154
jmp right_panel_read_folder je move_file_f6
.133:
cmp ah,133 cmp ah,157
jne .134 je delete_file
mov esi,read_folder_device_name.hd1
call copy_folder_name_1 cmp ah, 1
jmp right_panel_read_folder jne still
.134: ;--------------------------------------
cmp ah,134 .exit:
jne .135 mcall -1
mov esi,read_folder_device_name.hd2
call copy_folder_name_1
jmp right_panel_read_folder
.135:
cmp ah,135
jne .136
mov esi,read_folder_device_name.hd3
call copy_folder_name_1
jmp right_panel_read_folder
.136:
cmp ah,136
jne .137
mov esi,read_folder_device_name.cd0
call copy_folder_name_1
jmp right_panel_read_folder
.137:
cmp ah,137
jne .138
mov esi,read_folder_device_name.cd1
call copy_folder_name_1
jmp right_panel_read_folder
.138:
cmp ah,138
jne .139
mov esi,read_folder_device_name.cd2
call copy_folder_name_1
jmp right_panel_read_folder
.139:
cmp ah,139
jne .140
mov esi,read_folder_device_name.cd3
call copy_folder_name_1
jmp right_panel_read_folder
.140:
cmp ah,140
je draw_left_select_disk_menu
cmp ah,141
je draw_right_select_disk_menu
cmp ah,142
je left_sort_name
cmp ah,143
je left_sort_type
cmp ah,144
je left_sort_size
cmp ah,145
je left_sort_date
cmp ah,146
je right_sort_name
cmp ah,147
je right_sort_type
cmp ah,148
je right_sort_size
cmp ah,149
je right_sort_date
cmp ah,150
je exit_dir_1
cmp ah,151
je reload_dir
cmp ah,152
je create_directory
cmp ah,153
je copy_file_f5
cmp ah,154
je move_file_f6
cmp ah,157
je delete_file
cmp ah, 1
jne still
.exit:
mcall -1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
reload_dir: reload_dir:
cmp [select_panel_counter],0 cmp [select_panel_counter],0
jne @f jne @f
call proc_read_left_folder call proc_read_left_folder
; mov [left_panel_clear_all],1 ; mov [left_panel_clear_all],1
call draw_left_panel call draw_left_panel
jmp still jmp still
@@: @@:
call proc_read_right_folder call proc_read_right_folder
; mov [right_panel_clear_all],1 ; mov [right_panel_clear_all],1
call draw_right_panel call draw_right_panel
jmp still jmp still
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
reload_dir_all: reload_dir_all:
call proc_read_left_folder call proc_read_left_folder
call proc_read_right_folder call proc_read_right_folder
jmp red jmp red
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
exit_dir_1: exit_dir_1:
mov [exit_dir],1 mov [exit_dir],1
jmp key_28.1 jmp key_28.1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
left_panel_read_folder: left_panel_read_folder:
mov [left_start_draw_cursor_line],0 mov [left_start_draw_cursor_line],0
jmp proc_read_folder jmp proc_read_folder
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
right_panel_read_folder: right_panel_read_folder:
mov [right_start_draw_cursor_line],0 mov [right_start_draw_cursor_line],0
jmp proc_read_folder_1 jmp proc_read_folder_1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
left_sort_name: left_sort_name:
xor eax,eax xor eax,eax
cmp [left_sort_flag],eax cmp [left_sort_flag],eax
je still je still
mov [left_sort_flag],eax mov [left_sort_flag],eax
jmp left_sort_date.1 jmp left_sort_date.1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
left_sort_type: left_sort_type:
cmp [left_sort_flag],1 cmp [left_sort_flag],1
je still je still
mov [left_sort_flag],1 mov [left_sort_flag],1
jmp left_sort_date.1 jmp left_sort_date.1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
left_sort_size: left_sort_size:
cmp [left_sort_flag],2 cmp [left_sort_flag],2
je still je still
mov [left_sort_flag],2 mov [left_sort_flag],2
jmp left_sort_date.1 jmp left_sort_date.1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
left_sort_date: left_sort_date:
cmp [left_sort_flag],3 cmp [left_sort_flag],3
je still je still
mov [left_sort_flag],3 mov [left_sort_flag],3
.1: .1:
call draw_left_sort_button call draw_left_sort_button
call left_sort_files call left_sort_files
; mov [left_panel_clear_all],1 ; mov [left_panel_clear_all],1
call draw_left_panel call draw_left_panel
jmp still jmp still
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
right_sort_name: right_sort_name:
xor eax,eax xor eax,eax
cmp [right_sort_flag],eax cmp [right_sort_flag],eax
je still je still
mov [right_sort_flag],eax mov [right_sort_flag],eax
jmp right_sort_date.1 jmp right_sort_date.1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
right_sort_type: right_sort_type:
cmp [right_sort_flag],1 cmp [right_sort_flag],1
je still je still
mov [right_sort_flag],1 mov [right_sort_flag],1
jmp right_sort_date.1 jmp right_sort_date.1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
right_sort_size: right_sort_size:
cmp [right_sort_flag],2 cmp [right_sort_flag],2
je still je still
mov [right_sort_flag],2 mov [right_sort_flag],2
jmp right_sort_date.1 jmp right_sort_date.1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
right_sort_date: right_sort_date:
cmp [right_sort_flag],3 cmp [right_sort_flag],3
je still je still
mov [right_sort_flag],3 mov [right_sort_flag],3
.1: .1:
call draw_right_sort_button call draw_right_sort_button
call right_sort_files call right_sort_files
call draw_right_panel call draw_right_panel
jmp still jmp still
;--------------------------------------------------------------------- ;---------------------------------------------------------------------

View File

@ -84,28 +84,6 @@ scroll_pointer rb 1
scroll_pointer_1 rb 1 scroll_pointer_1 rb 1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
align 4 align 4
device_present:
.rd rb 1
.fd rb 1
.hd0 rb 1
.hd1 rb 1
.hd2 rb 1
.hd3 rb 1
.cd0 rb 1
.cd1 rb 1
.cd2 rb 1
.cd3 rb 1
;device_present_text_counter rd 1
device_present_buffer:
.fd rb 1
.hd_cd rb 1
.hd0_part rb 1
.hd1_part rb 1
.hd2_part rb 1
.hd3_part rb 1
rb 4
;---------------------------------------------------------------------
align 4
max_progress_value rd 1 max_progress_value rd 1
current_progress_value rd 1 current_progress_value rd 1
current_progress_value_1 rd 1 current_progress_value_1 rd 1

View File

@ -1,52 +1,3 @@
device_detect: ; f1811
mcall 18,11,1,device_present_buffer
mov [device_present.rd],1
cmp [device_present_buffer.fd],0
je @f
mov [device_present.fd],1
@@:
mov al,[device_present_buffer.hd_cd]
test al,10b
je @f
mov [device_present.cd3],1
jmp .ide2
@@:
test al,1b
je @f
mov [device_present.hd3],1
.ide2:
@@:
test al,1000b
je @f
mov [device_present.cd2],1
jmp .ide1
@@:
test al,100b
je @f
mov [device_present.hd2],1
.ide1:
@@:
test al,100000b
je @f
mov [device_present.cd1],1
jmp .ide0
@@:
test al,10000b
je @f
mov [device_present.hd1],1
.ide0:
@@:
test al,10000000b
je @f
mov [device_present.cd0],1
jmp .end
@@:
test al,1000000b
je @f
mov [device_present.hd0],1
.end:
@@:
ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
device_detect_f70: device_detect_f70:
mov ax,[select_disk_char] mov ax,[select_disk_char]

View File

@ -244,172 +244,8 @@ draw_right_select_disk_button:
mov edx,0x40000000+141 mov edx,0x40000000+141
jmp draw_left_select_disk_button.1 jmp draw_left_select_disk_button.1
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
draw_device_button: ;draw_ATAPI_tray_control:
mov edi,device_present ; ret
mov edx,120
mov bx,[left_panel_x.start_x]
mov cx,[left_panel_y.start_y]
mov eax,[left_panel_x]
mov [temp_panel_end],eax
mov [temp_counter],0
call .draw
mov edx,130
mov bx,[right_panel_x.start_x]
mov cx,[right_panel_y.start_y]
mov eax,[right_panel_x]
mov [temp_panel_end],eax
mov [temp_counter],1
;--------------------------------------
.draw:
shl ebx,16
mov bx,25
sub cx,30
shl ecx,16
mov cx,12
mov eax,8
mov esi,0xaa00
cmp [edi],byte 1
jne @f
mov ebp,read_folder_device_name.rd
call .draw_1
;--------------------------------------
@@:
inc edx
cmp [edi+1],byte 1
jne @f
mov ebp,read_folder_device_name.fd
call .draw_1
;--------------------------------------
@@:
inc edx
cmp [edi+2],byte 1
jne @f
mov ebp,read_folder_device_name.hd0
call .draw_1
;--------------------------------------
@@:
inc edx
cmp [edi+3],byte 1
jne @f
mov ebp,read_folder_device_name.hd1
call .draw_1
;--------------------------------------
@@:
inc edx
cmp [edi+4],byte 1
jne @f
mov ebp,read_folder_device_name.hd2
call .draw_1
;--------------------------------------
@@:
inc edx
cmp [edi+5],byte 1
jne @f
mov ebp,read_folder_device_name.hd3
call .draw_1
;--------------------------------------
@@:
inc edx
cmp [edi+6],byte 1
jne @f
mov ebp,read_folder_device_name.cd0
call .draw_1
;--------------------------------------
@@:
inc edx
cmp [edi+7],byte 1
jne @f
mov ebp,read_folder_device_name.cd1
call .draw_1
;--------------------------------------
@@:
inc edx
cmp [edi+8],byte 1
jne @f
mov ebp,read_folder_device_name.cd2
call .draw_1
;--------------------------------------
@@:
inc edx
cmp [edi+9],byte 1
jne @f
mov ebp,read_folder_device_name.cd3
call .draw_1
;--------------------------------------
@@:
push ebx
mov ebx,[temp_panel_end]
mov ax,bx
shr ebx,16
add eax,ebx
pop ebx
ror ebx,16
sub ax,bx
rol ebx,16
mov bx,ax
add ecx,1
add ebx,1
mcall 13,,,0xcccccc
cmp [temp_counter],0
je @f
mov ax,bx
shr ebx,16
add bx,ax
mov eax,[window_width]
sub eax,4
sub ax,bx
cmp eax,0
jbe @f
shl ebx,16
mov bx,ax
mov ax,[right_panel_y.size_y]
add ax,[right_panel_y.start_y]
shr ecx,16
sub ax,cx
shl ecx,16
mov cx,ax
mcall 13,,,0xcccccc
ret
;--------------------------------------
.draw_1:
mcall
pusha
mov eax,ebx
inc eax
shl eax,16
add ebx,eax
mov bx,1
inc ecx
mcall 13,,,0xcccccc
popa
pusha
mov edx,ebp
shr ecx,16
mov bx,cx
add ebx,2 shl 16 +3
mcall 4,,0x90000000
sub ebx,1 shl 16 + 1
mcall ,,0x90ffffff
popa
add ebx,27 shl 16
;--------------------------------------
@@:
ret
;------------------------------------------------------------------------------
draw_ATAPI_tray_control:
ret
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
calc_max_panel_line: calc_max_panel_line:
xor eax,eax xor eax,eax

View File

@ -0,0 +1,77 @@
;------------------------------------------------------------------------------
draw_device_button:
call device_detect_f70
mov edi,[retrieved_devices_table_counter]
mov edx,120
mov bx,[left_panel_x.start_x]
mov cx,[left_panel_y.start_y]
shl ebx,16
; mov bx,50 ; button size X
sub cx,30
shl ecx,16
mov cx,12
mov esi,0xaa00
mov ebp,retrieved_devices_table
;--------------------------------------
.loop:
push esi
mov esi,ebp
cld
@@:
lodsb
test al,al
jnz @b
sub esi,ebp
lea esi,[esi*3]
shl esi,1
mov bx,si
pop esi
mcall 8
pusha
mov eax,ebx
inc eax
shl eax,16
add ebx,eax
mov bx,2
inc ecx
mcall 13,,,0xcccccc
popa
pusha
mov edx,ebp
inc edx
shr ecx,16
mov bx,cx
add ebx,4 shl 16 +3
mcall 4,,0x90000000
sub ebx,1 shl 16 + 1
mcall ,,0x90ffffff
popa
mov eax,ebx
shl eax,16
add ebx,eax
add ebx,3 shl 16
inc edx
add ebp,10
dec edi
jnz .loop
xor eax,eax
mov ax,[right_panel_x.start_x]
add ax,[right_panel_x.size_x]
ror ebx,16
sub ax,bx
rol ebx,16
inc ax
mov bx,ax
add ecx,1
add ebx,1
mcall 13,,,0xcccccc
ret
;------------------------------------------------------------------------------

View File

@ -1,6 +1,6 @@
;***************************************************************************** ;*****************************************************************************
; KFM - Kolibri File Manager ; KFM - Kolibri File Manager
; Copyright (c) 2006 - 2013, Marat Zakiyanov aka Mario79, aka Mario ; Copyright (c) 2006 - 2014, Marat Zakiyanov aka Mario79, aka Mario
; All rights reserved. ; All rights reserved.
; ;
; Redistribution and use in source and binary forms, with or without ; Redistribution and use in source and binary forms, with or without
@ -25,7 +25,7 @@
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;***************************************************************************** ;*****************************************************************************
; KFM v0.47i 24/12/2013 ; KFM v0.47j 12/03/2014
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
use32 use32
org 0x0 org 0x0
@ -83,7 +83,6 @@ START:
call load_buttons_and_convert_to_img call load_buttons_and_convert_to_img
call load_initiation_file call load_initiation_file
call add_memory_for_folders call add_memory_for_folders
call device_detect
call device_detect_f70 call device_detect_f70
call select_starting_directories call select_starting_directories
mcall 66, 1, 1 mcall 66, 1, 1
@ -243,7 +242,7 @@ draw_window:
call draw_right_sort_button call draw_right_sort_button
call draw_menu_bar call draw_menu_bar
call draw_buttons_panel call draw_buttons_panel
call draw_ATAPI_tray_control ; call draw_ATAPI_tray_control
; mcall 47,0x80000,[left_scroll_compens],<300, 5>,0xffffff ; mcall 47,0x80000,[left_scroll_compens],<300, 5>,0xffffff
; call mouse.draw_data ; call mouse.draw_data
@ -460,6 +459,8 @@ include 'openfile.inc'
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
include 'draw.inc' include 'draw.inc'
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
include 'drw_dbut.inc'
;---------------------------------------------------------------------
include 'menu_bar.inc' include 'menu_bar.inc'
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
include 'menu_drv.inc' include 'menu_drv.inc'

View File

@ -31,7 +31,11 @@ draw_menu_bar:
mov bx,[right_panel_x.start_x] mov bx,[right_panel_x.start_x]
sub bx,2 sub bx,2
rol ebx,16 rol ebx,16
mcall push ecx
sub ecx,13
add ecx,13 shl 16
mcall ; middle vertical line
pop ecx
pop ebx pop ebx
mov ax,cx mov ax,cx
dec ax dec ax

View File

@ -1,4 +1,4 @@
header_text db 'Kolibri File Manager v0.47i 24/12/2013',0 header_text db 'Kolibri File Manager v0.47j 12/03/2014',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
fbutton_name: fbutton_name:
.f1 db '1 Help',0 .f1 db '1 Help',0
@ -56,30 +56,6 @@ fbutton_name_alt:
.f11 db '11',0 .f11 db '11',0
.f12 db '12',0 .f12 db '12',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
;device_present_name:
; .rd db 'rd ',0
; .fd db 'fd ',0
; .hd0 db 'hd0',0
; .hd1 db 'hd1',0
; .hd2 db 'hd2',0
; .hd3 db 'hd3',0
; .cd0 db 'cd0',0
; .cd1 db 'cd1',0
; .cd2 db 'cd2',0
; .cd3 db 'cd3',0
;---------------------------------------------------------------------
read_folder_device_name:
.rd db 'rd',0
.fd db 'fd',0
.hd0 db 'hd0',0
.hd1 db 'hd1',0
.hd2 db 'hd2',0
.hd3 db 'hd3',0
.cd0 db 'cd0',0
.cd1 db 'cd1',0
.cd2 db 'cd2',0
.cd3 db 'cd3',0
;---------------------------------------------------------------------
select_disk_char: select_disk_char:
db '/',0 db '/',0
;--------------------------------------------------------------------- ;---------------------------------------------------------------------