Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 814 → Rev 805

/programs/fs/kfar/trunk/kfar.txt
File deleted
/programs/fs/kfar/trunk/editor.inc
File deleted
/programs/fs/kfar/trunk/build_ru.bat
1,6 → 1,7
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm kfar.asm kfar
mtappack kfar
@erase lang.inc
@kpack kfar
@pause
/programs/fs/kfar/trunk/kfar.asm
7,14 → 7,9
dd stacktop
dd 0, app_path
 
version equ '0.5'
version_dword equ 0*10000h + 50
version equ '0.42'
version_dword equ 0*10000h + 42
 
min_width = 54
max_width = 255
min_height = 8
max_height = 255
 
include 'lang.inc'
include 'font.inc'
include 'sort.inc'
21,13 → 16,9
include 'kglobals.inc'
include 'dialogs.inc'
include 'viewer.inc'
include 'editor.inc'
include 'tools.inc'
include 'filetool.inc'
 
cursor_normal_size = (font_height*15+50)/100
cursor_big_size = font_height
 
start:
mov edi, tolower_table
push 'A'
91,9 → 82,9
mov [panel2_files], eax
test eax, eax
jz exit
cmp [panel1_files], 0
jz exit
xor eax, eax
cmp [panel1_files], eax
jz exit
mov [panel1_hPlugin], eax
mov [panel1_parents], eax
mov [panel1_parents_sz], eax
163,24 → 154,6
ja @f
mov [panel2_colmode], eax
@@:
push nullstr
push 512
push saved_file_name
push aEolStyle
push aEditor
push app_path
call [ini.get_str]
mov cl, edit.eol_dos
mov al, [saved_file_name]
or al, 20h
cmp al, 'd'
jz @f
mov cl, edit.eol_mac
cmp al, 'm'
jz @f
mov cl, edit.eol_unix
@@:
mov [EditEOLStyle], cl
mov ecx, 0x1000
call xpgalloc
test eax, eax
267,38 → 240,6
push aPlugins
push app_path
call [ini.enum_keys]
; calculate info for editor
xor ebx, ebx
mov ecx, [num_plugins]
mov esi, [plugins]
@@:
dec ecx
js @f
mov [esi+PluginInfo.EditInfoOffs], ebx
add ebx, [esi+PluginInfo.EditInfoSize]
jnc @f
sbb ebx, ebx
@@:
; ¯®áª®«ìªã à §¬¥à ¡«®ª  ¢ । ªâ®à¥ ®£à ­¨ç¥­, â® ¨ à §¬¥à ¯ ¬ïâ¨, १¥à¢¨à㥬®© ¤«ï ¯« £¨­®¢, ®£à ­¨ç¥­
; 512 - £àã¡ ï ¢¥àå­ïï ®æ¥­ª , £ à ­â¨àãîé ï à ¡®âã । ªâ®à , ॠ«ì­® ¯« £¨­ë ¤®«¦­ë âॡ®¢ âì ¬¥­ìè¥
cmp ebx, 512
jb @f
or ebx, -1
mov [EditPlugInfo], ebx ; disable plugins for editor
push ContinueBtn
push 1
push EditConfigErr_ptr
push 2
call SayErr
@@:
add ebx, 3
and ebx, not 3
mov [EditPlugInfo], ebx
add ebx, editor_line.plugdata
imul ebx, max_height
add ebx, editor_data.basesize + 0xFFF
shr ebx, 12
mov [EditDataSize], ebx
.noini:
mov esi, def_left_dir
mov edi, panel1_dir
463,14 → 404,14
cdq
mov esi, font_width
div esi
cmp eax, min_width
cmp eax, 54
jae @f
mov al, min_width
mov al, 54
mov ch, 1
@@:
cmp eax, max_width
cmp eax, 255
jbe @f
mov eax, max_width
mov eax, 255
mov ch, 1
@@:
cmp eax, [cur_width]
490,14 → 431,14
cdq
mov esi, font_height
div esi
cmp eax, min_height
cmp eax, 8
jae @f
mov al, min_height
mov al, 8
mov cl, 1
@@:
cmp eax, max_height
cmp eax, 255
jbe @f
mov eax, max_height
mov eax, 255
mov cl, 1
@@:
mov [fill_height], edx
534,7 → 475,6
call draw_keybar
mov ebp, [active_screen_data]
mov eax, [active_screen_vtable]
mov [cursor_size], cursor_normal_size
call dword [eax+screen_vtable.OnRedraw]
jmp event
@@:
928,8 → 868,8
jnc @f
xor eax, eax
@@:
MIN_INTERFACE_VER = 3
MAX_INTERFACE_VER = 3
MIN_INTERFACE_VER = 2
MAX_INTERFACE_VER = 2
cmp eax, MIN_INTERFACE_VER
jb @f
cmp eax, MAX_INTERFACE_VER
1079,7 → 1019,6
mov [active_screen_vtable], eax
mov [active_screen_data], ebp
call draw_keybar
mov [cursor_size], cursor_normal_size
call [eax+screen_vtable.OnRedraw]
popa
ret
1166,14 → 1105,6
jmp change_screen
 
