1
0

CustomScpExplorer.h 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969
  1. //---------------------------------------------------------------------------
  2. #ifndef CustomScpExplorerH
  3. #define CustomScpExplorerH
  4. //---------------------------------------------------------------------------
  5. #include <Classes.hpp>
  6. #include <Controls.hpp>
  7. #include <StdCtrls.hpp>
  8. #include <Forms.hpp>
  9. #include <CustomDirView.hpp>
  10. #include <CustomUnixDirView.hpp>
  11. #include <IEListView.hpp>
  12. #include <NortonLikeListView.hpp>
  13. #include <UnixDirView.h>
  14. #include <ComCtrls.hpp>
  15. #include <ExtCtrls.hpp>
  16. #include <ToolWin.hpp>
  17. #include <WinInterface.h>
  18. #include <WinConfiguration.h>
  19. #include <Terminal.h>
  20. #include <Queue.h>
  21. #include "QueueController.h"
  22. #include "UnixDriveView.h"
  23. #include "CustomDriveView.hpp"
  24. #include "TBX.hpp"
  25. #include "TB2Dock.hpp"
  26. #include "TBXExtItems.hpp"
  27. #include "TBXStatusBars.hpp"
  28. #include "TB2Item.hpp"
  29. #include "TB2Toolbar.hpp"
  30. #include "TBXToolPals.hpp"
  31. #include "PngImageList.hpp"
  32. #include "ThemePageControl.h"
  33. #include "PathLabel.hpp"
  34. #include <Vcl.AppEvnts.hpp>
  35. #include <GUITools.h>
  36. //---------------------------------------------------------------------------
  37. class TProgressForm;
  38. class TSynchronizeProgressForm;
  39. class TTerminalQueue;
  40. class TTerminalQueueStatus;
  41. class TQueueItem;
  42. class TQueueItemProxy;
  43. class TQueueController;
  44. class TSynchronizeController;
  45. class TEditorManager;
  46. struct TEditorData;
  47. class TTransferPresetNoteData;
  48. struct TEditedFileData;
  49. struct ITaskbarList3;
  50. struct TSynchronizeParams;
  51. class TBookmark;
  52. class TManagedTerminal;
  53. struct TCalculateSizeOperation;
  54. class TThumbnailDownloadQueueItem;
  55. //---------------------------------------------------------------------------
  56. enum TActionAllowed { aaShortCut, aaUpdate, aaExecute };
  57. enum TActionFlag { afLocal = 1, afRemote = 2, afExplorer = 4, afCommander = 8 };
  58. enum TExecuteFileBy { efShell = 1, efInternalEditor = 2, efExternalEditor = 3, efDefaultEditor = 100 };
  59. enum TPanelExport { pePath, peFileList, peFullFileList };
  60. enum TPanelExportDestination { pedClipboard, pedCommandLine };
  61. enum TCopyOperationCommandFlag {
  62. cocNone = 0x00, cocShortCutHint = 0x01, cocQueue = 0x02, cocNonQueue = 0x04
  63. };
  64. enum TCustomCommandListType { ccltAll, ccltBoth, ccltNonFile, ccltFile };
  65. const TOperationSide osOther = osRemote;
  66. //---------------------------------------------------------------------------
  67. class TCustomScpExplorerForm : public TForm
  68. {
  69. friend class TAutoBatch;
  70. friend class TEditorUploadQueueItem;
  71. __published:
  72. TPanel *RemotePanel;
  73. TTBXStatusBar *RemoteStatusBar;
  74. TUnixDirView *RemoteDirView;
  75. TPanel *RemoteDirPanel;
  76. TTBXDock *TopDock;
  77. TIEListView *QueueView3;
  78. TPanel *QueuePanel;
  79. TSplitter *QueueSplitter;
  80. TTBXToolbar *QueueToolbar;
  81. TTBXDock *QueueDock;
  82. TTBXItem *QueueEnableItem;
  83. TTBXSeparatorItem *TBXSeparatorItem203;
  84. TTBXItem *TBXItem201;
  85. TTBXItem *TBXItem202;
  86. TTBXItem *TBXItem203;
  87. TTBXItem *TBXItem204;
  88. TTBXItem *TBXItem205;
  89. TTBXSeparatorItem *TBXSeparatorItem201;
  90. TTBXItem *TBXItem206;
  91. TTBXItem *TBXItem207;
  92. TTBXSeparatorItem *TBXSeparatorItem202;
  93. TTBXItem *TBXItem208;
  94. TUnixDriveView *RemoteDriveView;
  95. TPanel *RemoteDrivePanel;
  96. TSplitter *RemotePanelSplitter;
  97. TTBXItem *TBXItem194;
  98. TTBXItem *TBXItem195;
  99. TTBXSubmenuItem *TBXSubmenuItem27;
  100. TTBXItem *TBXItem211;
  101. TTBXItem *TBXItem225;
  102. TTBXItem *TBXItem226;
  103. TThemeTabSheet *TabSheet1;
  104. TThemePageControl *SessionsPageControl;
  105. TPathLabel *QueueLabel;
  106. TTBXSeparatorItem *TBXSeparatorItem57;
  107. TTBXItem *QueueDeleteAllDoneQueueToolbarItem;
  108. TTBXItem *TBXItem173;
  109. TApplicationEvents *ApplicationEvents;
  110. TTBXToolbar *ReconnectToolbar;
  111. TTBXItem *TBXItem254;
  112. TSplitter *QueueFileListSplitter;
  113. TListView *QueueFileList;
  114. TTBXDock *MessageDock;
  115. void __fastcall ApplicationMinimize(TObject * Sender);
  116. void __fastcall ApplicationRestore(TObject * Sender);
  117. void __fastcall RemoteDirViewContextPopup(TObject *Sender,
  118. const TPoint &MousePos, bool &Handled);
  119. void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
  120. void __fastcall RemoteDirViewDisplayProperties(TObject *Sender);
  121. void __fastcall DirViewColumnRightClick(TObject *Sender,
  122. TListColumn *Column, TPoint &Point);
  123. void __fastcall DirViewExecFile(TObject *Sender, TListItem *Item, bool &AllowExec);
  124. void __fastcall ToolBarResize(TObject *Sender);
  125. void __fastcall FileControlDDDragEnter(TObject *Sender,
  126. _di_IDataObject DataObj, int grfKeyState, const TPoint &Point,
  127. int &dwEffect, bool &Accept);
  128. void __fastcall FileControlDDDragLeave(TObject *Sender);
  129. void __fastcall RemoteFileControlDDCreateDragFileList(TObject *Sender,
  130. TFileList *FileList, bool &Created);
  131. void __fastcall RemoteFileControlDDEnd(TObject *Sender);
  132. void __fastcall RemoteFileControlDDCreateDataObject(TObject *Sender,
  133. TDataObject *&DataObject);
  134. void __fastcall RemoteFileControlDDGiveFeedback(TObject *Sender,
  135. int dwEffect, HRESULT &Result);
  136. void __fastcall QueueSplitterCanResize(TObject *Sender, int &NewSize,
  137. bool &Accept);
  138. void __fastcall QueueView3ContextPopup(TObject *Sender, TPoint &MousePos,
  139. bool &Handled);
  140. void __fastcall QueueView3Deletion(TObject *Sender, TListItem *Item);
  141. void __fastcall QueueView3StartDrag(TObject *Sender,
  142. TDragObject *&DragObject);
  143. void __fastcall QueueView3DragOver(TObject *Sender, TObject *Source,
  144. int X, int Y, TDragState State, bool &Accept);
  145. void __fastcall QueueView3DragDrop(TObject *Sender, TObject *Source,
  146. int X, int Y);
  147. void __fastcall QueueView3Enter(TObject *Sender);
  148. void __fastcall QueueView3SelectItem(TObject *Sender, TListItem *Item,
  149. bool Selected);
  150. void __fastcall RemoteFileControlDDFileOperation(
  151. TObject * Sender, int Effect, UnicodeString SourcePath, UnicodeString TargetPath,
  152. bool Paste, bool & DoOperation);
  153. void __fastcall RemoteFileContolDDChooseEffect(TObject * Sender,
  154. int grfKeyState, int & dwEffect);
  155. void __fastcall RemoteFileControlDDDragFileName(TObject * Sender,
  156. TRemoteFile * File, UnicodeString & FileName);
  157. void __fastcall RemoteFileControlDDDragDetect(TObject * Sender,
  158. int grfKeyState, const TPoint & DetectStart, const TPoint & Point,
  159. TDragDetectStatus DragStatus);
  160. void __fastcall RemoteFileControlDDQueryContinueDrag(TObject *Sender,
  161. LongBool FEscapePressed, int grfKeyState, HRESULT &Result);
  162. void __fastcall RemoteDirViewEnter(TObject *Sender);
  163. void __fastcall RemoteDriveViewEnter(TObject *Sender);
  164. void __fastcall DirViewMatchMask(TObject *Sender, UnicodeString FileName,
  165. bool Directory, __int64 Size, TDateTime Modification,
  166. UnicodeString Masks, bool &Matches, bool AllowImplicitMatches);
  167. void __fastcall DirViewGetOverlay(TObject *Sender, TListItem *Item,
  168. WORD &Indexes);
  169. void __fastcall DirViewHistoryChange(TCustomDirView *Sender);
  170. void __fastcall RemoteStatusBarClick(TObject *Sender);
  171. void __fastcall DirViewLoaded(TObject *Sender);
  172. void __fastcall ToolbarGetBaseSize(TTBCustomToolbar * Toolbar, TPoint & ASize);
  173. void __fastcall FormConstrainedResize(TObject * Sender, int & MinWidth,
  174. int &MinHeight, int &MaxWidth, int &MaxHeight);
  175. void __fastcall StatusBarPanelDblClick(TTBXCustomStatusBar * Sender,
  176. TTBXStatusPanel * Panel);
  177. void __fastcall RemotePathComboBoxAdjustImageIndex(
  178. TTBXComboBoxItem * Sender, const UnicodeString AText, int AIndex,
  179. int & ImageIndex);
  180. void __fastcall RemotePathComboBoxDrawItem(TTBXCustomList * Sender,
  181. TCanvas * ACanvas, TRect & ARect, int AIndex, int AHoverIndex,
  182. bool & DrawDefault);
  183. void __fastcall RemotePathComboBoxMeasureWidth(TTBXCustomList * Sender,
  184. TCanvas * ACanvas, int AIndex, int & AWidth);
  185. void __fastcall RemotePathComboBoxItemClick(TObject * Sender);
  186. void __fastcall RemotePathComboBoxCancel(TObject * Sender);
  187. void __fastcall DirViewEditing(TObject *Sender, TListItem *Item,
  188. bool &AllowEdit);
  189. void __fastcall FormShow(TObject *Sender);
  190. void __fastcall SessionsPageControlChange(TObject *Sender);
  191. void __fastcall SessionsPageControlMouseDown(TObject *Sender, TMouseButton Button,
  192. TShiftState Shift, int X, int Y);
  193. void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
  194. void __fastcall RemoteDirViewRead(TObject *Sender);
  195. void __fastcall DirViewSelectItem(TObject *Sender, TListItem *Item, bool Selected);
  196. void __fastcall SessionsPageControlDragDrop(TObject *Sender, TObject *Source, int X,
  197. int Y);
  198. void __fastcall SessionsPageControlDragOver(TObject *Sender, TObject *Source, int X,
  199. int Y, TDragState State, bool &Accept);
  200. void __fastcall QueueView3Exit(TObject *Sender);
  201. void __fastcall EditMenuItemPopup(TTBCustomItem *Sender, bool FromLink);
  202. void __fastcall DirViewBusy(TObject *Sender, int Busy, bool & Allow);
  203. void __fastcall SessionsPageControlContextPopup(TObject *Sender, TPoint &MousePos, bool &Handled);
  204. void __fastcall DockContextPopup(TObject *Sender, TPoint &MousePos, bool &Handled);
  205. void __fastcall SessionsPageControlTabButtonClick(TPageControl *Sender, int Index);
  206. void __fastcall DirViewGetItemColor(
  207. TObject * Sender, UnicodeString FileName, bool Directory, __int64 Size, TDateTime Modification, TColor & Color);
  208. void __fastcall DirViewExit(TObject *Sender);
  209. void __fastcall DirViewKeyDown(TObject *Sender, WORD &Key, TShiftState Shift);
  210. void __fastcall DirViewKeyPress(TObject *Sender, System::WideChar &Key);
  211. void __fastcall ApplicationEventsDeactivate(TObject *Sender);
  212. void __fastcall ApplicationEventsModalBegin(TObject *Sender);
  213. void __fastcall DirViewChangeFocus(TObject *Sender, TListItem *Item);
  214. void __fastcall RemoteStatusBarMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
  215. void __fastcall RemoteDirViewResize(TObject *Sender);
  216. void __fastcall QueueFileListSplitterCanResize(TObject *Sender, int &NewSize, bool &Accept);
  217. void __fastcall QueueView3Change(TObject *Sender, TListItem *Item, TItemChange Change);
  218. void __fastcall QueueLabelGetStatus(TCustomPathLabel *Sender, bool &Active);
  219. void __fastcall QueueFileListEnterExit(TObject *Sender);
  220. void __fastcall QueueFileListData(TObject *Sender, TListItem *Item);
  221. void __fastcall QueueFileListCustomDrawItem(TCustomListView *Sender, TListItem *Item, TCustomDrawState State, bool &DefaultDraw);
  222. void __fastcall QueueFileListResize(TObject *Sender);
  223. void __fastcall SessionsPageControlResize(TObject *Sender);
  224. void __fastcall SessionsPageControlTabHint(TPageControl *Sender, int Index, UnicodeString &Hint);
  225. void __fastcall MessageDockRequestDock(TObject *Sender, TTBCustomDockableWindow *Bar, bool &Accept);
  226. void __fastcall QueueView3EndDrag(TObject *Sender, TObject *Target, int X, int Y);
  227. void __fastcall RemoteDirViewThumbnailNeeded(
  228. TUnixDirView * Sender, TListItem * Item, TRemoteFile * File, const TSize & Size, TBitmap *& Bitmap);
  229. void __fastcall RemoteDirViewStartLoading(TObject *Sender);
  230. void __fastcall RemoteDirViewStartReading(TObject *Sender);
  231. void __fastcall FormAfterMonitorDpiChanged(TObject *Sender, int OldDPI, int NewDPI);
  232. private:
  233. TManagedTerminal * FManagedSession;
  234. TTerminalQueue * FQueue;
  235. TTerminalQueueStatus * FQueueStatus;
  236. TCriticalSection * FQueueStatusSection;
  237. bool FQueueStatusInvalidated;
  238. bool FQueueItemInvalidated;
  239. bool FQueueStatusUpdating;
  240. bool FFormRestored;
  241. bool FAutoOperation;
  242. TFileOperationFinishedEvent FOnFileOperationFinished;
  243. TFileOperation FPrimaryOperation;
  244. bool FForceExecution;
  245. unsigned short FIgnoreNextDialogChar;
  246. TStringList * FErrorList;
  247. HANDLE FDDExtMutex;
  248. UnicodeString FDragFakeDirectory;
  249. TObjectList * FDragFakeMonitors;
  250. UnicodeString FClipboardFakeDirectory;
  251. UnicodeString FClipboardPasteTarget;
  252. std::unique_ptr<TObjectList> FClipboardFakeMonitors;
  253. bool FDownloadingFromClipboard;
  254. bool FClipboardFakeMonitorsPendingReset;
  255. std::unique_ptr<TDragDropFilesEx> FClipboardDragDropFilesEx;
  256. TManagedTerminal * FClipboardTerminal;
  257. std::unique_ptr<TStrings> FClipboardFileList;
  258. TStrings * FDelayedDeletionList;
  259. TTimer * FDelayedDeletionTimer;
  260. TStrings * FDDFileList;
  261. __int64 FDDTotalSize;
  262. std::unique_ptr<ExtException> FDragDropSshTerminate;
  263. HINSTANCE FOle32Library;
  264. HCURSOR FDragMoveCursor;
  265. UnicodeString FDragTempDir;
  266. bool FRefreshLocalDirectory;
  267. bool FRefreshRemoteDirectory;
  268. TListItem * FQueueActedItem;
  269. TQueueController * FQueueController;
  270. TListViewScrollOnDragOver * FQueueScrollOnDragOver;
  271. int FLastDropEffect;
  272. bool FPendingTempSpaceWarn;
  273. TEditorManager * FEditorManager;
  274. TList * FLocalEditors;
  275. TStrings * FCapturedLog;
  276. bool FDragDropOperation;
  277. UnicodeString FCopyParamDefault;
  278. UnicodeString FCopyParamAutoSelected;
  279. bool FEditingFocusedAdHocCommand;
  280. TList * FDocks;
  281. TSynchronizeController * FSynchronizeController;
  282. UnicodeString FTransferDropDownHint;
  283. int FTransferListHoverIndex;
  284. TColor FSessionColor;
  285. TPngImageList * FSessionColors;
  286. int FNewRemoteTabTabImageIndex;
  287. int FNewLocalTabTabImageIndex;
  288. int FSessionTabImageIndex;
  289. int FSessionColorMaskImageIndex;
  290. int FLocalBrowserTabImageIndex;
  291. ::TTrayIcon * FTrayIcon;
  292. TCustomCommandType FLastCustomCommand;
  293. TFileMasks FDirViewMatchMask;
  294. TTBXPopupMenu * FCustomCommandMenu;
  295. TStrings * FCustomCommandLocalFileList;
  296. TStrings * FCustomCommandRemoteFileList;
  297. ITaskbarList3 * FTaskbarList;
  298. bool FShowing;
  299. int FMaxQueueLength;
  300. TDateTime FSessionsPageControlNewTabTime;
  301. bool FAppIdle;
  302. typedef std::set<TTBCustomItem *> TItemsWithTextDisplayMode;
  303. TItemsWithTextDisplayMode FItemsWithTextDisplayMode;
  304. HWND FHiddenWindow;
  305. TStrings * FTransferResumeList;
  306. TStrings * FDeletedFiles;
  307. bool FMoveToQueue;
  308. bool FStandaloneOperation;
  309. TFeedSynchronizeError FOnFeedSynchronizeError;
  310. TNotifyEvent FOnSynchronizeAbort;
  311. TTerminal * FSynchronizeTerminal;
  312. bool FNeedSession;
  313. TTerminal * FFileFindTerminal;
  314. UnicodeString FFileColorsCurrent;
  315. bool FInvalid;
  316. std::unique_ptr<TQueueFileList> FQueueFileList;
  317. bool FShowingChanged;
  318. bool FStarted;
  319. bool FUpdatingSessionTabs;
  320. TCalculateSizeOperation * FCalculateSizeOperation;
  321. TTBXTheme * FHiContrastTheme;
  322. bool __fastcall GetEnableFocusedOperation(TOperationSide Side, int FilesOnly);
  323. bool __fastcall GetEnableSelectedOperation(TOperationSide Side, int FilesOnly);
  324. void __fastcall SetManagedSession(TManagedTerminal * value);
  325. void __fastcall DoSetManagedSession(TManagedTerminal * value, bool Replace);
  326. TManagedTerminal * GetTerminal();
  327. void __fastcall SetQueue(TTerminalQueue * value);
  328. void __fastcall TransferListChange(TObject * Sender);
  329. void __fastcall TransferListDrawItem(TTBXCustomList * Sender, TCanvas * ACanvas,
  330. const TRect & ARect, int AIndex, int AHoverIndex, bool & DrawDefault);
  331. void __fastcall CloseInternalEditor(TObject * Sender);
  332. void __fastcall ForceCloseInternalEditor(TObject * Sender);
  333. void __fastcall ForceCloseLocalEditors();
  334. void __fastcall TerminalCaptureLog(const UnicodeString & AddedLine, TCaptureOutputType OutputType);
  335. void __fastcall HistoryItemClick(System::TObject* Sender);
  336. void __fastcall UpdateHistoryMenu(TOperationSide Side, bool Back);
  337. void __fastcall AdHocCustomCommandValidate(const TCustomCommandType & Command);
  338. void __fastcall SetDockAllowDrag(bool value);
  339. void __fastcall QueueSplitterDblClick(TObject * Sender);
  340. void __fastcall QueueFileListSplitterDblClick(TObject * Sender);
  341. void __fastcall AddQueueItem(
  342. TTerminalQueue * Queue, TTransferDirection Direction,
  343. TStrings * FileList, const UnicodeString TargetDirectory,
  344. TGUICopyParamType & CopyParam, int Params);
  345. void __fastcall AddQueueItem(TTerminalQueue * Queue, TQueueItem * QueueItem, TManagedTerminal * Terminal);
  346. void __fastcall ClearTransferSourceSelection(TTransferDirection Direction);
  347. void ClearOperationSelection(TOperationSide Side);
  348. void __fastcall SessionsDDDragOver(int KeyState, const TPoint & Point, int & Effect, int PreferredEffect);
  349. void __fastcall SessionsDDProcessDropped(TObject * Sender, int KeyState, const TPoint & Point, int Effect);
  350. void __fastcall RemoteFileControlDragDropFileOperation(
  351. TObject * Sender, int Effect, UnicodeString TargetPath, bool ForceQueue, bool Paste);
  352. void __fastcall SessionsDDDragEnter(_di_IDataObject DataObj, int KeyState,
  353. const TPoint & Point, int & Effect, bool & Accept);
  354. void __fastcall SessionsDDDragLeave(int);
  355. void __fastcall QueueDDProcessDropped(TObject * Sender, int KeyState, const TPoint & Point, int Effect);
  356. void __fastcall QueueDDDragEnter(_di_IDataObject DataObj, int KeyState,
  357. const TPoint & Point, int & Effect, bool & Accept);
  358. void __fastcall QueueDDDragLeave(int);
  359. void __fastcall EnableDDTransferConfirmation(TObject * Sender);
  360. void __fastcall CollectItemsWithTextDisplayMode(TWinControl * Control);
  361. void __fastcall CreateHiddenWindow();
  362. bool __fastcall IsQueueAutoPopup();
  363. void __fastcall UpdateSessionsPageControlHeight();
  364. void UpdateTabsSize();
  365. TDragDropFilesEx * __fastcall CreateDragDropFilesEx();
  366. void __fastcall KeyProcessed(Word & Key, TShiftState Shift);
  367. void __fastcall CheckCustomCommandShortCut(TCustomCommandList * List, Word & Key, Classes::TShiftState Shift, TShortCut KeyShortCut);
  368. void __fastcall CMShowingChanged(TMessage & Message);
  369. void __fastcall WMClose(TMessage & Message);
  370. void __fastcall WMDpiChanged(TMessage & Message);
  371. void __fastcall DoBookmarkClick(TOperationSide Side, TObject * Sender);
  372. void __fastcall LocalBookmarkClick(TObject * Sender);
  373. void __fastcall RemoteBookmarkClick(TObject * Sender);
  374. void __fastcall InitControls();
  375. void __fastcall UpdateQueueFileList();
  376. void __fastcall QueueFileListColumnAutoSize();
  377. void __fastcall AdjustQueueLayout();
  378. void __fastcall StoreTransitionCloseClick(TObject * Sender);
  379. void __fastcall StoreTransitionLinkClick(TObject * Sender);
  380. void InitializeRemoteThumbnailMask();
  381. protected:
  382. TOperationSide FCurrentSide;
  383. bool FEverShown;
  384. TControl * FDDTargetControl;
  385. TProgressForm * FProgressForm;
  386. TSynchronizeProgressForm * FSynchronizeProgressForm;
  387. HANDLE FDDExtMapFile;
  388. TTimer * FUserActionTimer;
  389. TQueueItemProxy * FPendingQueueActionItem;
  390. TTBXPopupMenu * FHistoryMenu[2][2];
  391. bool FAllowTransferPresetAutoSelect;
  392. bool FSessionChanging;
  393. TStrings * FNotes;
  394. TTimer * FNoteTimer;
  395. TDateTime FNoteShown;
  396. UnicodeString FNote;
  397. TObject * FNoteData;
  398. UnicodeString FNoteHints;
  399. TNotifyEvent FOnNoteClick;
  400. unsigned int FLockLevel;
  401. unsigned int FLockSuspendLevel;
  402. bool FDisabledOnLockSuspend;
  403. bool FAlternativeDelete;
  404. TDragDropFilesEx * FSessionsDragDropFilesEx;
  405. TDragDropFilesEx * FQueueDragDropFilesEx;
  406. TPoint FLastContextPopupScreenPoint;
  407. int FDoNotIdleCurrentTerminal;
  408. UnicodeString FFakeFileDropTarget;
  409. TFileColorData::TList FFileColors;
  410. TIncrementalSearchState FIncrementalSearchState;
  411. int FIncrementalSearching;
  412. TOperationSide FProgressSide;
  413. bool FImmersiveDarkMode;
  414. TFileMasks FRemoteThumbnailMask;
  415. virtual bool __fastcall CopyParamDialog(TTransferDirection Direction,
  416. TTransferType Type, bool Temp, TStrings * FileList,
  417. UnicodeString & TargetDirectory, TGUICopyParamType & CopyParam, bool Confirm,
  418. bool DragDrop, int Options);
  419. virtual void __fastcall CopyParamDialogAfter(TTransferDirection Direction, bool Temp, const UnicodeString & TargetDirectory);
  420. virtual bool __fastcall RemoteTransferDialog(TManagedTerminal *& Session,
  421. TStrings * FileList, UnicodeString & Target, UnicodeString & FileMask, bool & DirectCopy,
  422. bool NoConfirmation, bool Move);
  423. virtual void __fastcall Loaded();
  424. void __fastcall DeleteFiles(TOperationSide Side, TStrings * FileList, bool Alternative);
  425. bool __fastcall RemoteTransferFiles(TStrings * FileList, bool NoConfirmation,
  426. bool Move, TManagedTerminal * Session);
  427. virtual void __fastcall DoDirViewExecFile(TObject * Sender, TListItem * Item, bool & AllowExec);
  428. virtual TControl * __fastcall GetComponent(Byte Component);
  429. bool __fastcall GetComponentVisible(Byte Component);
  430. virtual Boolean __fastcall GetHasDirView(TOperationSide Side);
  431. virtual TCustomDriveView * __fastcall DriveView(TOperationSide Side);
  432. virtual TCustomDirView * GetCurrentLocalBrowser();
  433. DYNAMIC void __fastcall KeyDown(Word & Key, Classes::TShiftState Shift);
  434. virtual void __fastcall RestoreFormParams();
  435. virtual void __fastcall RestoreParams();
  436. virtual void __fastcall SetComponentVisible(Byte Component, bool value);
  437. virtual void __fastcall ComponentShowing(Byte Component, bool value);
  438. virtual void __fastcall FixControlsPlacement();
  439. bool __fastcall SetProperties(TOperationSide Side, TStrings * FileList);
  440. void __fastcall CustomCommand(TStrings * FileList,
  441. const TCustomCommandType & Command, TStrings * ALocalFileList);
  442. void __fastcall RemoteCustomCommand(
  443. TStrings * FileList, const TCustomCommandType & ACommand,
  444. const TCustomCommandData & Data, const UnicodeString & CommandCommand);
  445. void __fastcall LocalCustomCommandPure(
  446. TStrings * FileList, const TCustomCommandType & ACommand, const UnicodeString & Command, TStrings * ALocalFileList,
  447. const TCustomCommandData & Data, bool LocalFileCommand, bool FileListCommand, UnicodeString * POutput);
  448. void __fastcall LocalCustomCommandWithLocalFiles(
  449. const TCustomCommandType & ACommand, const UnicodeString & Command, const TCustomCommandData & Data,
  450. bool FileListCommand, UnicodeString * POutput);
  451. void __fastcall LocalCustomCommand(TStrings * FileList,
  452. const TCustomCommandType & ACommand, TStrings * ALocalFileList,
  453. const TCustomCommandData & Data, const UnicodeString & CommandCommand);
  454. virtual void __fastcall SessionChanging();
  455. virtual void __fastcall SessionChanged(bool Replaced);
  456. virtual void __fastcall QueueChanged();
  457. void __fastcall InitStatusBar();
  458. void __fastcall UpdateStatusBar();
  459. virtual void __fastcall UpdateStatusPanelText(TTBXStatusPanel * Panel);
  460. virtual void __fastcall DoOperationFinished(TFileOperation Operation,
  461. TOperationSide Side, bool Temp, const UnicodeString & FileName, bool Success, bool NotCancelled,
  462. TOnceDoneOperation & OnceDoneOperation);
  463. virtual void __fastcall DoOpenDirectoryDialog(TOpenDirectoryMode Mode, TOperationSide Side);
  464. void __fastcall CreateProgressForm(TSynchronizeProgress * SynchronizeProgress);
  465. void __fastcall DestroyProgressForm();
  466. virtual void __fastcall FileOperationProgress(TFileOperationProgressType & ProgressData);
  467. void __fastcall OperationComplete(const TDateTime & StartTime);
  468. void EditedFileUploaded(TTerminal * ATerminal, HANDLE UploadCompleteEvent);
  469. void __fastcall ExecutedFileChanged(
  470. const UnicodeString & FileName, const TDateTime & Timestamp, TEditedFileData * Data,
  471. HANDLE UploadCompleteEvent, bool & Retry);
  472. void __fastcall ExecutedFileReload(const UnicodeString & FileName, TEditedFileData * Data);
  473. void __fastcall ExecutedFileEarlyClosed(const TEditedFileData * Data,
  474. bool & KeepOpen);
  475. void __fastcall ExecutedFileUploadComplete(TObject * Sender);
  476. bool EditorCheckNotModified(const TEditedFileData * Data);
  477. void __fastcall CMDialogChar(TMessage & AMessage);
  478. inline void __fastcall WMAppCommand(TMessage & Message);
  479. inline void __fastcall WMSysCommand(TMessage & Message);
  480. void __fastcall WMQueryEndSession(TMessage & Message);
  481. void __fastcall WMEndSession(TWMEndSession & Message);
  482. #ifdef _DEBUG
  483. inline void __fastcall WMWindowPosChanged(TWMWindowPosMsg & Message);
  484. #endif
  485. void __fastcall WMCopyData(TMessage & Message);
  486. virtual void __fastcall SysResizing(unsigned int Cmd);
  487. DYNAMIC void __fastcall DoShow();
  488. TStrings * __fastcall CreateVisitedDirectories(TOperationSide Side);
  489. void __fastcall HandleErrorList(TStringList *& ErrorList);
  490. void __fastcall TerminalSynchronizeDirectory(
  491. const UnicodeString & LocalDirectory, const UnicodeString & RemoteDirectory,
  492. bool & Continue, bool Collect, const TSynchronizeOptions * Options);
  493. void __fastcall DoSynchronize(TSynchronizeController * Sender,
  494. const UnicodeString LocalDirectory, const UnicodeString RemoteDirectory,
  495. const TCopyParamType & CopyParam, const TSynchronizeParamType & Params,
  496. TSynchronizeChecklist ** Checklist, TSynchronizeOptions * Options, bool Full);
  497. void __fastcall DoSynchronizeInvalid(TSynchronizeController * Sender,
  498. const UnicodeString Directory, const UnicodeString ErrorStr);
  499. void __fastcall DoSynchronizeTooManyDirectories(TSynchronizeController * Sender,
  500. int & MaxDirectories);
  501. void __fastcall Synchronize(const UnicodeString LocalDirectory,
  502. const UnicodeString RemoteDirectory, TSynchronizeMode Mode,
  503. const TCopyParamType & CopyParam, int Params, TSynchronizeChecklist ** Checklist,
  504. TSynchronizeOptions * Options);
  505. void __fastcall SynchronizeSessionLog(const UnicodeString & Message);
  506. void __fastcall GetSynchronizeOptions(int Params, TSynchronizeOptions & Options);
  507. UnicodeString __fastcall SerializeCopyParamForCommandLine(const TCopyParamType * CopyParams);
  508. void __fastcall SynchronizeInNewWindow(const TSynchronizeParamType & Params, const TCopyParamType * CopyParams);
  509. void __fastcall FullSynchronizeInNewWindow(
  510. TSynchronizeMode Mode, int Params, const UnicodeString & Directory1, const UnicodeString & Directory2,
  511. const TCopyParamType * CopyParams);
  512. bool __fastcall SynchronizeAllowSelectedOnly();
  513. virtual void __fastcall BatchStart(void *& Storage);
  514. virtual void __fastcall BatchEnd(void * Storage);
  515. bool __fastcall ExecuteFileOperation(TFileOperation Operation, TOperationSide Side,
  516. TStrings * FileList, bool NoConfirmation, void * Param);
  517. bool __fastcall ExecuteCopyMoveFileOperation(
  518. TFileOperation Operation, TOperationSide Side, TStrings * FileList, bool NoConfirmation, void * Param);
  519. bool __fastcall ExecuteDeleteFileOperation(TOperationSide Side, TStrings * FileList, void * Param);
  520. virtual bool __fastcall DDGetTarget(UnicodeString & Directory,
  521. bool & ForceQueue, UnicodeString & CounterName);
  522. virtual void __fastcall DDFakeFileInitDrag(TFileList * FileList, bool & Created);
  523. UnicodeString __fastcall CreateFakeTransferDirectory();
  524. void __fastcall DDFakeCreated(TObject * Sender, const UnicodeString FileName);
  525. void __fastcall ClipboardFakeCreated(TObject * Sender, const UnicodeString FileName);
  526. void __fastcall ClipboardDataObjectRelease(TObject * Sender);
  527. virtual void __fastcall SideEnter(TOperationSide Side);
  528. virtual TOperationSide __fastcall GetSide(TOperationSide Side);
  529. TStrings * __fastcall PanelExport(TOperationSide Side, TPanelExport Export);
  530. virtual void __fastcall PanelExportStore(TOperationSide Side,
  531. TPanelExport Export, TPanelExportDestination Destination,
  532. TStrings * ExportData);
  533. void __fastcall GenerateUrl(TStrings * Paths);
  534. void __fastcall QueueListUpdate(TTerminalQueue * Queue);
  535. void __fastcall QueueItemUpdate(TTerminalQueue * Queue, TQueueItem * Item);
  536. void __fastcall UpdateQueueStatus(bool QueueChanging);
  537. bool IsAnythingQueued();
  538. void __fastcall RefreshQueueItems();
  539. virtual int __fastcall GetStaticComponentsHeight();
  540. void __fastcall FillQueueViewItem(TListItem * Item,
  541. TQueueItemProxy * QueueItem, bool Detail);
  542. void __fastcall QueueViewDeleteItem(int Index);
  543. void __fastcall UserActionTimer(TObject * Sender);
  544. void __fastcall UpdateQueueView();
  545. bool __fastcall CanCloseQueue(TTerminalQueue * Queue);
  546. bool __fastcall CanCloseQueue();
  547. virtual bool __fastcall IsFileControl(TObject * Control, TOperationSide Side);
  548. virtual void __fastcall ReloadLocalDirectory(const UnicodeString Directory = L"");
  549. virtual bool __fastcall PanelOperation(TOperationSide Side, bool DragDrop);
  550. void __fastcall DoWarnLackOfTempSpace(const UnicodeString Path,
  551. __int64 RequiredSpace, bool & Continue);
  552. void __fastcall AddDelayedDirectoryDeletion(const UnicodeString TempDir, int SecDelay);
  553. void __fastcall DoDelayedDeletion(TObject * Sender);
  554. TDragDropFilesEx * __fastcall DragDropFiles(TObject * Sender);
  555. void __fastcall RemoteFileControlDDTargetDrop();
  556. bool __fastcall RemoteFileControlFileOperation(TObject * Sender,
  557. TFileOperation Operation, bool NoConfirmation, void * Param);
  558. void __fastcall DDDownload(
  559. TStrings * FilesToCopy, const UnicodeString & TargetDir, TCopyParamType * CopyParam, int Params);
  560. bool __fastcall EnsureCommandSessionFallback(TFSCapability Capability);
  561. bool __fastcall CommandSessionFallback();
  562. void __fastcall FileTerminalRemoved(const UnicodeString FileName,
  563. TEditedFileData * Data, TObject * Token, void * Arg);
  564. void __fastcall FileTerminalReplaced(
  565. const UnicodeString FileName, TEditedFileData * Data, TObject * Token, void * Arg);
  566. void __fastcall FileConfigurationChanged(const UnicodeString FileName,
  567. TEditedFileData * Data, TObject * Token, void * Arg);
  568. void __fastcall CustomExecuteFile(TOperationSide Side,
  569. TExecuteFileBy ExecuteFileBy, UnicodeString FileName, UnicodeString OriginalFileName,
  570. const TEditorData * ExternalEditor, UnicodeString LocalRootDirectory,
  571. UnicodeString RemoteDirectory, bool NewFile, const TDateTime & SourceTimestamp);
  572. void __fastcall ExecuteFile(TOperationSide Side,
  573. TExecuteFileBy ExecuteFileBy, const TEditorData * ExternalEditor,
  574. UnicodeString FullFileName, TObject * Object,
  575. const TFileMasks::TParams & MaskParams);
  576. bool __fastcall RemoteExecuteForceText(TExecuteFileBy ExecuteFileBy,
  577. const TEditorData * ExternalEditor);
  578. void __fastcall ExecuteFileNormalize(TExecuteFileBy & ExecuteFileBy,
  579. const TEditorData *& ExternalEditor, const UnicodeString & FileName,
  580. bool Local, const TFileMasks::TParams & MaskParams);
  581. void __fastcall ExecuteRemoteFile(
  582. const UnicodeString & FullFileName, TRemoteFile * File, TExecuteFileBy ExecuteFileBy);
  583. TCopyParamType TemporaryFileCopyParam(bool ForceText = false);
  584. void __fastcall TemporaryDirectoryForRemoteFiles(
  585. const UnicodeString & RemoteDirectory, const TCopyParamType & CopyParam, bool Simple,
  586. UnicodeString & Result, UnicodeString & RootDirectory);
  587. UnicodeString GetTempLocalName(const UnicodeString & Path, const TCopyParamType & CopyParam);
  588. void TemporarilyDownloadFiles(
  589. TStrings * FileList, bool ForceText, UnicodeString & RootTempDir, UnicodeString & TempDir,
  590. bool AutoOperation, bool SimpleTempDir);
  591. void __fastcall LocalEditorClosed(TObject * Sender, bool Forced);
  592. TTBXPopupMenu * __fastcall HistoryMenu(TOperationSide Side, bool Back);
  593. UnicodeString __fastcall FileStatusBarText(const TStatusFileInfo & FileInfo, TOperationSide Side);
  594. void __fastcall UpdateFileStatusBar(TTBXStatusBar * StatusBar,
  595. const TStatusFileInfo & FileInfo, TOperationSide Side);
  596. void __fastcall UpdateFileStatusExtendedPanels(
  597. TTBXStatusBar * StatusBar, const TStatusFileInfo & FileInfo);
  598. void __fastcall FileStatusBarPanelClick(TTBXStatusPanel * Panel, TOperationSide Side);
  599. virtual void __fastcall DoDirViewLoaded(TCustomDirView * Sender);
  600. virtual void UpdatePanelControls(TCustomDirView * ADirView, TCustomDriveView * ADriveView);
  601. void __fastcall UpdateTransferList();
  602. void __fastcall UpdateTransferLabel();
  603. void __fastcall StartUpdates();
  604. void __fastcall TransferPresetAutoSelect();
  605. virtual void __fastcall GetTransferPresetAutoSelectData(TCopyParamRuleData & Data);
  606. inline bool __fastcall CustomCommandRemoteAllowed();
  607. void __fastcall CustomCommandMenu(
  608. TAction * Action, TStrings * LocalFileList, TStrings * RemoteFileList);
  609. void __fastcall LoadToolbarsLayoutStr(UnicodeString LayoutStr, UnicodeString ButtonsStr);
  610. UnicodeString __fastcall GetToolbarItemName(TTBCustomItem * Item);
  611. UnicodeString __fastcall GetToolbarsLayoutStr();
  612. UnicodeString __fastcall GetToolbarsButtonsStr();
  613. virtual void __fastcall Dispatch(void * Message);
  614. void __fastcall PostComponentHide(Byte Component);
  615. void __fastcall GetSpaceAvailable(const UnicodeString Path,
  616. TSpaceAvailable & ASpaceAvailable, bool & Close);
  617. void __fastcall CalculateSize(TStrings * FileList, __int64 & Size,
  618. TCalculateSizeStats & Stats, bool & Close);
  619. void __fastcall CalculateChecksum(const UnicodeString & Alg, TStrings * FileList,
  620. TCalculatedChecksumEvent OnCalculatedChecksum, bool & Close);
  621. void __fastcall UpdateCustomCommandsToolbar();
  622. virtual void __fastcall UpdateActions();
  623. void __fastcall UpdateSessionColor(TColor value);
  624. void __fastcall SetSessionColor(TColor value);
  625. void __fastcall NoteTimer(TObject * Sender);
  626. void __fastcall AddNote(UnicodeString Note, bool UpdateNow = true);
  627. bool __fastcall CancelNote(bool Force);
  628. void __fastcall UpdateNoteHints();
  629. void __fastcall UpdatesChecked();
  630. void __fastcall UpdatesNoteClicked(TObject * Sender);
  631. void __fastcall TransferPresetNoteClicked(TObject * Sender);
  632. void __fastcall TransferPresetNoteMessage(TTransferPresetNoteData * NoteData,
  633. bool AllowNeverAskAgain);
  634. void __fastcall UpdateTrayIcon();
  635. void __fastcall TrayIconClick(TObject * Sender);
  636. virtual void __fastcall UpdateSessionData(TSessionData * Data);
  637. virtual void __fastcall UpdateRemotePathComboBox(bool TextOnly);
  638. virtual void __fastcall ToolbarItemResize(TTBXCustomDropDownItem * Item, int Width);
  639. virtual void __fastcall CreateWnd();
  640. virtual void __fastcall DestroyWnd();
  641. virtual bool __fastcall OpenBookmark(TOperationSide Side, TBookmark * Bookmark);
  642. void __fastcall DoFindFiles(TTerminal * Terminal, UnicodeString Directory, const TFileMasks & FileMask,
  643. TFileFoundEvent OnFileFound, TFindingFileEvent OnFindingFile);
  644. virtual void __fastcall DoFocusRemotePath(TTerminal * Terminal, const UnicodeString & Path);
  645. bool __fastcall CanOperateOnFoundFiles(TTerminal * ATerminal);
  646. void __fastcall DoOperationOnFoundFiles(
  647. TFileOperation Operation, TTerminal * ATerminal, TStrings * FileList, TFileOperationFinishedEvent OnFileOperationFinished);
  648. void __fastcall DoDeleteFoundFiles(TTerminal * Terminal, TStrings * FileList, TFileOperationFinishedEvent OnFileOperationFinished);
  649. void __fastcall DoDownloadFoundFiles(TTerminal * ATerminal, TStrings * FileList, TFileOperationFinishedEvent OnFileOperationFinished);
  650. void __fastcall DoEditFoundFiles(TTerminal * ATerminal, TStrings * FileList, TFileOperationFinishedEvent OnFileOperationFinished);
  651. bool __fastcall ExecuteFileOperation(TFileOperation Operation, TOperationSide Side,
  652. bool OnFocused, bool NoConfirmation = false, void * Param = NULL);
  653. void __fastcall UpdateCopyParamCounters(const TCopyParamType & CopyParam);
  654. int __fastcall AddSessionColor(TColor Color);
  655. void UpdateSessionTab(TThemeTabSheet * TabSheet);
  656. void __fastcall UpdateNewTabTab();
  657. TThemeTabSheet * GetNewTabTab();
  658. TThemeTabCaptionTruncation GetNewTabTabCaptionTruncation();
  659. UnicodeString GetNewTabTabCaption();
  660. void __fastcall AddFixedSessionImages();
  661. int __fastcall AddFixedSessionImage(int GlyphsSourceIndex);
  662. TObjectList * __fastcall DoCollectWorkspace();
  663. void __fastcall DoSaveWorkspace(const UnicodeString & Name,
  664. TObjectList * DataList, bool SavePasswords, bool Explicit);
  665. UnicodeString __fastcall WorkspaceName();
  666. virtual bool __fastcall EligibleForImageDisplayMode(TTBCustomItem * Item);
  667. virtual bool __fastcall UpdateToolbarDisplayMode();
  668. virtual void __fastcall QueueLabelUpdateStatus();
  669. void __fastcall EditorAutoConfig();
  670. void __fastcall DirViewContextPopupDefaultItem(
  671. TOperationSide Side, TTBXCustomItem * Item, TResolvedDoubleClickAction DoubleClickAction1, TResolvedDoubleClickAction DoubleClickAction2);
  672. void __fastcall DirViewContextPopup(
  673. TOperationSide Side, Byte PopupComponent, const TPoint & MousePos);
  674. bool __fastcall CommandLineFromAnotherInstance(const UnicodeString & CommandLine);
  675. bool __fastcall CanCommandLineFromAnotherInstance();
  676. void __fastcall SetQueueProgress();
  677. void __fastcall UpdateQueueLabel();
  678. void CheckStoreTransition();
  679. void __fastcall SetTaskbarListProgressState(TBPFLAG Flags);
  680. void __fastcall SetTaskbarListProgressValue(int Progress);
  681. void __fastcall SetTaskbarListProgressValue(TFileOperationProgressType * ProgressData);
  682. TManagedTerminal * __fastcall GetSessionTabSession(TTabSheet * TabSheet);
  683. bool __fastcall SessionTabSwitched();
  684. void __fastcall RestoreApp();
  685. void __fastcall GoToQueue();
  686. void __fastcall LockFiles(TStrings * FileList, bool Lock);
  687. void __fastcall SaveInternalEditor(
  688. const UnicodeString FileName, TEditedFileData * Data, TObject * Token,
  689. void * Arg);
  690. void __fastcall SaveAllInternalEditors(TObject * Sender);
  691. void __fastcall InternalEditorModified(
  692. const UnicodeString FileName, TEditedFileData * Data, TObject * Token,
  693. void * Arg);
  694. void __fastcall AnyInternalEditorModified(TObject * Sender, bool & Modified);
  695. virtual void __fastcall StartingWithoutSession();
  696. virtual void __fastcall NeedSession(bool Startup);
  697. bool __fastcall DraggingAllFilesFromDirView(TOperationSide Side, TStrings * FileList);
  698. bool __fastcall SelectedAllFilesInDirView(TCustomDirView * DView);
  699. TSessionData * __fastcall SessionDataForCode();
  700. void __fastcall RefreshPanel(const UnicodeString & Session, const UnicodeString & Path);
  701. virtual void __fastcall UpdateImages();
  702. void __fastcall UpdatePixelsPerInchMainWindowCounter();
  703. void __fastcall CopyPopup(TControl * DestControl, TControl * SourceControl);
  704. void __fastcall CreateRemoteDirectory(const UnicodeString & Path, TRemoteProperties & Properties);
  705. void __fastcall DoFullSynchronize(
  706. void * Token, TProcessedSynchronizationChecklistItem OnProcessedItem,
  707. TUpdatedSynchronizationChecklistItems OnUpdatedSynchronizationChecklistItems);
  708. void DoQueueSynchronize(void * Token);
  709. void __fastcall DoSynchronizeChecklistCalculateSize(
  710. TSynchronizeChecklist * Checklist, const TSynchronizeChecklist::TItemList & Items, void * Token);
  711. void __fastcall DoSynchronizeMove(
  712. TOperationSide Side, TStrings * FileList, const UnicodeString & NewFileName, bool TargetIsDirectory, void * Token);
  713. void __fastcall DoSynchronizeExplore(TOperationSide Side, TSynchronizeChecklist::TAction Action, const TSynchronizeChecklist::TItem * Item);
  714. void __fastcall FullSynchronize(
  715. TSynchronizeParams & Params, TProcessedSynchronizationChecklistItem OnProcessedItem,
  716. TUpdatedSynchronizationChecklistItems OnUpdatedSynchronizationChecklistItems);
  717. void __fastcall SynchronizeProcessedItem(void * Token, const TSynchronizeChecklist::TItem * ChecklistItem);
  718. void SynchronizeApplyLocal(TSynchronizeChecklist * Checklist, TSynchronizeParams & Params);
  719. void __fastcall CreateOpenDirMenuList(TTBCustomItem * Menu, TOperationSide Side, TBookmarkList * BookmarkList);
  720. void __fastcall CreateOpenDirMenu(TTBCustomItem * Menu, TOperationSide Side);
  721. bool __fastcall TryOpenDirectory(TOperationSide Side, const UnicodeString & Path);
  722. void __fastcall ClipboardStop();
  723. void __fastcall ClipboardClear();
  724. void __fastcall ClipboardDownload(const UnicodeString & TargetDirectory, bool NoConfirmation, bool DragDrop);
  725. bool __fastcall DoesClipboardContainOurFiles();
  726. bool __fastcall CanPasteToDirViewFromClipBoard();
  727. void __fastcall CloseSessionTab(int Index);
  728. void __fastcall DoFileColorsChanged(TCustomDirView * DirView);
  729. virtual void __fastcall FileColorsChanged();
  730. TColor __fastcall PanelColor();
  731. TColor __fastcall DisabledPanelColor();
  732. void __fastcall WMSettingChange(TMessage & Message);
  733. void __fastcall ResetIncrementalSearch();
  734. void __fastcall IncrementalSearch(const UnicodeString & Text, bool SkipCurrent, bool Reverse);
  735. TListItem * __fastcall GetNextFile(TListItem * Item, bool Reverse);
  736. TListItem * __fastcall SearchFile(const UnicodeString & Text, bool SkipCurrent, bool Reverse);
  737. void __fastcall CMDialogKey(TWMKeyDown & Message);
  738. DYNAMIC void __fastcall Deactivate();
  739. void __fastcall CenterReconnectToolbar();
  740. void DoOpenFolderOrWorkspace(const UnicodeString & Name, bool ConnectFirstTerminal, bool CheckMaxSessions);
  741. void __fastcall ThemeChanged();
  742. int __fastcall GetStaticQueuePanelComponentsHeight();
  743. int __fastcall GetMinQueueViewHeight();
  744. void __fastcall DetachTerminal(TObject * ATerminal);
  745. bool IsAvailableTerminal(TTerminal * Terminal);
  746. void __fastcall UpdateRowSelect(TCustomDirView * DirView);
  747. void __fastcall MakeFocusedItemVisible(TCustomDirView * DirView);
  748. virtual void __fastcall DoRemotePathComboBoxAdjustImageIndex(
  749. TTBXComboBoxItem * Sender, const UnicodeString AText, int AIndex, int & ImageIndex);
  750. virtual void __fastcall DoRemotePathComboBoxCancel(TObject * Sender);
  751. virtual void __fastcall DoRemotePathComboBoxItemClick(TObject * Sender);
  752. bool GetDoNotShowCopyDialogDefault(bool DragDrop);
  753. void HandleDoNotShowCopyDialogAgain(bool DragDrop, bool DoNotShowAgain);
  754. void __fastcall UpdateDarkMode();
  755. virtual UnicodeString GetTabHintDetails(TManagedTerminal * ASession);
  756. virtual UnicodeString GetNewTabHintDetails();
  757. UnicodeString GetTabHintSessionDetails(TManagedTerminal * ASession);
  758. UnicodeString GetSessionPath(TManagedTerminal * ASession, TOperationSide Side);
  759. void __fastcall DirectorySizeCalculated(TOperationSide Side, const UnicodeString & FileName, bool Success, bool NotCancelled);
  760. TListItem * VisualiseOperationFinished(TOperationSide Side, const UnicodeString & FileName, bool Unselect);
  761. void __fastcall FileDeleted(TOperationSide Side, const UnicodeString & FileName, bool Success, bool NotCancelled);
  762. void LoadFilesProperties(TStrings * FileList);
  763. void PasteFiles();
  764. bool DoDirectoryExists(void * Session, const UnicodeString & Directory);
  765. void DoExploreFile(TCustomDirView * DirView, const UnicodeString & FileName);
  766. bool NeedSecondarySessionForRemoteCopy(TStrings * FileList);
  767. void ReleaseHiContrastTheme();
  768. bool CanCalculateChecksum();
  769. void RegenerateSessionColorsImageList();
  770. void WMQueueCallback(TMessage & Message);
  771. void PasteFilesCleanupRetry(const UnicodeString & Target);
  772. public:
  773. virtual __fastcall ~TCustomScpExplorerForm();
  774. void __fastcall AddBookmark(TOperationSide Side);
  775. virtual void __fastcall AddEditLink(TOperationSide Side, bool Add);
  776. bool __fastcall CanAddEditLink(TOperationSide Side);
  777. bool __fastcall LinkFocused();
  778. virtual Boolean __fastcall AllowedAction(TAction * Action, TActionAllowed Allowed);
  779. bool __fastcall IsBusy();
  780. virtual void __fastcall ConfigurationChanged();
  781. void __fastcall CreateDirectory(TOperationSide Side);
  782. void __fastcall ExecuteFileOperationCommand(TFileOperation Operation, TOperationSide Side,
  783. bool OnFocused, bool NoConfirmation = false, void * Param = NULL);
  784. void __fastcall ExecuteCopyOperationCommand(
  785. TOperationSide Side, bool OnFocused, unsigned int Flags);
  786. virtual void LocalLocalCopy(
  787. TFileOperation Operation, TOperationSide Side, bool OnFocused, bool NoConfirmation, bool DragDrop, unsigned int Flags);
  788. void LocalLocalCopyCommand(TFileOperation Operation, TOperationSide Side, bool OnFocused, unsigned int Flags);
  789. void __fastcall AdHocCustomCommand(bool OnFocused);
  790. virtual TCustomDirView * __fastcall DirView(TOperationSide Side);
  791. virtual bool __fastcall DirViewEnabled(TOperationSide Side);
  792. virtual void __fastcall ChangePath(TOperationSide Side) = 0;
  793. virtual void __fastcall StoreParams();
  794. int __fastcall CustomCommandState(const TCustomCommandType & Command, bool OnFocused, TCustomCommandListType ListType);
  795. bool __fastcall GetLastCustomCommand(bool OnFocused,
  796. TCustomCommandType & CustomCommand, int & State);
  797. void __fastcall LastCustomCommand(bool OnFocused);
  798. void __fastcall BothCustomCommand(const TCustomCommandType & Command);
  799. void __fastcall LockWindow(bool Force = false);
  800. void __fastcall UnlockWindow();
  801. void __fastcall SuspendWindowLock();
  802. void __fastcall ResumeWindowLock();
  803. bool HasAvailableTerminal();
  804. virtual bool IsLocalBrowserMode();
  805. bool CanCloseSession(TManagedTerminal * Session);
  806. virtual UnicodeString __fastcall DefaultDownloadTargetDirectory() = 0;
  807. virtual bool SupportedSession(TSessionData * SessionData) = 0;
  808. TOperationSide GetOtherSide(TOperationSide Side);
  809. void __fastcall NewSession(const UnicodeString & SessionUrl = L"");
  810. virtual void NewTab(TOperationSide Side = osCurrent, bool AllowReverse = true);
  811. void __fastcall DuplicateTab();
  812. void __fastcall RenameTab();
  813. void __fastcall CloseTab();
  814. void __fastcall DisconnectSession();
  815. void __fastcall ReconnectSession();
  816. void __fastcall OpenDirectory(TOperationSide Side);
  817. virtual void __fastcall HomeDirectory(TOperationSide Side);
  818. void __fastcall ReloadDirectory(TOperationSide Side);
  819. void __fastcall OpenStoredSession(TSessionData * Data);
  820. void __fastcall OpenFolderOrWorkspace(const UnicodeString & Name);
  821. void __fastcall Idle();
  822. __fastcall TCustomScpExplorerForm(TComponent* Owner);
  823. void __fastcall SaveCurrentSession();
  824. UnicodeString __fastcall CreateHiddenDuplicateSession();
  825. UnicodeString __fastcall SaveHiddenDuplicateSession(TSessionData * SessionData);
  826. TSessionData * __fastcall CloneCurrentSessionData();
  827. bool __fastcall SaveWorkspace(bool EnableAutoSave);
  828. virtual void __fastcall CompareDirectories();
  829. void __fastcall ExecuteCurrentFile();
  830. virtual void __fastcall OpenConsole(UnicodeString Command = L"");
  831. virtual void __fastcall UpdateSession(TManagedTerminal * Terminal);
  832. virtual void __fastcall SynchronizeDirectories();
  833. virtual void __fastcall FullSynchronizeDirectories() = 0;
  834. virtual void __fastcall ExploreLocalDirectory(TOperationSide Side);
  835. virtual void __fastcall GoToCommandLine();
  836. virtual void __fastcall GoToTree();
  837. void __fastcall PanelExport(TOperationSide Side, TPanelExport Export,
  838. TPanelExportDestination Destination);
  839. void __fastcall Filter(TOperationSide Side);
  840. void __fastcall ExecuteFile(TOperationSide Side, TExecuteFileBy ExecuteFileBy,
  841. const TEditorData * ExternalEditor = NULL, bool AllSelected = false,
  842. bool OnFocused = false);
  843. void __fastcall ExecuteCurrentFileWith(bool OnFocused);
  844. void __fastcall EditNew(TOperationSide Side);
  845. bool __fastcall AllowQueueOperation(TQueueOperation Operation, unsigned long * Param = NULL);
  846. void __fastcall ExecuteQueueOperation(TQueueOperation Operation, unsigned long Param = 0);
  847. TQueueOperation __fastcall DefaultQueueOperation();
  848. bool __fastcall GetQueueEnabled();
  849. void __fastcall ToggleQueueEnabled();
  850. UnicodeString __fastcall GetQueueProgressTitle();
  851. void __fastcall LastTerminalClosed();
  852. virtual TManagedTerminal * GetReplacementForLastSession();
  853. void __fastcall TerminalRemoved(TObject * Sender);
  854. void __fastcall TerminalDisconnected();
  855. void __fastcall TerminalConnecting();
  856. void __fastcall SessionListChanged(bool ForceTruncationUpdate = false);
  857. void __fastcall ApplicationTitleChanged();
  858. unsigned int __fastcall MoreMessageDialog(const UnicodeString Message,
  859. TStrings * MoreMessages, TQueryType Type, unsigned int Answers,
  860. UnicodeString HelpKeyword, const TMessageParams * Params = NULL,
  861. TTerminal * Terminal = NULL);
  862. void __fastcall OperationFinished(TFileOperation Operation, TOperationSide Side,
  863. bool Temp, const UnicodeString & FileName, bool Success, bool NotCancelled, TOnceDoneOperation & OnceDoneOperation);
  864. void __fastcall OperationProgress(TFileOperationProgressType & ProgressData);
  865. UnicodeString __fastcall GetProgressTitle();
  866. void __fastcall ShowExtendedException(TTerminal * Terminal, Exception * E);
  867. void InactiveTerminalNotify(
  868. TManagedTerminal * Terminal, const UnicodeString & Message, TQueryType Type, Exception * E = NULL);
  869. void __fastcall SessionReady();
  870. void __fastcall QueueEvent(TManagedTerminal * Terminal, TTerminalQueue * Queue, TQueueEvent Event);
  871. void __fastcall QueueEmptyNoteClicked(TObject * Sender);
  872. bool __fastcall DoSynchronizeDirectories(
  873. UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory, int UseDefaults);
  874. int __fastcall DoFullSynchronizeDirectories(
  875. UnicodeString & Directory1, UnicodeString & Directory2,
  876. TSynchronizeMode & Mode, int Params, bool & SaveMode, int UseDefaults);
  877. void __fastcall StandaloneEdit(const UnicodeString & FileName);
  878. bool __fastcall CanPasteFromClipBoard();
  879. virtual void __fastcall PasteFromClipBoard();
  880. virtual void __fastcall CopyFilesToClipboard(TOperationSide Side, bool OnFocused);
  881. void __fastcall ToggleQueueVisibility();
  882. virtual UnicodeString __fastcall PathForCaption();
  883. void __fastcall FileListFromClipboard();
  884. void __fastcall SelectAll(TOperationSide Side, TSelectMode Mode);
  885. void __fastcall SelectByMask(TOperationSide Side, bool Select);
  886. void __fastcall RestoreSelectedNames(TOperationSide Side);
  887. void __fastcall SelectSameExt(bool Select);
  888. void __fastcall PreferencesDialog(TPreferencesMode APreferencesMode);
  889. virtual void __fastcall BeforeAction();
  890. void __fastcall FileSystemInfo();
  891. void __fastcall SessionGenerateUrl();
  892. void __fastcall FileGenerateUrl();
  893. void __fastcall ReadDirectoryCancelled();
  894. void __fastcall SynchronizeBrowsingChanged();
  895. void __fastcall ToggleShowHiddenFiles();
  896. void __fastcall SetFormatSizeBytes(TFormatBytesStyle Style);
  897. void __fastcall ToggleAutoReadDirectoryAfterOp();
  898. void __fastcall PopupTrayBalloon(TTerminal * Terminal, const UnicodeString & Str,
  899. TQueryType Type, Exception * E = NULL, unsigned int Seconds = 0,
  900. TNotifyEvent OnBalloonClick = NULL, TObject * UserData = NULL);
  901. void __fastcall RemoteFindFiles();
  902. virtual void __fastcall HistoryGo(TOperationSide Side, int Index);
  903. void __fastcall UpdateTaskbarList(ITaskbarList3 * TaskbarList);
  904. virtual void __fastcall DisplaySystemContextMenu();
  905. virtual void __fastcall GoToAddress() = 0;
  906. bool __fastcall CanConsole();
  907. bool __fastcall CanChangePassword();
  908. void __fastcall ChangePassword();
  909. bool __fastcall CanPrivateKeyUpload();
  910. void __fastcall PrivateKeyUpload();
  911. bool __fastcall IsComponentPossible(Byte Component);
  912. void __fastcall ReplaceTerminal(TManagedTerminal * value);
  913. virtual void __fastcall ExploreFile(const UnicodeString & FileName);
  914. void __fastcall CloseApp();
  915. virtual bool SupportsLocalBrowser();
  916. virtual bool IsSideLocalBrowser(TOperationSide Side);
  917. virtual UnicodeString GetLocalBrowserSessionTitle(TManagedTerminal * Session);
  918. virtual int GetNewTabActionImageIndex();
  919. virtual int GetNewTabTabImageIndex(TOperationSide Side);
  920. void CalculateDirectorySizes(TOperationSide Side);
  921. void AutoSizeColumns(TOperationSide Side);
  922. virtual void ResetLayoutColumns(TOperationSide Side) = 0;
  923. void QueueResetLayoutColumns();
  924. void IncrementalSearchStart();
  925. virtual void * SaveFocus();
  926. virtual void RestoreFocus(void * Focus);
  927. virtual void __fastcall UpdateControls();
  928. TThumbnailDownloadQueueItem * AddThumbnailDownloadQueueItem(TManagedTerminal * ATerminal);
  929. void PostThumbnailVisibleQueueQuery(int Index, const UnicodeString & FileName);
  930. void PostThumbnailDrawRequest(int Index);
  931. void ChangeDirViewStyle(TOperationSide Side, TDirViewStyle DirViewStyle);
  932. void PostNote(const UnicodeString & Note, unsigned int Seconds = 0, TNotifyEvent OnNoteClick = NULL, TObject * NoteData = NULL);
  933. void CancelNote(const UnicodeString & Note);
  934. void Notify(
  935. TManagedTerminal * Terminal, const UnicodeString & Message, TQueryType Type,
  936. bool Important = false, TNotifyEvent OnClick = NULL, TObject * UserData = NULL, Exception * E = NULL);
  937. __property bool ComponentVisible[Byte Component] = { read = GetComponentVisible, write = SetComponentVisible };
  938. __property bool EnableFocusedOperation[TOperationSide Side] = { read = GetEnableFocusedOperation, index = 0 };
  939. __property bool EnableSelectedOperation[TOperationSide Side] = { read = GetEnableSelectedOperation, index = 0 };
  940. __property bool EnableFocusedFileOperation[TOperationSide Side] = { read = GetEnableFocusedOperation, index = 1 };
  941. __property bool EnableSelectedFileOperation[TOperationSide Side] = { read = GetEnableSelectedOperation, index = 1 };
  942. __property bool HasDirView[TOperationSide Side] = { read = GetHasDirView };
  943. __property TManagedTerminal * ManagedSession = { read = FManagedSession, write = SetManagedSession };
  944. __property TManagedTerminal * Terminal = { read = GetTerminal };
  945. __property TTerminalQueue * Queue = { read = FQueue, write = SetQueue };
  946. __property TColor SessionColor = { read = FSessionColor, write = SetSessionColor };
  947. __property bool StandaloneOperation = { read = FStandaloneOperation, write = FStandaloneOperation };
  948. };
  949. //---------------------------------------------------------------------------
  950. class TAutoBatch
  951. {
  952. public:
  953. TAutoBatch(TCustomScpExplorerForm * Form);
  954. ~TAutoBatch();
  955. private:
  956. TCustomScpExplorerForm * FForm;
  957. void * FBatchStorage;
  958. };
  959. //---------------------------------------------------------------------------
  960. #endif