;=========================================================== ; ; Процесс переименования файла/папки ; ;=========================================================== rename: call test_show_panels ; тест на режим вкл. панелей ret z call get_fire ; защита от "залипания" бутонов ld a,(format_mode) ; тек. формат панели and form_info+form_qview ; info, qview ret nz call set_path_from_activ_panel ; уст. диск и путь акт. панели ret c call prep_rename_name ; имя файла в описатель окна ret c ; ".." запись ; вывод начального окна ld hl,dial_rename ; описатель окна call DialogW cp evCommand ; событие "команда" ret nz ld a,(hl) ;+1 what cp cmOkey ; "Ok" ret nz ; переименование файла ld hl,temp_fname ; старое имя ld de,input_line_rename+5 ; новое имя ld c,10h ; переимен. файл rst 10h jp nc,fresh_two_panels ; без ошибок, обновить панели ; ; вывод окна ошибки переименования ld hl,dial_error_rename ; "Cannot rename the file or folder" jp DialogEr ; Скопировать тек. имя переимен. файла/папки в описатель окна. ; Обработка макс. одной выдел. записи ; выход: hl=адрес записи prep_rename_name: ld de,(mark_files) ; число выдел. файлов ld hl,1 sbc hl,de ret c ; >= 2 выдел. файлов jr z,prep_ren_name1 ; есть один выдел. файл ; нет выдел. файлов call get_record ; запись в тек. положении указателя ld a,(hl) cp "." ; ".." scf ret z jr $+5 prep_ren_name1: call scan_mark_records ; поиск отмеч. файла (с начала списка) ; вход: hl=запись файла ld bc,rename_name1 ; куда (буфер 12 байт) push hl call copy_cur_fname ; скопир. имя файла и отцентровать pop hl ; hl=откуда ld de,temp_fname ; куда ld bc,0044h ; 11 -> 8.3 rst 10h ; очистить структуру буфера ld hl,input_line_rename ; структура буфера call clear_struct_inline ; вставить имя в структуру буфера ld iy,input_line_rename ; структура буфера ld de,temp_fname ; откуда ld hl,input_line_rename+5 ; куда prep_ren_loop: ld a,(de) or a ret z call put_char1 ; вставить символ inc de inc hl jr prep_ren_loop ; Вставить символ в буфер структуры ; вход: iy=структура буфера ; hl=куда ; a=символ put_char1: push hl push iy pop hl ; структура буфера ex af,af' ; сохр. символ ld a,(iy+2) ; X тек. полож. курсора в строке add a,(iy+3) add a,l ld l,a jr nc,$+3 inc h inc hl inc hl inc hl inc hl inc hl ex af,af' ld (hl),a ; символ в ком-строку pop hl inc (iy+4) ; число введ. символов inc (iy+2) ; X тек. полож. курсора в строке ret