TerminalManager.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. //---------------------------------------------------------------------------
  2. #ifndef TerminalManagerH
  3. #define TerminalManagerH
  4. //---------------------------------------------------------------------------
  5. #include <Terminal.h>
  6. #include <Queue.h>
  7. #include <FileOperationProgress.h>
  8. //---------------------------------------------------------------------------
  9. class TCustomScpExplorerForm;
  10. class TLogMemo;
  11. class TTerminalQueue;
  12. class TAuthenticateForm;
  13. //---------------------------------------------------------------------------
  14. enum TTerminalPendingAction { tpNull, tpNone, tpReconnect, tpFree };
  15. //---------------------------------------------------------------------------
  16. class TManagedTerminal : public TTerminal
  17. {
  18. public:
  19. __fastcall TManagedTerminal(TSessionData * SessionData, TConfiguration * Configuration);
  20. virtual __fastcall ~TManagedTerminal();
  21. TColor Color;
  22. bool SynchronizeBrowsing;
  23. AnsiString LocalDirectory;
  24. AnsiString RemoteDirectory;
  25. TObject * LocalExplorerState;
  26. TObject * RemoteExplorerState;
  27. };
  28. //---------------------------------------------------------------------------
  29. class TTerminalManager : public TTerminalList
  30. {
  31. public:
  32. static TTerminalManager * __fastcall Instance(bool ForceCreation = true);
  33. static void __fastcall DestroyInstance();
  34. __fastcall TTerminalManager();
  35. __fastcall ~TTerminalManager();
  36. virtual TTerminal * __fastcall NewTerminal(TSessionData * Data);
  37. virtual void __fastcall FreeTerminal(TTerminal * Terminal);
  38. bool __fastcall ConnectActiveTerminal();
  39. void __fastcall DisconnectActiveTerminal();
  40. void __fastcall ReconnectActiveTerminal();
  41. void __fastcall FreeActiveTerminal();
  42. void __fastcall CycleTerminals(bool Forward);
  43. static void ConnectTerminal(TTerminal * Terminal, bool Reopen);
  44. AnsiString __fastcall UpdateAppTitle();
  45. bool __fastcall CanOpenInPutty();
  46. void __fastcall OpenInPutty();
  47. bool __fastcall NewSession();
  48. void __fastcall Idle();
  49. AnsiString __fastcall TerminalTitle(TTerminal * Terminal);
  50. __property TCustomScpExplorerForm * ScpExplorer = { read = FScpExplorer, write = SetScpExplorer };
  51. __property TTerminal * ActiveTerminal = { read = FActiveTerminal, write = SetActiveTerminal };
  52. __property TTerminalQueue * ActiveQueue = { read = GetActiveQueue };
  53. __property int ActiveTerminalIndex = { read = GetActiveTerminalIndex, write = SetActiveTerminalIndex };
  54. __property AnsiString ActiveTerminalTitle = { read = GetActiveTerminalTitle };
  55. __property TStrings * TerminalList = { read = GetTerminalList };
  56. __property TLogMemo * LogMemo = { read = FLogMemo };
  57. __property TNotifyEvent OnLastTerminalClosed = { read = FOnLastTerminalClosed, write = FOnLastTerminalClosed };
  58. __property TNotifyEvent OnTerminalListChanged = { read = FOnTerminalListChanged, write = FOnTerminalListChanged };
  59. protected:
  60. virtual TTerminal * __fastcall CreateTerminal(TSessionData * Data);
  61. private:
  62. static TTerminalManager * FInstance;
  63. TCustomScpExplorerForm * FScpExplorer;
  64. TTerminal * FActiveTerminal;
  65. TLogMemo * FLogMemo;
  66. bool FDestroying;
  67. TTerminalPendingAction FTerminalPendingAction;
  68. TNotifyEvent FOnLastTerminalClosed;
  69. TNotifyEvent FOnTerminalListChanged;
  70. TStrings * FTerminalList;
  71. TList * FQueues;
  72. TStrings * FTerminationMessages;
  73. AnsiString FProgressTitle;
  74. TDateTime FDirectoryReadingStart;
  75. TAuthenticateForm * FAuthenticateForm;
  76. TCriticalSection * FQueueSection;
  77. TTerminalQueue * FQueueWithEvent;
  78. TQueueEvent FQueueEvent;
  79. bool __fastcall ConnectActiveTerminalImpl(bool Reopen);
  80. TTerminalQueue * __fastcall NewQueue(TTerminal * Terminal);
  81. void __fastcall CreateLogMemo();
  82. void __fastcall FreeLogMemo();
  83. void __fastcall SetScpExplorer(TCustomScpExplorerForm * value);
  84. void __fastcall SetActiveTerminal(TTerminal * value);
  85. void __fastcall SetLogMemo(TLogMemo * value);
  86. void __fastcall UpdateAll();
  87. void __fastcall ApplicationException(TObject * Sender, Exception * E);
  88. void __fastcall ApplicationShowHint(AnsiString & HintStr, bool & CanShow,
  89. THintInfo & HintInfo);
  90. void __fastcall ApplicationActivate(TObject * Sender);
  91. void __fastcall ConfigurationChange(TObject * Sender);
  92. void __fastcall TerminalUpdateStatus(TTerminal * Terminal, bool Active);
  93. void __fastcall TerminalQueryUser(TObject * Sender,
  94. const AnsiString Query, TStrings * MoreMessages, int Answers,
  95. const TQueryParams * Params, int & Answer, TQueryType Type, void * Arg);
  96. void __fastcall TerminalPromptUser(TTerminal * Terminal,
  97. TPromptKind Kind, AnsiString Name, AnsiString Instructions, TStrings * Prompt,
  98. TStrings * Results, bool & Result, void * Arg);
  99. void __fastcall TerminalDisplayBanner(TTerminal * Terminal,
  100. AnsiString SessionName, const AnsiString & Banner, bool & NeverShowAgain,
  101. int Options);
  102. void __fastcall TerminalShowExtendedException(TTerminal * Terminal,
  103. Exception * E, void * Arg);
  104. void __fastcall TerminalReadDirectoryProgress(TObject * Sender, int Progress,
  105. bool & Cancel);
  106. void __fastcall TerminalInformation(TTerminal * Terminal, const AnsiString & Str,
  107. bool Status, bool Active);
  108. void __fastcall FreeAll();
  109. void __fastcall TerminalReady();
  110. TStrings * __fastcall GetTerminalList();
  111. int __fastcall GetActiveTerminalIndex();
  112. AnsiString __fastcall GetActiveTerminalTitle();
  113. TTerminalQueue * __fastcall GetActiveQueue();
  114. void __fastcall SaveTerminal(TTerminal * Terminal);
  115. void __fastcall SetActiveTerminalIndex(int value);
  116. void __fastcall OperationFinished(::TFileOperation Operation, TOperationSide Side,
  117. bool Temp, const AnsiString & FileName, bool Success,
  118. bool & DisconnectWhenFinished);
  119. void __fastcall OperationProgress(TFileOperationProgressType & ProgressData,
  120. TCancelStatus & Cancel);
  121. void __fastcall DeleteLocalFile(const AnsiString FileName, bool Alternative);
  122. void __fastcall QueueEvent(TTerminalQueue * Queue, TQueueEvent Event);
  123. TAuthenticateForm * __fastcall MakeAuthenticateForm(TSessionData * Data);
  124. };
  125. //---------------------------------------------------------------------------
  126. #endif