1
0

EditMask.cpp 6.3 KB

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