Compare commits

...
Author SHA1 Message Date
IgorA 37a992d89e add documentation for the FileBrowser
Test PR / Build (es_ES) (pull_request) Successful in 2m40s
Test PR / Build (en_US) (pull_request) Successful in 3m1s
Test PR / Build (ru_RU) (pull_request) Successful in 3m5s
2026-10-03 23:41:16 +03:00
IgorA 7938111874 add sort buttons
Test PR / Build (es_ES) (pull_request) Successful in 2m23s
Test PR / Build (en_US) (pull_request) Successful in 2m28s
Test PR / Build (ru_RU) (pull_request) Successful in 2m34s
2026-09-07 23:44:08 +03:00
IgorA 9d77bc6ff2 fix the background of the Open|Save buttons
Test PR / Build (en_US) (pull_request) Successful in 3m6s
Test PR / Build (ru_RU) (pull_request) Successful in 2m24s
Test PR / Build (es_ES) (pull_request) Successful in 2m21s
2026-08-25 23:00:12 +03:00
IgorA d91e65a1d5 fix tupfile.lua
Test PR / Build (en_US) (pull_request) Successful in 1m59s
Test PR / Build (es_ES) (pull_request) Successful in 2m11s
Test PR / Build (ru_RU) (pull_request) Successful in 2m14s
2026-08-25 00:11:19 +03:00
IgorA 4739ef8492 add an informational message if the extension is incorrect
Test PR / Build (en_US) (pull_request) Successful in 2m57s
Test PR / Build (es_ES) (pull_request) Successful in 3m1s
Test PR / Build (ru_RU) (pull_request) Successful in 3m1s
2026-08-21 00:49:55 +03:00
IgorA 607fa4b6b7 new constants
Test PR / Build (es_ES) (pull_request) Successful in 2m19s
Test PR / Build (ru_RU) (pull_request) Successful in 2m24s
Test PR / Build (en_US) (pull_request) Successful in 2m26s
2026-08-17 18:49:46 +03:00
IgorA 8a6e499532 opening a dialog box when icons are not found
Test PR / Build (es_ES) (pull_request) Failing after 1m17s
Test PR / Build (en_US) (pull_request) Failing after 1m17s
Test PR / Build (ru_RU) (pull_request) Failing after 1m20s
2026-08-17 09:14:37 +00:00
IgorA 13962e5e48 load icons from shared memory 2026-08-17 09:14:37 +00:00
IgorA 80531323c3 savedialog: add empty filter test 2026-08-17 09:14:37 +00:00
IgorA ea69875183 use event masks, small fixes 2026-08-17 09:14:37 +00:00
IgorA d19e9e903e the save dialog cannot be closed if an incorrect file extension is entered 2026-08-17 09:14:37 +00:00
5 changed files with 806 additions and 645 deletions

No files matched your search

