WinConfiguration.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. //---------------------------------------------------------------------------
  2. #ifndef WinConfigurationH
  3. #define WinConfigurationH
  4. //---------------------------------------------------------------------------
  5. #include "CustomWinConfiguration.h"
  6. #include "CustomDirView.hpp"
  7. //---------------------------------------------------------------------------
  8. enum TEditor { edInternal, edExternal };
  9. extern const char ShellCommandFileNamePattern[];
  10. //---------------------------------------------------------------------------
  11. #define C(Property) (Property != rhc.Property) ||
  12. struct TScpExplorerConfiguration {
  13. AnsiString WindowParams;
  14. AnsiString DirViewParams;
  15. AnsiString CoolBarLayout;
  16. bool StatusBar;
  17. AnsiString LastLocalTargetDirectory;
  18. int ViewStyle;
  19. bool ShowFullAddress;
  20. bool __fastcall operator !=(TScpExplorerConfiguration & rhc)
  21. { return C(WindowParams) C(DirViewParams) C(CoolBarLayout) C(StatusBar)
  22. C(LastLocalTargetDirectory) C(ViewStyle) C(ShowFullAddress) 0; };
  23. };
  24. //---------------------------------------------------------------------------
  25. struct TScpCommanderPanelConfiguration {
  26. AnsiString DirViewParams;
  27. AnsiString CoolBarLayout;
  28. bool StatusBar;
  29. bool __fastcall operator !=(TScpCommanderPanelConfiguration & rhc)
  30. { return C(DirViewParams) C(CoolBarLayout) C(StatusBar) 0; };
  31. };
  32. //---------------------------------------------------------------------------
  33. struct TScpCommanderConfiguration {
  34. AnsiString WindowParams;
  35. float LocalPanelWidth;
  36. AnsiString CoolBarLayout;
  37. bool StatusBar;
  38. bool CommandLine;
  39. bool ToolBar;
  40. TOperationSide CurrentPanel;
  41. bool ExplorerStyleSelection;
  42. bool PreserveLocalDirectory;
  43. TScpCommanderPanelConfiguration LocalPanel;
  44. TScpCommanderPanelConfiguration RemotePanel;
  45. bool CompareByTime;
  46. bool CompareBySize;
  47. bool SynchronizeBrowsing;
  48. bool __fastcall operator !=(TScpCommanderConfiguration & rhc)
  49. { return C(WindowParams) C(LocalPanelWidth) C(CoolBarLayout) C(StatusBar)
  50. C(LocalPanel) C(RemotePanel) C(CurrentPanel) C(ToolBar) C(CommandLine)
  51. C(ExplorerStyleSelection) C(PreserveLocalDirectory)
  52. C(CompareBySize) C(CompareByTime) C(SynchronizeBrowsing) 0; };
  53. TCompareCriterias __fastcall CompareCriterias()
  54. {
  55. TCompareCriterias Criterias;
  56. if (CompareByTime)
  57. {
  58. Criterias << ccTime;
  59. }
  60. if (CompareBySize)
  61. {
  62. Criterias << ccSize;
  63. }
  64. return Criterias;
  65. }
  66. };
  67. //---------------------------------------------------------------------------
  68. struct TEditorConfiguration {
  69. TEditor Editor;
  70. AnsiString ExternalEditor;
  71. bool ExternalEditorText;
  72. AnsiString FontName;
  73. int FontHeight;
  74. int FontCharset;
  75. int FontStyle;
  76. bool WordWrap;
  77. AnsiString FindText;
  78. AnsiString ReplaceText;
  79. bool FindMatchCase;
  80. bool FindWholeWord;
  81. bool __fastcall operator !=(TEditorConfiguration & rhc)
  82. { return C(Editor) C(ExternalEditor) C(ExternalEditorText) C(FontName) C(FontHeight)
  83. C(FontCharset) C(FontStyle) C(WordWrap) C(FindText) C(ReplaceText)
  84. C(FindMatchCase) C(FindWholeWord) 0; };
  85. };
  86. //---------------------------------------------------------------------------
  87. enum TQueueViewShow { qvShow, qvHideWhenEmpty, qvHide };
  88. struct TQueueViewConfiguration {
  89. int Height;
  90. AnsiString Layout;
  91. TQueueViewShow Show;
  92. bool ToolBar;
  93. bool __fastcall operator !=(TQueueViewConfiguration & rhc)
  94. { return C(Height) C(Layout) C(Show) C(ToolBar) 0; };
  95. };
  96. #undef C
  97. //---------------------------------------------------------------------------
  98. class TBookmarks;
  99. class TBookmarkList;
  100. class TCustomCommands;
  101. //---------------------------------------------------------------------------
  102. class TWinConfiguration : public TCustomWinConfiguration
  103. {
  104. private:
  105. AnsiString FAutoStartSession;
  106. bool FCopyOnDoubleClick;
  107. bool FCopyOnDoubleClickConfirmation;
  108. bool FDDAllowMove;
  109. bool FDDAllowMoveInit;
  110. bool FDDTransferConfirmation;
  111. bool FDeleteToRecycleBin;
  112. bool FDimmHiddenFiles;
  113. bool FLogWindowOnStartup;
  114. AnsiString FLogWindowParams;
  115. TScpCommanderConfiguration FScpCommander;
  116. TScpExplorerConfiguration FScpExplorer;
  117. bool FSelectDirectories;
  118. AnsiString FSelectMask;
  119. bool FShowHiddenFiles;
  120. bool FShowInaccesibleDirectories;
  121. bool FConfirmDeleting;
  122. bool FUseLocationProfiles;
  123. AnsiString FDDTemporaryDirectory;
  124. bool FDDWarnLackOfTempSpace;
  125. bool FDDExtEnabled;
  126. int FDDExtInstalled;
  127. int FDDExtTimeout;
  128. bool FConfirmClosingSession;
  129. bool FConfirmExitOnCompletion;
  130. double FDDWarnLackOfTempSpaceRatio;
  131. AnsiString FTemporarySessionFile;
  132. AnsiString FTemporaryKeyFile;
  133. TBookmarks * FBookmarks;
  134. TCustomCommands * FCustomCommands;
  135. bool FCustomCommandsModified;
  136. bool FCustomCommandsDefaults;
  137. TEditorConfiguration FEditor;
  138. TQueueViewConfiguration FQueueView;
  139. bool FEmbeddedSessions;
  140. bool FExpertMode;
  141. bool FDisableOpenEdit;
  142. bool FForceDeleteTempFolder;
  143. bool FDefaultDirIsHome;
  144. void __fastcall SetCopyOnDoubleClick(bool value);
  145. void __fastcall SetCopyOnDoubleClickConfirmation(bool value);
  146. void __fastcall SetDDAllowMove(bool value);
  147. void __fastcall SetDDAllowMoveInit(bool value);
  148. void __fastcall SetDDTransferConfirmation(bool value);
  149. void __fastcall SetDeleteToRecycleBin(bool value);
  150. void __fastcall SetDimmHiddenFiles(bool value);
  151. void __fastcall SetLogWindowOnStartup(bool value);
  152. void __fastcall SetLogWindowParams(AnsiString value);
  153. void __fastcall SetScpCommander(TScpCommanderConfiguration value);
  154. void __fastcall SetScpExplorer(TScpExplorerConfiguration value);
  155. void __fastcall SetSelectDirectories(bool value);
  156. void __fastcall SetShowHiddenFiles(bool value);
  157. void __fastcall SetShowInaccesibleDirectories(bool value);
  158. void __fastcall SetConfirmDeleting(bool value);
  159. void __fastcall SetUseLocationProfiles(bool value);
  160. void __fastcall SetDDTemporaryDirectory(AnsiString value);
  161. void __fastcall SetDDWarnLackOfTempSpace(bool value);
  162. void __fastcall SetDDExtEnabled(bool value);
  163. void __fastcall SetDDExtTimeout(int value);
  164. void __fastcall SetConfirmClosingSession(bool value);
  165. void __fastcall SetConfirmExitOnCompletion(bool value);
  166. void __fastcall SetForceDeleteTempFolder(bool value);
  167. void __fastcall SetDDWarnLackOfTempSpaceRatio(double value);
  168. void __fastcall SetBookmarks(AnsiString Key, TBookmarkList * value);
  169. TBookmarkList * __fastcall GetBookmarks(AnsiString Key);
  170. void __fastcall SetAutoStartSession(AnsiString value);
  171. void __fastcall SetExpertMode(bool value);
  172. void __fastcall SetDefaultDirIsHome(bool value);
  173. void __fastcall SetEditor(TEditorConfiguration value);
  174. void __fastcall SetQueueView(TQueueViewConfiguration value);
  175. void __fastcall SetCustomCommands(TCustomCommands * value);
  176. bool __fastcall GetDDExtInstalled();
  177. protected:
  178. virtual TStorage __fastcall GetStorage();
  179. bool __fastcall DumpResourceToFile(
  180. const AnsiString ResName, const AnsiString FileName);
  181. virtual void __fastcall SaveSpecial(THierarchicalStorage * Storage);
  182. virtual void __fastcall LoadSpecial(THierarchicalStorage * Storage);
  183. virtual void __fastcall LoadAdmin(THierarchicalStorage * Storage);
  184. virtual AnsiString __fastcall GetDefaultKeyFile();
  185. virtual void __fastcall ModifyAll();
  186. bool __fastcall SameStringLists(TStrings * Strings1, TStrings * Strings2);
  187. bool __fastcall InternalReloadComponentRes(const AnsiString ResName,
  188. HANDLE HInst, TComponent * Instance);
  189. bool __fastcall InitComponent(TComponent * Instance,
  190. TClass RootAncestor, TClass ClassType);
  191. virtual HANDLE __fastcall LoadNewResourceModule(LCID Locale,
  192. AnsiString * FileName = NULL);
  193. virtual void __fastcall SetResourceModule(HANDLE Instance);
  194. virtual LCID __fastcall GetLocale();
  195. void __fastcall CheckTranslationVersion(const AnsiString FileName);
  196. void __fastcall DefaultLocalized();
  197. public:
  198. __fastcall TWinConfiguration();
  199. virtual __fastcall ~TWinConfiguration();
  200. virtual void __fastcall Default();
  201. void __fastcall RestoreForm(AnsiString Data, TCustomForm * Form);
  202. AnsiString __fastcall StoreForm(TCustomForm * Form);
  203. void __fastcall ClearTemporaryLoginData();
  204. virtual THierarchicalStorage * CreateScpStorage(bool SessionList);
  205. static void ReformatFileNameCommand(AnsiString & Command);
  206. __property TScpCommanderConfiguration ScpCommander = { read = FScpCommander, write = SetScpCommander };
  207. __property TScpExplorerConfiguration ScpExplorer = { read = FScpExplorer, write = SetScpExplorer };
  208. __property bool SelectDirectories = { read = FSelectDirectories, write = SetSelectDirectories };
  209. __property AnsiString SelectMask = { read = FSelectMask, write = FSelectMask };
  210. __property bool ShowHiddenFiles = { read = FShowHiddenFiles, write = SetShowHiddenFiles };
  211. __property bool ShowInaccesibleDirectories = { read = FShowInaccesibleDirectories, write = SetShowInaccesibleDirectories };
  212. __property TEditorConfiguration Editor = { read = FEditor, write = SetEditor };
  213. __property TQueueViewConfiguration QueueView = { read = FQueueView, write = SetQueueView };
  214. __property AnsiString AutoStartSession = { read = FAutoStartSession, write = SetAutoStartSession };
  215. __property bool CopyOnDoubleClick = { read = FCopyOnDoubleClick, write = SetCopyOnDoubleClick };
  216. __property bool CopyOnDoubleClickConfirmation = { read = FCopyOnDoubleClickConfirmation, write = SetCopyOnDoubleClickConfirmation };
  217. __property bool DDAllowMove = { read = FDDAllowMove, write = SetDDAllowMove };
  218. __property bool DDAllowMoveInit = { read = FDDAllowMoveInit, write = SetDDAllowMoveInit };
  219. __property bool DDTransferConfirmation = { read = FDDTransferConfirmation, write = SetDDTransferConfirmation };
  220. __property bool LogWindowOnStartup = { read = FLogWindowOnStartup, write = SetLogWindowOnStartup };
  221. __property bool DeleteToRecycleBin = { read = FDeleteToRecycleBin, write = SetDeleteToRecycleBin };
  222. __property bool DimmHiddenFiles = { read = FDimmHiddenFiles, write = SetDimmHiddenFiles };
  223. __property AnsiString LogWindowParams = { read = FLogWindowParams, write = SetLogWindowParams };
  224. __property bool ConfirmDeleting = { read = FConfirmDeleting, write = SetConfirmDeleting};
  225. __property bool UseLocationProfiles = { read = FUseLocationProfiles, write = SetUseLocationProfiles};
  226. __property AnsiString DDTemporaryDirectory = { read=FDDTemporaryDirectory, write=SetDDTemporaryDirectory };
  227. __property bool DDWarnLackOfTempSpace = { read=FDDWarnLackOfTempSpace, write=SetDDWarnLackOfTempSpace };
  228. __property bool DDExtEnabled = { read=FDDExtEnabled, write=SetDDExtEnabled };
  229. __property bool DDExtInstalled = { read=GetDDExtInstalled };
  230. __property int DDExtTimeout = { read=FDDExtTimeout, write=SetDDExtTimeout };
  231. __property bool ConfirmClosingSession = { read=FConfirmClosingSession, write=SetConfirmClosingSession };
  232. __property bool ConfirmExitOnCompletion = { read=FConfirmExitOnCompletion, write=SetConfirmExitOnCompletion };
  233. __property bool ForceDeleteTempFolder = { read=FForceDeleteTempFolder, write=SetForceDeleteTempFolder };
  234. __property double DDWarnLackOfTempSpaceRatio = { read=FDDWarnLackOfTempSpaceRatio, write=SetDDWarnLackOfTempSpaceRatio };
  235. __property TBookmarkList * Bookmarks[AnsiString Key] = { read = GetBookmarks, write = SetBookmarks };
  236. __property bool EmbeddedSessions = { read = FEmbeddedSessions };
  237. __property bool ExpertMode = { read = FExpertMode, write = SetExpertMode };
  238. __property bool DefaultDirIsHome = { read = FDefaultDirIsHome, write = SetDefaultDirIsHome };
  239. __property bool DisableOpenEdit = { read = FDisableOpenEdit };
  240. __property TCustomCommands * CustomCommands = { read = FCustomCommands, write = SetCustomCommands };
  241. };
  242. //---------------------------------------------------------------------------
  243. class TCustomCommands : public TStringList
  244. {
  245. public:
  246. __property int Params[AnsiString Name] = {read=GetParam, write=SetParam};
  247. bool __fastcall Equals(TCustomCommands * Commands);
  248. private:
  249. int __fastcall GetParam(const AnsiString & Name);
  250. void __fastcall SetParam(const AnsiString & Name, int value);
  251. };
  252. //---------------------------------------------------------------------------
  253. #define WinConfiguration (dynamic_cast<TWinConfiguration *>(Configuration))
  254. //---------------------------------------------------------------------------
  255. #endif