mirror of
https://github.com/winscp/winscp.git
synced 2026-10-24 02:28:55 +03:00
Switch /defaults accepts an optional delay in seconds to start the operation
Source commit: 312b3a3d9921c60a25172d756ae72949f1182766
This commit is contained in:
@@ -21,10 +21,10 @@
|
||||
#pragma resource "*.dfm"
|
||||
#endif
|
||||
//---------------------------------------------------------------------------
|
||||
bool __fastcall DoCopyDialog(bool ToRemote,
|
||||
bool Move, TStrings * FileList, UnicodeString & TargetDirectory,
|
||||
bool __fastcall DoCopyDialog(
|
||||
bool ToRemote, bool Move, TStrings * FileList, UnicodeString & TargetDirectory,
|
||||
TGUICopyParamType * Params, int Options, int CopyParamAttrs, TSessionData * SessionData,
|
||||
int * OutputOptions)
|
||||
int * OutputOptions, int AutoSubmit)
|
||||
{
|
||||
bool Result;
|
||||
TCopyDialog *CopyDialog = new TCopyDialog(Application, ToRemote, Move, FileList, Options, CopyParamAttrs, SessionData);
|
||||
@@ -42,6 +42,10 @@ bool __fastcall DoCopyDialog(bool ToRemote,
|
||||
}
|
||||
CopyDialog->Directory = TargetDirectory;
|
||||
CopyDialog->Params = *Params;
|
||||
if (AutoSubmit > 0)
|
||||
{
|
||||
InitiateDialogTimeout(CopyDialog, AutoSubmit * MSecsPerSec, CopyDialog->OkButton);
|
||||
}
|
||||
Result = CopyDialog->Execute();
|
||||
if (Result)
|
||||
{
|
||||
|
||||
@@ -1125,7 +1125,7 @@ bool __fastcall TCustomScpExplorerForm::CopyParamDialog(
|
||||
std::unique_ptr<TSessionData> SessionData(SessionDataForCode());
|
||||
FlashOnBackground(); // Particularly when called from ClipboardFakeCreated
|
||||
Result = DoCopyDialog(Direction == tdToRemote, Type == ttMove,
|
||||
FileList, TargetDirectory, &CopyParam, Options, CopyParamAttrs, SessionData.get(), &OutputOptions);
|
||||
FileList, TargetDirectory, &CopyParam, Options, CopyParamAttrs, SessionData.get(), &OutputOptions, -1);
|
||||
|
||||
if (Result)
|
||||
{
|
||||
@@ -5267,7 +5267,7 @@ void __fastcall TCustomScpExplorerForm::SynchronizeDirectories()
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool __fastcall TCustomScpExplorerForm::DoSynchronizeDirectories(
|
||||
UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory, bool UseDefaults)
|
||||
UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory, int UseDefaults)
|
||||
{
|
||||
TSynchronizeParamType Params;
|
||||
Params.LocalDirectory = LocalDirectory;
|
||||
@@ -5744,7 +5744,7 @@ void __fastcall TCustomScpExplorerForm::FullSynchronizeInNewWindow(
|
||||
//---------------------------------------------------------------------------
|
||||
int __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
|
||||
UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory,
|
||||
TSynchronizeMode & Mode, int Params, bool & SaveMode, bool UseDefaults)
|
||||
TSynchronizeMode & Mode, int Params, bool & SaveMode, int UseDefaults)
|
||||
{
|
||||
int Result;
|
||||
|
||||
@@ -5755,9 +5755,9 @@ int __fastcall TCustomScpExplorerForm::DoFullSynchronizeDirectories(
|
||||
TCopyParamType CopyParam = GUIConfiguration->CurrentCopyParam;
|
||||
TUsableCopyParamAttrs CopyParamAttrs = Terminal->UsableCopyParamAttrs(0);
|
||||
bool Continue =
|
||||
UseDefaults ||
|
||||
(UseDefaults == 0) ||
|
||||
DoFullSynchronizeDialog(Mode, Params, LocalDirectory, RemoteDirectory,
|
||||
&CopyParam, SaveSettings, SaveMode, Options, CopyParamAttrs, FullSynchronizeInNewWindow);
|
||||
&CopyParam, SaveSettings, SaveMode, Options, CopyParamAttrs, FullSynchronizeInNewWindow, UseDefaults);
|
||||
if (Continue)
|
||||
{
|
||||
Configuration->Usage->Inc(L"Synchronizations");
|
||||
|
||||
@@ -774,11 +774,11 @@ public:
|
||||
void __fastcall TerminalReady();
|
||||
void __fastcall QueueEvent(TManagedTerminal * Terminal, TTerminalQueue * Queue, TQueueEvent Event);
|
||||
void __fastcall QueueEmptyNoteClicked(TObject * Sender);
|
||||
bool __fastcall DoSynchronizeDirectories(UnicodeString & LocalDirectory,
|
||||
UnicodeString & RemoteDirectory, bool UseDefaults);
|
||||
int __fastcall DoFullSynchronizeDirectories(UnicodeString & LocalDirectory,
|
||||
UnicodeString & RemoteDirectory, TSynchronizeMode & Mode, int Params, bool & SaveMode,
|
||||
bool UseDefaults);
|
||||
bool __fastcall DoSynchronizeDirectories(
|
||||
UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory, int UseDefaults);
|
||||
int __fastcall DoFullSynchronizeDirectories(
|
||||
UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory, TSynchronizeMode & Mode,
|
||||
int Params, bool & SaveMode, int UseDefaults);
|
||||
void __fastcall StandaloneEdit(const UnicodeString & FileName);
|
||||
bool __fastcall CanPasteFromClipBoard();
|
||||
virtual void __fastcall PasteFromClipBoard();
|
||||
|
||||
@@ -27,7 +27,8 @@
|
||||
bool __fastcall DoFullSynchronizeDialog(TSynchronizeMode & Mode, int & Params,
|
||||
UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory,
|
||||
TCopyParamType * CopyParams, bool & SaveSettings, bool & SaveMode, int Options,
|
||||
const TUsableCopyParamAttrs & CopyParamAttrs, TFullSynchronizeInNewWindow OnFullSynchronizeInNewWindow)
|
||||
const TUsableCopyParamAttrs & CopyParamAttrs, TFullSynchronizeInNewWindow OnFullSynchronizeInNewWindow,
|
||||
int AutoSubmit)
|
||||
{
|
||||
bool Result;
|
||||
TFullSynchronizeDialog * Dialog = SafeFormCreate<TFullSynchronizeDialog>();
|
||||
@@ -41,6 +42,10 @@ bool __fastcall DoFullSynchronizeDialog(TSynchronizeMode & Mode, int & Params,
|
||||
Dialog->CopyParams = *CopyParams;
|
||||
Dialog->SaveSettings = SaveSettings;
|
||||
Dialog->SaveMode = SaveMode;
|
||||
if (AutoSubmit > 0)
|
||||
{
|
||||
InitiateDialogTimeout(Dialog, AutoSubmit * MSecsPerSec, Dialog->OkButton);
|
||||
}
|
||||
Result = Dialog->Execute();
|
||||
if (Result)
|
||||
{
|
||||
|
||||
@@ -1007,7 +1007,7 @@ void __fastcall TScpCommanderForm::SynchronizeDirectories()
|
||||
{
|
||||
UnicodeString LocalDirectory = LocalDirView->PathName;
|
||||
UnicodeString RemoteDirectory = RemoteDirView->PathName;
|
||||
DoSynchronizeDirectories(LocalDirectory, RemoteDirectory, false);
|
||||
DoSynchronizeDirectories(LocalDirectory, RemoteDirectory, -1);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TScpCommanderForm::FullSynchronizeDirectories()
|
||||
|
||||
@@ -227,7 +227,7 @@ void __fastcall TScpExplorerForm::SynchronizeDirectories()
|
||||
{
|
||||
UnicodeString LocalDirectory = WinConfiguration->ScpExplorer.LastLocalTargetDirectory;
|
||||
UnicodeString RemoteDirectory = RemoteDirView->PathName;
|
||||
if (DoSynchronizeDirectories(LocalDirectory, RemoteDirectory, false))
|
||||
if (DoSynchronizeDirectories(LocalDirectory, RemoteDirectory, -1))
|
||||
{
|
||||
WinConfiguration->ScpExplorer.LastLocalTargetDirectory = LocalDirectory;
|
||||
}
|
||||
|
||||
@@ -35,12 +35,12 @@ bool __fastcall DoSynchronizeDialog(TSynchronizeParamType & Params,
|
||||
TSynchronizeSessionLog OnSynchronizeSessionLog,
|
||||
TFeedSynchronizeError & OnFeedSynchronizeError,
|
||||
TSynchronizeInNewWindow OnSynchronizeInNewWindow,
|
||||
bool Start)
|
||||
int AutoSubmit)
|
||||
{
|
||||
bool Result;
|
||||
TSynchronizeDialog * Dialog = SafeFormCreate<TSynchronizeDialog>(Application);
|
||||
|
||||
Dialog->Init(OnStartStop, OnGetOptions, OnSynchronizeSessionLog, OnFeedSynchronizeError, OnSynchronizeInNewWindow, Start);
|
||||
Dialog->Init(OnStartStop, OnGetOptions, OnSynchronizeSessionLog, OnFeedSynchronizeError, OnSynchronizeInNewWindow, AutoSubmit);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -97,7 +97,7 @@ void __fastcall TSynchronizeDialog::Init(TSynchronizeStartStopEvent OnStartStop,
|
||||
TSynchronizeSessionLog OnSynchronizeSessionLog,
|
||||
TFeedSynchronizeError & OnFeedSynchronizeError,
|
||||
TSynchronizeInNewWindow OnSynchronizeInNewWindow,
|
||||
bool StartImmediately)
|
||||
int AutoSubmit)
|
||||
{
|
||||
FOnStartStop = OnStartStop;
|
||||
FOnGetOptions = OnGetOptions;
|
||||
@@ -105,7 +105,19 @@ void __fastcall TSynchronizeDialog::Init(TSynchronizeStartStopEvent OnStartStop,
|
||||
FOnFeedSynchronizeError = &OnFeedSynchronizeError;
|
||||
DebugAssert(OnSynchronizeInNewWindow != NULL);
|
||||
FOnSynchronizeInNewWindow = OnSynchronizeInNewWindow;
|
||||
FStartImmediately = StartImmediately;
|
||||
if (AutoSubmit == 0)
|
||||
{
|
||||
FStartImmediately = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
FStartImmediately = false;
|
||||
|
||||
if (AutoSubmit > 0)
|
||||
{
|
||||
InitiateDialogTimeout(this, AutoSubmit * MSecsPerSec, StartButton);
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
__fastcall TSynchronizeDialog::~TSynchronizeDialog()
|
||||
|
||||
@@ -142,7 +142,7 @@ public:
|
||||
TGetSynchronizeOptionsEvent OnGetOptions,
|
||||
TSynchronizeSessionLog OnSynchronizeSessionLog,
|
||||
TFeedSynchronizeError & OnFeedSynchronizeError, TSynchronizeInNewWindow OnSynchronizeInNewWindow,
|
||||
bool StartImmediately);
|
||||
int AutoSubmit);
|
||||
virtual __fastcall ~TSynchronizeDialog();
|
||||
|
||||
bool __fastcall Execute();
|
||||
|
||||
@@ -407,7 +407,9 @@ void __fastcall TMessageTimeout::DoTimer(TObject * /*Sender*/)
|
||||
TForm * Dialog = dynamic_cast<TForm *>(FButton->Parent);
|
||||
DebugAssert(Dialog != NULL);
|
||||
|
||||
Dialog->ModalResult = FButton->ModalResult;
|
||||
// Needed particularly for "keep up to date" dialog, which does not close on the button click
|
||||
Enabled = false;
|
||||
FButton->Click();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -415,6 +417,13 @@ void __fastcall TMessageTimeout::DoTimer(TObject * /*Sender*/)
|
||||
UpdateButton();
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void InitiateDialogTimeout(TForm * Dialog, unsigned int Timeout, TButton * Button)
|
||||
{
|
||||
TMessageTimeout * MessageTimeout = new TMessageTimeout(Application, Timeout, Button);
|
||||
MessageTimeout->Name = L"MessageTimeout";
|
||||
Dialog->InsertComponent(MessageTimeout);
|
||||
}
|
||||
//---------------------------------------------------------------------
|
||||
class TPublicControl : public TControl
|
||||
{
|
||||
@@ -464,9 +473,7 @@ TForm * __fastcall CreateMoreMessageDialogEx(const UnicodeString Message, TStrin
|
||||
{
|
||||
if (Params->Timeout > 0)
|
||||
{
|
||||
TMessageTimeout * Timeout = new TMessageTimeout(Application, Params->Timeout, TimeoutButton);
|
||||
Timeout->Name = L"MessageTimeout";
|
||||
Dialog->InsertComponent(Timeout);
|
||||
InitiateDialogTimeout(Dialog.get(), Params->Timeout, TimeoutButton);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -112,6 +112,8 @@ Tbx::TTBXSeparatorItem * __fastcall AddMenuSeparator(Tb2item::TTBCustomItem * Me
|
||||
void __fastcall AddMenuLabel(Tb2item::TTBCustomItem * Menu, const UnicodeString & Label);
|
||||
void __fastcall ClickToolbarItem(Tb2item::TTBCustomItem * Item, bool PositionCursor);
|
||||
|
||||
void InitiateDialogTimeout(TForm * Dialog, unsigned int Timeout, TButton * Button);
|
||||
|
||||
// windows\WinHelp.cpp
|
||||
void __fastcall InitializeWinHelp();
|
||||
void __fastcall FinalizeWinHelp();
|
||||
@@ -211,10 +213,10 @@ const coAllFiles = 0x1000;
|
||||
const cooDoNotShowAgain = 0x01;
|
||||
const cooRemoteTransfer = 0x02;
|
||||
const cooSaveSettings = 0x04;
|
||||
bool __fastcall DoCopyDialog(bool ToRemote,
|
||||
bool Move, TStrings * FileList, UnicodeString & TargetDirectory,
|
||||
bool __fastcall DoCopyDialog(
|
||||
bool ToRemote, bool Move, TStrings * FileList, UnicodeString & TargetDirectory,
|
||||
TGUICopyParamType * Params, int Options, int CopyParamAttrs,
|
||||
TSessionData * SessionData, int * OutputOptions);
|
||||
TSessionData * SessionData, int * OutputOptions, int AutoSubmit);
|
||||
|
||||
// forms\CreateDirectory.cpp
|
||||
bool __fastcall DoCreateDirectoryDialog(UnicodeString & Directory,
|
||||
@@ -336,7 +338,7 @@ bool __fastcall DoSynchronizeDialog(TSynchronizeParamType & Params,
|
||||
TSynchronizeSessionLog OnSynchronizeSessionLog,
|
||||
TFeedSynchronizeError & OnFeedSynchronizeError,
|
||||
TSynchronizeInNewWindow OnSynchronizeInNewWindow,
|
||||
bool Start);
|
||||
int AutoSubmit);
|
||||
|
||||
// forms\FullSynchronize.cpp
|
||||
struct TUsableCopyParamAttrs;
|
||||
@@ -351,7 +353,7 @@ bool __fastcall DoFullSynchronizeDialog(TSynchronizeMode & Mode, int & Params,
|
||||
UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory,
|
||||
TCopyParamType * CopyParams, bool & SaveSettings, bool & SaveMode,
|
||||
int Options, const TUsableCopyParamAttrs & CopyParamAttrs,
|
||||
TFullSynchronizeInNewWindow OnFullSynchronizeInNewWindow);
|
||||
TFullSynchronizeInNewWindow OnFullSynchronizeInNewWindow, int AutoSubmit);
|
||||
|
||||
// forms\SynchronizeChecklist.cpp
|
||||
class TSynchronizeChecklist;
|
||||
|
||||
@@ -92,7 +92,7 @@ void __fastcall GetLoginData(UnicodeString SessionName, TOptions * Options,
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall Upload(TTerminal * Terminal, TStrings * FileList, bool UseDefaults)
|
||||
void __fastcall Upload(TTerminal * Terminal, TStrings * FileList, int UseDefaults)
|
||||
{
|
||||
UnicodeString TargetDirectory;
|
||||
TGUICopyParamType CopyParam = GUIConfiguration->DefaultCopyParam;
|
||||
@@ -104,9 +104,9 @@ void __fastcall Upload(TTerminal * Terminal, TStrings * FileList, bool UseDefaul
|
||||
|
||||
int Options = coDisableQueue;
|
||||
int CopyParamAttrs = Terminal->UsableCopyParamAttrs(0).Upload;
|
||||
if (UseDefaults ||
|
||||
if ((UseDefaults == 0) ||
|
||||
DoCopyDialog(true, false, FileList, TargetDirectory, &CopyParam, Options,
|
||||
CopyParamAttrs, Data.get(), NULL))
|
||||
CopyParamAttrs, Data.get(), NULL, UseDefaults))
|
||||
{
|
||||
// Setting parameter overrides only now, otherwise the dialog would present the parametes as non-default
|
||||
CopyParam.OnceDoneOperation = odoDisconnect;
|
||||
@@ -115,8 +115,7 @@ void __fastcall Upload(TTerminal * Terminal, TStrings * FileList, bool UseDefaul
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall Download(TTerminal * Terminal, const UnicodeString FileName,
|
||||
bool UseDefaults)
|
||||
void __fastcall Download(TTerminal * Terminal, const UnicodeString FileName, int UseDefaults)
|
||||
{
|
||||
TRemoteFile * File = NULL;
|
||||
|
||||
@@ -156,9 +155,9 @@ void __fastcall Download(TTerminal * Terminal, const UnicodeString FileName,
|
||||
|
||||
int Options = coDisableQueue;
|
||||
int CopyParamAttrs = Terminal->UsableCopyParamAttrs(0).Download;
|
||||
if (UseDefaults ||
|
||||
if ((UseDefaults == 0) ||
|
||||
DoCopyDialog(false, false, FileListFriendly.get(), TargetDirectory, &CopyParam,
|
||||
Options, CopyParamAttrs, NULL, NULL))
|
||||
Options, CopyParamAttrs, NULL, NULL, UseDefaults))
|
||||
{
|
||||
// Setting parameter overrides only now, otherwise the dialog would present the parametes as non-default
|
||||
|
||||
@@ -219,8 +218,8 @@ void __fastcall SynchronizeDirectories(TTerminal * Terminal,
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall FullSynchronize(TTerminal * Terminal, TCustomScpExplorerForm * ScpExplorer,
|
||||
TStrings * CommandParams, bool UseDefaults)
|
||||
void __fastcall FullSynchronize(
|
||||
TTerminal * Terminal, TCustomScpExplorerForm * ScpExplorer, TStrings * CommandParams, int UseDefaults)
|
||||
{
|
||||
UnicodeString LocalDirectory;
|
||||
UnicodeString RemoteDirectory;
|
||||
@@ -249,8 +248,8 @@ void __fastcall FullSynchronize(TTerminal * Terminal, TCustomScpExplorerForm * S
|
||||
Abort();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall Synchronize(TTerminal * Terminal, TCustomScpExplorerForm * ScpExplorer,
|
||||
TStrings * CommandParams, bool UseDefaults)
|
||||
void __fastcall Synchronize(
|
||||
TTerminal * Terminal, TCustomScpExplorerForm * ScpExplorer, TStrings * CommandParams, int UseDefaults)
|
||||
{
|
||||
UnicodeString LocalDirectory;
|
||||
UnicodeString RemoteDirectory;
|
||||
@@ -961,7 +960,7 @@ int __fastcall Execute()
|
||||
ParamCommand = pcNone;
|
||||
UnicodeString AutoStartSession;
|
||||
UnicodeString DownloadFile;
|
||||
bool UseDefaults = false;
|
||||
int UseDefaults = -1;
|
||||
|
||||
// do not check for temp dirs for service tasks (like RegisterAsUrlHandler)
|
||||
if (OnlyInstance &&
|
||||
@@ -978,9 +977,10 @@ int __fastcall Execute()
|
||||
|
||||
if (!Params->Empty)
|
||||
{
|
||||
if (Params->FindSwitch(DEFAULTS_SWITCH) && CheckSafe(Params))
|
||||
UnicodeString Value;
|
||||
if (Params->FindSwitch(DEFAULTS_SWITCH, Value) && CheckSafe(Params))
|
||||
{
|
||||
UseDefaults = true;
|
||||
UseDefaults = StrToIntDef(Value, 0);
|
||||
}
|
||||
|
||||
if (Params->FindSwitch(UPLOAD_SWITCH, CommandParams))
|
||||
|
||||
Reference in New Issue
Block a user