1
0

EditMask.cpp 6.1 KB

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