KFM: Add function create file

git-svn-id: svn://kolibrios.org@9121 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Doczom 2021-08-05 19:52:42 +00:00
parent 0317b4b039
commit ee74827e6e
3 changed files with 244 additions and 66 deletions

View File

@ -0,0 +1,174 @@
;-------------------------------------------------------------
create_new_file:
call clear_file_buffer
mov edi, edit1
mov ed_size, dword 0
mov ed_pos, dword 0
default_box
mov [create_dir_name],byte 0
mcall 66, 1, 0
jmp .red
.red_1:
call draw_window
.red:
call draw_create_file
.still:
mcall 10
cmp eax,1
je .red_1
cmp eax,2
je .key_create
cmp eax,3
je .button_create
mouse_edit_box create_editboxes
jmp .still
;-------------------------------------------------------------
.button_create:
mov eax,17
mcall
test ah,ah
jz .still
cmp ah,160
je .exit_with_create
cmp ah,161
je .exit_without_create
cmp ah,1
jne .still
mcall -1
.exit_with_create:
call create_new_file_1
cmp [select_panel_counter],0
jne @f
call proc_read_left_folder
jmp .exit_without_create
@@:
call proc_read_right_folder
.exit_without_create:
mcall 66, 1, 1
jmp red
;-------------------------------------------------------------
.key_create:
mov eax,2
mcall
cmp ah,13
je .exit_with_create
cmp ah,27
je .exit_without_create
key_edit_box create_editboxes
jmp .still
;-------------------------------------------------------------
draw_create_file:
mov ecx,[window_high]
mov ebx,[window_width]
shr ecx,1
shr ebx,1
sub ecx,30
sub ebx,87
shl ecx,16
shl ebx,16
mov cx,60
mov bx,174
mcall 13, , ,0x6060ff ;0xff
pusha
shr ebx,16
add ebx,10
shr ecx,16
add ecx,17
mov eax,create_editboxes
mov dword [eax+4],ebx
mov dword [eax+8],ecx
draw_edit_box create_editboxes
popa
pusha
add ebx,70 shl 16
add ecx,37 shl 16
mov cx,15
mov bx,40
mov esi,0xffffff
mov edx,0x40000000+160
mov eax,8
mcall
add ebx,50 shl 16
inc edx
mcall
popa
push ebx ecx
add ebx,70 shl 16
add ecx,37 shl 16
mov bx,40
mov cx,15
mov edx,0
push ebx ecx
sub ecx,1 shl 16
sub ebx,1 shl 16
mov bx,42
mov cx,17
mcall
add ebx,50 shl 16
mcall
pop ecx ebx
mov edx,0xff7700
mcall
mov edx,0xaa00
add ebx,50 shl 16
mcall
pop ecx ebx
shr ecx,16
mov bx,cx
add ebx,30 shl 16+1
mcall 4, ,0x90ffffff,create_file ;[confirmation_type]
add ebx,48 shl 16+36
mov edx,type_yes
mcall
add ebx,56 shl 16
mov edx,type_no
mcall
ret
;-------------------------------------------------------------
create_new_file_1:
mov edx,create_dir_name
cmp [select_panel_counter],0
jne @f
mov esi,read_folder_name
jmp .start
@@:
mov esi,read_folder_1_name
.start:
mov edi,start_parameter
xor eax,eax
@@:
cld
lodsb
stosb
test eax,eax
jnz @b
mov [edi-1], byte '/'
mov esi,edx
mov [error_pointer], edx ;start_file_data.name
@@:
cld
lodsb
stosb
test eax,eax
jnz @b
call write_file
cmp eax,0
je @f
; mov ebx,0
; sub ebx,eax
; mov eax,ebx
call start_error_window_thread
@@:
; call create_directory_f70
ret
;-------------------------------------------------------------
;clear_file_buffer:
; xor eax,eax
; mov edi,create_dir_name
; mov ecx,256/4
; cld
; rep stosd
; ret
;-------------------------------------------------------------

View File