panels_OnKey:
; restore screen hidden by quick search box
cmp [bDisplayQuickSearch], 0
jz @f
mov [bDisplayQuickSearch], 0
push 0
push QuickSearchDlg
call HideDialogBox
@@:
mov ebp, [active_panel]
mov ecx, [ebp + panel1_index - panel1_data]
mov edx, [ebp + panel1_start - panel1_data]
1180,119 → 1111,7
mov ebx, [ebp + panel1_colst - panel1_data]
add ebx, edx
mov esi, panels_ctrlkeys
call process_ctrl_keys
jc .nostdkey
mov [bQuickSearchMode], 0
ret
.leaveqsmode:
mov [bQuickSearchMode], 0
call draw_image
ret
.keepqsmode:
push QuickSearchDlg
call ShowDialogBox
mov [bDisplayQuickSearch], 1
ret
.nostdkey:
cmp [bQuickSearchMode], 0
jz .noqsmode
test al, al
js .keepqsmode
cmp al, 40h
jae .leaveqsmode
cmp al, 0Eh
jz .qsbackspace
cmp al, 1Ch
jz .test_enter
movzx eax, al
cmp byte [scan2ascii+eax], 0
jz .leaveqsmode
call get_ascii_char
mov ecx, dword [quick_search_buf + 4]
cmp ecx, quicksearch_maxlen
jae .keepqsmode
mov byte [quick_search_buf + 12 + ecx], al
mov byte [quick_search_buf + 12 + ecx + 1], 0
push ecx
call quick_find
pop ecx
jnc @f
mov byte [quick_search_buf + 12 + ecx], 0
jmp .keepqsmode
@@:
inc dword [quick_search_buf + 4]
sub ecx, 16
jae @f
xor ecx, ecx
@@:
mov dword [quick_search_buf + 8], ecx
jmp .keepqsmode
.qsbackspace:
mov ecx, dword [quick_search_buf + 4]
jecxz .keepqsmode2
dec ecx
mov byte [quick_search_buf + 12 + ecx], 0
dec dword [quick_search_buf + 4]
.keepqsmode2:
jmp .keepqsmode
.test_enter:
test [ctrlstate], 0Ch ; LCtrl or RCtrl pressed?
jz .keepqsmode2
test [ctrlstate], 3 ; Shift pressed?
jnz @f
call quick_find_next
jmp .keepqsmode2
@@:
call quick_find_prev
jmp .keepqsmode2
.noqsmode:
; handle Alt+<key> combinations for quick search
test [ctrlstate], 30h ; LAlt or RAlt pressed?
jz .noalt ; no => skip
test [ctrlstate], 0Ch ; LCtrl or RCtrl pressed?
jnz .noalt ; yes => skip
cmp al, 40h
jae .noalt
movzx eax, al
cmp byte [scan2ascii+eax], 0
jz .noalt
call get_ascii_char
mov edi, quick_search_buf + 12
mov dword [edi-12], quicksearch_maxlen-1
mov dword [edi-8], 1
and dword [edi-4], 0
stosb
mov byte [edi], 0
call quick_find
jnc @f
mov byte [quick_search_buf + 12], 0
and dword [quick_search_buf + 4], 0
@@:
mov ebx, QuickSearchDlg
mov eax, [ebp + panel1_left - panel1_data]
add eax, 10
mov edx, [cur_width]
sub edx, 21
cmp eax, edx
jb @f
mov eax, edx
@@:
mov [ebx + dlgtemplate.x], eax
mov eax, [ebp + panel1_top - panel1_data]
add eax, [ebp + panel1_height - panel1_data]
mov edx, [cur_height]
sub edx, 2
cmp eax, edx
jb @f
mov eax, edx
@@:
mov [ebx + dlgtemplate.y], eax
push ebx
call ShowDialogBox
mov [bQuickSearchMode], 1
mov [bDisplayQuickSearch], 1
.find_letter_done:
.noalt:
jmp process_ctrl_keys
.ret:
ret
.up:
1442,10 → 1261,6
mov [ebp + panel1_start - panel1_data], eax
jmp .done_redraw
.enter:
cmp [bQuickSearchMode], 0
jz @f
call draw_image
@@:
call get_curfile_folder_entry
test byte [ecx], 10h
jnz .enter_folder
1626,27 → 1441,6
mov [execptr], execdata
and [execparams], 0
.dorun:
lea esi, [ebp + panel1_dir - panel1_data]
mov edi, execdata
@@:
lodsb
test al, al
jz @f
stosb
cmp edi, execdataend-1
jae .bigfilename
jmp @b
@@:
lea esi, [ecx+40]
mov al, '/'
stosb
@@:
lodsb
stosb
cmp edi, execdataend
ja .bigfilename
test al, al
jnz @b
; for fasm call - special handling, because
; 1) fasm command line convention is different : fasm infile,outfile[,path] rather than tinypad infile
; 2) fasm will probably create new file in directory, so we want to reload panel data
2141,6 → 1935,16
jz .f5_2
ret
.f5_2:
mov eax, [ebp + panel1_hPlugin - panel1_data]
mov [source_hModule], eax
mov eax, [ebp + panel1_hFile - panel1_data]
mov [source_hPlugin], eax
mov eax, left_dotdot_entry
cmp ebp, panel1_data
jz @f
add eax, right_dotdot_entry-left_dotdot_entry
@@:
mov [default_attr], eax
add esi, panel1_dir - panel1_data
mov edi, CopyDestEditBuf
mov eax, CopyDestEditBuf.length
2161,16 → 1965,6
mov al, '/'
stosb
.f5_common:
mov eax, [ebp + panel1_hPlugin - panel1_data]
mov [source_hModule], eax
mov eax, [ebp + panel1_hFile - panel1_data]
mov [source_hPlugin], eax
mov eax, left_dotdot_entry
cmp ebp, panel1_data
jz @f
add eax, right_dotdot_entry-left_dotdot_entry
@@:
mov [default_attr], eax
mov byte [edi], 0
sub edi, edx
mov [edx-8], edi
2560,9 → 2354,6
call view_file
.ret2:
ret
.f4:
call edit_file
ret
.f8_has_selected:
mov edi, saved_file_name+511
mov byte [edi], 0
2636,11 → 2427,6
cmp [ebp + panel1_selected_num - panel1_data], 0
jnz .f8_has_selected
call get_curfile_folder_entry
cmp word [ecx+40], '..'
jnz @f
cmp byte [ecx+42], 0
jz .f8_not_allowed
@@:
cmp [bConfirmDelete], 0
jz .f8_allowed
lea eax, [ecx+40]
2673,7 → 2459,6
add esp, 8
test eax, eax
jz .f8_allowed
.f8_not_allowed:
ret
.f8_allowed:
mov [del_bSkipAll], 0
3264,8 → 3049,6
ret
 
panels_OnRedraw:
or [cursor_x], -1
or [cursor_y], -1
call draw_cmdbar
mov ebp, panel1_data
call calc_colwidths
3320,95 → 3103,6
add ecx, 40
ret
 
quick_find:
cmp [ebp + panel1_numfiles - panel1_data], 0
jz .nof
mov ecx, [ebp + panel1_index - panel1_data]
.scanloop:
mov edi, ecx
shl edi, 2
add edi, [ebp + panel1_files - panel1_data]
mov edi, [edi]
add edi, 40
mov esi, quick_search_buf + 12
@@:
lodsb
test al, al
jz .ok
call match_symbol
jnz .no
inc edi
jmp @b
.no:
inc ecx
cmp ecx, [ebp + panel1_numfiles - panel1_data]
jb @f
xor ecx, ecx
@@:
cmp ecx, [ebp + panel1_index - panel1_data]
jnz .scanloop
.nof:
stc
ret
.ok:
cmp ecx, [ebp + panel1_index - panel1_data]
jz .ret
mov [ebp + panel1_index - panel1_data], ecx
mov eax, [ebp + panel1_height - panel1_data]
shr eax, 1
sub ecx, eax
jae @f
xor ecx, ecx
@@:
mov eax, [ebp + panel1_numfiles - panel1_data]
sub eax, [ebp + panel1_colst - panel1_data]
jnc @f
xor eax, eax
xor ecx, ecx
@@:
cmp ecx, eax
jb @f
mov ecx, eax
@@:
mov [ebp + panel1_start - panel1_data], ecx
call draw_panel
.ret:
clc
ret
 
quick_find_next:
cmp [ebp + panel1_numfiles - panel1_data], 0
jz quick_find.nof
mov ecx, [ebp + panel1_index - panel1_data]
jmp quick_find.no
 
quick_find_prev:
cmp [ebp + panel1_numfiles - panel1_data], 0
jz quick_find.nof
mov ecx, [ebp + panel1_index - panel1_data]
.scanloop:
dec ecx
jns @f
mov ecx, [ebp + panel1_numfiles - panel1_data]
dec ecx
@@:
cmp ecx, [ebp + panel1_index - panel1_data]
jz quick_find.nof
mov edi, ecx
shl edi, 2
add edi, [ebp + panel1_files - panel1_data]
mov edi, [edi]
add edi, 40
mov esi, quick_search_buf + 12
@@:
lodsb
test al, al
jz quick_find.ok
call match_symbol
jnz .scanloop
inc edi
jmp @b
 
