EditMask.cpp 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include <Common.h>
  5. #include <FileMasks.h>
  6. #include <CoreMain.h>
  7. #include <TextsWin.h>
  8. #include <Tools.h>
  9. #include <VCLCommon.h>
  10. #include "EditMask.h"
  11. #include "WinConfiguration.h"
  12. //---------------------------------------------------------------------------
  13. #pragma package(smart_init)
  14. #ifndef NO_RESOURCES
  15. #pragma resource "*.dfm"
  16. #endif
  17. //---------------------------------------------------------------------------
  18. bool __fastcall DoEditMaskDialog(TFileMasks & Mask)
  19. {
  20. bool Result;
  21. TEditMaskDialog * Dialog = new TEditMaskDialog(GetFormOwner());
  22. try
  23. {
  24. Result = Dialog->Execute(Mask);
  25. }
  26. __finally
  27. {
  28. delete Dialog;
  29. }
  30. return Result;
  31. }
  32. //---------------------------------------------------------------------------
  33. __fastcall TEditMaskDialog::TEditMaskDialog(TComponent* Owner)
  34. : TForm(Owner)
  35. {
  36. FChanging = false;
  37. UseSystemSettings(this);
  38. HintLabel(MaskHintText,
  39. FORMAT(L"%s\n \n%s\n \n%s\n \n%s", (LoadStr(MASK_HINT2), LoadStr(FILE_MASK_EX_HINT), LoadStr(PATH_MASK_HINT2), LoadStr(MASK_HELP))));
  40. ReadOnlyControl(MaskMemo);
  41. }
  42. //---------------------------------------------------------------------------
  43. void __fastcall TEditMaskDialog::FormCloseQuery(TObject * /*Sender*/,
  44. bool & /*CanClose*/)
  45. {
  46. if (ModalResult == DefaultResult(this))
  47. {
  48. ExitActiveControl(this);
  49. }
  50. }
  51. //---------------------------------------------------------------------------
  52. bool __fastcall TEditMaskDialog::Execute(TFileMasks & Mask)
  53. {
  54. LoadFileMasks(Mask);
  55. bool Result = (ShowModal() == DefaultResult(this));
  56. if (Result)
  57. {
  58. SaveFileMasks(Mask);
  59. }
  60. return Result;
  61. }
  62. //---------------------------------------------------------------------------
  63. void __fastcall TEditMaskDialog::LoadFileMasks(const TFileMasks & Mask)
  64. {
  65. LoadFileMasks(IncludeFileMasksMemo, Mask.IncludeFileMasksStr);
  66. LoadFileMasks(ExcludeFileMasksMemo, Mask.ExcludeFileMasksStr);
  67. LoadFileMasks(IncludeDirectoryMasksMemo, Mask.IncludeDirectoryMasksStr);
  68. LoadFileMasks(ExcludeDirectoryMasksMemo, Mask.ExcludeDirectoryMasksStr);
  69. UpdateControls();
  70. }
  71. //---------------------------------------------------------------------------
  72. void __fastcall TEditMaskDialog::LoadFileMasks(TMemo * Memo, TStrings * MasksStr)
  73. {
  74. Memo->Lines = MasksStr;
  75. }
  76. //---------------------------------------------------------------------------
  77. void __fastcall TEditMaskDialog::SaveFileMasks(TFileMasks & Mask)
  78. {
  79. TStrings * IncludeFileMasks = NULL;
  80. TStrings * ExcludeFileMasks = NULL;
  81. TStrings * IncludeDirectoryMasks = NULL;
  82. TStrings * ExcludeDirectoryMasks = NULL;
  83. try
  84. {
  85. IncludeFileMasks = GetUnwrappedMemoLines(IncludeFileMasksMemo);
  86. ExcludeFileMasks = GetUnwrappedMemoLines(ExcludeFileMasksMemo);
  87. IncludeDirectoryMasks = GetUnwrappedMemoLines(IncludeDirectoryMasksMemo);
  88. ExcludeDirectoryMasks = GetUnwrappedMemoLines(ExcludeDirectoryMasksMemo);
  89. Mask =
  90. TFileMasks::ComposeMaskStr(
  91. IncludeFileMasks, ExcludeFileMasks,
  92. IncludeDirectoryMasks, ExcludeDirectoryMasks);
  93. }
  94. __finally
  95. {
  96. delete IncludeFileMasks;
  97. delete ExcludeFileMasks;
  98. delete IncludeDirectoryMasks;
  99. delete ExcludeDirectoryMasks;
  100. }
  101. }
  102. //---------------------------------------------------------------------------
  103. void __fastcall TEditMaskDialog::HelpButtonClick(TObject * /*Sender*/)
  104. {
  105. FormHelp(this);
  106. }
  107. //---------------------------------------------------------------------------
  108. void __fastcall TEditMaskDialog::ClearButtonClick(TObject * /*Sender*/)
  109. {
  110. IncludeFileMasksMemo->Clear();
  111. ExcludeFileMasksMemo->Clear();
  112. IncludeDirectoryMasksMemo->Clear();
  113. ExcludeDirectoryMasksMemo->Clear();
  114. ExcludeDirectoryAllCheck->Checked = false;
  115. UpdateControls();
  116. }
  117. //---------------------------------------------------------------------------
  118. void __fastcall TEditMaskDialog::FileMasksMemoExit(TObject *Sender)
  119. {
  120. ValidateMaskEdit(dynamic_cast<TMemo *>(Sender), false);
  121. }
  122. //---------------------------------------------------------------------------
  123. void __fastcall TEditMaskDialog::DirectoryMasksMemoExit(TObject *Sender)
  124. {
  125. ValidateMaskEdit(dynamic_cast<TMemo *>(Sender), true);
  126. }
  127. //---------------------------------------------------------------------------
  128. void __fastcall TEditMaskDialog::ControlChange(TObject * /*Sender*/)
  129. {
  130. UpdateControls();
  131. }
  132. //---------------------------------------------------------------------------
  133. void __fastcall TEditMaskDialog::UpdateControls()
  134. {
  135. try
  136. {
  137. TFileMasks Mask;
  138. SaveFileMasks(Mask);
  139. MaskMemo->Lines->Text = Mask.Masks;
  140. }
  141. catch(EFileMasksException & E)
  142. {
  143. MaskMemo->Lines->Text = E.Message;
  144. }
  145. }
  146. //---------------------------------------------------------------------------
  147. void __fastcall TEditMaskDialog::FormKeyDown(
  148. TObject * Sender, WORD & Key, TShiftState Shift)
  149. {
  150. MemoKeyDown(Sender, Key, Shift);
  151. }
  152. //---------------------------------------------------------------------------
  153. void __fastcall TEditMaskDialog::FormShow(TObject * /*Sender*/)
  154. {
  155. InstallPathWordBreakProc(IncludeFileMasksMemo);
  156. InstallPathWordBreakProc(ExcludeFileMasksMemo);
  157. InstallPathWordBreakProc(IncludeDirectoryMasksMemo);
  158. InstallPathWordBreakProc(ExcludeDirectoryMasksMemo);
  159. }
  160. //---------------------------------------------------------------------------
  161. void __fastcall TEditMaskDialog::ExcludeDirectoryAllCheckClick(TObject * /*Sender*/)
  162. {
  163. if (!FChanging)
  164. {
  165. TAutoFlag Flag(FChanging);
  166. if (ExcludeDirectoryAllCheck->Checked)
  167. {
  168. FExcludeDirectoryMasks = ExcludeDirectoryMasksMemo->Lines->Text;
  169. ExcludeDirectoryMasksMemo->Lines->Text = L"*";
  170. }
  171. else
  172. {
  173. ExcludeDirectoryMasksMemo->Lines->Text = FExcludeDirectoryMasks;
  174. }
  175. }
  176. UpdateControls();
  177. }
  178. //---------------------------------------------------------------------------
  179. void __fastcall TEditMaskDialog::ExcludeDirectoryMasksMemoChange(TObject * /*Sender*/)
  180. {
  181. if (!FChanging)
  182. {
  183. TAutoFlag Flag(FChanging);
  184. UnicodeString Mask = ExcludeDirectoryMasksMemo->Lines->Text.Trim();
  185. ExcludeDirectoryAllCheck->Checked = (Mask == L"*") || (Mask == L"*/");
  186. }
  187. UpdateControls();
  188. }
  189. //---------------------------------------------------------------------------