@ -632,12 +632,14 @@ f_key_f5:
f_key_f6: f_key_f6:
;sort_date: ;sort_date:
cmp [shift_flag],1 cmp [shift_flag],1
je still je .shift
cmp [ctrl_flag],1 cmp [ctrl_flag],1
je .ctrl je .ctrl
cmp [alt_flag],1 cmp [alt_flag],1
je still je still
jmp move_file_f6 jmp move_file_f6
.shift:
jmp still
.ctrl: .ctrl:
cmp [select_panel_counter],1 cmp [select_panel_counter],1
je right_sort_date je right_sort_date
@ -668,7 +670,7 @@ f_key_f9:
je still je still
cmp [alt_flag],1 cmp [alt_flag],1
je still je still
jmp create_directory;create_file jmp create_new_file; create_directory;
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
f_key_f12: f_key_f12:
cmp [shift_flag],1 cmp [shift_flag],1

View File

@ -5,14 +5,14 @@
; ;
; Redistribution and use in source and binary forms, with or without ; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions are met: ; modification, are permitted provided that the following conditions are met:
; * Redistributions of source code must retain the above copyright ; * Redistributions of source code must retain the above copyright
; notice, this list of conditions and the following disclaimer. ; notice, this list of conditions and the following disclaimer.
; * Redistributions in binary form must reproduce the above copyright ; * Redistributions in binary form must reproduce the above copyright
; notice, this list of conditions and the following disclaimer in the ; notice, this list of conditions and the following disclaimer in the
; documentation and/or other materials provided with the distribution. ; documentation and/or other materials provided with the distribution.
; * Neither the name of the <organization> nor the ; * Neither the name of the <organization> nor the
; names of its contributors may be used to endorse or promote products ; names of its contributors may be used to endorse or promote products
; derived from this software without specific prior written permission. ; derived from this software without specific prior written permission.
; ;
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY ; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
@ -28,23 +28,23 @@
; KFM v0.47j 12/03/2014 ; KFM v0.47j 12/03/2014
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
use32 use32
org 0x0 org 0x0
db 'MENUET01' db 'MENUET01'
dd 0x01 dd 0x01
dd START dd START
dd I_END dd I_END
dd mem dd mem
dd stacktop dd stacktop
dd 0x0 dd 0x0
dd path dd path
;include 'lang.inc' ;include 'lang.inc'
;include 'kglobals.inc' ;include 'kglobals.inc'
;include 'macros.inc' ;include 'macros.inc'
include '../../../macros.inc' include '../../../macros.inc'
include '../../../config.inc' ;for nightbuild include '../../../config.inc' ;for nightbuild
;include '../../../debug.inc' ;for nightbuild ;include '../../../debug.inc' ;for nightbuild
;define __DEBUG__ 1 ;define __DEBUG__ 1
;define __DEBUG_LEVEL__ 1 ;define __DEBUG_LEVEL__ 1
@ -60,10 +60,10 @@ include 'files.inc'
STRLEN = 1024 STRLEN = 1024
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
START: START:
mcall 9,procinfo,-1 mcall 9,procinfo,-1
mov ecx,[ebx+30] ; PID mov ecx,[ebx+30] ; PID
mcall 18,21 mcall 18,21
mov [active_process],eax ; WINDOW SLOT mov [active_process],eax ; WINDOW SLOT
mov [appl_memory],mem mov [appl_memory],mem
mov ax,[select_disk_char] mov ax,[select_disk_char]
mov [read_folder_name],ax mov [read_folder_name],ax
@ -79,29 +79,29 @@ START:
call proc_read_left_folder call proc_read_left_folder
test eax,eax test eax,eax
jz @f jz @f
cmp eax,6 cmp eax,6
jne read_folder_error jne read_folder_error
@@: @@:
call proc_read_right_folder call proc_read_right_folder
test eax,eax test eax,eax
jz @f jz @f
cmp eax,6 cmp eax,6
je @f je @f
; if /hd read error for start then use /rd ; if /hd read error for start then use /rd
mov esi,retrieved_devices_table+1 mov esi,retrieved_devices_table+1
call copy_folder_name_1 call copy_folder_name_1
call proc_read_right_folder call proc_read_right_folder
test eax,eax test eax,eax
jz @f jz @f
cmp eax,6 cmp eax,6
jne read_folder_1_error jne read_folder_1_error
@@: @@:
mcall 40, 0x27 mcall 40, 0x27
jmp red_1 jmp red_1
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
red: red:
call get_window_param call get_window_param
@ -110,12 +110,12 @@ red:
test [window_status],100b test [window_status],100b
jnz red_1 jnz red_1
cmp [window_high],180 cmp [window_high],180
ja @f ja @f
mov esi,180 mov esi,180
mcall 67,-1,ebx,ebx mcall 67,-1,ebx,ebx
@@: @@:
cmp [window_width],495 cmp [window_width],495
ja red_1 ja red_1
mov edx,495 mov edx,495
mcall 67,-1,ebx, ,ebx mcall 67,-1,ebx, ,ebx
red_1: red_1:
@ -127,41 +127,41 @@ still:
call check_active_process_for_clear_all_flags call check_active_process_for_clear_all_flags
cmp eax,1 cmp eax,1
je red je red
cmp eax,2 cmp eax,2
je key je key
cmp eax,3 cmp eax,3
je button je button
cmp eax,6 cmp eax,6
je mouse je mouse
jmp still jmp still
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
check_active_process_for_clear_all_flags: check_active_process_for_clear_all_flags:
push eax push eax
mcall 18,7 mcall 18,7
cmp [active_process],eax cmp [active_process],eax
je .exit je .exit
xor eax,eax xor eax,eax
cmp [shift_flag],al cmp [shift_flag],al
jne .clear_all_flags jne .clear_all_flags
cmp [ctrl_flag],al cmp [ctrl_flag],al
jne .clear_all_flags jne .clear_all_flags
cmp [ctrl_flag],al cmp [ctrl_flag],al
je .exit je .exit
;-------------------------------------- ;--------------------------------------
.clear_all_flags: .clear_all_flags:
mov [shift_flag],al mov [shift_flag],al
mov [ctrl_flag],al mov [ctrl_flag],al
mov [alt_flag],al mov [alt_flag],al
call erase_fbutton call erase_fbutton
call draw_fbutton call draw_fbutton
;-------------------------------------- ;--------------------------------------
.exit: .exit:
pop eax pop eax
ret ret
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
get_window_param: get_window_param:
mcall 9, procinfo, -1 mcall 9, procinfo, -1
@ -177,17 +177,17 @@ get_window_param:
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
draw_window: draw_window:
mcall 12, 1 mcall 12, 1
xor esi,esi xor esi,esi
mcall 0, <20,728>, <20,460>, 0x43cccccc ; 0x805080D0, 0x005080D0 mcall 0, <20,728>, <20,460>, 0x43cccccc ; 0x805080D0, 0x005080D0
call get_window_param call get_window_param
mcall 71, 1, header_text mcall 71, 1, header_text
test [window_status],100b ; window is rolled up test [window_status],100b ; window is rolled up
jnz .exit jnz .exit
test [window_status],10b ; window is minimized to panel test [window_status],10b ; window is minimized to panel
jnz .exit jnz .exit
; create_dir_name ; create_dir_name
; start_parameter ; start_parameter
@ -199,12 +199,12 @@ draw_window:
; start_parameter ; start_parameter
; start_file_data.name ; start_file_data.name
; read_icon_file.name ; read_icon_file.name
; read_file_features.name ;path ;header ; read_file_features.name ;path ;header
cmp [window_high],180 cmp [window_high],180
jb .exit jb .exit
cmp [window_width],495 cmp [window_width],495
jb .exit jb .exit
call draw_fbutton call draw_fbutton
call draw_left_panel call draw_left_panel
@ -367,6 +367,8 @@ include 'copy.inc'
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
include 'creatdir.inc' include 'creatdir.inc'
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
include 'creatfile.inc'
;---------------------------------------------------------------------
include 'confirm.inc' include 'confirm.inc'
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
include 'err_wind.inc' include 'err_wind.inc'