panels_getname:
if lang eq ru
mov eax, ' ­¥'
3642,7 → 3336,6
mov [MemForImage], eax
mov [bMemForImageValidData], byte 0
.allocated:
push ebp
and [max_x], 0
or [min_x], -1
and [max_y], 0
3771,7 → 3464,7
mov edx, [cur_width]
imul edx, font_width
neg edx
mov ecx, [cursor_size]
mov ecx, (font_height*15+50)/100
.cursor_loop:
push ecx
mov ecx, font_width
3778,7 → 3471,7
add eax, edx
push eax
@@:
;; add byte [eax-1], 0x10
; add byte [eax-1], 0x10
xor byte [eax-1], 7
sub eax, 1
loop @b
3825,7 → 3518,6
pop esi
int 40h
.nodraw:
pop ebp
ret
 
get_console_ptr:
3944,11 → 3636,6
mov ah, [keybar_name_color]
rep stosw
.done:
cmp [bDisplayQuickSearch], 0
jz @f
push QuickSearchDlg
call DrawDialogBox
@@:
popad
ret
 
4765,36 → 4452,17
cmp ebp, panel1_data
jnz .ret2
; —¨á«® íªà ­®¢
; calculate number of viewer and editor screens
xor ebx, ebx
xor edx, edx
mov ecx, [num_screens]
mov esi, [screens]
.3:
lodsd
cmp eax, viewer_vtable
jnz @f
inc ebx
@@:
cmp eax, editor_vtable
jnz @f
inc edx
@@:
lodsd
loop .3
mov eax, ebx
mov esi, edx
or eax, edx
mov eax, [num_screens]
dec eax
jz .ret2
push eax
xor eax, eax
xor edx, edx
call get_console_ptr
mov ah, [panel_nscreens_color]
mov al, '['
stosb
mov al, [panel_nscreens_color]
stosb
xchg eax, ebx
.5:
stosw
pop eax
push -'0'
@@:
xor edx, edx
4806,21 → 4474,10
pop eax
add eax, '0'
jz @f
stosb
mov al, bl
stosb
mov ah, [panel_nscreens_color]
stosw
jmp @b
@@:
test esi, esi
jz .4
mov al, '+'
stosb
mov al, bl
stosb
xor eax, eax
xchg eax, esi
jmp .5
.4:
mov al, ']'
mov ah, [panel_nscreens_color]
stosw
6449,9 → 6106,6
 
bSilentFolderMode db 1
 
bQuickSearchMode db 0
bDisplayQuickSearch db 0
 
if lang eq ru
aFolder db ' ¯ª '
.size = $-aFolder
6817,177 → 6471,6
times 12 db ' '
end if
 
keybar_editor:
if lang eq ru
; ¡¥§ ª« ¢¨è-¬®¤¨ä¨ª â®à®¢
db '®¬®éì'
db '‘®åà ­'
db ' '
db ' '
db ' '
db 'à®á¬ '
db '®¨áª '
keybar_cp2:
db 'cp1251'
db ' '
db '‚ë室 '
db 'Œ®¤ã«¨'
db 'ªà ­ë'
; Shift
db ' '
db '‘®åà.¢'
db ' '
db '¥¤ ª.'
db ' '
db ' '
db '„ «ìè¥'
db '’ ¡«¨æ'
db ' '
db '‘åà‚ëå'
db ' '
db ' '
; Ctrl
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db '‡ ¬¥­ '
db ' '
db ' '
db '®§¨æ '
db ' '
db ' '
; Ctrl+Shift
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
; Alt
db ' '
db ' '
db ' '
db ' '
db '¥ç âì'
db ' '
db ' '
db '‘âப '
db '‚¨¤¥® '
db ' '
db 'ˆáâà '
db ' '
; Alt+Shift
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db 'Š®­ä¨£'
db ' '
db ' '
db ' '
; Alt+Ctrl
times 12 db ' '
; Alt+Ctrl+Shift
times 12 db ' '
else
; No modificators
db 'Help '
db 'Save '
db ' '
db ' '
db ' '
db 'View '
db 'Search'
keybar_cp2:
db 'cp1251'
db ' '
db 'Quit '
db 'Plugin'
db 'Screen'
; Shift
db ' '
db 'SaveAs'
db ' '
db 'Edit..'
db ' '
db ' '
db 'Next '
db 'Table '
db ' '
db 'SaveQ '
db ' '
db ' '
; Ctrl
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db 'Replac'
db ' '
db ' '
db 'GoFile'
db ' '
db ' '
; Ctrl+Shift
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
; Alt
db ' '
db ' '
db ' '
db ' '
db 'Print '
db ' '
db ' '
db 'Goto '
db 'Video '
db ' '
db 'ViewHs'
db ' '
; Alt+Shift
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db 'Config'
db ' '
db ' '
db ' '
; Alt+Ctrl
times 12 db ' '
; Alt+Ctrl+Shift
times 12 db ' '
end if
 
align 4
cur_width dd 80
cur_height dd 25
7001,7 → 6484,6
 
cursor_x dd -1
cursor_y dd -1
cursor_size dd cursor_normal_size
cur_cursor_pos dd -1
old_cursor_pos dd -1
 
7064,14 → 6546,6
dd viewer_OnExit
dd viewer_IsHandleUsed
 
editor_vtable:
dd editor_OnRedraw
dd editor_OnKey
dd keybar_editor
dd editor_getname
dd editor_OnExit
dd editor_IsHandleUsed
 
; additions to this table require changes in tools.inc::get_error_msg
errors1:
dd error0msg
7158,8 → 6632,7
db '&Unicode',0
 
active_screen dd 0
viewer_tabsize dd 8
editor_tabsize dd 8
tabsize dd 8
 
ascii2scan:
times 32 db 0
7175,11 → 6648,6
times 48 db 0
db 0x23,0x2E,0x31,0x12,0x1E,0x1A,0x11,0x2D,0x17,0x18,0x1B,0x1F,0x32,0x28,0x34,0x2C
db 0x29,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
scan2ascii:
db 0,0,'1234567890-=',0,0
db 'qwertyuiop[]',0,0,'as'
db 'dfghjkl;',27h,'`',0,'\zxcv'
db 'bnm,./',0,0,0,' ',0,0,0,0,0,0
 
; Š« ¢¨è­ë¥ á®ç¥â ­¨ï
; db scancode, reserved
7214,8 → 6682,6
dd panels_OnKey.enter
dw 0x3D, 0
dd panels_OnKey.f3
dw 0x3E, 0
dd panels_OnKey.f4
dw 0x3F, 0
dd panels_OnKey.f5
dw 0x3F, 1
7311,43 → 6777,6
dd alt_f9
db 0
 
