1,6 → 1,6 |
;***************************************************************************** |
; File Browser control for Kolibri OS |
; Copyright (c) 2009, Marat Zakiyanov aka Mario79, aka Mario |
; Copyright (c) 2009-2013, Marat Zakiyanov aka Mario79, aka Mario |
; All rights reserved. |
; |
; Redistribution and use in source and binary forms, with or without |
87,7 → 87,8 |
fb_start_draw_cursor_line_2 equ word [edi+166] ;dword |
fb_all_redraw equ dword [edi+168] ;dword |
fb_selected_BDVK_adress equ dword [edi+172] ;dword |
fb_key_action equ dword [edi+176] ;dword |
fb_key_action equ word [edi+176] ;word |
fb_key_action_num equ word [edi+178] ;word |
fb_name_temp_area equ dword [edi+180] ;dword |
fb_max_name_temp_size equ dword [edi+184] ;dword |
fb_display_name_max_length equ dword [edi+188] ;dword |
94,6 → 95,7 |
fb_draw_panel_selection_flag equ dword [edi+192] ;dword |
fb_mouse_pos_old equ dword [edi+196] ;dword |
fb_marked_counter equ dword [edi+200] ;dword |
fb_keymap_pointer equ dword [edi+204] ;dword |
;--------------------------------------------------------------------- |
fb_draw_panel: |
pusha |
182,7 → 184,7 |
mov fb_start_draw_cursor_line,cx |
mov ebx,fb_size_x |
add cx,fb_start_y |
.1: |
;.1: |
shl ecx,16 |
mov cx,fb_line_size_y |
mov edx,fb_select_color |
1134,6 → 1136,7 |
; 9 - Mark All |
; 10 - Unmark All |
; 11 - Invert Mark |
; 12 - Search with key |
;***************************************************************************** |
;***************************************************************************** |
fb_key: |
1140,7 → 1143,8 |
pusha |
mov edi,dword [esp+36] |
;------------------------------------------------------- |
mov eax,fb_key_action |
xor eax,eax |
mov ax,fb_key_action |
shl eax,2 |
add eax,dword fb_key_table |
cmp eax,fb_key_table.end |
1396,6 → 1400,115 |
mov fb_temp_counter,2 |
jmp .mark_all_1 |
;------------------------------------------------------- |
; * bit 0 (mask 1): left Shift is pressed |
; * bit 1 (mask 2): right Shift is pressed |
; * bit 2 (mask 4): left Ctrl is pressed |
; * bit 3 (mask 8): right Ctrl is pressed |
; * bit 4 (mask 0x10): left Alt is pressed |
; * bit 5 (mask 0x20): right Alt is pressed |
; * bit 6 (mask 0x40): CapsLock is on |
; * bit 7 (mask 0x80): NumLock is on |
; * bit 8 (mask 0x100): ScrollLock is on |
; * bit 9 (mask 0x200): left Win is pressed |
; * bit 10 (mask 0x400): right Win is pressed |
;------------------------------------------------------- |
.search_with_key: |
mcall 66,3 |
test al,11b |
jnz .shift_layout |
|
test al,110000b |
jnz .alt_layout |
|
mov ecx,1 ; Normal |
jmp .get_keyboard_layout |
|
.shift_layout: |
mov ecx,2 ; Shift |
jmp .get_keyboard_layout |
|
.alt_layout: |
mov ecx,3 ; Alt |
.get_keyboard_layout: |
mcall 26,2,,fb_keymap_pointer |
xor eax,eax |
mov ax,fb_key_action_num |
add eax,fb_keymap_pointer |
mov al,[eax] |
and eax,0xff |
call fb_char_todown |
mov ah,al |
xor esi,esi |
push eax |
movzx eax,fb_start_draw_cursor_line |
movzx ebx,fb_line_size_y |
xor edx,edx |
div ebx |
add si,ax ;fb_start_draw_cursor_line |
pop eax |
add esi,fb_start_draw_line |
mov ecx,esi |
xor ebx,ebx |
inc ecx |
cmp ecx,fb_folder_block |
ja .reset_data |
|
.first_entry: |
imul esi,304 |
add esi,fb_folder_data |
add esi,40+32 |
@@: |
add esi,304 |
mov al,[esi] |
call fb_char_todown |
cmp ah,al |
je .match |
|
inc ecx |
cmp ecx,fb_folder_block |
jb @b |
|
.reset_data: |
xor esi,esi |
|
dec esi |
cmp ebx,2 |
jae .exit_fb |
|
xor ecx,ecx |
inc ebx |
jmp .first_entry |
|
.match: |
mov fb_start_draw_line,ecx |
mov eax,fb_folder_block |
mov ebx,fb_max_panel_line |
sub eax,ebx |
jbe .1 |
|
cmp eax,ecx |
jbe @f |
|
xor ecx,ecx |
jmp .2 |
@@: |
mov fb_start_draw_line,eax |
mov eax,fb_folder_block |
sub eax,ecx |
|
mov ecx,fb_max_panel_line |
sub ecx,eax |
jmp .2 |
|
.1: |
xor eax,eax |
mov fb_start_draw_line,eax |
.2: |
movzx eax,fb_line_size_y |
imul ecx,eax |
mov fb_start_draw_cursor_line,cx |
call fb_draw_panel_2 |
;------------------------------------------------------- |
.exit_fb: |
call fb_prepare_selected_BDVK_adress |
file_browser_exit |
1413,6 → 1526,7 |
dd fb_key.mark_all ; 9 |
dd fb_key.unmark_all ; 10 |
dd fb_key.invert_mark ; 11 |
dd fb_key.search_with_key ; 12 |
.end: |
dd 0 |
;------------------------------------------------------- |
1419,13 → 1533,13 |
fb_draw_panel_3: |
mov eax,2 |
mov fb_all_redraw,eax |
jmp @f |
jmp fb_draw_panel_2.1 |
fb_draw_panel_2: |
xor eax,eax |
inc eax |
mov fb_all_redraw,eax |
call fb_draw_panel_selection |
@@: |
.1: |
call fb_draw_folder_data |
xor eax,eax |
mov fb_all_redraw,eax |