EditMask.cpp 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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. UseSystemSettings(this);
  37. HintLabel(MaskHintText,
  38. 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))));
  39. ReadOnlyControl(MaskMemo);
  40. }
  41. //---------------------------------------------------------------------------
  42. void __fastcall TEditMaskDialog::FormCloseQuery(TObject * /*Sender*/,
  43. bool & /*CanClose*/)
  44. {
  45. if (ModalResult == DefaultResult(this))
  46. {
  47. ExitActiveControl(this);
  48. }
  49. }
  50. //---------------------------------------------------------------------------
  51. bool __fastcall TEditMaskDialog::Execute(TFileMasks & Mask)
  52. {
  53. LoadFileMasks(Mask);
  54. bool Result = (ShowModal() == DefaultResult(this));
  55. if (Result)
  56. {
  57. SaveFileMasks(Mask);
  58. }
  59. return Result;
  60. }
  61. //---------------------------------------------------------------------------
  62. void __fastcall TEditMaskDialog::LoadFileMasks(const TFileMasks & Mask)
  63. {
  64. LoadFileMasks(IncludeFileMasksMemo, Mask.IncludeFileMasksStr);
  65. LoadFileMasks(ExcludeFileMasksMemo, Mask.ExcludeFileMasksStr);
  66. LoadFileMasks(IncludeDirectoryMasksMemo, Mask.IncludeDirectoryMasksStr);
  67. LoadFileMasks(ExcludeDirectoryMasksMemo, Mask.ExcludeDirectoryMasksStr);
  68. UpdateControls();
  69. }
  70. //---------------------------------------------------------------------------
  71. void __fastcall TEditMaskDialog::LoadFileMasks(TMemo * Memo, TStrings * MasksStr)
  72. {
  73. Memo->Lines = MasksStr;
  74. }
  75. //---------------------------------------------------------------------------
  76. void __fastcall TEditMaskDialog::SaveFileMasks(TFileMasks & Mask)
  77. {
  78. TStrings * IncludeFileMasks = NULL;
  79. TStrings * ExcludeFileMasks = NULL;
  80. TStrings * IncludeDirectoryMasks = NULL;
  81. TStrings * ExcludeDirectoryMasks = NULL;
  82. try
  83. {
  84. IncludeFileMasks = GetUnwrappedMemoLines(IncludeFileMasksMemo);
  85. ExcludeFileMasks = GetUnwrappedMemoLines(ExcludeFileMasksMemo);
  86. IncludeDirectoryMasks = GetUnwrappedMemoLines(IncludeDirectoryMasksMemo);
  87. ExcludeDirectoryMasks = GetUnwrappedMemoLines(ExcludeDirectoryMasksMemo);
  88. Mask =
  89. TFileMasks::ComposeMaskStr(
  90. IncludeFileMasks, ExcludeFileMasks,
  91. IncludeDirectoryMasks, ExcludeDirectoryMasks);
  92. }
  93. __finally
  94. {
  95. delete IncludeFileMasks;
  96. delete ExcludeFileMasks;
  97. delete IncludeDirectoryMasks;
  98. delete ExcludeDirectoryMasks;
  99. }
  100. }
  101. //---------------------------------------------------------------------------
  102. void __fastcall TEditMaskDialog::HelpButtonClick(TObject * /*Sender*/)
  103. {
  104. FormHelp(this);
  105. }
  106. //---------------------------------------------------------------------------
  107. void __fastcall TEditMaskDialog::ClearButtonClick(TObject * /*Sender*/)
  108. {
  109. IncludeFileMasksMemo->Clear();
  110. ExcludeFileMasksMemo->Clear();
  111. IncludeDirectoryMasksMemo->Clear();
  112. ExcludeDirectoryMasksMemo->Clear();
  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. if ((Key == VK_ESCAPE) && Shift.Empty())
  149. {
  150. ModalResult = mrCancel;
  151. Key = 0;
  152. }
  153. else if ((Key == VK_RETURN) && Shift.Contains(ssCtrl))
  154. {
  155. ModalResult = DefaultResult(this);
  156. Key = 0;
  157. }
  158. }
  159. //---------------------------------------------------------------------------
  160. void __fastcall TEditMaskDialog::FormShow(TObject * /*Sender*/)
  161. {
  162. InstallPathWordBreakProc(IncludeFileMasksMemo);
  163. InstallPathWordBreakProc(ExcludeFileMasksMemo);
  164. InstallPathWordBreakProc(IncludeDirectoryMasksMemo);
  165. InstallPathWordBreakProc(ExcludeDirectoryMasksMemo);
  166. }
  167. //---------------------------------------------------------------------------