editor_ctrlkeys:
dw 1, 0
dd editor_OnKey.exit_confirm
dw 0x0E, 0
dd editor_OnKey.backspace
dw 0x3C, 0
dd editor_OnKey.f2
dw 0x43, 0x100
dd alt_f9
dw 0x44, 0
dd editor_OnKey.exit_confirm
dw 0x44, 1
dd editor_OnKey.exit_save
dw 0x47, 0
dd editor_OnKey.home
dw 0x48, 0
dd editor_OnKey.up
dw 0x49, 0
dd editor_OnKey.pgup
dw 0x4B, 0
dd editor_OnKey.left
dw 0x4D, 0
dd editor_OnKey.right
dw 0x4F, 0
dd editor_OnKey.end
dw 0x50, 0
dd editor_OnKey.down
dw 0x51, 0
dd editor_OnKey.pgdn
dw 0x52, 0
dd editor_OnKey.ins
dw 0x53, 0
dd editor_OnKey.del
dw 0x58, 0
dd F12
db 0
 
dirinfo:
dd 1
.first dd 0
7458,9 → 6887,6
view_normal_color db 1Bh
view_status_color db 30h
view_arrows_color db 1Eh
; ¥¤ ªâ®à
edit_normal_color db 1Bh
edit_status_color db 30h
 
; ®¤á¢¥âª  ä ©«®¢
highlight_num_groups dd 10
7506,11 → 6932,11
highlight_group4:
db 0
db 1Ah, 3Ah, 0, 0
db '*.exe,*.com,*.bat,*.cmd,*.kex',0
db '*.exe,*.com,*.bat,*.cmd',0
highlight_group5:
db 0
db 1Ah, 3Ah, 0, 0
db '*|*.*,readme,makefile',0
db '*|*.*',0
highlight_group6:
db 0
db 1Dh, 3Dh, 0, 0
7555,7 → 6981,7
dd 1
dd 1
dd aError
rb 8
rb 4
dd 0
dd 0
dd 2
7584,7 → 7010,6
.border_color db ?
.header_color db ?
db 0
dd ?
dd 0
dd 0
dd 4
7627,7 → 7052,7
.height dd 4
dd 4, 2
dd aMkDirCaption
dd ?, ?
dd ?
dd 0
dd 0
dd 4
7668,7 → 7093,7
dd 37, 1
dd 4, 2
.title dd ?
dd ?, ?
dd ?
dd 0, 0
dd 1
; ¯®«¥ । ªâ¨à®¢ ­¨ï
7677,23 → 7102,6
dd enter_string_buf
.flags dd ?
 
; ¤¨ «®£ ¡ëáâண® ¯®¨áª  ¢ ¯ ­¥«¨ (Alt+¡ãª¢ë)
QuickSearchDlg:
dd 5
.x dd ?
.y dd ?
dd 20, 1
dd 1, 1
dd aSearch
dd ?, ?
dd 0, 0
dd 1
; ¯®«¥ । ªâ¨à®¢ ­¨ï
dd 3
dd 1, 0, 18, 0
dd quick_search_buf
dd 1Ch
 
RetryOrCancelBtn:
dd aRetry
dd a_Cancel
7714,15 → 7122,7
ContinueBtn:
dd aContinue
 
EditorExitBtn:
dd aSave
dd aDontSave
dd aContinueEdit
 
aCannotOpenFile_ptr dd aCannotOpenFile
EditConfigErr_ptr:
dd aEditConfigErr1
dd aEditConfigErr2
if lang eq ru
aDeleteCaption db '“¤ «¥­¨¥',0
aConfirmDeleteText db '‚ë å®â¨â¥ 㤠«¨âì',0
7794,18 → 7194,6
aDeselect db '‘­ïâì',0
aCannotOpenFile db 'Žè¨¡ª  ¯à¨ ®âªàë⨨ ä ©« ',0
aCannotSetFolder db '¥ ¬®£ã § ©â¨ ¢ ¯ ¯ªã',0
aSearch db '®¨áª',0
aEditConfigErr1 db 'Žè¨¡ª  ¢ ª®­ä¨£ãà æ¨¨ ¯« £¨­®¢ ¤«ï । ªâ®à .',0
aEditConfigErr2 db '®¯à®¡ã©â¥ ã¡à âì «¨è­¨¥ ¯« £¨­ë.',0
aEditNoMemory db '” ©« ᫨誮¬ ¢¥«¨ª ¤«ï § £à㧪¨ ¢ । ªâ®à.',0
aLine db ' ‘âப '
aCol db ' Š®« '
aEditorTitle db '¥¤ ªâ®à',0
aFileModified db '” ©« ¡ë« ¨§¬¥­ñ­',0
aSave db '‘®åà ­¨âì',0
aDontSave db '¥ á®åà ­ïâì',0
aContinueEdit db 'à®¤®«¦¨âì । ªâ¨à®¢ ­¨¥',0
aCannotSaveToPlugin db '‘®åà ­¥­¨¥ ä ©«®¢ ­  ¯ ­¥«ïå ¯« £¨­®¢ ­¥ ¯®¤¤¥à¦¨¢ ¥âáï',0
else
aDeleteCaption db 'Delete',0
aConfirmDeleteText db 'Do you wish to delete',0
7881,17 → 7269,6
aDeselect db 'Deselect',0
aCannotOpenFile db 'Cannot open the file',0
aCannotSetFolder db 'Cannot enter to folder',0
aSearch db 'Search',0
aEditConfigErr1 db 'Error in configuration of plugins for the editor.',0
aEditConfigErr2 db 'Try to remove unnecessary plugins.',0
aLine db ' Line'
aCol db ' Col '
aEditorTitle db 'Editor',0
aFileModified db 'File has been modified',0
aSave db 'Save',0
aDontSave db 'Do not save',0
aContinueEdit db 'Continue editing',0
aCannotSaveToPlugin db 'Saving is not supported for plugin panels',0
end if
 
aOk db 'OK',0
7924,7 → 7301,6
aGetOpenPluginInfo db 'GetOpenPluginInfo',0
aGetPanelTitle db 'GetPanelTitle',0
aGetFiles db 'GetFiles',0
aEditInfoSize db 'EditInfoSize',0
 
aConfirmations db 'Confirmations',0
aConfirmDelete db 'Delete',0
7934,9 → 7310,6
aLeftViewMode db 'LeftViewMode',0
aRightViewMode db 'RightViewMode',0
 
aEditor db 'Editor',0
aEolStyle db 'EOLStyle',0
 
aAssociations db 'Associations',0
aPlugins db 'Plugins',0
aMenu db 'Menu',0
7966,7 → 7339,6
dd aGetOpenPluginInfo
dd aGetPanelTitle
dd aGetFiles
dd aEditInfoSize
dd 0
plugin_exported_default:
dd plugin_unload_default
7982,7 → 7354,6
dd GetOpenPluginInfo_default
dd GetPanelTitle_default
dd GetFiles_default
dd 0 ; default value for EditInfoSize
 
kfar_info:
dd .size
8015,9 → 7386,6
num_plugins dd 0
alloc_plugins dd 0
 
EditPlugInfo dd 0
EditEOLStyle db edit.eol_unix
 
