Eolite: remember of choice for all files during COPY->REPLACE

git-svn-id: svn://kolibrios.org@9534 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Serhii Sakhno 2021-12-31 00:03:12 +00:00
parent c876e40dbc
commit ac5506b6cc
4 changed files with 30 additions and 8 deletions

View File

@ -11,9 +11,9 @@ TODO:
http://board.kolibrios.org/viewtopic.php?f=23&t=4521&p=77334#p77334 http://board.kolibrios.org/viewtopic.php?f=23&t=4521&p=77334#p77334
*/ */
#define ABOUT_TITLE "EOLITE 5.17" #define ABOUT_TITLE "EOLITE 5.18"
#define TITLE_EOLITE "Eolite File Manager 5.17" #define TITLE_EOLITE "Eolite File Manager 5.18"
#define TITLE_KFM "Kolibri File Manager 2.17"; #define TITLE_KFM "Kolibri File Manager 2.18";
#define MEMSIZE 1024 * 250 #define MEMSIZE 1024 * 250
#include "../lib/clipboard.h" #include "../lib/clipboard.h"

View File

@ -124,6 +124,7 @@ void PasteThread()
int paste_elements_count = 0; int paste_elements_count = 0;
dword clipbuf; dword clipbuf;
dword path_offset; dword path_offset;
dword copy_state_ex = 0;
clipbuf = Clipboard__GetSlotData(Clipboard__GetSlotCount()-1); clipbuf = Clipboard__GetSlotData(Clipboard__GetSlotCount()-1);
if (DSDWORD[clipbuf+4] != 3) return; if (DSDWORD[clipbuf+4] != 3) return;
@ -160,6 +161,8 @@ _DIFFERENT_DRIVES:
} }
path_offset = clipbuf + 10; path_offset = clipbuf + 10;
copy_state = FILE_DEFAULT;
saved_state = FILE_DEFAULT;
for (j = 0; j < paste_elements_count; j++) { for (j = 0; j < paste_elements_count; j++) {
strcpy(#copy_from, path_offset); strcpy(#copy_from, path_offset);
if (!copy_from) DialogExit(); if (!copy_from) DialogExit();

View File

@ -46,8 +46,9 @@ void DisplayOperationForm(int operation_flag)
copy_bar.max = 0; copy_bar.max = 0;
} }
copy_bar.frame_color = sc.work_graph; copy_bar.frame_color = sc.work_graph;
if (copy_state == FILE_DEFAULT) event_mode = #CheckEvent;
if (copy_state == FILE_EXISTS) event_mode = #WaitEvent; if (copy_state == FILE_EXISTS) event_mode = #WaitEvent;
else event_mode = #CheckEvent;
event_mode(); event_mode();
switch(EAX) switch(EAX)
{ {
@ -59,15 +60,22 @@ void DisplayOperationForm(int operation_flag)
DialogExit(); DialogExit();
break; break;
case BTN_REPLACE: case BTN_REPLACE:
if (is_remember == true) {
saved_state = FILE_REPLACE;
}
copy_state = FILE_REPLACE; copy_state = FILE_REPLACE;
break; break;
case BTN_SKIP: case BTN_SKIP:
if (is_remember == true) {
saved_state = FILE_SKIP;
}
copy_state = FILE_SKIP; copy_state = FILE_SKIP;
break; break;
default: default:
if (remember_choice.click(EAX+1)) { if (remember_choice.click(EAX+1)) {
notify(itoa(remember_choice.checked)); is_remember = remember_choice.checked;
} }
break;
} }
break; break;
case evReDraw: case evReDraw:

View File

@ -14,17 +14,23 @@ enum {
FILE_SKIP, FILE_SKIP,
}; };
enum {
MODE_NORMAL,
MODE_FORCE
};
#define WRITE_ERROR_DEBUG 0 #define WRITE_ERROR_DEBUG 0
#define WRITE_ERROR_NOTIFY 1 #define WRITE_ERROR_NOTIFY 1
:int writing_error_channel = WRITE_ERROR_DEBUG; :int writing_error_channel = WRITE_ERROR_DEBUG;
int copy_state = FILE_DEFAULT; int copy_state = FILE_DEFAULT;
int saved_state = FILE_DEFAULT;
bool is_remember = false;
:int copyf(dword from1, in1) :int copyf(dword from1, in1)
{ {
dword error; dword error;
BDVK CopyFile_atr1; BDVK CopyFile_atr1;
copy_state = FILE_DEFAULT;
if (!from1) || (!in1) if (!from1) || (!in1)
{ {
@ -53,6 +59,7 @@ int copy_state = FILE_DEFAULT;
} }
if (copy_state == FILE_SKIP) if (copy_state == FILE_SKIP)
{ {
error = 0;
return 0; return 0;
} }
} }
@ -72,7 +79,11 @@ int copy_state = FILE_DEFAULT;
{ {
if (file_exists(copy_in3)) && (copy_state != FILE_REPLACE) if (file_exists(copy_in3)) && (copy_state != FILE_REPLACE)
{ {
if (saved_state == FILE_DEFAULT) {
copy_state = FILE_EXISTS; copy_state = FILE_EXISTS;
} else {
copy_state = saved_state;
}
return 222; return 222;
} }
if (GetFreeRAM()-1024*1024 < CopyFile_atr.sizelo) //GetFreeRam-1Mb and convert to bytes if (GetFreeRAM()-1024*1024 < CopyFile_atr.sizelo) //GetFreeRam-1Mb and convert to bytes
@ -142,7 +153,7 @@ int copy_state = FILE_DEFAULT;
} }
if (copy_state == FILE_SKIP) if (copy_state == FILE_SKIP)
{ {
copy_state = FILE_DEFAULT; error = 0;
break; break;
} }
} }