mirror of
https://github.com/winscp/winscp.git
synced 2026-10-24 02:28:55 +03:00
All top-level GUI sessions are managed, so treat them as such, to simplify a code
Source commit: 2ec1f86123529455ecd74c7bc2046be997e10573
This commit is contained in:
@@ -154,7 +154,7 @@ public:
|
||||
class TTerminalNoteData : public TObject
|
||||
{
|
||||
public:
|
||||
TTerminal * Terminal;
|
||||
TManagedTerminal * Terminal;
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
__fastcall TCustomScpExplorerForm::TCustomScpExplorerForm(TComponent* Owner):
|
||||
@@ -529,7 +529,7 @@ bool __fastcall TCustomScpExplorerForm::CommandLineFromAnotherInstance(
|
||||
return Result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TCustomScpExplorerForm::SetTerminal(TTerminal * value)
|
||||
void __fastcall TCustomScpExplorerForm::SetTerminal(TManagedTerminal * value)
|
||||
{
|
||||
if (FTerminal != value)
|
||||
{
|
||||
@@ -538,7 +538,7 @@ void __fastcall TCustomScpExplorerForm::SetTerminal(TTerminal * value)
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TCustomScpExplorerForm::DoSetTerminal(TTerminal * value, bool Replace)
|
||||
void __fastcall TCustomScpExplorerForm::DoSetTerminal(TManagedTerminal * value, bool Replace)
|
||||
{
|
||||
FTerminal = value;
|
||||
bool PrevAllowTransferPresetAutoSelect = FAllowTransferPresetAutoSelect;
|
||||
@@ -558,7 +558,7 @@ void __fastcall TCustomScpExplorerForm::DoSetTerminal(TTerminal * value, bool Re
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TCustomScpExplorerForm::ReplaceTerminal(TTerminal * value)
|
||||
void __fastcall TCustomScpExplorerForm::ReplaceTerminal(TManagedTerminal * value)
|
||||
{
|
||||
DoSetTerminal(value, true);
|
||||
}
|
||||
@@ -573,10 +573,9 @@ void __fastcall TCustomScpExplorerForm::TerminalChanging()
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TCustomScpExplorerForm::TerminalChanged(bool Replaced)
|
||||
{
|
||||
TManagedTerminal * ManagedTerminal = dynamic_cast<TManagedTerminal *>(Terminal);
|
||||
if (ManagedTerminal != NULL)
|
||||
if (Terminal != NULL)
|
||||
{
|
||||
UpdateSessionColor((TColor)ManagedTerminal->StateData->Color);
|
||||
UpdateSessionColor((TColor)Terminal->StateData->Color);
|
||||
}
|
||||
DoTerminalListChanged();
|
||||
|
||||
@@ -598,13 +597,11 @@ void __fastcall TCustomScpExplorerForm::TerminalChanged(bool Replaced)
|
||||
Terminal->RefreshDirectory();
|
||||
}
|
||||
|
||||
DebugAssert(ManagedTerminal == Terminal);
|
||||
|
||||
if (WinConfiguration->PreservePanelState)
|
||||
{
|
||||
if (ManagedTerminal->RemoteExplorerState != NULL)
|
||||
if (Terminal->RemoteExplorerState != NULL)
|
||||
{
|
||||
DirView(osRemote)->RestoreState(ManagedTerminal->RemoteExplorerState);
|
||||
DirView(osRemote)->RestoreState(Terminal->RemoteExplorerState);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1232,12 +1229,11 @@ void __fastcall TCustomScpExplorerForm::AddQueueItem(
|
||||
AddQueueItem(Queue, QueueItem, Terminal);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TCustomScpExplorerForm::AddQueueItem(TTerminalQueue * Queue, TQueueItem * QueueItem, TTerminal * Terminal)
|
||||
void __fastcall TCustomScpExplorerForm::AddQueueItem(TTerminalQueue * Queue, TQueueItem * QueueItem, TManagedTerminal * Terminal)
|
||||
{
|
||||
if (Queue->IsEmpty)
|
||||
{
|
||||
TManagedTerminal * ManagedTerminal = DebugNotNull(dynamic_cast<TManagedTerminal *>(Terminal));
|
||||
ManagedTerminal->QueueOperationStart = Now();
|
||||
Terminal->QueueOperationStart = Now();
|
||||
}
|
||||
Queue->AddItem(QueueItem);
|
||||
}
|
||||
@@ -2824,7 +2820,7 @@ bool __fastcall TCustomScpExplorerForm::ExecuteFileOperation(TFileOperation Oper
|
||||
{
|
||||
DebugAssert(!IsSideLocalBrowser(Side));
|
||||
Result = RemoteTransferFiles(FileList, NoConfirmation,
|
||||
(Operation == foRemoteMove), reinterpret_cast<TTerminal *>(Param));
|
||||
(Operation == foRemoteMove), reinterpret_cast<TManagedTerminal *>(Param));
|
||||
}
|
||||
else if (Operation == foLock)
|
||||
{
|
||||
@@ -3747,7 +3743,7 @@ void __fastcall TCustomScpExplorerForm::ExecutedFileReload(
|
||||
(ExtractFileName(FileName), Data->SessionName)));
|
||||
}
|
||||
|
||||
TTerminal * PrevTerminal = TTerminalManager::Instance()->ActiveTerminal;
|
||||
TManagedTerminal * PrevTerminal = TTerminalManager::Instance()->ActiveTerminal;
|
||||
TTerminalManager::Instance()->ActiveTerminal = Data->Terminal;
|
||||
NonVisualDataModule->StartBusy();
|
||||
try
|
||||
@@ -4003,7 +3999,7 @@ void __fastcall TCustomScpExplorerForm::LockFiles(TStrings * FileList, bool Lock
|
||||
RemoteDirView->RestoreSelection();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool __fastcall TCustomScpExplorerForm::RemoteTransferDialog(TTerminal *& Session,
|
||||
bool __fastcall TCustomScpExplorerForm::RemoteTransferDialog(TManagedTerminal *& Session,
|
||||
TStrings * FileList, UnicodeString & Target, UnicodeString & FileMask, bool & DirectCopy,
|
||||
bool NoConfirmation, bool Move)
|
||||
{
|
||||
@@ -4035,8 +4031,7 @@ bool __fastcall TCustomScpExplorerForm::RemoteTransferDialog(TTerminal *& Sessio
|
||||
}
|
||||
else
|
||||
{
|
||||
TManagedTerminal * ManagedTerminal = DebugNotNull(dynamic_cast<TManagedTerminal *>(Session));
|
||||
Target = ManagedTerminal->StateData->RemoteDirectory;
|
||||
Target = Session->StateData->RemoteDirectory;
|
||||
}
|
||||
|
||||
Target = UnixIncludeTrailingBackslash(Target);
|
||||
@@ -4090,7 +4085,7 @@ bool __fastcall TCustomScpExplorerForm::RemoteTransferDialog(TTerminal *& Sessio
|
||||
void * ASession = Session;
|
||||
Result = DoRemoteCopyDialog(Sessions, Directories, AllowDirectCopy,
|
||||
Multi, ASession, Target, FileMask, DirectCopy, TTerminalManager::Instance()->ActiveTerminal);
|
||||
Session = static_cast<TTerminal *>(ASession);
|
||||
Session = static_cast<TManagedTerminal *>(ASession);
|
||||
}
|
||||
__finally
|
||||
{
|
||||
@@ -4102,7 +4097,7 @@ bool __fastcall TCustomScpExplorerForm::RemoteTransferDialog(TTerminal *& Sessio
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool __fastcall TCustomScpExplorerForm::RemoteTransferFiles(
|
||||
TStrings * FileList, bool NoConfirmation, bool Move, TTerminal * Session)
|
||||
TStrings * FileList, bool NoConfirmation, bool Move, TManagedTerminal * Session)
|
||||
{
|
||||
DebugAssert(!IsLocalBrowserMode());
|
||||
bool DirectCopy;
|
||||
@@ -4621,11 +4616,8 @@ void __fastcall TCustomScpExplorerForm::Idle()
|
||||
|
||||
if (WinConfiguration->RefreshRemotePanel)
|
||||
{
|
||||
TManagedTerminal * ManagedTerminal =
|
||||
dynamic_cast<TManagedTerminal *>(Terminal);
|
||||
if ((ManagedTerminal != NULL) && (Terminal->Status == ssOpened) &&
|
||||
(Now() - ManagedTerminal->DirectoryLoaded >
|
||||
WinConfiguration->RefreshRemotePanelInterval))
|
||||
if ((Terminal != NULL) && (Terminal->Status == ssOpened) &&
|
||||
(Now() - Terminal->DirectoryLoaded > WinConfiguration->RefreshRemotePanelInterval))
|
||||
{
|
||||
RemoteDirView->ReloadDirectory();
|
||||
}
|
||||
@@ -4797,7 +4789,7 @@ void __fastcall TCustomScpExplorerForm::DuplicateSession()
|
||||
std::unique_ptr<TSessionData> SessionData(CloneCurrentSessionData());
|
||||
|
||||
TTerminalManager * Manager = TTerminalManager::Instance();
|
||||
TTerminal * Terminal = Manager->NewTerminal(SessionData.get());
|
||||
TManagedTerminal * Terminal = Manager->NewManagedTerminal(SessionData.get());
|
||||
Manager->ActiveTerminal = Terminal;
|
||||
}
|
||||
}
|
||||
@@ -4877,7 +4869,7 @@ void __fastcall TCustomScpExplorerForm::OpenStoredSession(TSessionData * Data)
|
||||
else
|
||||
{
|
||||
TTerminalManager * Manager = TTerminalManager::Instance();
|
||||
TTerminal * Terminal = Manager->NewTerminal(Data);
|
||||
TManagedTerminal * Terminal = Manager->NewManagedTerminal(Data);
|
||||
Manager->ActiveTerminal = Terminal;
|
||||
}
|
||||
}
|
||||
@@ -6065,20 +6057,17 @@ bool __fastcall TCustomScpExplorerForm::SaveWorkspace(bool EnableAutoSave)
|
||||
return Result;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TCustomScpExplorerForm::UpdateTerminal(TTerminal * Terminal)
|
||||
void __fastcall TCustomScpExplorerForm::UpdateTerminal(TManagedTerminal * Terminal)
|
||||
{
|
||||
DebugAssert(!IsLocalBrowserMode());
|
||||
TManagedTerminal * ManagedTerminal = dynamic_cast<TManagedTerminal *>(Terminal);
|
||||
DebugAssert(ManagedTerminal != NULL);
|
||||
|
||||
SAFE_DESTROY(ManagedTerminal->RemoteExplorerState);
|
||||
SAFE_DESTROY(Terminal->RemoteExplorerState);
|
||||
|
||||
if (WinConfiguration->PreservePanelState)
|
||||
{
|
||||
ManagedTerminal->RemoteExplorerState = RemoteDirView->SaveState();
|
||||
Terminal->RemoteExplorerState = RemoteDirView->SaveState();
|
||||
}
|
||||
|
||||
UpdateSessionData(ManagedTerminal->StateData);
|
||||
UpdateSessionData(Terminal->StateData);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TCustomScpExplorerForm::UpdateSessionData(TSessionData * Data)
|
||||
@@ -6627,29 +6616,28 @@ void __fastcall TCustomScpExplorerForm::UpdateNewSessionTab()
|
||||
UnicodeString();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
TTerminal * __fastcall TCustomScpExplorerForm::GetSessionTabTerminal(TTabSheet * TabSheet)
|
||||
TManagedTerminal * __fastcall TCustomScpExplorerForm::GetSessionTabTerminal(TTabSheet * TabSheet)
|
||||
{
|
||||
return reinterpret_cast<TTerminal *>(TabSheet->Tag);
|
||||
return reinterpret_cast<TManagedTerminal *>(TabSheet->Tag);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TCustomScpExplorerForm::UpdateSessionTab(TTabSheet * TabSheet)
|
||||
{
|
||||
if (DebugAlwaysTrue(TabSheet != NULL))
|
||||
{
|
||||
TManagedTerminal * ManagedTerminal =
|
||||
dynamic_cast<TManagedTerminal *>(GetSessionTabTerminal(TabSheet));
|
||||
if (DebugAlwaysTrue(ManagedTerminal != NULL))
|
||||
TManagedTerminal * ATerminal = GetSessionTabTerminal(TabSheet);
|
||||
if (DebugAlwaysTrue(ATerminal != NULL))
|
||||
{
|
||||
TColor Color = (ManagedTerminal == FTerminal) ? FSessionColor : ManagedTerminal->StateData->Color;
|
||||
TColor Color = (ATerminal == FTerminal) ? FSessionColor : ATerminal->StateData->Color;
|
||||
TabSheet->ImageIndex = AddSessionColor(Color);
|
||||
|
||||
UnicodeString TabCaption = TTerminalManager::Instance()->GetTerminalTitle(ManagedTerminal, true);
|
||||
UnicodeString TabCaption = TTerminalManager::Instance()->GetTerminalTitle(ATerminal, true);
|
||||
TabSheet->Caption = SessionsPageControl->FormatCaptionWithCloseButton(TabCaption);
|
||||
|
||||
TThemeTabSheet * ThemeTabSheet = dynamic_cast<TThemeTabSheet *>(TabSheet);
|
||||
if (DebugAlwaysTrue(ThemeTabSheet != NULL))
|
||||
{
|
||||
ThemeTabSheet->Shadowed = !ManagedTerminal->Active;
|
||||
ThemeTabSheet->Shadowed = !ATerminal->Active;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6658,7 +6646,7 @@ void __fastcall TCustomScpExplorerForm::UpdateSessionTab(TTabSheet * TabSheet)
|
||||
bool __fastcall TCustomScpExplorerForm::SessionTabSwitched()
|
||||
{
|
||||
DebugAssert(SessionsPageControl->ActivePage != NULL);
|
||||
TTerminal * Terminal = GetSessionTabTerminal(SessionsPageControl->ActivePage);
|
||||
TManagedTerminal * Terminal = GetSessionTabTerminal(SessionsPageControl->ActivePage);
|
||||
bool Result = (Terminal != NULL);
|
||||
if (Result)
|
||||
{
|
||||
@@ -7120,7 +7108,7 @@ void __fastcall TCustomScpExplorerForm::QueueEmptyNoteClicked(TObject * Sender)
|
||||
if (DebugAlwaysTrue(TerminalNoteData != NULL) &&
|
||||
!NonVisualDataModule->Busy)
|
||||
{
|
||||
TTerminal * Terminal = TerminalNoteData->Terminal;
|
||||
TManagedTerminal * Terminal = TerminalNoteData->Terminal;
|
||||
TTerminalManager::Instance()->ActiveTerminal = Terminal;
|
||||
if (!ComponentVisible[fcQueueView])
|
||||
{
|
||||
@@ -7130,10 +7118,9 @@ void __fastcall TCustomScpExplorerForm::QueueEmptyNoteClicked(TObject * Sender)
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TCustomScpExplorerForm::QueueEvent(TTerminal * ATerminal,
|
||||
void __fastcall TCustomScpExplorerForm::QueueEvent(TManagedTerminal * ATerminal,
|
||||
TTerminalQueue * /*Queue*/, TQueueEvent Event)
|
||||
{
|
||||
TManagedTerminal * ManagedTerminal = DebugNotNull(dynamic_cast<TManagedTerminal *>(ATerminal));
|
||||
UnicodeString Message;
|
||||
TNotifyEvent OnClick = NULL;
|
||||
TObject * UserData = NULL;
|
||||
@@ -7152,7 +7139,7 @@ void __fastcall TCustomScpExplorerForm::QueueEvent(TTerminal * ATerminal,
|
||||
break;
|
||||
|
||||
case qeEmpty:
|
||||
OperationComplete(ManagedTerminal->QueueOperationStart);
|
||||
OperationComplete(ATerminal->QueueOperationStart);
|
||||
break;
|
||||
|
||||
case qePendingUserAction:
|
||||
@@ -8314,7 +8301,7 @@ UnicodeString __fastcall TCustomScpExplorerForm::FileStatusBarText(
|
||||
{
|
||||
Result = FormatIncrementalSearchStatus(FIncrementalSearch, FIncrementalSearchHaveNext);
|
||||
}
|
||||
else if (!IsSideLocalBrowser(Side) && ((Terminal == NULL) || (dynamic_cast<TManagedTerminal *>(Terminal)->Disconnected)))
|
||||
else if (!IsSideLocalBrowser(Side) && ((Terminal == NULL) || Terminal->Disconnected))
|
||||
{
|
||||
// noop
|
||||
}
|
||||
@@ -9528,7 +9515,7 @@ void __fastcall TCustomScpExplorerForm::DoFindFiles(
|
||||
{
|
||||
if (!NonVisualDataModule->Busy)
|
||||
{
|
||||
TTerminalManager::Instance()->ActiveTerminal = ATerminal;
|
||||
TTerminalManager::Instance()->ActiveTerminal = DebugNotNull(dynamic_cast<TManagedTerminal *>(ATerminal));
|
||||
Configuration->Usage->Inc(L"FileFinds");
|
||||
LockWindow(true);
|
||||
NonVisualDataModule->StartBusy();
|
||||
@@ -9550,7 +9537,7 @@ void __fastcall TCustomScpExplorerForm::DoFocusRemotePath(TTerminal * ATerminal,
|
||||
{
|
||||
if (!NonVisualDataModule->Busy)
|
||||
{
|
||||
TTerminalManager::Instance()->ActiveTerminal = ATerminal;
|
||||
TTerminalManager::Instance()->ActiveTerminal = DebugNotNull(dynamic_cast<TManagedTerminal *>(ATerminal));
|
||||
SetFocus();
|
||||
RemoteDirView->Path = UnixExtractFilePath(Path);
|
||||
UnicodeString FileName = UnixExtractFileName(Path);
|
||||
@@ -9576,7 +9563,7 @@ bool __fastcall TCustomScpExplorerForm::CanOperateOnFoundFiles(TTerminal * ATerm
|
||||
bool Result = !NonVisualDataModule->Busy;
|
||||
if (Result)
|
||||
{
|
||||
TTerminalManager::Instance()->ActiveTerminal = ATerminal;
|
||||
TTerminalManager::Instance()->ActiveTerminal = DebugNotNull(dynamic_cast<TManagedTerminal *>(ATerminal));
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
@@ -9732,7 +9719,7 @@ void __fastcall TCustomScpExplorerForm::SessionsDDProcessDropped(
|
||||
{
|
||||
int Index = SessionsPageControl->IndexOfTabAt(Point.X, Point.Y);
|
||||
// do not allow dropping on the "+" tab
|
||||
TTerminal * TargetTerminal = GetSessionTabTerminal(SessionsPageControl->Pages[Index]);
|
||||
TManagedTerminal * TargetTerminal = GetSessionTabTerminal(SessionsPageControl->Pages[Index]);
|
||||
if (TargetTerminal != NULL)
|
||||
{
|
||||
DebugAssert(!IsFileControl(DropSourceControl, osRemote));
|
||||
|
||||
@@ -49,6 +49,7 @@ struct TEditedFileData;
|
||||
class ITaskbarList3;
|
||||
struct TSynchronizeParams;
|
||||
class TBookmark;
|
||||
class TManagedTerminal;
|
||||
//---------------------------------------------------------------------------
|
||||
enum TActionAllowed { aaShortCut, aaUpdate, aaExecute };
|
||||
enum TActionFlag { afLocal = 1, afRemote = 2, afExplorer = 4 , afCommander = 8 };
|
||||
@@ -208,7 +209,7 @@ __published:
|
||||
void __fastcall RemoteDirViewResize(TObject *Sender);
|
||||
|
||||
private:
|
||||
TTerminal * FTerminal;
|
||||
TManagedTerminal * FTerminal;
|
||||
TTerminalQueue * FQueue;
|
||||
TTerminalQueueStatus * FQueueStatus;
|
||||
TCriticalSection * FQueueStatusSection;
|
||||
@@ -226,7 +227,7 @@ private:
|
||||
UnicodeString FClipboardFakeDirectory;
|
||||
std::unique_ptr<TObjectList> FClipboardFakeMonitors;
|
||||
std::unique_ptr<TDragDropFilesEx> FClipboardDragDropFilesEx;
|
||||
TTerminal * FClipboardTerminal;
|
||||
TManagedTerminal * FClipboardTerminal;
|
||||
std::unique_ptr<TStrings> FClipboardFileList;
|
||||
TStrings * FDelayedDeletionList;
|
||||
TTimer * FDelayedDeletionTimer;
|
||||
@@ -282,8 +283,8 @@ private:
|
||||
|
||||
bool __fastcall GetEnableFocusedOperation(TOperationSide Side, int FilesOnly);
|
||||
bool __fastcall GetEnableSelectedOperation(TOperationSide Side, int FilesOnly);
|
||||
void __fastcall SetTerminal(TTerminal * value);
|
||||
void __fastcall DoSetTerminal(TTerminal * value, bool Replace);
|
||||
void __fastcall SetTerminal(TManagedTerminal * value);
|
||||
void __fastcall DoSetTerminal(TManagedTerminal * value, bool Replace);
|
||||
void __fastcall SetQueue(TTerminalQueue * value);
|
||||
void __fastcall TransferListChange(TObject * Sender);
|
||||
void __fastcall TransferListDrawItem(TTBXCustomList * Sender, TCanvas * ACanvas,
|
||||
@@ -300,7 +301,7 @@ private:
|
||||
void __fastcall AddQueueItem(TTerminalQueue * Queue, TTransferDirection Direction,
|
||||
TStrings * FileList, const UnicodeString TargetDirectory,
|
||||
const TGUICopyParamType & CopyParam, int Params);
|
||||
void __fastcall AddQueueItem(TTerminalQueue * Queue, TQueueItem * QueueItem, TTerminal * Terminal);
|
||||
void __fastcall AddQueueItem(TTerminalQueue * Queue, TQueueItem * QueueItem, TManagedTerminal * Terminal);
|
||||
void __fastcall ClearTransferSourceSelection(TTransferDirection Direction);
|
||||
void __fastcall SessionsDDDragOver(int KeyState, const TPoint & Point, int & Effect);
|
||||
void __fastcall SessionsDDProcessDropped(TObject * Sender, int KeyState, const TPoint & Point, int Effect);
|
||||
@@ -368,13 +369,13 @@ protected:
|
||||
UnicodeString & TargetDirectory, TGUICopyParamType & CopyParam, bool Confirm,
|
||||
bool DragDrop, int Options);
|
||||
virtual void __fastcall CopyParamDialogAfter(TTransferDirection Direction, bool Temp, const UnicodeString & TargetDirectory);
|
||||
virtual bool __fastcall RemoteTransferDialog(TTerminal *& Session,
|
||||
virtual bool __fastcall RemoteTransferDialog(TManagedTerminal *& Session,
|
||||
TStrings * FileList, UnicodeString & Target, UnicodeString & FileMask, bool & DirectCopy,
|
||||
bool NoConfirmation, bool Move);
|
||||
virtual void __fastcall CreateParams(TCreateParams & Params);
|
||||
void __fastcall DeleteFiles(TOperationSide Side, TStrings * FileList, bool Alternative);
|
||||
bool __fastcall RemoteTransferFiles(TStrings * FileList, bool NoConfirmation,
|
||||
bool Move, TTerminal * Session);
|
||||
bool Move, TManagedTerminal * Session);
|
||||
virtual void __fastcall DoDirViewExecFile(TObject * Sender, TListItem * Item, bool & AllowExec);
|
||||
virtual TControl * __fastcall GetComponent(Byte Component);
|
||||
bool __fastcall GetComponentVisible(Byte Component);
|
||||
@@ -626,7 +627,7 @@ protected:
|
||||
void __fastcall SetTaskbarListProgressState(TBPFLAG Flags);
|
||||
void __fastcall SetTaskbarListProgressValue(int Progress);
|
||||
void __fastcall SetTaskbarListProgressValue(TFileOperationProgressType * ProgressData);
|
||||
TTerminal * __fastcall GetSessionTabTerminal(TTabSheet * TabSheet);
|
||||
TManagedTerminal * __fastcall GetSessionTabTerminal(TTabSheet * TabSheet);
|
||||
bool __fastcall SessionTabSwitched();
|
||||
void __fastcall RestoreApp();
|
||||
void __fastcall GoToQueue();
|
||||
@@ -734,7 +735,7 @@ public:
|
||||
virtual void __fastcall CompareDirectories();
|
||||
void __fastcall ExecuteCurrentFile();
|
||||
virtual void __fastcall OpenConsole(UnicodeString Command = L"");
|
||||
virtual void __fastcall UpdateTerminal(TTerminal * Terminal);
|
||||
virtual void __fastcall UpdateTerminal(TManagedTerminal * Terminal);
|
||||
virtual void __fastcall SynchronizeDirectories();
|
||||
virtual void __fastcall FullSynchronizeDirectories() = 0;
|
||||
virtual void __fastcall ExploreLocalDirectory();
|
||||
@@ -770,7 +771,7 @@ public:
|
||||
void __fastcall ShowExtendedException(TTerminal * Terminal, Exception * E);
|
||||
void __fastcall InactiveTerminalException(TTerminal * Terminal, Exception * E);
|
||||
void __fastcall TerminalReady();
|
||||
void __fastcall QueueEvent(TTerminal * Terminal, TTerminalQueue * Queue, TQueueEvent Event);
|
||||
void __fastcall QueueEvent(TManagedTerminal * Terminal, TTerminalQueue * Queue, TQueueEvent Event);
|
||||
void __fastcall QueueEmptyNoteClicked(TObject * Sender);
|
||||
bool __fastcall DoSynchronizeDirectories(UnicodeString & LocalDirectory,
|
||||
UnicodeString & RemoteDirectory, bool UseDefaults);
|
||||
@@ -812,7 +813,7 @@ public:
|
||||
bool __fastcall CanPrivateKeyUpload();
|
||||
void __fastcall PrivateKeyUpload();
|
||||
bool __fastcall IsComponentPossible(Byte Component);
|
||||
void __fastcall ReplaceTerminal(TTerminal * value);
|
||||
void __fastcall ReplaceTerminal(TManagedTerminal * value);
|
||||
|
||||
__property bool ComponentVisible[Byte Component] = { read = GetComponentVisible, write = SetComponentVisible };
|
||||
__property bool EnableFocusedOperation[TOperationSide Side] = { read = GetEnableFocusedOperation, index = 0 };
|
||||
@@ -820,7 +821,7 @@ public:
|
||||
__property bool EnableFocusedFileOperation[TOperationSide Side] = { read = GetEnableFocusedOperation, index = 1 };
|
||||
__property bool EnableSelectedFileOperation[TOperationSide Side] = { read = GetEnableSelectedOperation, index = 1 };
|
||||
__property bool HasDirView[TOperationSide Side] = { read = GetHasDirView };
|
||||
__property TTerminal * Terminal = { read = FTerminal, write = SetTerminal };
|
||||
__property TManagedTerminal * Terminal = { read = FTerminal, write = SetTerminal };
|
||||
__property TTerminalQueue * Queue = { read = FQueue, write = SetQueue };
|
||||
__property TColor SessionColor = { read = FSessionColor, write = SetSessionColor };
|
||||
};
|
||||
|
||||
@@ -402,8 +402,8 @@ void __fastcall TNonVisualDataModule::ExplorerActionsUpdate(
|
||||
UPD(DuplicateSessionAction, HasTerminal)
|
||||
UPD(RenameSessionAction, HasTerminal)
|
||||
UPD(CloseSessionAction2, (ScpExplorer->Terminal != NULL))
|
||||
UPDEX1(DisconnectSessionAction, HasTerminal, DisconnectSessionAction->Visible = (ScpExplorer->Terminal == NULL) || !dynamic_cast<TManagedTerminal *>(ScpExplorer->Terminal)->Disconnected)
|
||||
UPDEX1(ReconnectSessionAction, (ScpExplorer->Terminal != NULL) && dynamic_cast<TManagedTerminal *>(ScpExplorer->Terminal)->Disconnected, ReconnectSessionAction->Visible = ReconnectSessionAction->Enabled)
|
||||
UPDEX1(DisconnectSessionAction, HasTerminal, DisconnectSessionAction->Visible = (ScpExplorer->Terminal == NULL) || !ScpExplorer->Terminal->Disconnected)
|
||||
UPDEX1(ReconnectSessionAction, (ScpExplorer->Terminal != NULL) && ScpExplorer->Terminal->Disconnected, ReconnectSessionAction->Visible = ReconnectSessionAction->Enabled)
|
||||
UPD(SavedSessionsAction2, true)
|
||||
UPD(WorkspacesAction, StoredSessions->HasAnyWorkspace())
|
||||
UPD(OpenedSessionsAction, HasTerminal)
|
||||
@@ -1459,7 +1459,7 @@ void __fastcall TNonVisualDataModule::CreateOpenedSessionListMenu(TAction * Acti
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TNonVisualDataModule::OpenedSessionItemClick(TObject * Sender)
|
||||
{
|
||||
TTerminalManager::Instance()->ActiveTerminal = (TTerminal*)(((TMenuItem *)Sender)->Tag);
|
||||
TTerminalManager::Instance()->ActiveTerminal = (TManagedTerminal*)(((TMenuItem *)Sender)->Tag);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TNonVisualDataModule::CreateEditorListMenu(TTBCustomItem * Menu, bool OnFocused)
|
||||
|
||||
@@ -246,20 +246,18 @@ void __fastcall TScpCommanderForm::StoreParams()
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TScpCommanderForm::UpdateTerminal(TTerminal * Terminal)
|
||||
void __fastcall TScpCommanderForm::UpdateTerminal(TManagedTerminal * Terminal)
|
||||
{
|
||||
DebugAssert(!IsLocalBrowserMode());
|
||||
TCustomScpExplorerForm::UpdateTerminal(Terminal);
|
||||
|
||||
TManagedTerminal * ManagedTerminal = dynamic_cast<TManagedTerminal *>(Terminal);
|
||||
DebugAssert(ManagedTerminal != NULL);
|
||||
DebugAssert(LocalDirView != NULL);
|
||||
|
||||
SAFE_DESTROY(ManagedTerminal->LocalExplorerState);
|
||||
SAFE_DESTROY(Terminal->LocalExplorerState);
|
||||
|
||||
if (WinConfiguration->PreservePanelState)
|
||||
{
|
||||
ManagedTerminal->LocalExplorerState = LocalDirView->SaveState();
|
||||
Terminal->LocalExplorerState = LocalDirView->SaveState();
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
@@ -528,15 +526,12 @@ void __fastcall TScpCommanderForm::TerminalChanged(bool Replaced)
|
||||
// do not attempt to select previously selected directory
|
||||
LocalDirView->ContinueSession(false);
|
||||
|
||||
TManagedTerminal * ManagedTerminal = dynamic_cast<TManagedTerminal *>(Terminal);
|
||||
DebugAssert(ManagedTerminal != NULL);
|
||||
|
||||
// reset home directory
|
||||
LocalDirView->HomeDirectory = L"";
|
||||
|
||||
if (FFirstTerminal || !WinConfiguration->ScpCommander.PreserveLocalDirectory)
|
||||
{
|
||||
UnicodeString LocalDirectory = ManagedTerminal->StateData->LocalDirectory;
|
||||
UnicodeString LocalDirectory = Terminal->StateData->LocalDirectory;
|
||||
|
||||
if (!LocalDirectory.IsEmpty())
|
||||
{
|
||||
@@ -564,16 +559,16 @@ void __fastcall TScpCommanderForm::TerminalChanged(bool Replaced)
|
||||
if (WinConfiguration->PreservePanelState &&
|
||||
!WinConfiguration->ScpCommander.PreserveLocalDirectory)
|
||||
{
|
||||
if (ManagedTerminal->LocalExplorerState != NULL)
|
||||
if (Terminal->LocalExplorerState != NULL)
|
||||
{
|
||||
LocalDirView->RestoreState(ManagedTerminal->LocalExplorerState);
|
||||
LocalDirView->RestoreState(Terminal->LocalExplorerState);
|
||||
}
|
||||
else
|
||||
{
|
||||
LocalDirView->ClearState();
|
||||
}
|
||||
|
||||
NonVisualDataModule->SynchronizeBrowsingAction->Checked = ManagedTerminal->StateData->SynchronizeBrowsing;
|
||||
NonVisualDataModule->SynchronizeBrowsingAction->Checked = Terminal->StateData->SynchronizeBrowsing;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -607,7 +607,7 @@ public:
|
||||
virtual bool __fastcall AllowedAction(TAction * Action, TActionAllowed Allowed);
|
||||
virtual void __fastcall ChangePath(TOperationSide Side);
|
||||
virtual void __fastcall CompareDirectories();
|
||||
virtual void __fastcall UpdateTerminal(TTerminal * Terminal);
|
||||
virtual void __fastcall UpdateTerminal(TManagedTerminal * Terminal);
|
||||
virtual void __fastcall SynchronizeDirectories();
|
||||
virtual void __fastcall FullSynchronizeDirectories();
|
||||
virtual void __fastcall StoreParams();
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#include <vector>
|
||||
//---------------------------------------------------------------------------
|
||||
class TTerminal;
|
||||
class TManagedTerminal;
|
||||
class TTerminalQueue;
|
||||
//---------------------------------------------------------------------------
|
||||
struct TEditedFileData
|
||||
@@ -15,7 +15,7 @@ struct TEditedFileData
|
||||
UnicodeString LocalRootDirectory;
|
||||
UnicodeString RemoteDirectory;
|
||||
bool ForceText;
|
||||
TTerminal * Terminal;
|
||||
TManagedTerminal * Terminal;
|
||||
TSessionData * SessionData;
|
||||
TTerminalQueue * Queue;
|
||||
UnicodeString SessionName;
|
||||
|
||||
@@ -145,11 +145,21 @@ TTerminalQueue * __fastcall TTerminalManager::NewQueue(TTerminal * Terminal)
|
||||
return Queue;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
TTerminal * __fastcall TTerminalManager::CreateTerminal(TSessionData * Data)
|
||||
TManagedTerminal * __fastcall TTerminalManager::CreateManagedTerminal(TSessionData * Data)
|
||||
{
|
||||
return new TManagedTerminal(Data, Configuration);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
TTerminal * __fastcall TTerminalManager::CreateTerminal(TSessionData * Data)
|
||||
{
|
||||
return CreateManagedTerminal(Data);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
TManagedTerminal * __fastcall TTerminalManager::GetTerminal(int Index)
|
||||
{
|
||||
return DebugNotNull(dynamic_cast<TManagedTerminal *>(TTerminalList::Terminals[Index]));
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTerminalManager::SetupTerminal(TTerminal * Terminal)
|
||||
{
|
||||
Terminal->OnQueryUser = TerminalQueryUser;
|
||||
@@ -164,9 +174,9 @@ void __fastcall TTerminalManager::SetupTerminal(TTerminal * Terminal)
|
||||
Terminal->OnCustomCommand = TerminalCustomCommand;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
TTerminal * __fastcall TTerminalManager::DoNewTerminal(TSessionData * Data)
|
||||
TManagedTerminal * __fastcall TTerminalManager::DoNewTerminal(TSessionData * Data)
|
||||
{
|
||||
TTerminal * Terminal = TTerminalList::NewTerminal(Data);
|
||||
TManagedTerminal * Terminal = DebugNotNull(dynamic_cast<TManagedTerminal *>(TTerminalList::NewTerminal(Data)));
|
||||
try
|
||||
{
|
||||
FQueues->Add(NewQueue(Terminal));
|
||||
@@ -193,12 +203,17 @@ TTerminal * __fastcall TTerminalManager::NewTerminal(TSessionData * Data)
|
||||
return Terminal;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
TTerminal * __fastcall TTerminalManager::NewTerminals(TList * DataList)
|
||||
TManagedTerminal * __fastcall TTerminalManager::NewManagedTerminal(TSessionData * Data)
|
||||
{
|
||||
TTerminal * Result = NULL;
|
||||
return DebugNotNull(dynamic_cast<TManagedTerminal *>(NewTerminal(Data)));
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
TManagedTerminal * __fastcall TTerminalManager::NewTerminals(TList * DataList)
|
||||
{
|
||||
TManagedTerminal * Result = NULL;
|
||||
for (int Index = 0; Index < DataList->Count; Index++)
|
||||
{
|
||||
TTerminal * Terminal =
|
||||
TManagedTerminal * Terminal =
|
||||
DoNewTerminal(reinterpret_cast<TSessionData *>(DataList->Items[Index]));
|
||||
if (Index == 0)
|
||||
{
|
||||
@@ -274,16 +289,16 @@ void __fastcall TTerminalManager::DoConnectTerminal(TTerminal * Terminal, bool R
|
||||
if (!AdHoc && (DebugAlwaysTrue(Terminal == FActiveTerminal)))
|
||||
{
|
||||
// terminal was abandoned, must create a new one to replace it
|
||||
Terminal = CreateTerminal(new TSessionData(L""));
|
||||
Terminal = ManagedTerminal = CreateManagedTerminal(new TSessionData(L""));
|
||||
SetupTerminal(Terminal);
|
||||
OwnsObjects = false;
|
||||
Items[ActiveTerminalIndex] = Terminal;
|
||||
OwnsObjects = true;
|
||||
FActiveTerminal = Terminal;
|
||||
FActiveTerminal = ManagedTerminal;
|
||||
// Can be NULL, when opening the first session from command-line
|
||||
if (FScpExplorer != NULL)
|
||||
{
|
||||
FScpExplorer->ReplaceTerminal(Terminal);
|
||||
FScpExplorer->ReplaceTerminal(ManagedTerminal);
|
||||
}
|
||||
}
|
||||
// Now we do not have any reference to an abandoned terminal, so we can safely allow the thread
|
||||
@@ -601,17 +616,17 @@ void __fastcall TTerminalManager::SetScpExplorer(TCustomScpExplorerForm * value)
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTerminalManager::SetActiveTerminal(TTerminal * value)
|
||||
void __fastcall TTerminalManager::SetActiveTerminal(TManagedTerminal * value)
|
||||
{
|
||||
DoSetActiveTerminal(value, false);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTerminalManager::SetActiveTerminalWithAutoReconnect(TTerminal * value)
|
||||
void __fastcall TTerminalManager::SetActiveTerminalWithAutoReconnect(TManagedTerminal * value)
|
||||
{
|
||||
DoSetActiveTerminal(value, true);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTerminalManager::DoSetActiveTerminal(TTerminal * value, bool AutoReconnect)
|
||||
void __fastcall TTerminalManager::DoSetActiveTerminal(TManagedTerminal * value, bool AutoReconnect)
|
||||
{
|
||||
if (ActiveTerminal != value)
|
||||
{
|
||||
@@ -1303,7 +1318,7 @@ TStrings * __fastcall TTerminalManager::GetTerminalList()
|
||||
FTerminalList->Clear();
|
||||
for (int i = 0; i < Count; i++)
|
||||
{
|
||||
TTerminal * Terminal = Terminals[i];
|
||||
TManagedTerminal * Terminal = Terminals[i];
|
||||
UnicodeString Name = GetTerminalTitle(Terminal, true);
|
||||
FTerminalList->AddObject(Name, Terminal);
|
||||
}
|
||||
@@ -1563,7 +1578,7 @@ void __fastcall TTerminalManager::Idle(bool SkipCurrentTerminal)
|
||||
// the session may not exist anymore
|
||||
if (Index >= 0)
|
||||
{
|
||||
TTerminal * Terminal = Terminals[Index];
|
||||
TManagedTerminal * Terminal = Terminals[Index];
|
||||
// we can hardly have a queue event without explorer
|
||||
DebugAssert(ScpExplorer != NULL);
|
||||
if (ScpExplorer != NULL)
|
||||
|
||||
@@ -42,8 +42,8 @@ public:
|
||||
__fastcall TTerminalManager();
|
||||
__fastcall ~TTerminalManager();
|
||||
|
||||
virtual TTerminal * __fastcall NewTerminal(TSessionData * Data);
|
||||
TTerminal * __fastcall NewTerminals(TList * DataList);
|
||||
TManagedTerminal * __fastcall NewManagedTerminal(TSessionData * Data);
|
||||
TManagedTerminal * __fastcall NewTerminals(TList * DataList);
|
||||
virtual void __fastcall FreeTerminal(TTerminal * Terminal);
|
||||
void __fastcall Move(TTerminal * Source, TTerminal * Target);
|
||||
void __fastcall DisconnectActiveTerminal();
|
||||
@@ -51,7 +51,7 @@ public:
|
||||
void __fastcall FreeActiveTerminal();
|
||||
void __fastcall CycleTerminals(bool Forward);
|
||||
bool __fastcall ConnectTerminal(TTerminal * Terminal);
|
||||
void __fastcall SetActiveTerminalWithAutoReconnect(TTerminal * value);
|
||||
void __fastcall SetActiveTerminalWithAutoReconnect(TManagedTerminal * value);
|
||||
void __fastcall UpdateAppTitle();
|
||||
bool __fastcall CanOpenInPutty();
|
||||
void __fastcall OpenInPutty();
|
||||
@@ -69,22 +69,24 @@ public:
|
||||
bool __fastcall UploadPublicKey(TTerminal * Terminal, TSessionData * Data, UnicodeString & FileName);
|
||||
|
||||
__property TCustomScpExplorerForm * ScpExplorer = { read = FScpExplorer, write = SetScpExplorer };
|
||||
__property TTerminal * ActiveTerminal = { read = FActiveTerminal, write = SetActiveTerminal };
|
||||
__property TManagedTerminal * ActiveTerminal = { read = FActiveTerminal, write = SetActiveTerminal };
|
||||
__property TTerminalQueue * ActiveQueue = { read = GetActiveQueue };
|
||||
__property int ActiveTerminalIndex = { read = GetActiveTerminalIndex, write = SetActiveTerminalIndex };
|
||||
__property TStrings * TerminalList = { read = GetTerminalList };
|
||||
__property TNotifyEvent OnLastTerminalClosed = { read = FOnLastTerminalClosed, write = FOnLastTerminalClosed };
|
||||
__property TNotifyEvent OnTerminalListChanged = { read = FOnTerminalListChanged, write = FOnTerminalListChanged };
|
||||
__property TTerminal * LocalTerminal = { read = FLocalTerminal };
|
||||
__property TManagedTerminal * Terminals[int Index] = { read=GetTerminal };
|
||||
|
||||
protected:
|
||||
virtual TTerminal * __fastcall CreateTerminal(TSessionData * Data);
|
||||
void __fastcall DoConnectTerminal(TTerminal * Terminal, bool Reopen, bool AdHoc);
|
||||
virtual TTerminal * __fastcall NewTerminal(TSessionData * Data);
|
||||
|
||||
private:
|
||||
static TTerminalManager * FInstance;
|
||||
TCustomScpExplorerForm * FScpExplorer;
|
||||
TTerminal * FActiveTerminal;
|
||||
TManagedTerminal * FActiveTerminal;
|
||||
TTerminal * FLocalTerminal;
|
||||
bool FDestroying;
|
||||
TTerminalPendingAction FTerminalPendingAction;
|
||||
@@ -114,8 +116,8 @@ private:
|
||||
bool __fastcall ConnectActiveTerminal();
|
||||
TTerminalQueue * __fastcall NewQueue(TTerminal * Terminal);
|
||||
void __fastcall SetScpExplorer(TCustomScpExplorerForm * value);
|
||||
void __fastcall DoSetActiveTerminal(TTerminal * value, bool AutoReconnect);
|
||||
void __fastcall SetActiveTerminal(TTerminal * value);
|
||||
void __fastcall DoSetActiveTerminal(TManagedTerminal * value, bool AutoReconnect);
|
||||
void __fastcall SetActiveTerminal(TManagedTerminal * value);
|
||||
void __fastcall UpdateAll();
|
||||
void __fastcall ApplicationException(TObject * Sender, Exception * E);
|
||||
void __fastcall ApplicationShowHint(UnicodeString & HintStr, bool & CanShow,
|
||||
@@ -162,7 +164,7 @@ private:
|
||||
void __fastcall UpdateTaskbarList();
|
||||
void __fastcall AuthenticateFormCancel(TObject * Sender);
|
||||
void __fastcall DoTerminalListChanged();
|
||||
TTerminal * __fastcall DoNewTerminal(TSessionData * Data);
|
||||
TManagedTerminal * __fastcall DoNewTerminal(TSessionData * Data);
|
||||
static void __fastcall TerminalThreadIdle(void * Data, TObject * Sender);
|
||||
void __fastcall SetQueueConfiguration(TTerminalQueue * Queue);
|
||||
void __fastcall ApplicationModalBegin(TObject * Sender);
|
||||
@@ -175,6 +177,8 @@ private:
|
||||
void __fastcall AuthenticatingDone();
|
||||
TRemoteFile * __fastcall CheckRights(
|
||||
TTerminal * Terminal, const UnicodeString & EntryType, const UnicodeString & FileName, bool & WrongRights);
|
||||
TManagedTerminal * __fastcall CreateManagedTerminal(TSessionData * Data);
|
||||
TManagedTerminal * __fastcall GetTerminal(int Index);
|
||||
};
|
||||
//---------------------------------------------------------------------------
|
||||
#endif
|
||||
|
||||
@@ -292,11 +292,10 @@ void __fastcall ShowExtendedExceptionEx(TTerminal * Terminal,
|
||||
if (ForActiveTerminal)
|
||||
{
|
||||
int SessionReopenTimeout = 0;
|
||||
TManagedTerminal * ManagedTerminal = dynamic_cast<TManagedTerminal *>(Manager->ActiveTerminal);
|
||||
if ((ManagedTerminal != NULL) &&
|
||||
if (DebugAlwaysTrue(Manager->ActiveTerminal != NULL) &&
|
||||
((Configuration->SessionReopenTimeout == 0) ||
|
||||
((double)ManagedTerminal->ReopenStart == 0) ||
|
||||
(int(double(Now() - ManagedTerminal->ReopenStart) * MSecsPerDay) < Configuration->SessionReopenTimeout)))
|
||||
((double)Manager->ActiveTerminal->ReopenStart == 0) ||
|
||||
(int(double(Now() - Manager->ActiveTerminal->ReopenStart) * MSecsPerDay) < Configuration->SessionReopenTimeout)))
|
||||
{
|
||||
SessionReopenTimeout = GUIConfiguration->SessionReopenAutoIdle;
|
||||
}
|
||||
|
||||
@@ -1093,14 +1093,13 @@ int __fastcall Execute()
|
||||
bool CanStart;
|
||||
if (DataList->Count > 0)
|
||||
{
|
||||
TTerminal * Terminal = TerminalManager->NewTerminals(DataList.get());
|
||||
TManagedTerminal * Terminal = TerminalManager->NewTerminals(DataList.get());
|
||||
if (!DownloadFile.IsEmpty())
|
||||
{
|
||||
Terminal->AutoReadDirectory = false;
|
||||
DownloadFile = UnixIncludeTrailingBackslash(Terminal->SessionData->RemoteDirectory) + DownloadFile;
|
||||
Terminal->SessionData->RemoteDirectory = L"";
|
||||
TManagedTerminal * ManagedTerminal = DebugNotNull(dynamic_cast<TManagedTerminal *>(Terminal));
|
||||
ManagedTerminal->StateData->RemoteDirectory = Terminal->SessionData->RemoteDirectory;
|
||||
Terminal->StateData->RemoteDirectory = Terminal->SessionData->RemoteDirectory;
|
||||
}
|
||||
TerminalManager->ActiveTerminal = Terminal;
|
||||
CanStart = (TerminalManager->Count > 0);
|
||||
|
||||
Reference in New Issue
Block a user