123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- //---------------------------------------------------------------------------
- #include <FormsPCH.h>
- #pragma hdrstop
- #include <FileMasks.h>
- #include "SelectMask.h"
- //---------------------------------------------------------------------------
- #pragma link "HistoryComboBox"
- #pragma resource "*.dfm"
- //---------------------------------------------------------------------------
- bool __fastcall DoSelectMaskDialog(TControl * Parent, bool Select, TFileFilter & Filter)
- {
- std::unique_ptr<TSelectMaskDialog> Dialog(new TSelectMaskDialog(Application));
- Dialog->Init((Select ? TSelectMaskDialog::smSelect : TSelectMaskDialog::smDeselect), Parent);
- DefaultFileFilter(Filter);
- Filter.Masks = WinConfiguration->SelectMask;
- Filter.Directories = WinConfiguration->SelectDirectories;
- TColor Color = TColor();
- bool Result = Dialog->Execute(Filter, Color);
- if (Result)
- {
- WinConfiguration->SelectMask = Filter.Masks;
- WinConfiguration->SelectDirectories = Filter.Directories;
- }
- return Result;
- }
- //---------------------------------------------------------------------------
- bool __fastcall DoFilterMaskDialog(TControl * Parent, UnicodeString & Mask)
- {
- std::unique_ptr<TSelectMaskDialog> Dialog(new TSelectMaskDialog(Application));
- Dialog->Init(TSelectMaskDialog::smFilter, Parent);
- TColor Color = TColor();
- return Dialog->Execute(Mask, Color);
- }
- //---------------------------------------------------------------------------
- bool __fastcall DoFileColorDialog(TFileColorData & FileColorData)
- {
- std::unique_ptr<TSelectMaskDialog> Dialog(new TSelectMaskDialog(Application));
- Dialog->Init(TSelectMaskDialog::smFileColor, NULL);
- UnicodeString Mask = FileColorData.FileMask.Masks;
- bool Result = Dialog->Execute(Mask, FileColorData.Color);
- if (Result)
- {
- FileColorData.FileMask.Masks = Mask;
- }
- return Result;
- }
- //---------------------------------------------------------------------------
- __fastcall TSelectMaskDialog::TSelectMaskDialog(TComponent * Owner) :
- TForm(Owner)
- {
- UseSystemSettings(this);
- FColor = TColor();
- HintLabel(HintText,
- FORMAT(L"%s\n \n%s\n \n%s\n \n%s", (LoadStr(MASK_HINT2), LoadStr(FILE_MASK_EX_HINT),
- LoadStr(COMBINING_MASKS_HINT), LoadStr(MASK_HELP))));
- ColorFileNamesLabel->Font = Screen->IconFont;
- ColorSizesLabel->Font = ColorFileNamesLabel->Font;
- ColorSizesLabel->Caption =
- FormatPanelBytes(10723, WinConfiguration->FormatSizeBytes) + sLineBreak +
- FormatPanelBytes(25835, WinConfiguration->FormatSizeBytes) + sLineBreak +
- FormatPanelBytes(276445, WinConfiguration->FormatSizeBytes) + sLineBreak;
- MenuButton(ColorButton);
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::Init(TMode Mode, TControl * Parent)
- {
- int CaptionStr;
- switch (Mode)
- {
- case smSelect:
- CaptionStr = SELECT_MASK_SELECT_CAPTION;
- ClearButton->Hide();
- ColorButton->Hide();
- break;
- case smDeselect:
- CaptionStr = SELECT_MASK_DESELECT_CAPTION;
- ClearButton->Hide();
- ColorButton->Hide();
- break;
- case smFilter:
- CaptionStr = FILTER_MASK_CAPTION;
- ApplyToDirectoriesCheck->Hide();
- ColorButton->Hide();
- HelpKeyword = HELP_FILTER;
- break;
- case smFileColor:
- CaptionStr = FILE_COLOR_CAPTION;
- ApplyToDirectoriesCheck->Hide();
- ClearButton->Hide();
- HelpKeyword = HELP_FILE_COLORS;
- break;
- }
- if (!ColorButton->Visible)
- {
- ColorFileNamesLabel->Visible = false;
- ColorSizesLabel->Visible = false;
- ColorPaddingLabel->Visible = false;
- ColorButton->Visible = false;
- int Diff = ((ColorFileNamesLabel->Top + ColorFileNamesLabel->Height) - (ApplyToDirectoriesCheck->Top + ApplyToDirectoriesCheck->Height));
- ClientHeight = ClientHeight - Diff;
- }
- Caption = LoadStr(CaptionStr);
- FParent = Parent;
- if (FParent == NULL)
- {
- Position = poOwnerFormCenter;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::FormCloseQuery(TObject *, bool & DebugUsedArg(CanClose))
- {
- if (ModalResult == DefaultResult(this))
- {
- if (MaskEdit->Focused())
- {
- MaskEditExit(NULL);
- }
- }
- }
- //---------------------------------------------------------------------------
- bool __fastcall TSelectMaskDialog::Execute(TFileFilter & FileFilter, TColor & Color)
- {
- ApplyToDirectoriesCheck->Checked = FileFilter.Directories;
- MaskEdit->Text = FileFilter.Masks;
- MaskEdit->Items = WinConfiguration->History[L"Mask"];
- ActiveControl = MaskEdit;
- FColor = Color;
- bool Result = (ShowModal() == DefaultResult(this));
- if (Result)
- {
- MaskEdit->SaveToHistory();
- WinConfiguration->History[L"Mask"] = MaskEdit->Items;
- FileFilter.Directories = ApplyToDirectoriesCheck->Checked;
- FileFilter.Masks = MaskEdit->Text;
- Color = FColor;
- }
- return Result;
- }
- //---------------------------------------------------------------------------
- bool __fastcall TSelectMaskDialog::Execute(UnicodeString & Mask, TColor & Color)
- {
- TFileFilter Filter;
- DefaultFileFilter(Filter);
- Filter.Masks = Mask;
- bool Result = Execute(Filter, Color);
- if (Result)
- {
- Mask = Filter.Masks;
- }
- return Result;
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::MaskEditExit(TObject * /*Sender*/)
- {
- ValidateMaskEdit(MaskEdit);
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::HelpButtonClick(TObject * /*Sender*/)
- {
- FormHelp(this);
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::ClearButtonClick(TObject * /*Sender*/)
- {
- MaskEdit->Text = L"";
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::FormShow(TObject * /*Sender*/)
- {
- InstallPathWordBreakProc(MaskEdit);
- if (FParent != NULL)
- {
- // Only now it is scaled
- CenterFormOn(this, FParent);
- }
- UpdateControls();
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::MaskButtonClick(TObject * /*Sender*/)
- {
- TFileMasks Masks = MaskEdit->Text;
- if (DoEditMaskDialog(Masks))
- {
- MaskEdit->Text = Masks.Masks;
- UpdateControls();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::ColorChange(TColor Color)
- {
- FColor = Color;
- UpdateControls();
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::ColorButtonClick(TObject *)
- {
- // Reason for separate Menu variable is given in TPreferencesDialog::EditorFontColorButtonClick
- TPopupMenu * Menu = CreateColorPopupMenu(FColor, ColorChange);
- // Popup menu has to survive the popup as TBX calls click handler asynchronously (post).
- FColorPopupMenu.reset(Menu);
- MenuPopup(Menu, ColorButton);
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::UpdateControls()
- {
- EnableControl(OKBtn, (!ColorButton->Visible || !MaskEdit->Text.IsEmpty()));
- ColorFileNamesLabel->Font->Color = FColor;
- ColorSizesLabel->Font->Color = ColorFileNamesLabel->Font->Color;
- }
- //---------------------------------------------------------------------------
- void __fastcall TSelectMaskDialog::MaskEditChange(TObject *)
- {
- UpdateControls();
- }
- //---------------------------------------------------------------------------
|