@@ -23,7 +23,7 @@
<li><a href="scrollbar\scrollbar.htm">scrollbar</a></li>
<li>d_button</li>
<li>menubar</li>
<li>filebrowser</li>
<li><a href="filebrowser\filebrowser.htm">filebrowser</a></li>
<li><a href="pathshow\pathshow.htm">pathshow</a></li>
<li><a href="tree_list\info_treelist.htm">tree_list</a></li>
<li><a href="t_edit\t_edit.htm">text_editor</a></li>
@@ -41,6 +41,6 @@
<p>@Siemargl</p>
<hr>
<p>─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 26.08.11.</p>
<p>─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 03.10.26.</p>
</body>
</html>
@@ -0,0 +1,165 @@
<html>
<head>
<title>¤ыхьхэЄ File Browser</title>
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
<link href="../style.css" type=text/css rel=stylesheet>
</head>
<body>
<p><a href="../box_lib.htm">═р уыртэє■ &uarr;</a></p>
<h1>╬уыртыхэшх</h1>
<p><a href="#vveden">┬тхфхэшх</a></p>
<p><a href="#funct">╘єэъЎшш</a></p>
<ul>
<li><a href="#fun_fb_draw">FileBrowser_draw</a></li>
<li><a href="#fun_fb_mouse">FileBrowser_mouse</a></li>
<li><a href="#fun_fb_key">FileBrowser_key</a></li>
<li><a href="#version">version_FileBrowser</a></li>
</ul>
<p><a href="#struc_fb">╤ЄЁєъЄєЁр FileBrowser</a></p>
<h1><a name="vveden">┬тхфхэшх</a></h1>
<p>FileBrowser, шёяюы№чєхЄё  яЁш т√сюЁх Їрщыют т яЁюуЁрььрї: OpenDialog, Kfm.</p>
<h1><a name="funct">╘єэъЎшш</a></h1>
<h2><a name="fun_fb_draw">FileBrowser_draw</a></h2>
<p>╨шёютрэшх FileBrowser, ярЁрьхЄЁ√ яхЁхЁшёютъш чрфр■Єё  т яхЁхьхээющ <i>fb_all_redraw</i>.</p>
<h2><a name="fun_fb_mouse">FileBrowser_mouse</a></h2>
<p>▌Єр ЇєэъЎш  фюыцэр т√ч√трЄё  яЁш фтшцхэшш ь√°хщ т FileBrowser.</p>
<h2><a name="fun_fb_key">FileBrowser_key</a></h2>
<p>┬√яюыэхэшх фхщёЄтшщ яю эрцрЄш■ ъыртш°. ╧хЁхф т√чютюь ЇєэъЎшш т яхЁхьхээющ <i>fb_key_action</i> фюыцэю яхЁхфртрЄ№ё  юфэю шч ёыхфє■∙шї чэрўхэшщ:</p>
<pre>; 1 - arrow down
; 2 - arrow up
; 3 - PageDown
; 4 - PageUp
; 5 - Home
; 6 - End
; 7 - Enter
; 8 - Insert (т√фхыхэшх Їрщыр)
; 9 - Ctrl+A т√фхышЄ№ тёх Їрщы√
; 10 - юЄьхэшЄ№ т√фхыхэшх Їрщыют
; 11 - юсЁрЄшЄ№ т√фхыхэшх Їрщыют
; 12 - яюшёъ яю сєътх</pre>
<h2><a name="version">version_FileBrowser</a></h2>
<p>┬хЁёш  ¤ыхьхэЄр</p>
<h1><a name="struc_fb">╤ЄЁєъЄєЁр FileBrowser</a></h1>
<p>╠ръЁюёр фы  ёючфрэш  ёЄЁєъЄєЁ√ FileBrowser эхЄ. ╧юЄюьє фрээ√х фы  эхх чрфр■Єё  тЁєўэє■.
─рээ√х фы  ёЄЁєъЄєЁ√ FileBrowser:</p>
<pre>fb_type equ dword [edi]
fb_size_x equ [edi+4] ;word
fb_start_x equ [edi+6] ;word
fb_size_y equ [edi+8] ;word
fb_start_y equ [edi+10] ;word
fb_icon_size_y equ word [edi+12]
fb_icon_size_x equ word [edi+14]
fb_line_size_x equ word [edi+16]
fb_line_size_y equ word [edi+18]
fb_type_size_x equ word [edi+20]
fb_size_size_x equ word [edi+22]
fb_date_size_x equ word [edi+24]
fb_attributes_size_x equ word [edi+26]
fb_icon_assoc_area equ dword [edi+28]
fb_icon_raw_area equ dword [edi+32]
fb_resolution_raw equ dword [edi+36]
fb_palette_raw equ dword [edi+40]
fb_directory_path_area equ dword [edi+44]
fb_file_name_area equ dword [edi+48]
fb_select_flag equ dword [edi+52]
fb_background_color equ dword [edi+56]
fb_select_color equ dword [edi+60]
fb_seclect_text_color equ dword [edi+64]
fb_text_color equ dword [edi+68]
fb_reduct_text_color equ dword [edi+72]
fb_marked_text_color equ dword [edi+76]
fb_max_panel_line equ dword [edi+80]
fb_select_panel_counter equ dword [edi+84]
fb_folder_block equ dword [edi+88]
fb_start_draw_line equ dword [edi+92]
fb_start_draw_cursor_line equ word [edi+96]
fb_folder_data equ dword [edi+98]
fb_temp_counter equ dword [edi+102]
fb_file_name_length equ dword [edi+106]
fb_marked_file equ dword [edi+110]
fb_extension_size equ dword [edi+114]
fb_extension_start equ dword [edi+118]
fb_type_table equ dword [edi+122]
fb_ini_file_start equ dword [edi+126]
fb_ini_file_end equ dword [edi+130]
fb_draw_scroll_bar equ dword [edi+134]
fb_font_size_y equ word [edi+138]
fb_font_size_x equ word [edi+140]
fb_mouse_keys equ dword [edi+142]
fb_mouse_keys_old equ dword [edi+146]
fb_mouse_pos equ dword [edi+150]
fb_mouse_keys_delta equ dword [edi+154]
fb_mouse_key_delay equ dword [edi+158]
fb_mouse_keys_tick equ dword [edi+162]
fb_start_draw_cursor_line_2 equ word [edi+166]
fb_all_redraw equ dword [edi+168]
fb_selected_BDVK_adress equ dword [edi+172]
fb_key_action equ word [edi+176]
fb_key_action_num equ word [edi+178]
fb_name_temp_area equ dword [edi+180]
fb_max_name_temp_size equ dword [edi+184]
fb_display_name_max_length equ dword [edi+188]
fb_draw_panel_selection_flag equ dword [edi+192]
fb_mouse_pos_old equ dword [edi+196]
fb_marked_counter equ dword [edi+200]
fb_keymap_pointer equ dword [edi+204]</pre>
<p><b>fb_type</b> - Єшя ¤ыхьхэЄр, хёыш:</p>
<ul>
<li>0 - юЄъЁ√Є№,</li>
<li>1 - ёюїЁрэшЄ№,</li>
<li>2 - т√сЁрЄ№ фшЁхъЄюЁш■.</li>
</ul>
<p><b>fb_size_x</b> - °шЁшэр ¤ыхьхэЄр (схч ёъЁюыышэур).</p>
<p><b>fb_start_x</b> - юЄёЄєя ёыхтр (яюыюцхэшх яю x).</p>
<p><b>fb_size_y</b> - т√ёюЄр ¤ыхьхэЄр.</p>
<p><b>fb_start_y</b> - юЄёЄєя ётхЁїє (яюыюцхэшх яю y).</p>
<p><b>fb_icon_size_y</b> - т√ёюЄр шъюэъш.</p>
<p><b>fb_icon_size_x</b> - °шЁшэр шъюэъш.</p>
<p><b>fb_line_size_y</b> - т√ёюЄр ышэшш.</p>
<p><b>fb_type_size_x</b> - °шЁшэр ъюыюэъш ё Єшяюь Їрщыют (чрЁхчхЁтшЁютрэю, яюър эх шёяюы№чєхЄё ).</p>
<p><b>fb_size_size_x</b> - °шЁшэр ъюыюэъш ё ЁрчьхЁюь Їрщыют (чрЁхчхЁтшЁютрэю, яюър эх шёяюы№чєхЄё ).</p>
<p><b>fb_date_size_x</b> - °шЁшэр ъюыюэъш ё фрЄющ Їрщыют (чрЁхчхЁтшЁютрэю, яюър эх шёяюы№чєхЄё ).</p>
<p><b>fb_attributes_size_x</b> - °шЁшэр ъюыюэъш ё рЄЁшсєЄрьш Їрщыют (чрЁхчхЁтшЁютрэю, яюър эх шёяюы№чєхЄё ).</p>
<p><b>fb_icon_raw_area</b> - фрээ√х фы  юЄюсЁрцхэш  шъюэюъ.</p>
<p><b>fb_resolution_raw</b> - ъюыышўхёЄтю сшЄ эр яшъёхы№ т фрээ√ї фы  юЄюсЁрцхэш  шъюэюъ.</p>
<p><b>fb_background_color</b> - ЎтхЄ Їюэр.</p>
<p><b>fb_select_color</b> - ЎтхЄ ъєЁёюЁр.</p>
<p><b>fb_select_flag</b> - 0,1.</p>
<p><b>fb_max_panel_line</b> - ьръёшьры№эюх ўшёыю ёЄЁюъ т юъэх.</p>
<p><b>fb_select_panel_counter</b> - 0 - ярэхы№ эх т Їюъєёх, 1 - ярэхы№ т Їюъєёх.</p>
<p><b>fb_folder_block</b> - ъюышўхёЄтю сыюъют фрээ√ї тїюфр ърЄрыюур (┴─┬╩).</p>
<p><b>fb_start_draw_line</b> - эюьхЁ яхЁтюую юЄюсЁрцрхьюую т юъэх Їрщыр шыш яряъш (эюьхЁрЎш  эрўшэрхЄё  ё 0).</p>
<p><b>fb_start_draw_cursor_line</b> - яючшЎш  ъєЁёюЁр фы  т√сюЁр Їрщыр шыш яряъш (ъююЁфшэрЄр y т яшъёхы ї юЄэюёшЄхы№эю <i>fb_start_y</i>).</p>
<p><b>fb_folder_data</b> - сєЇхЁ ё шэЇюЁьрЎшхщ ю Їрщырї.</p>
<p><b>fb_type_table</b> - єърчрЄхы№ эр ярь Є№ фы  чряюыэхэш  ёЄЁюъш ё Єшяюь, ЁрчьхЁюь ш фрЄющ Їрщыр.</p>
<p><b>fb_ini_file_start</b> - эрўрыю фрээ√ї ё Ёрё°шЁхэш ьш ш эюьхЁрьш шъюэюъ, яюыєўрхь√ї шч <i>*.ini</i> Їрщыр. ╧ЁшьхЁ ЇюЁьрЄр фрээ√ї:</p>
<pre>&lt;dir&gt;=0\n
&lt;up&gt;=1\n
&lt;dic&gt;=3\n
&lt;doc&gt;=3\n
...
src=61\n
vox=74\0</pre>
<p><b>fb_ini_file_end</b> - эрўрыю фрээ√ї ё Ёрё°шЁхэш ьш ш эюьхЁрьш шъюэюъ, яюыєўрхь√ї шч *.ini Їрщыр.</p>
<p><b>fb_draw_scroll_bar</b>- ярЁрьхЄЁ эхюсїюфшьюёЄш юсэютыхэш  фюўхЁэхую ёъЁюыышэур:</p>
<ul>
<li>0 - фюўхЁэшщ ёъЁюыышэу юсэюты Є№ эх эєцэю,</li>
<li>1 - шчьхэшырё№ яючшЎш  <i>fb_start_draw_line</i> ш эєцэю юсэютшЄ№ фюўхЁэшщ ёъЁюыышэу.</li>
</ul>
<p><b>fb_mouse_keys_delta</b> - 0,1,2,3.</p>
<p><b>fb_all_redraw</b> - ярЁрьхЄЁ фы  ЇєэъЎшш <i>FileBrowser_draw</i>, чрфрхЄ ярЁрьхЄЁ√ яхЁхЁшёютъш: 0 - ЄхъёЄ, 1 - тёх юъэю, 2 - шъюэъш ё ЄхъёЄюь.</p>
<p><b>fb_key_action</b> - ъюф ъыртшрЄєЁэюую ёюс√Єш  фы  ЇєэъЎшш FileBrowser_key, тючьюцэ√х чэрўхэш  0...12.</p>
<p><b>fb_draw_panel_selection_flag</b> - тэєЄЁхээ   яхЁхьхээр , юяЁхфхы хЄ ё ъръшь Їюэюь сєфхЄ ЁшёютрЄ№ё  ЄхъёЄ (<i>fb_background_color</i> шыш <i>fb_select_color</i>).</p>
<hr>
<p>─юъєьхэЄрЎш  юсэюты ырё№ яюёыхфэшщ Ёрч 03.10.26.</p>
</body>
</html>
@@ -170,9 +170,6 @@ fb_draw_panel_selection:
mov eax,fb_folder_block
test eax,eax
jz .end
xor eax,eax
cmp fb_select_panel_counter,eax
je .end
mov eax,fb_folder_block
sub eax,fb_start_draw_line
mov cx,fb_start_draw_cursor_line
@@ -199,7 +196,29 @@ fb_draw_panel_selection:
shl eax,16
push eax
add ebx,eax
mcall SF_DRAW_RECT
cmp fb_select_panel_counter,0 ; is the cursor in an inactive state?
jne @f
push ecx
mov cx,2
mcall SF_DRAW_RECT ; display the cursor in the inactive state
ror ecx,16
add cx,fb_line_size_y
sub cx,2
ror ecx,16
mcall
pop ecx
mov bx,2
mcall
ror ebx,16
add bx,fb_size_x
sub bx,fb_icon_size_x
sub bx,2+2 ; cursor border + text margin
ror ebx,16
mcall
jmp .no_frame
@@:
mcall SF_DRAW_RECT ; display the cursor in the active state
.no_frame:
pop ebx
cmp fb_all_redraw,0
je .end
@@ -286,7 +305,7 @@ fb_draw_folder_data:
xor edx,edx
div ebx
pop edx ebx
sub eax,23+2+2+2
sub eax,25+2+2+2
mov esi,fb_file_name_length
mov fb_temp_counter,0
mov fb_display_name_max_length,eax
@@ -323,13 +342,14 @@ fb_draw_folder_data:
xor eax,eax
mov ax,fb_font_size_x
imul eax,fb_display_name_max_length
inc eax
shl eax,16
push edx
add ebx,eax
mov esi,2
mov ecx,fb_reduct_text_color
mov edx,dword fb_truncated_filename_char
mcall SF_DRAW_TEXT
mcall SF_DRAW_TEXT ; .. two dots
pop edx
.continue:
pop ebx
@@ -375,7 +395,8 @@ align 4
mov eax,fb_select_color
@@:
mov edi,eax
mcall SF_DRAW_TEXT
add ebx,1 shl 16
mcall SF_DRAW_TEXT ; file name
popa
ret
;--------------------------------------
@@ -432,6 +453,19 @@ fb_clear_line:
sub bx,fb_icon_size_x
sub bx,3
rol ebx,16
cmp fb_select_panel_counter,0 ; is the cursor in an inactive state?
jne @f
mov ax,fb_start_draw_cursor_line
add ax,fb_start_y
shl eax,16
mov ax,fb_line_size_y
cmp ecx,eax
jne @f
add ebx,2 shl 16
sub ebx,4
add ecx,2 shl 16
sub ecx,4
@@:
mcall SF_DRAW_RECT,,,fb_background_color
.end:
popa
@@ -444,13 +478,13 @@ fb_draw_type_size_date:
test [edx-40],byte 0x10
jz .copy_type
mov [eax],dword '<DIR'
mov [eax+4],word '> '
mov [eax+4],dword '> '
mov fb_file_name_length,0
mov fb_extension_size,0
jmp .start
.copy_type:
mov [eax],dword ' '
mov [eax+4],word ' '
mov [eax+4],dword ' '
.start:
mov esi,edx
xor eax,eax
@@ -505,16 +539,16 @@ fb_draw_type_size_date:
mov eax,fb_type_table
test [edx-40],byte 0x10
jz .copy_size
mov [eax+6],dword '----'
mov [eax+6+4],word '- '
mov [eax+7],dword '----'
mov [eax+7+4],dword '-- '
jmp .date
;-----------------------------------------
align 4
.call_decimal_string:
mov ebx,fb_type_table
add ebx,9
add ebx,10
call fb_decimal_string
mov [ebx+1],dl
mov [ebx+1],dx
jmp .size_convert_end
;-----------------------------------------
.qword_div:
@@ -548,7 +582,7 @@ align 4
call .qword_div
pop ecx
jz @f
mov dl,byte 'E' ; Exa Byte
mov dx,'E ' ; Exa Byte
jmp .call_decimal_string
@@:
push ecx
@@ -556,7 +590,7 @@ align 4
call .qword_div
pop ecx
jz @f
mov dl,byte 'P' ; Peta Byte
mov dx,'P ' ; Peta Byte
jmp .call_decimal_string
@@:
push ecx
@@ -564,7 +598,7 @@ align 4
call .qword_div
pop ecx
jz @f
mov dl,byte 'T' ; Tera Byte
mov dx,'T ' ; Tera Byte
jmp .call_decimal_string
@@:
push ecx
@@ -572,7 +606,7 @@ align 4
call .qword_div
pop ecx
jz @f
mov dl,byte 'G' ; Giga Byte
mov dx,'G ' ; Giga Byte
jmp .call_decimal_string
@@:
mov eax,[edx-40+32]
@@ -580,19 +614,20 @@ align 4
shr eax,20 ; /(1024*1024)
test eax,eax
jz @f
mov dl,byte 'M' ; Mega Byte
mov dx,'M ' ; Mega Byte
jmp .call_decimal_string
@@:
mov eax,ebx
shr eax,10 ; /1024
test eax,eax
jz @f
mov dl,byte 'K' ; Kilo Byte
mov dx,'K ' ; Kilo Byte
jmp .call_decimal_string
@@:
mov eax,ebx
mov ebx,fb_type_table
add ebx,10
mov dword[ebx+1],' ' ; clear K, M, ..., E
call fb_decimal_string
.size_convert_end:
pop edx ebx
@@ -608,22 +643,22 @@ align 4
mov al,[edx-40+28]
push ebx
mov ebx,fb_type_table
add ebx,12
add ebx,14
call fb_decimal_string_2 ; day
mov al,[edx-40+29]
mov ebx,fb_type_table
add ebx,12+3
add ebx,14+3
call fb_decimal_string_2 ; month
mov ax,[edx-40+30]
mov ebx,fb_type_table
add ebx,12+9
add ebx,14+9
mov [ebx-3], dword '0000'
call fb_decimal_string ; year
pop ebx
;-----------------------------------------
ror ebx,16
add bx,fb_size_x
sub ebx,161 ; 122+12+15
sub ebx,173 ; 122+18+21
rol ebx,16
mov ecx,fb_text_color
cmp fb_marked_file,0
@@ -631,7 +666,7 @@ align 4
mov ecx,fb_reduct_text_color
@@:
mov edx,fb_type_table
mov esi,22
mov esi,24 ; text length
mov ax,fb_line_size_y
sub ax,fb_font_size_y
push ebx
@@ -650,14 +685,41 @@ align 4
mov eax,fb_select_color
@@:
mov edi,eax
mcall SF_DRAW_TEXT
mcall SF_DRAW_TEXT ; type size date
.not_show_date:
popa
ret
;---------------------------------------------------------------------
align 4
fb_draw_icon:
pusha
pushad
cmp fb_icon_raw_area,0
jne .not_draw_null
mov bx,[esp+18] ;coord x
sub bx,2
sub bx,fb_icon_size_x
shl ebx,16
mov bx,fb_icon_size_x
mov cx,[esp+16] ;coord y
shl ecx,16
mov cx,fb_icon_size_y
test [edx-40],byte 0x10
jz @f
mov edx,fb_select_color
jmp .draw_r
@@:
mov edx,fb_background_color
.draw_r:
mcall SF_DRAW_RECT
shr ebx,16
shr ecx,16
movzx eax,fb_icon_size_x
movzx edx,fb_icon_size_y
stdcall draw_edge, ebx, ecx, eax, edx,\
fb_background_color, fb_select_color, fb_text_color
popad
ret
.not_draw_null:
xor eax,eax
mov ax,fb_icon_size_y
mov ebx,fb_resolution_raw
@@ -698,11 +760,9 @@ fb_draw_icon:
add dx,ax
mov esi,fb_resolution_raw
xor ebp,ebp
push edi
mov edi,fb_palette_raw
mcall SF_PUT_IMAGE_EXT
pop edi
popa
popad
ret
;---------------------------------------------------------------------
; Convert of a binary number in decimal string form
+6 -1
View File
@@ -1,2 +1,7 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("opendial.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "opendial")
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR")
tup.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir())
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en_US" or tup.getconfig("LANG")) .. " > %o", {"lang.inc"})
tup.rule({"opendial.asm", extra_inputs = {"lang.inc"}}, FASM .. " %f %o " .. tup.getconfig("KPACK_CMD"), "opendial")
File diff suppressed because it is too large. Load diff