virtual at 0
PluginInfo:
.unload dd ?
8033,8 → 7401,6
.GetOpenPluginInfo dd ?
.GetPanelTitle dd ?
.GetFiles dd ?
.EditInfoSize dd ?
.EditInfoOffs dd ?
.size = $
end virtual
 
8210,12 → 7576,8
 
;console_data rb max_width*max_height*2
 
nomem_dlgsavearea rb 8 + (12+4)*(3+3)*2
nomem_dlgsavearea rb (12+4)*(3+3)*2
 
quicksearch_savearea rb 22*3*2
quicksearch_maxlen = 64
quick_search_buf rb 12 + quicksearch_maxlen
 
cur_header rb max_width
tmp dd ?
 
8242,10 → 7604,6
scrpos dq ?
viewer_right_side dq ?
 
EditDataSize dd ?
EditBlockStart dd ?
EditBlockSize dd ?
 
saved_file_name:
procinfo rb 1024
lower_file_name = procinfo + 512
/programs/fs/kfar/trunk/dialogs.inc
8,7 → 8,6
; ¡¨â 1: ¨á¯®«ì§®¢ âì áâ ­¤ àâ­ë¥ æ¢¥â  ¯à¥¤ã¯à¥¦¤¥­¨ï/®è¨¡ª¨
; (¥á«¨ «î¡®© ¨§ íâ¨å ¡¨â®¢ ãáâ ­®¢«¥­, ¯®«ï main_color,border_color,header_color
; ¨£­®à¨àãîâáï)
; ¡¨â 2: ­¥ à¨á®¢ âì ⥭ì
.flags dd ?
.x dd ?
.y dd ?
21,138 → 20,11
.border_color db ?
.header_color db ?
db ? ; align
.dataptr dd ? ; used internally, ignored on input
.size = $
end virtual
 
GenericBox:
push [cursor_x]
push [cursor_y]
push dword [esp+8+8]
push dword [esp+8+8]
call ShowGenericBox
test eax, eax
jz @f
pop [cursor_y]
pop [cursor_x]
ret
@@:
pushad
; message loop
.event:
push 10
pop eax
int 40h
dec eax
jz .redraw
dec eax
jz .key
jmp exit
.redraw:
call draw_window
jmp .event
.key:
mov al, 2
int 40h
shr eax, 8
cmp al, 0xE0
jnz @f
mov [bWasE0], 1
jmp .event
@@:
xchg ah, [bWasE0]
cmp al, 0x1D
jz .ctrl_down
cmp al, 0x9D
jz .ctrl_up
cmp al, 0x2A
jz .lshift_down
cmp al, 0xAA
jz .lshift_up
cmp al, 0x36
jz .rshift_down
cmp al, 0xB6
jz .rshift_up
cmp al, 0x38
jz .alt_down
cmp al, 0xB8
jz .alt_up
mov ebx, [esp+24h+8]
mov ecx, [esp+28h+8]
push 0
push eax
push 2
push ebx
call ecx
test eax, eax
jz .event
mov [esp+28], eax
jmp .exit
.ctrl_down:
test ah, ah
jnz .rctrl_down
or [ctrlstate], 4
jmp .event
.rctrl_down:
or [ctrlstate], 8
jmp .event
.ctrl_up:
test ah, ah
jnz .rctrl_up
and [ctrlstate], not 4
jmp .event
.rctrl_up:
and [ctrlstate], not 8
jmp .event
.lshift_down:
test ah, ah
jnz @f
or [ctrlstate], 1
@@: jmp .event
.lshift_up:
test ah, ah
jnz @b
and [ctrlstate], not 1
jmp @b
.rshift_down:
or [ctrlstate], 2
jmp .event
.rshift_up:
and [ctrlstate], not 2
jmp .event
.alt_down:
test ah, ah
jnz .ralt_down
or [ctrlstate], 0x10
jmp .event
.ralt_down:
or [ctrlstate], 0x20
jmp .event
.alt_up:
test ah, ah
jnz .ralt_up
and [ctrlstate], not 0x10
jmp .event
.ralt_up:
and [ctrlstate], not 0x20
jmp .event
.exit:
popad
push eax
push 0
push dword [esp+12+8]
call HideGenericBox
pop eax
pop [cursor_y]
pop [cursor_x]
pushad
call draw_image
popad
ret 8
 
; int __stdcall ShowGenericBox(DLGTEMPLATE* dlg, void* DlgProc);
ShowGenericBox:
pushad
mov ebx, [esp+20h+4]
; center window if required
push [ebx+dlgtemplate.x]
214,7 → 86,7
@@:
; allocate memory for data under dialog
; for 'No memory' dialog use static data area
mov eax, nomem_dlgsavearea
mov ebp, nomem_dlgsavearea
cmp ebx, nomem_dlgdata
jz .allocated
mov eax, [ebx+dlgtemplate.width]
227,7 → 99,7
add edx, [ebx+dlgtemplate.border_size_y]
inc edx
mul edx
lea ecx, [eax*2+8]
lea ecx, [eax*2]
call xpgalloc
test eax, eax
jnz @f
237,11 → 109,8
or eax, -1
ret 8
@@:
mov ebp, eax
.allocated:
mov [ebx+dlgtemplate.dataptr], eax
pop dword [eax+4]
pop dword [eax]
lea ebp, [eax+8]
; save data
mov eax, [ebx+dlgtemplate.y]
add eax, [ebx+dlgtemplate.height]
262,13 → 131,12
push eax
call save_console_data
; draw shadow
test byte [ebx+dlgtemplate.flags], 4
jnz .noshadow
mov eax, [ebx+dlgtemplate.x]
sub eax, [ebx+dlgtemplate.border_size_x]
ja @f
xor eax, eax
@@:
push eax ; save real window left
inc eax
inc eax
mov edx, [ebx+dlgtemplate.y]
276,6 → 144,7
ja @f
xor edx, edx
@@:
push edx ; save real window top
inc edx
call get_console_ptr
mov ecx, [ebx+dlgtemplate.y]
316,29 → 185,9
add edi, [cur_width]
dec edx
jnz .shadow_loop
.noshadow:
popad
push dword [esp+8]
push dword [esp+8]
call DrawGenericBox
xor eax, eax
ret 8
 
; void __stdcall DrawGenericBox(DLGDATA* dlg, void* DlgProc)
DrawGenericBox:
pushad
mov ebx, [esp+24h]
; draw area background
mov eax, [ebx+dlgtemplate.x]
sub eax, [ebx+dlgtemplate.border_size_x]
ja @f
xor eax, eax
@@:
mov edx, [ebx+dlgtemplate.y]
sub edx, [ebx+dlgtemplate.border_size_y]
ja @f
xor edx, edx
@@:
pop edx
pop eax
call get_console_ptr
mov ecx, [ebx+dlgtemplate.x]
add ecx, [ebx+dlgtemplate.width]
453,7 → 302,8
dec edx
jnz @b
; send redraw message
mov eax, [esp+28h]
mov eax, [esp+28h+8]
push ebx ebp
push 0
push 0
push 1
460,17 → 310,109
push ebx
call eax
call draw_image
popad
ret 8
 
