From 38098ecc9f1831cc10985f410674e0c8feeb1755 Mon Sep 17 00:00:00 2001 From: "Marat Zakiyanov (Mario79)" Date: Thu, 29 Oct 2009 13:22:12 +0000 Subject: [PATCH] OpenDialog: 1) use EditBox to display and enter the path, switch by use Tab key 2) fixed sorting of files 3) Icons by Leency git-svn-id: svn://kolibrios.org@1244 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../libraries/box_lib/asm/trunk/OpenDial.asm | 156 +++++++++++++++++- .../libraries/box_lib/asm/trunk/build.bat | 4 +- .../libraries/box_lib/asm/trunk/build.sh | 2 +- .../libraries/box_lib/asm/trunk/icons.ini | 10 ++ .../libraries/box_lib/asm/trunk/z_icons.png | Bin 6780 -> 5069 bytes 5 files changed, 163 insertions(+), 9 deletions(-) diff --git a/programs/develop/libraries/box_lib/asm/trunk/OpenDial.asm b/programs/develop/libraries/box_lib/asm/trunk/OpenDial.asm index 275dcb33a2..4ef90a3538 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/OpenDial.asm +++ b/programs/develop/libraries/box_lib/asm/trunk/OpenDial.asm @@ -40,6 +40,7 @@ dd path include '../../../../../macros.inc' include '../../load_lib.mac' +include 'editbox_ex.mac' ;include 'macros.inc' ;include 'load_lib.mac' @use_library @@ -119,6 +120,9 @@ control_minimal_window_size: ret ;--------------------------------------------------------------------- key: + mov al,[focus_pointer] + test al,al + jne key_ASCII mcall 2 xor ebx,ebx cmp [extended_key],1 @@ -172,6 +176,8 @@ key: je NumPad_invert_Up cmp ah,158 je symbol_a_up + cmp ah,15 ;143 ; Tab + je change_focus_area jmp still .extended_key: mov [extended_key],0 @@ -263,6 +269,62 @@ key: @@: ret ;--------------------------------------------------------------------- +change_focus_area: + mov al,[focus_pointer] + inc al + and al,1 + mov [focus_pointer],al +.1: + mov edi,edit1 + test al,al + jne @f + mov [file_browser_data_1.select_panel_counter],1 + and [edi+44],dword 0xFFFFFFFD ; ed_focus + mov [edi+12],dword 0xffffff; color white + call draw_draw_file_browser1 + mcall 66, 1, 1 + jmp still +@@: + mov [file_browser_data_1.select_panel_counter],0 + or [edi+44],dword ed_focus + mov [edi+12],dword 0xffffb0 ; color yellow + call draw_draw_file_browser1 + mcall 66, 1, 0 + jmp still +;--------------------------------------------------------------------- +key_ASCII: + mcall 2 + cmp ah,9 + je change_focus_area + cmp ah,13 + je .load_dir + cmp ah,27 + je button.exit + push dword name_editboxes + call [edit_box_key] + jmp still +.load_dir: + mov [file_browser_data_1.select_panel_counter],1 + xor eax,eax + mov [focus_pointer],al + mcall 66, 1, 1 + + xor eax,eax + mov esi,dir_pach + cld +@@: + lodsb + test al,al + jne @r + sub esi,2 + cmp [esi],byte '/' + jne @f + xor eax,eax + mov [esi],al +@@: + call load_next_dir.1 + jmp still +;--------------------------------------------------------------------- select_disk: call check_alt .1: @@ -564,16 +626,29 @@ mouse: cmp [scroll_bar_data_vertical.delta2],0 jne .scrollbar + mov [file_browser_data_1.select_flag],0 + push dword file_browser_data_1 call [FileBrowser_mouse] mov eax,file_browser_data_1.mouse_keys_delta cmp [eax],dword 3 - jne .scrollbar + jne .check_focus ;.scrollbar mov [eax],dword 0 call load_next_dir jmp still - +;--------------------------------------------------- +.check_focus: + mov ebx,[file_browser_data_1.select_flag] + test ebx,ebx + jz .scrollbar ;@f + mov al,[focus_pointer] + test al,al + jz .scrollbar + xor eax,eax + mov [focus_pointer],al + jmp change_focus_area.1 +;--------------------------------------------------- .scrollbar: mov eax,[scroll_bar_data_vertical.max_area] cmp eax,[scroll_bar_data_vertical.cur_area] @@ -623,12 +698,32 @@ mouse: call [menu_bar_mouse] cmp [menu_data_3.click],dword 1 - jne .check_scroll_event + jne .check_editboxes cmp [menu_data_3.cursor_out],dword 0 jne analyse_out_menu_3 jmp .menu_bar_1 ;--------------------------------------------------- +.check_editboxes: + mov eax,[edit1+44] + and eax,10b + push dword name_editboxes + call [edit_box_mouse] + mov ebx,[edit1+44] + and ebx,10b + cmp eax,ebx + je .check_scroll_event + mov al,[focus_pointer] + test al,al + jnz .check_scroll_event + xor eax,eax + test ebx,10b + jz @f + inc eax +@@: + mov [focus_pointer],al + jmp change_focus_area.1 +;--------------------------------------------------- .check_scroll_event: mov eax,[mouse_position] xor ebx,ebx @@ -818,7 +913,10 @@ load_next_dir: mov ecx,[scroll_bar_data_vertical.y] inc ecx mcall 13,,,0xcccccc - + mov edi,edit1 + xor eax,eax + mov [edi+44],eax + mov [edi+12],dword 0xffffff ; color white call draw_draw_file_browser1 ret .exit_dir: @@ -1199,6 +1297,32 @@ draw_for_fs_errors: ret ;--------------------------------------------------------------------- draw_dir_pach: + mov esi,dir_pach + cld +@@: + lodsb + test al,al + jne @r + sub esi,dir_pach + mov eax,esi + dec eax + mov edi, edit1 + mov [edi+48], eax ;ed_size + mov [edi+52], eax ;ed_pos + + mov eax,[file_browser_data_1.x] + mov ebx,eax + shr ebx,16 + and eax,0xffff + + mov [edi],eax + mov [edi+4],ebx + + push dword name_editboxes + call [edit_box_draw] + ret + +draw_dir_pach_1: mov ebx,[file_browser_data_1.x] mcall 13,,<7,15>,0xffffb0 mov bx,10 @@ -1427,10 +1551,18 @@ load_icons: 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 + mov ebx,[eax+4] ; number of files add eax,32 + cmp [eax+40],word '..' + jne @f + cmp [eax+40+2],byte 0 + jne @f + dec ebx + add eax,304 +@@: + push dword [sort_type] ; sort mode + push ebx ; number of files push eax ; data files call [sort_dir] ret @@ -2176,6 +2308,8 @@ error_window db 0 filter_flag db 1 +focus_pointer db 0 +;--------------------------------------------------------------------- start_pach: db '/rd/1',0 @@ -2448,6 +2582,16 @@ file_browser_data_1: .mouse_pos_old dd 0 ;+196 .marked_counter dd 0 ;+200 ;--------------------------------------------------------------------- +; for EDITBOX +align 4 +name_editboxes: +edit1 edit_box 200,10,7,0xffffff,0xbbddff,0,0,0,4095,dir_pach,mouse_dd,,0 +name_editboxes_end: + +;mouse_flag: dd 0x0 + +mouse_dd rd 1 +;--------------------------------------------------------------------- ;--------------------------------------------------------------------- features_table: .type_table: diff --git a/programs/develop/libraries/box_lib/asm/trunk/build.bat b/programs/develop/libraries/box_lib/asm/trunk/build.bat index 5c249cb5c9..1f74d2a24a 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/build.bat +++ b/programs/develop/libraries/box_lib/asm/trunk/build.bat @@ -4,8 +4,8 @@ if not exist bin mkdir bin @fasm.exe -m 16384 ctrldemo.asm bin\ctrldemo.kex @kpack bin\ctrldemo.kex -@fasm.exe -m 16384 OpenDial.asm bin\OpenDial.kex -@kpack bin\OpenDial.kex +@fasm.exe -m 16384 OpenDial.asm bin\OpenDial +@kpack bin\OpenDial @copy reload_16x16_8b.png bin\reload_16x16_8b.png @copy cnv_png.obj bin\cnv_png.obj diff --git a/programs/develop/libraries/box_lib/asm/trunk/build.sh b/programs/develop/libraries/box_lib/asm/trunk/build.sh index 4d6645044c..ffea4da9e7 100755 --- a/programs/develop/libraries/box_lib/asm/trunk/build.sh +++ b/programs/develop/libraries/box_lib/asm/trunk/build.sh @@ -6,7 +6,7 @@ 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 OpenDial.asm ./bin/OpenDial fasm -m 16384 editbox_ex.asm ./bin/editbox_ex.kex rm -f lang.inc cp reload_16x16_8b.png ./bin/reload_16x16_8b.png diff --git a/programs/develop/libraries/box_lib/asm/trunk/icons.ini b/programs/develop/libraries/box_lib/asm/trunk/icons.ini index 454649a180..e1876afbe6 100644 --- a/programs/develop/libraries/box_lib/asm/trunk/icons.ini +++ b/programs/develop/libraries/box_lib/asm/trunk/icons.ini @@ -9,6 +9,7 @@ doc=3 exc=3 wtx=3 inf=3 +xml=3 jpg=6 jpe=6 jpeg=6 @@ -84,6 +85,9 @@ mpe=11 mpeg=11 flv=11 3gp=11 +mkv=11 +wmv=11 +mov=11 img=5 ima=5 imz=5 @@ -122,7 +126,13 @@ chr=12 mt=12 htm=13 html=13 +mht=13 lif=14 3ds=15 kex=16 skn=17 +obj=18 +dll=18 +ocx=18 +so=18 +drv=18 diff --git a/programs/develop/libraries/box_lib/asm/trunk/z_icons.png b/programs/develop/libraries/box_lib/asm/trunk/z_icons.png index c7bda12b05b08cb877c144848003bcf7f4a82c4a..e4f648810bdabf880313a55a98ec4e7f88a45932 100644 GIT binary patch literal 5069 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�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 e{r!z=;Qs>fMW#q}v-^Dj0000