UnixDriveView.h 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. //---------------------------------------------------------------------------
  2. #ifndef UnixDriveViewH
  3. #define UnixDriveViewH
  4. //---------------------------------------------------------------------------
  5. #include "CustomDriveView.hpp"
  6. #include "UnixDirView.h"
  7. //---------------------------------------------------------------------------
  8. struct TNodeData;
  9. class TTerminal;
  10. class TRemoteFileList;
  11. class TRemoteFile;
  12. //---------------------------------------------------------------------------
  13. class TCustomUnixDriveView : public TCustomDriveView
  14. {
  15. friend class TUnixDirView;
  16. public:
  17. __fastcall TCustomUnixDriveView(TComponent * Owner);
  18. virtual __fastcall ~TCustomUnixDriveView();
  19. virtual UnicodeString __fastcall NodePathName(TTreeNode * Node);
  20. TStrings * __fastcall DragFileList();
  21. void __fastcall UpdateDropTarget();
  22. void __fastcall UpdateDropSource();
  23. __property TUnixDirView * DirView = { read = FDirView, write = SetDirView };
  24. __property UnicodeString RootName = { read = FRootName, write = FRootName, stored = IsRootNameStored };
  25. __property bool DDAllowMove = { read = FDDAllowMove, write = FDDAllowMove, default = false };
  26. __property TDDDragFileName OnDDDragFileName = { read = FOnDDDragFileName, write = FOnDDDragFileName};
  27. __property bool ShowInaccesibleDirectories = { read=FShowInaccesibleDirectories, write=SetShowInaccesibleDirectories, default=true };
  28. protected:
  29. DYNAMIC void __fastcall Delete(TTreeNode * Node);
  30. DYNAMIC void __fastcall Change(TTreeNode * Node);
  31. virtual void __fastcall CreateWnd();
  32. virtual void __fastcall DestroyWnd();
  33. void __fastcall LoadDirectory();
  34. TTreeNode * __fastcall LoadPath(UnicodeString Path);
  35. TTreeNode * __fastcall LoadPathEasy(TTreeNode * Parent,
  36. UnicodeString Path, TRemoteFile * File);
  37. void __fastcall UpdatePath(TTreeNode * Node, bool Force, bool CanLoad = false);
  38. void __fastcall CheckPendingDeletes();
  39. void __fastcall SetTerminal(TTerminal * value);
  40. inline TNodeData * __fastcall NodeData(const TTreeNode * Node);
  41. inline TRemoteFileList * __fastcall NodeFileList(const TTreeNode * Node);
  42. inline TRemoteFile * __fastcall NodeFile(const TTreeNode * Node);
  43. inline TRemoteFile * __fastcall NodeFileForce(TTreeNode * Node);
  44. inline bool __fastcall NodeIsHidden(const TTreeNode * Node);
  45. inline bool __fastcall NodeTryDelete(TTreeNode * Node, bool RememberIfFails);
  46. virtual TCustomDirView * __fastcall GetCustomDirView();
  47. virtual void __fastcall SetCustomDirView(TCustomDirView * Value);
  48. void __fastcall SetDirView(TUnixDirView * Value);
  49. virtual void __fastcall PerformDragDropFileOperation(TTreeNode * Node, int Effect);
  50. virtual void __fastcall DDChooseEffect(int KeyState, int & Effect, int PreferredEffect);
  51. virtual bool __fastcall DragCompleteFileList();
  52. virtual TDropEffectSet __fastcall DDSourceEffects();
  53. TTreeNode * __fastcall FindNodeToPath(UnicodeString Path);
  54. virtual UnicodeString __fastcall NodePath(TTreeNode * Node);
  55. virtual bool __fastcall NodeIsRecycleBin(TTreeNode * Node);
  56. virtual bool __fastcall NodePathExists(TTreeNode * Node);
  57. virtual TColor __fastcall NodeColor(TTreeNode * Node);
  58. virtual TTreeNode * __fastcall FindPathNode(UnicodeString Path);
  59. virtual void __fastcall GetImageIndex(TTreeNode * Node);
  60. virtual Word __fastcall NodeOverlayIndexes(TTreeNode * Node);
  61. virtual void __fastcall ClearDragFileList(TFileList * FileList);
  62. virtual void __fastcall AddToDragFileList(TFileList * FileList, TTreeNode * Node);
  63. virtual void __fastcall ValidateDirectoryEx(TTreeNode * Node,
  64. TRecursiveScan Recurse, bool NewDirs);
  65. void LoadNodeState(TTreeNode * Node, const UnicodeString & Path);
  66. virtual void __fastcall RebuildTree();
  67. virtual void __fastcall DisplayContextMenu(TTreeNode * Node, const TPoint & ScreenPos);
  68. virtual void __fastcall DisplayPropertiesMenu(TTreeNode * Node);
  69. TObject * SaveState();
  70. #pragma warn -inl
  71. BEGIN_MESSAGE_MAP
  72. VCL_MESSAGE_HANDLER(CM_SHOWINGCHANGED, TMessage, CMShowingChanged)
  73. END_MESSAGE_MAP(TCustomDriveView);
  74. #pragma warn +inl
  75. __property TTerminal * Terminal = { read = FTerminal, write = SetTerminal };
  76. private:
  77. TTerminal * FTerminal;
  78. TUnixDirView * FDirView;
  79. UnicodeString FRootName;
  80. bool FDirectoryLoaded;
  81. bool FIgnoreChange;
  82. TTreeNode * FPrevSelected;
  83. bool FDDAllowMove;
  84. TDDDragFileName FOnDDDragFileName;
  85. bool FShowInaccesibleDirectories;
  86. TRemoteFile * FDummyDragFile;
  87. TList * FPendingDelete;
  88. bool __fastcall IsRootNameStored();
  89. void __fastcall SetShowInaccesibleDirectories(bool value);
  90. void __fastcall CMShowingChanged(TMessage & Message);
  91. };
  92. //---------------------------------------------------------------------------
  93. class TUnixDriveView : public TCustomUnixDriveView
  94. {
  95. __published:
  96. __property DirView;
  97. __property RootName;
  98. __property OnDDDragFileName;
  99. __property OnDDEnd;
  100. __property TargetPopUpMenu;
  101. __property UseSystemContextMenu;
  102. __property OnDDDragEnter;
  103. __property OnDDDragLeave;
  104. __property OnDDDragOver;
  105. __property OnDDDrop;
  106. __property OnDDQueryContinueDrag;
  107. __property OnDDChooseEffect;
  108. __property OnDDGiveFeedback;
  109. __property OnDDDragDetect;
  110. __property OnDDProcessDropped;
  111. __property OnDDError;
  112. __property OnDDExecuted;
  113. __property OnDDFileOperation;
  114. __property OnDDFileOperationExecuted;
  115. __property OnDDCreateDragFileList;
  116. __property OnDDCreateDataObject;
  117. __property Align;
  118. __property Anchors;
  119. __property AutoExpand;
  120. __property BiDiMode;
  121. __property BorderStyle;
  122. __property BorderWidth;
  123. __property ChangeDelay;
  124. __property Color;
  125. __property Ctl3D;
  126. __property Constraints;
  127. __property DoubleBuffered;
  128. __property DragKind;
  129. __property DragCursor;
  130. __property DragMode = { default = dmAutomatic };
  131. __property OnDragDrop;
  132. __property OnDragOver;
  133. __property Enabled;
  134. __property Font;
  135. __property HideSelection;
  136. __property HotTrack;
  137. __property Indent;
  138. __property ParentBiDiMode;
  139. __property ParentColor;
  140. __property ParentCtl3D;
  141. __property ParentDoubleBuffered;
  142. __property ParentFont;
  143. __property ParentShowHint;
  144. __property PopupMenu;
  145. __property ReadOnly;
  146. __property RightClickSelect;
  147. __property RowSelect;
  148. __property ShowButtons;
  149. __property ShowHint;
  150. __property ShowLines;
  151. __property TabOrder;
  152. __property TabStop = { default = true };
  153. __property ToolTips;
  154. __property Visible;
  155. __property OnChange;
  156. __property OnChanging;
  157. __property OnClick;
  158. __property OnCollapsing;
  159. __property OnCollapsed;
  160. __property OnCompare;
  161. __property OnDblClick;
  162. __property OnDeletion;
  163. __property OnEdited;
  164. __property OnEditing;
  165. __property OnEndDock;
  166. __property OnEndDrag;
  167. __property OnEnter;
  168. __property OnExit;
  169. __property OnExpanding;
  170. __property OnExpanded;
  171. __property OnGetImageIndex;
  172. __property OnGetSelectedIndex;
  173. __property OnKeyDown;
  174. __property OnKeyPress;
  175. __property OnKeyUp;
  176. __property OnMouseDown;
  177. __property OnMouseMove;
  178. __property OnMouseUp;
  179. __property OnStartDock;
  180. __property OnStartDrag;
  181. __property OnBusy;
  182. public:
  183. __fastcall TUnixDriveView(TComponent * Owner);
  184. };
  185. //---------------------------------------------------------------------------
  186. #endif