; void __stdcall HideGenericBox(DLGTEMPLATE* dlg, int bRedrawWindow);
HideGenericBox:
; void __stdcall HideDialogBox(DLGDATA* dlg, int bRedrawWindow);
HideDialogBox:
pushad
mov ebx, [esp+24h]
mov ebp, [ebx+dlgtemplate.dataptr]
add ebp, 8
pop ebp ebx
; message loop
.event:
push 10
pop eax
int 40h
dec eax
jz .redraw
dec eax
jz .key
jmp exit
.redraw:
push ebx ebp
call draw_window
pop ebp ebx
jmp .event
.key:
mov al, 2
int 40h
shr eax, 8
cmp al, 0xE0
jnz @f
mov [bWasE0], 1
jmp .event
@@:
xchg ah, [bWasE0]
cmp al, 0x1D
jz .ctrl_down
cmp al, 0x9D
jz .ctrl_up
cmp al, 0x2A
jz .lshift_down
cmp al, 0xAA
jz .lshift_up
cmp al, 0x36
jz .rshift_down
cmp al, 0xB6
jz .rshift_up
cmp al, 0x38
jz .alt_down
cmp al, 0xB8
jz .alt_up
mov ecx, [esp+28h+8]
push ebx ebp
push 0
push eax
push 2
push ebx
call ecx
pop ebp ebx
test eax, eax
jz .event
mov [esp+8+28], eax
jmp .exit
.ctrl_down:
test ah, ah
jnz .rctrl_down
or [ctrlstate], 4
jmp .event
.rctrl_down:
or [ctrlstate], 8
jmp .event
.ctrl_up:
test ah, ah
jnz .rctrl_up
and [ctrlstate], not 4
jmp .event
.rctrl_up:
and [ctrlstate], not 8
jmp .event
.lshift_down:
test ah, ah
jnz @f
or [ctrlstate], 1
@@: jmp .event
.lshift_up:
test ah, ah
jnz @b
and [ctrlstate], not 1
jmp @b
.rshift_down:
or [ctrlstate], 2
jmp .event
.rshift_up:
and [ctrlstate], not 2
jmp .event
.alt_down:
test ah, ah
jnz .ralt_down
or [ctrlstate], 0x10
jmp .event
.ralt_down:
or [ctrlstate], 0x20
jmp .event
.alt_up:
test ah, ah
jnz .ralt_up
and [ctrlstate], not 0x10
jmp .event
.ralt_up:
and [ctrlstate], not 0x20
jmp .event
.exit:
; restore data
mov eax, [ebx+dlgtemplate.y]
add eax, [ebx+dlgtemplate.height]
491,21 → 433,16
push eax
call restore_console_data
call draw_keybar
lea ecx, [ebp-8]
push dword [ecx]
push dword [ecx+4]
pop [ebx+dlgtemplate.y]
pop [ebx+dlgtemplate.x]
cmp ebx, nomem_dlgdata
jz @f
mov ecx, ebp
call pgfree
@@:
pop [ebx+dlgtemplate.y]
pop [ebx+dlgtemplate.x]
or [cursor_x], -1
or [cursor_y], -1
cmp dword [esp+28h], 0
jz @f
call draw_image
@@:
popad
ret 8
 
618,13 → 555,13
; void* variants, const char* title, unsigned flags);
menu_centered_in:
pushad
mov ecx, 60
; 40 bytes for dlgtemplate + additional:
; +40: dd cur_variant
; +44: dd num_variants
; +48: dd begin_variant
; +52: dd end_variant
; +56: dd cur_variant_idx
mov ecx, 56
; 36 bytes for dlgtemplate + additional:
; +36: dd cur_variant
; +40: dd num_variants
; +44: dd begin_variant
; +48: dd end_variant
; +52: dd cur_variant_idx
call xpgalloc
test eax, eax
jnz @f
647,16 → 584,16
xor eax, eax
xor ecx, ecx
mov esi, [esp+20h+20]
mov [ebx+40], esi
and dword [ebx+56], 0
mov [ebx+36], esi
and dword [ebx+52], 0
@@:
cmp dword [esi+4], 0
jz .find_width
mov esi, [esi+4]
inc dword [ebx+56]
inc dword [ebx+52]
jmp @b
.find_width:
mov [ebx+48], esi
mov [ebx+44], esi
add esi, 8
push esi
xor edx, edx
691,7 → 628,7
sub eax, [ebx+dlgtemplate.border_size_x]
mov [ebx+dlgtemplate.width], eax
mov [ebx+dlgtemplate.height], ecx
mov [ebx+44], ecx
mov [ebx+40], ecx
sub eax, [esp+20h+12]
neg eax
sar eax, 1
740,8 → 677,8
mov [ebx+dlgtemplate.y], 3
.small_height:
mov ecx, [ebx+dlgtemplate.height]
mov eax, [ebx+40]
mov [ebx+48], eax
mov eax, [ebx+36]
mov [ebx+44], eax
dec ecx
jz .skip
push ecx
751,13 → 688,13
mov eax, [eax+4]
loop @b
@@:
mov [ebx+48], eax
mov [ebx+44], eax
pop ecx
.loop:
mov eax, [eax]
loop .loop
.skip:
mov [ebx+52], eax
mov [ebx+48], eax
mov eax, [esp+20h+24]
mov [ebx+dlgtemplate.title], eax
mov al, [menu_normal_color]
786,12 → 723,12
call .dodraw
ret 16
.prev:
mov eax, [ebx+40]
mov eax, [ebx+36]
cmp dword [eax+4], 0
jz .end
call .line_prev
.posret:
mov [ebx+40], eax
mov [ebx+36], eax
.redraw:
call .dodraw
call draw_image
798,13 → 735,13
xor eax, eax
ret 16
.next:
mov eax, [ebx+40]
mov eax, [ebx+36]
cmp dword [eax], 0
jz .home
call .line_next
jmp .posret
.pgdn:
mov eax, [ebx+40]
mov eax, [ebx+36]
mov ecx, [ebx+dlgtemplate.height]
.pgdnl:
cmp dword [eax], 0
838,7 → 775,7
jz .ins
cmp al, 0x53
jz .del
mov edx, [ebx+40]
mov edx, [ebx+36]
@@:
cmp dword [edx+4], 0
jz @f
866,7 → 803,7
xor eax, eax
ret 16
.pgup:
mov eax, [ebx+40]
mov eax, [ebx+36]
mov ecx, [ebx+dlgtemplate.height]
.pgupl:
cmp dword [eax+4], 0
875,7 → 812,7
loop .pgupl
jmp .posret
.home:
mov eax, [ebx+40]
mov eax, [ebx+36]
@@:
cmp dword [eax+4], 0
jz @f
882,7 → 819,7
mov eax, [eax+4]
jmp @b
@@:
mov [ebx+48], eax
mov [ebx+44], eax
push eax
mov ecx, [ebx+dlgtemplate.height]
dec ecx
891,12 → 828,12
mov eax, [eax]
loop .h2
.h1:
mov [ebx+52], eax
mov [ebx+48], eax
pop eax
and dword [ebx+56], 0
and dword [ebx+52], 0
jmp .posret
.end:
mov eax, [ebx+40]
mov eax, [ebx+36]
@@:
cmp dword [eax], 0
jz @f
903,7 → 840,7
mov eax, [eax]
jmp @b
@@:
mov [ebx+52], eax
mov [ebx+48], eax
push eax
mov ecx, [ebx+dlgtemplate.height]
dec ecx
912,10 → 849,10
mov eax, [eax+4]
loop .e2
.e1:
mov [ebx+48], eax
mov eax, [ebx+44]
mov [ebx+44], eax
mov eax, [ebx+40]
dec eax
mov [ebx+56], eax
mov [ebx+52], eax
pop eax
jmp .posret
.esc:
922,7 → 859,7
or eax, -1
ret 16
.enter:
mov eax, [ebx+40]
mov eax, [ebx+36]
ret 16
.ins:
push 5
932,7 → 869,7
push 4
pop edx
@@:
mov eax, [ebx+40]
mov eax, [ebx+36]
cmp byte [eax+8], '/'
jnz @f
cmp word [eax+9], 'cd'
948,30 → 885,30
ret 16
 
.line_prev:
cmp eax, [ebx+48]
cmp eax, [ebx+44]
jnz @f
mov edx, [ebx+44]
mov edx, [edx+4]
mov [ebx+44], edx
mov edx, [ebx+48]
mov edx, [edx+4]
mov [ebx+48], edx
mov edx, [ebx+52]
mov edx, [edx+4]
mov [ebx+52], edx
@@:
mov eax, [eax+4]
dec dword [ebx+56]
dec dword [ebx+52]
ret
.line_next:
cmp eax, [ebx+52]
cmp eax, [ebx+48]
jnz @f
mov edx, [ebx+44]
mov edx, [edx]
mov [ebx+44], edx
mov edx, [ebx+48]
mov edx, [edx]
mov [ebx+48], edx
mov edx, [ebx+52]
mov edx, [edx]
mov [ebx+52], edx
@@:
mov eax, [eax]
inc dword [ebx+56]
inc dword [ebx+52]
ret
 
.dodraw:
978,11 → 915,11
mov eax, [ebx+dlgtemplate.x]
mov edx, [ebx+dlgtemplate.y]
call get_console_ptr
mov esi, [ebx+48]
mov esi, [ebx+44]
.0:
xor edx, edx
mov ah, [menu_selected_color]
cmp esi, [ebx+40]
cmp esi, [ebx+36]
jz @f
mov ah, [menu_normal_color]
@@:
1010,7 → 947,7
mov ah, [menu_selected_highlight_color]
push ecx
mov ecx, [esp+8]
cmp ecx, [ebx+40]
cmp ecx, [ebx+36]
pop ecx
jz .amp1
mov ah, [menu_highlight_color]
1036,7 → 973,7
pop esi edi
add edi, [cur_width]
add edi, [cur_width]
cmp esi, [ebx+52]
cmp esi, [ebx+48]
jz @f
mov esi, [esi]
test esi, esi
1044,13 → 981,13
@@:
; ‹¨­¥©ª  ¯à®ªàã⪨
mov ecx, [ebx+dlgtemplate.height]
cmp ecx, [ebx+44]
cmp ecx, [ebx+40]
jz .noscrollbar
sub ecx, 2
jbe .noscrollbar
mov eax, [ebx+56]
mov eax, [ebx+52]
mul ecx
div dword [ebx+44]
div dword [ebx+40]
push eax
mov eax, [ebx+dlgtemplate.x]
add eax, [ebx+dlgtemplate.width]
1078,25 → 1015,6
.noscrollbar:
ret
 
get_ascii_char:
; query keyboard layout
pushad
mov al, [ctrlstate]
and al, 3
xor ecx, ecx
cmp al, 1
sbb ecx, -2
push 26
pop eax
push 2
pop ebx
mov edx, layout
int 0x40
popad
; translate scancode to ASCII
movzx eax, byte [layout+eax]
ret
 
virtual at 0
dlgitemtemplate:
; «¥¬¥­âë:
1142,20 → 1060,6
call GenericBox
ret 4
 
; int __stdcall ShowDialogBox(DLGDATA* dlg);
ShowDialogBox:
push ManagerDlgProc
push dword [esp+8]
call ShowGenericBox
ret 4
 
; void __stdcall DrawDialogBox(DLGDATA* dlg);
DrawDialogBox:
push ManagerDlgProc
push dword [esp+8]
call DrawGenericBox
ret 4
 
ManagerDlgProc:
mov ebp, ebx
mov eax, [esp+8]
1351,8 → 1255,21
.editor_char:
test [ctrlstate], 0x3C
jnz .ret_draw
; query keyboard layout
pushad
push 26
pop eax
push 2
pop ebx
xor ecx, ecx
cmp [ctrlstate], 1
sbb ecx, -2
mov edx, layout
int 0x40
popad
; translate scancode to ASCII
movzx eax, al
call get_ascii_char
movzx eax, byte [layout+eax]
push eax
; insert entered symbol
xor eax, eax
1565,10 → 1482,6
pop eax
push aError
push eax
; int __stdcall SayErrTitle(const char* title,
; int num_strings, const char* strings[],
; int num_buttons, const char* buttons[]);
SayErrTitle:
push 2
jmp @f
 
1658,7 → 1571,6
stosd ; dlgtemplate.title
xor eax, eax
stosd ; (ignored)
stosd ; (ignored)
stosd ; DlgProc
stosd ; userdata
mov eax, [esp+32+8]
/programs/fs/kfar/trunk/kfar.ini
1,39 → 1,32
[Associations]
asm=/sys/TinyPad; AsmMenu1,AsmMenu2
inc=/sys/TinyPad
ini=/sys/TinyPad
txt=/sys/TinyPad
jpg=/sys/JpegView
jpeg=/sys/JpegView
gif=/sys/GIFVIEW; GifMenu1,MenuAnimage
wav=/sys/AC97SND
mp3=/sys/AC97SND
mid=/sys/MIDAMP
bmp=/sys/MV; BmpMenu1,MenuAnimage
png=/sys/@rcher
rtf=/sys/RtfRead
3ds=/sys/3d/view3ds
lif=/sys/demos/life2
skn=/sys/desktop
asm=/rd/1/TinyPad; AsmMenu1,AsmMenu2
inc=/rd/1/TinyPad
ini=/rd/1/TinyPad
txt=/rd/1/TinyPad
jpg=/rd/1/JpegView
jpeg=/rd/1/JpegView
gif=/rd/1/GIFVIEW; GifMenu1,MenuAnimage
wav=/rd/1/AC97SND
mp3=/rd/1/AC97SND
mid=/rd/1/MIDAMP
bmp=/rd/1/MV; BmpMenu1,MenuAnimage
png=/rd/1/@rcher
rtf=/rd/1/RtfRead
3ds=/rd/1/3d/view3ds
lif=/rd/1/demos/life2
skn=/rd/1/desktop
 
[Menu]
AsmMenu1=&¥¤ ªâ®à,/sys/TinyPad
AsmMenu2=&Š®¬¯¨«¨à®¢ âì,/sys/develop/fasm
GifMenu1=&à®á¬®âà,/sys/GIFVIEW
BmpMenu1=&à®á¬®âà,/sys/MV
MenuAnimage=&¥¤ ªâ®à,/sys/animage
AsmMenu1=&¥¤ ªâ®à,/rd/1/TinyPad
AsmMenu2=&Š®¬¯¨«¨à®¢ âì,/rd/1/develop/fasm
GifMenu1=&à®á¬®âà,/rd/1/GIFVIEW
BmpMenu1=&à®á¬®âà,/rd/1/MV
MenuAnimage=&¥¤ ªâ®à,/rd/1/animage
 
[Panels]
LeftViewMode=2
RightViewMode=2
 
[Editor]
# ‘¨¬¢®«ë ª®­æ  áâப¨, ª®â®àë¥ ¡ã¤¥â ¢áâ ¢«ïâì
# । ªâ®à kfar ¯à¨ ¤®¡ ¢«¥­¨¨ ­®¢®© áâப¨:
# DOS - ­ ¯®¤®¡¨¥ DOS/Win (0D 0A), Unix - ­ ¯®¤®¡¨¥ Unix (0A),
# Mac - ­ ¯®¤®¡¨¥ Mac (0D)
EOLStyle=Unix
 
[FolderShortcuts]
# Œ®¦­® ®¯à¥¤¥«¨âì ¤® ¤¥áï⨠ááë«®ª ­  ¯ ¯ª¨ Shortcut0...Shortcut9,
# ­  â ª¨¥ ¯ ¯ª¨ ¬®¦­® ᤥ« âì ¡ëáâàë© ¯¥à¥å®¤ ¯® RCtrl+<æ¨äà >
/programs/fs/kfar/trunk/viewer.inc
1,7 → 1,5
virtual at 0
viewer_data:
.hPlugin dd ?
.hFile dd ?
.buf_start dq ?
.cur_pos dq ?
.filesize dq ?
8,14 → 6,15
.buf_pos dd ?
.buf_size dd ?
.col dq ?
.hPlugin dd ?
.hFile dd ?
.hWorkFile dd ?
.encoding db ?
.bEofReached db ?
.flags db ? ; & 1: hex mode
; & 2: unwrap
; & 4: big-endian unicode
.bEofReached db ?
rb 1
align 200h
.filename rb 1024
.hostname rb 1024
.buf rb 16384
155,7 → 154,6
mov [ebp+viewer_data.hWorkFile], eax
test eax, eax
jnz .retry
..openerr_in_screen:
push ContinueBtn
push 1
push aCannotOpenFile_ptr
214,9 → 212,6
@@:
mov [ebp+viewer_data.encoding], encodings.unicode
.nounicode:
viewer_OnRedraw:
or [cursor_x], -1
or [cursor_y], -1
call viewer_set_keybar
call viewer_draw_text
ret
423,35 → 418,63
xor edx, edx
call get_console_ptr
mov ah, [view_status_color]
lea esi, [ebp+viewer_data.filename]
mov dl, 3
mov ecx, [cur_width]
sub ecx, 44
cmp ecx, 20
jae @f
jae .5
mov cl, 20
.5:
lodsb
cmp al, '/'
jnz @f
dec edx
jz .6
@@:
call viewedit_draw_filename
add ecx, 11
stosw
loop .5
.6:
dec ecx
stosw
push esi
@@:
inc esi
cmp byte [esi-1], 0
jnz @b
sub esi, [esp]
dec esi
cmp ecx, esi
jae .7
mov al, '.'
stosw
stosw
stosw
sub ecx, 3
sub esi, ecx
add [esp], esi
.7:
pop esi
@@:
lodsb
test al, al
jz @f
dec ecx
stosw
jmp @b
@@:
mov al, ' '
add ecx, 8
rep stosw
movzx esi, [ebp+viewer_data.encoding]
lea esi, [encodings.names+esi*8]
push edi esi
dec edi
dec edi
std
add esi, 8
mov cl, 8
@@:
dec esi
cmp byte [esi], ' '
jz @b
@@:
lodsb
stosw
cmp esi, [esp]
jae @b
cld
pop esi edi
loop @b
mov al, ' '
mov cl, 13
mov cl, 8
rep stosw
std
push edi
677,7 → 700,7
push edx
mov eax, ecx
xor edx, edx
div [viewer_tabsize]
div [tabsize]
mov ecx, edx
pop edx
jmp .1
693,7 → 716,7
push edx
push ecx
mov eax, ecx
mov ecx, [viewer_tabsize]
mov ecx, [tabsize]
xor edx, edx
div ecx
pop eax
978,54 → 1001,6
adc dword [scrpos+4], 0
ret
 
viewedit_draw_filename:
lea esi, [ebp+viewer_data.filename]
xor edx, edx
cmp [ebp+viewer_data.hPlugin], edx
mov dl, 3
jz .5
mov dl, 1
.5:
lodsb
cmp al, '/'
jnz @f
dec edx
jz .6
@@:
stosw
loop .5
.6:
dec ecx
stosw
push esi
@@:
inc esi
cmp byte [esi-1], 0
jnz @b
sub esi, [esp]
dec esi
cmp ecx, esi
jae .7
mov al, '.'
stosw
stosw
stosw
sub ecx, 3
sub esi, ecx
add [esp], esi
.7:
pop esi
@@:
lodsb
test al, al
jz @f
dec ecx
stosw
jmp @b
@@:
mov al, ' '
ret
 
viewer_seek_to_current:
mov eax, dword [ebp+viewer_data.cur_pos]
mov edx, dword [ebp+viewer_data.cur_pos+4]
1238,7 → 1213,7
.tab:
push ecx
mov eax, ecx
mov ecx, [viewer_tabsize]
mov ecx, [tabsize]
xor edx, edx
div ecx
sub ecx, edx
1257,11 → 1232,8
jnz .2
dec [ebp+viewer_data.buf_pos]
.2:
clc
.ret:
pushf
call viewer_set_curpos
popf
ret
 
viewer_prev_newline:
1391,6 → 1363,11
movsw
jmp draw_keybar
 
viewer_OnRedraw:
call viewer_set_keybar
call viewer_draw_text
ret
 
viewer_OnExit:
mov edx, [ebp+viewer_data.hPlugin]
test edx, edx
1406,7 → 1383,6
ret
 
viewer_IsHandleUsed:
editor_IsHandleUsed:
cmp edx, [ebp+viewer_data.hPlugin]
jnz @f
cmp ebx, [ebp+viewer_data.hFile]
1603,25 → 1579,6
stosd
stosb
end if
jmp viewedit_getname
editor_getname:
if lang eq ru
mov eax, '¥¤ '
stosd
mov eax, 'ªâ®à'
stosd
mov eax, ' '
stosd
stosb
else
mov eax, 'Edit'
stosd
mov eax, ' '
stosd
stosd
stosb
end if
viewedit_getname:
sub ecx, 13
cmp [ebp+viewer_data.hPlugin], 0
jz .native