Index: src/ch/FilterDlg.cpp
===================================================================
diff -u -r31be0106a2d78fd0ddcb735f5351658abe56dc48 -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/FilterDlg.cpp	(.../FilterDlg.cpp)	(revision 31be0106a2d78fd0ddcb735f5351658abe56dc48)
+++ src/ch/FilterDlg.cpp	(.../FilterDlg.cpp)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -190,21 +190,8 @@
 	m_iHidden=m_ffFilter.GetHidden();
 	m_iSystem=m_ffFilter.GetSystem();
 	m_iDirectory=m_ffFilter.GetDirectory();
-	
-	HMENU hMenu = GetResManager().LoadMenu(MAKEINTRESOURCE(IDR_FILTER_TYPE_MENU));
-	m_menuFilterType.Attach(hMenu);
 
-	CMenu* pPopup = m_menuFilterType.GetSubMenu(0);
-	for(int iIndex = 0; iIndex < pPopup->GetMenuItemCount(); ++iIndex)
-	{
-		int iCmd = pPopup->GetMenuItemID(iIndex);
-		if(iCmd > 0)
-		{
-			CString strText;
-			pPopup->GetMenuString(iIndex, strText, MF_BYPOSITION);
-			m_mapFilterEntries.insert({ iCmd, (PCTSTR)strText });
-		}
-	}
+	m_filterTypesWrapper.Init();
 
 	UpdateData(FALSE);
 
@@ -408,27 +395,8 @@
 	{
 		if(LOWORD(wParam) >= ID_POPUP_FILTER_FILE_WILDCARD && LOWORD(wParam) <= ID_POPUP_FILTER_SEPARATOR_CHAR)
 		{
-			CComboBox& rCombo = m_bTracksIncludeButton ? m_ctlIncludeMask : m_ctlExcludeMask;
-
-			auto iterFnd = m_mapFilterEntries.find(LOWORD(wParam));
-			if(iterFnd != m_mapFilterEntries.end())
-			{
-				string::TString strEntry = iterFnd->second.c_str();
-				string::TStringArray arrStrings;
-				strEntry.Split(L"\t", arrStrings);
-
-				if(arrStrings.GetCount() > 1)
-				{
-					CString strText;
-					rCombo.GetWindowText(strText);
-
-					CString strParsed = arrStrings.GetAt(0).c_str();
-					if(!strText.IsEmpty() && strText.Right(1) != L";" && strParsed != L";")
-						strText += L";";
-
-					rCombo.SetWindowText(strText + strParsed);
-				}
-			}
+			CComboBox& rCombo = m_filterTypesWrapper.IsTrackingIncludeMask() ? m_ctlIncludeMask : m_ctlExcludeMask;
+			m_filterTypesWrapper.OnCommand(LOWORD(wParam), rCombo);
 		}
 	}
 	return ictranslate::CLanguageDialog::OnCommand(wParam, lParam);
@@ -487,24 +455,12 @@
 
 void CFilterDlg::OnIncludeMaskButton()
 {
-	m_bTracksIncludeButton = true;
-
-	// set point in which to set menu
-	CRect rect;
-	GetDlgItem(IDC_INCLUDE_MASK_BUTTON)->GetWindowRect(&rect);
-
-	m_menuFilterType.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, rect.right + 1, rect.top, this);
+	m_filterTypesWrapper.StartTracking(true, *this, IDC_INCLUDE_MASK_BUTTON);
 }
 
 void CFilterDlg::OnExcludeMaskButton()
 {
-	m_bTracksIncludeButton = false;
-
-	// set point in which to set menu
-	CRect rect;
-	GetDlgItem(IDC_EXCLUDE_MASK_BUTTON)->GetWindowRect(&rect);
-
-	m_menuFilterType.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, rect.right + 1, rect.top, this);
+	m_filterTypesWrapper.StartTracking(false, *this, IDC_EXCLUDE_MASK_BUTTON);
 }
 
 void CFilterDlg::OnDatetimechangeTime1Datetimepicker(NMHDR* /*pNMHDR*/, LRESULT* pResult) 
Index: src/ch/FilterDlg.h
===================================================================
diff -u -r31be0106a2d78fd0ddcb735f5351658abe56dc48 -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/FilterDlg.h	(.../FilterDlg.h)	(revision 31be0106a2d78fd0ddcb735f5351658abe56dc48)
+++ src/ch/FilterDlg.h	(.../FilterDlg.h)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -19,6 +19,7 @@
 #pragma once
 
 #include "../libchengine/TFileFilter.h"
+#include "FilterTypesMenuWrapper.h"
 
 /////////////////////////////////////////////////////////////////////////////
 // CFilterDlg dialog
@@ -80,9 +81,7 @@
 	CMFCButton m_btnIncludeMask;
 	CMFCButton m_btnExcludeMask;
 
-	bool m_bTracksIncludeButton = false;
-	CMenu m_menuFilterType;
-	std::map<int, std::wstring> m_mapFilterEntries;
+	FilterTypesMenuWrapper m_filterTypesWrapper;
 
 	int		m_iArchive;
 	BOOL	m_bAttributes;
Index: src/ch/FilterTypesMenuWrapper.cpp
===================================================================
diff -u
--- src/ch/FilterTypesMenuWrapper.cpp	(revision 0)
+++ src/ch/FilterTypesMenuWrapper.cpp	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -0,0 +1,55 @@
+#include "stdafx.h"
+#include "FilterTypesMenuWrapper.h"
+#include "ch.h"
+#include "resource.h"
+#include "../libstring/TStringArray.h"
+
+void FilterTypesMenuWrapper::Init()
+{
+	HMENU hMenu = GetResManager().LoadMenu(MAKEINTRESOURCE(IDR_FILTER_TYPE_MENU));
+	m_menuFilterType.Attach(hMenu);
+
+	CMenu* pPopup = m_menuFilterType.GetSubMenu(0);
+	for(int iIndex = 0; iIndex < pPopup->GetMenuItemCount(); ++iIndex)
+	{
+		int iCmd = pPopup->GetMenuItemID(iIndex);
+		if(iCmd > 0)
+		{
+			CString strText;
+			pPopup->GetMenuString(iIndex, strText, MF_BYPOSITION);
+			m_mapFilterEntries.insert({ iCmd, (PCTSTR)strText });
+		}
+	}
+}
+
+void FilterTypesMenuWrapper::StartTracking(bool bIncludeMask, CWnd& rParent, int iBtnID)
+{
+	m_bTracksIncludeButton = bIncludeMask;
+	CRect rect;
+	rParent.GetDlgItem(iBtnID)->GetWindowRect(&rect);
+
+	m_menuFilterType.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, rect.right + 1, rect.top, &rParent);
+}
+
+void FilterTypesMenuWrapper::OnCommand(int iCommandID, CComboBox& rCombo)
+{
+	auto iterFnd = m_mapFilterEntries.find(iCommandID);
+	if(iterFnd != m_mapFilterEntries.end())
+	{
+		string::TString strEntry = iterFnd->second.c_str();
+		string::TStringArray arrStrings;
+		strEntry.Split(L"\t", arrStrings);
+
+		if(arrStrings.GetCount() > 1)
+		{
+			CString strText;
+			rCombo.GetWindowText(strText);
+
+			CString strParsed = arrStrings.GetAt(0).c_str();
+			if(!strText.IsEmpty() && strText.Right(1) != L";" && strParsed != L";")
+				strText += L";";
+
+			rCombo.SetWindowText(strText + strParsed);
+		}
+	}
+}
Index: src/ch/FilterTypesMenuWrapper.h
===================================================================
diff -u
--- src/ch/FilterTypesMenuWrapper.h	(revision 0)
+++ src/ch/FilterTypesMenuWrapper.h	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -0,0 +1,36 @@
+// ============================================================================
+//  Copyright (C) 2001-2020 by Jozef Starosczyk
+//  ixen {at} copyhandler [dot] com
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU Library General Public License
+//  (version 2) as published by the Free Software Foundation;
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU Library General Public
+//  License along with this program; if not, write to the
+//  Free Software Foundation, Inc.,
+//  59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+// ============================================================================
+#pragma once
+
+class FilterTypesMenuWrapper
+{
+public:
+	void Init();
+
+	void StartTracking(bool bIncludeMask, CWnd& rParent, int iBtnID);
+	bool IsTrackingIncludeMask() const { return m_bTracksIncludeButton; }
+
+	void OnCommand(int iCommandID, CComboBox& rCombo);
+
+private:
+	bool m_bTracksIncludeButton = false;
+	CMenu m_menuFilterType;
+	std::map<int, std::wstring> m_mapFilterEntries;
+};
+
Index: src/ch/RuleEditAlreadyExistsDlg.cpp
===================================================================
diff -u -r3aa1103497018be2a7494e79e03c5f4c674485be -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/RuleEditAlreadyExistsDlg.cpp	(.../RuleEditAlreadyExistsDlg.cpp)	(revision 3aa1103497018be2a7494e79e03c5f4c674485be)
+++ src/ch/RuleEditAlreadyExistsDlg.cpp	(.../RuleEditAlreadyExistsDlg.cpp)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -60,11 +60,23 @@
 	DDX_Control(pDX, IDC_RESPONSE_COMBO, m_ctlResponse);
 }
 
+void RuleEditAlreadyExistsDlg::OnIncludeMaskButton()
+{
+	m_filterTypesWrapper.StartTracking(true, *this, IDC_INCLUDE_MASK_BUTTON);
+}
+
+void RuleEditAlreadyExistsDlg::OnExcludeMaskButton()
+{
+	m_filterTypesWrapper.StartTracking(false, *this, IDC_EXCLUDE_MASK_BUTTON);
+}
+
 BEGIN_MESSAGE_MAP(RuleEditAlreadyExistsDlg,ictranslate::CLanguageDialog)
 	ON_BN_CLICKED(IDC_INCLUDE_MASK_CHECK, EnableControls)
 	ON_BN_CLICKED(IDC_EXCLUDE_MASK_CHECK, EnableControls)
 	ON_BN_CLICKED(IDC_FILTER_BY_DATE_CHECK, EnableControls)
 	ON_BN_CLICKED(IDC_FILTER_BY_SIZE_CHECK, EnableControls)
+	ON_BN_CLICKED(IDC_INCLUDE_MASK_BUTTON, OnIncludeMaskButton)
+	ON_BN_CLICKED(IDC_EXCLUDE_MASK_BUTTON, OnExcludeMaskButton)
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
@@ -103,6 +115,8 @@
 	EFeedbackResult eResult = m_rule.GetResult();
 	m_comboResponse.SelectComboResult(eResult == eResult_Unknown ? eResult_Overwrite : eResult);
 
+	m_filterTypesWrapper.Init();
+
 	UpdateData(FALSE);
 
 	EnableControls();
@@ -169,6 +183,8 @@
 	// mask
 	m_ctlIncludeMask.EnableWindow(m_bUseIncludeMask);
 	m_ctlExcludeMask.EnableWindow(m_bUseExcludeMask);
+	GetDlgItem(IDC_INCLUDE_MASK_BUTTON)->EnableWindow(m_bUseIncludeMask);
+	GetDlgItem(IDC_EXCLUDE_MASK_BUTTON)->EnableWindow(m_bUseExcludeMask);
 
 	// size
 	m_ctlSizeCompareType.EnableWindow(m_bUseSizeCompareType);
@@ -203,3 +219,16 @@
 
 	CLanguageDialog::OnOK();
 }
+
+BOOL RuleEditAlreadyExistsDlg::OnCommand(WPARAM wParam, LPARAM lParam)
+{
+	if(HIWORD(wParam) == 0)
+	{
+		if(LOWORD(wParam) >= ID_POPUP_FILTER_FILE_WILDCARD && LOWORD(wParam) <= ID_POPUP_FILTER_SEPARATOR_CHAR)
+		{
+			CComboBox& rCombo = m_filterTypesWrapper.IsTrackingIncludeMask() ? m_ctlIncludeMask : m_ctlExcludeMask;
+			m_filterTypesWrapper.OnCommand(LOWORD(wParam), rCombo);
+		}
+	}
+	return ictranslate::CLanguageDialog::OnCommand(wParam, lParam);
+}
Index: src/ch/RuleEditAlreadyExistsDlg.h
===================================================================
diff -u -r3aa1103497018be2a7494e79e03c5f4c674485be -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/RuleEditAlreadyExistsDlg.h	(.../RuleEditAlreadyExistsDlg.h)	(revision 3aa1103497018be2a7494e79e03c5f4c674485be)
+++ src/ch/RuleEditAlreadyExistsDlg.h	(.../RuleEditAlreadyExistsDlg.h)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -20,6 +20,7 @@
 
 #include "../libchengine/FeedbackAlreadyExistsRule.h"
 #include "ComboDataWrapper.h"
+#include "FilterTypesMenuWrapper.h"
 
 /////////////////////////////////////////////////////////////////////////////
 // FeedbackRuleEditorDlg dialog
@@ -37,13 +38,17 @@
 	void EnableControls();
 
 	BOOL OnInitDialog() override;
+	BOOL OnCommand(WPARAM wParam, LPARAM lParam) override;
 
 	void FillCompareCombos();
 	void FillResponseCombo();
 
 	void OnOK() override;
 	void DoDataExchange(CDataExchange* pDX) override;
 
+	afx_msg void OnIncludeMaskButton();
+	afx_msg void OnExcludeMaskButton();
+
 	DECLARE_MESSAGE_MAP()
 
 private:
@@ -66,4 +71,6 @@
 	ComboDataWrapper<chengine::EFeedbackResult> m_comboResponse;
 	ComboDataWrapper<chengine::ECompareType> m_comboDateCompare;
 	ComboDataWrapper<chengine::ECompareType> m_comboSizeCompare;
+
+	FilterTypesMenuWrapper m_filterTypesWrapper;
 };
Index: src/ch/RuleEditErrorDlg.cpp
===================================================================
diff -u -r3aa1103497018be2a7494e79e03c5f4c674485be -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/RuleEditErrorDlg.cpp	(.../RuleEditErrorDlg.cpp)	(revision 3aa1103497018be2a7494e79e03c5f4c674485be)
+++ src/ch/RuleEditErrorDlg.cpp	(.../RuleEditErrorDlg.cpp)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -56,11 +56,23 @@
 	DDX_Control(pDX, IDC_RESPONSE_COMBO, m_ctlResponse);
 }
 
+void RuleEditErrorDlg::OnIncludeMaskButton()
+{
+	m_filterTypesWrapper.StartTracking(true, *this, IDC_INCLUDE_MASK_BUTTON);
+}
+
+void RuleEditErrorDlg::OnExcludeMaskButton()
+{
+	m_filterTypesWrapper.StartTracking(false, *this, IDC_EXCLUDE_MASK_BUTTON);
+}
+
 BEGIN_MESSAGE_MAP(RuleEditErrorDlg,ictranslate::CLanguageDialog)
 	ON_BN_CLICKED(IDC_INCLUDE_MASK_CHECK, EnableControls)
 	ON_BN_CLICKED(IDC_EXCLUDE_MASK_CHECK, EnableControls)
 	ON_BN_CLICKED(IDC_FILTER_BY_OPERATION_CHECK, EnableControls)
 	ON_BN_CLICKED(IDC_FILTER_BY_SYSTEMERROR_CHECK, EnableControls)
+	ON_BN_CLICKED(IDC_INCLUDE_MASK_BUTTON, OnIncludeMaskButton)
+	ON_BN_CLICKED(IDC_EXCLUDE_MASK_BUTTON, OnExcludeMaskButton)
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
@@ -106,6 +118,8 @@
 	EFeedbackResult eResult = m_rule.GetResult();
 	m_comboResponse.SelectComboResult(eResult == eResult_Unknown ? eResult_Skip : eResult);
 
+	m_filterTypesWrapper.Init();
+
 	UpdateData(FALSE);
 
 	EnableControls();
@@ -162,6 +176,8 @@
 	// mask
 	m_ctlIncludeMask.EnableWindow(m_bUseIncludeMask);
 	m_ctlExcludeMask.EnableWindow(m_bUseExcludeMask);
+	GetDlgItem(IDC_INCLUDE_MASK_BUTTON)->EnableWindow(m_bUseIncludeMask);
+	GetDlgItem(IDC_EXCLUDE_MASK_BUTTON)->EnableWindow(m_bUseExcludeMask);
 
 	// size
 	m_ctlSystemError.EnableWindow(m_bUseSystemError);
@@ -200,3 +216,16 @@
 
 	CLanguageDialog::OnOK();
 }
+
+BOOL RuleEditErrorDlg::OnCommand(WPARAM wParam, LPARAM lParam)
+{
+	if(HIWORD(wParam) == 0)
+	{
+		if(LOWORD(wParam) >= ID_POPUP_FILTER_FILE_WILDCARD && LOWORD(wParam) <= ID_POPUP_FILTER_SEPARATOR_CHAR)
+		{
+			CComboBox& rCombo = m_filterTypesWrapper.IsTrackingIncludeMask() ? m_ctlIncludeMask : m_ctlExcludeMask;
+			m_filterTypesWrapper.OnCommand(LOWORD(wParam), rCombo);
+		}
+	}
+	return ictranslate::CLanguageDialog::OnCommand(wParam, lParam);
+}
Index: src/ch/RuleEditErrorDlg.h
===================================================================
diff -u -r3aa1103497018be2a7494e79e03c5f4c674485be -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/RuleEditErrorDlg.h	(.../RuleEditErrorDlg.h)	(revision 3aa1103497018be2a7494e79e03c5f4c674485be)
+++ src/ch/RuleEditErrorDlg.h	(.../RuleEditErrorDlg.h)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -20,6 +20,7 @@
 
 #include "../libchengine/FeedbackErrorRule.h"
 #include "ComboDataWrapper.h"
+#include "FilterTypesMenuWrapper.h"
 
 /////////////////////////////////////////////////////////////////////////////
 // FeedbackRuleEditorDlg dialog
@@ -43,7 +44,11 @@
 	void FillResponseCombo();
 	void OnOK() override;
 	void DoDataExchange(CDataExchange* pDX) override;
+	BOOL OnCommand(WPARAM wParam, LPARAM lParam) override;
 
+	afx_msg void OnIncludeMaskButton();
+	afx_msg void OnExcludeMaskButton();
+
 	DECLARE_MESSAGE_MAP()
 
 private:
@@ -65,4 +70,6 @@
 
 	ComboDataWrapper<chengine::EFeedbackResult> m_comboResponse;
 	ComboDataWrapper<chengine::EFileError> m_comboOperationType;
+
+	FilterTypesMenuWrapper m_filterTypesWrapper;
 };
Index: src/ch/RuleEditNotEnoughSpaceDlg.cpp
===================================================================
diff -u -r3aa1103497018be2a7494e79e03c5f4c674485be -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/RuleEditNotEnoughSpaceDlg.cpp	(.../RuleEditNotEnoughSpaceDlg.cpp)	(revision 3aa1103497018be2a7494e79e03c5f4c674485be)
+++ src/ch/RuleEditNotEnoughSpaceDlg.cpp	(.../RuleEditNotEnoughSpaceDlg.cpp)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -52,6 +52,8 @@
 BEGIN_MESSAGE_MAP(RuleEditNotEnoughSpaceDlg,ictranslate::CLanguageDialog)
 	ON_BN_CLICKED(IDC_INCLUDE_MASK_CHECK, EnableControls)
 	ON_BN_CLICKED(IDC_EXCLUDE_MASK_CHECK, EnableControls)
+	ON_BN_CLICKED(IDC_INCLUDE_MASK_BUTTON, OnIncludeMaskButton)
+	ON_BN_CLICKED(IDC_EXCLUDE_MASK_BUTTON, OnExcludeMaskButton)
 END_MESSAGE_MAP()
 
 /////////////////////////////////////////////////////////////////////////////
@@ -82,6 +84,8 @@
 	EFeedbackResult eResult = m_rule.GetResult();
 	m_comboResponse.SelectComboResult(eResult == eResult_Unknown ? eResult_Ignore : eResult);
 
+	m_filterTypesWrapper.Init();
+
 	UpdateData(FALSE);
 
 	EnableControls();
@@ -107,6 +111,16 @@
 	}
 }
 
+void RuleEditNotEnoughSpaceDlg::OnIncludeMaskButton()
+{
+	m_filterTypesWrapper.StartTracking(true, *this, IDC_INCLUDE_MASK_BUTTON);
+}
+
+void RuleEditNotEnoughSpaceDlg::OnExcludeMaskButton()
+{
+	m_filterTypesWrapper.StartTracking(false, *this, IDC_EXCLUDE_MASK_BUTTON);
+}
+
 void RuleEditNotEnoughSpaceDlg::OnLanguageChanged()
 {
 	// combo result
@@ -121,6 +135,8 @@
 	// mask
 	m_ctlIncludeMask.EnableWindow(m_bUseIncludeMask);
 	m_ctlExcludeMask.EnableWindow(m_bUseExcludeMask);
+	GetDlgItem(IDC_INCLUDE_MASK_BUTTON)->EnableWindow(m_bUseIncludeMask);
+	GetDlgItem(IDC_EXCLUDE_MASK_BUTTON)->EnableWindow(m_bUseExcludeMask);
 }
 
 void RuleEditNotEnoughSpaceDlg::OnOK() 
@@ -141,3 +157,16 @@
 
 	CLanguageDialog::OnOK();
 }
+
+BOOL RuleEditNotEnoughSpaceDlg::OnCommand(WPARAM wParam, LPARAM lParam)
+{
+	if(HIWORD(wParam) == 0)
+	{
+		if(LOWORD(wParam) >= ID_POPUP_FILTER_FILE_WILDCARD && LOWORD(wParam) <= ID_POPUP_FILTER_SEPARATOR_CHAR)
+		{
+			CComboBox& rCombo = m_filterTypesWrapper.IsTrackingIncludeMask() ? m_ctlIncludeMask : m_ctlExcludeMask;
+			m_filterTypesWrapper.OnCommand(LOWORD(wParam), rCombo);
+		}
+	}
+	return ictranslate::CLanguageDialog::OnCommand(wParam, lParam);
+}
Index: src/ch/RuleEditNotEnoughSpaceDlg.h
===================================================================
diff -u -r3aa1103497018be2a7494e79e03c5f4c674485be -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/RuleEditNotEnoughSpaceDlg.h	(.../RuleEditNotEnoughSpaceDlg.h)	(revision 3aa1103497018be2a7494e79e03c5f4c674485be)
+++ src/ch/RuleEditNotEnoughSpaceDlg.h	(.../RuleEditNotEnoughSpaceDlg.h)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -20,6 +20,7 @@
 
 #include "../libchengine/FeedbackNotEnoughSpaceRule.h"
 #include "ComboDataWrapper.h"
+#include "FilterTypesMenuWrapper.h"
 
 /////////////////////////////////////////////////////////////////////////////
 // FeedbackRuleEditorDlg dialog
@@ -39,9 +40,13 @@
 	BOOL OnInitDialog() override;
 	void OnOK() override;
 	void DoDataExchange(CDataExchange* pDX) override;
+	BOOL OnCommand(WPARAM wParam, LPARAM lParam) override;
 
 	void FillResponseCombo();
 
+	afx_msg void OnIncludeMaskButton();
+	afx_msg void OnExcludeMaskButton();
+
 	DECLARE_MESSAGE_MAP()
 
 private:
@@ -58,4 +63,6 @@
 	CStringArray m_astrAddExcludeMask;
 
 	ComboDataWrapper<chengine::EFeedbackResult> m_comboResponse;
+
+	FilterTypesMenuWrapper m_filterTypesWrapper;
 };
Index: src/ch/ch.rc
===================================================================
diff -u -r31be0106a2d78fd0ddcb735f5351658abe56dc48 -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/ch.rc	(.../ch.rc)	(revision 31be0106a2d78fd0ddcb735f5351658abe56dc48)
+++ src/ch/ch.rc	(.../ch.rc)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -450,11 +450,10 @@
 CAPTION "File already exists rule editor"
 FONT 8, "Tahoma", 0, 0, 0x1
 BEGIN
-    CONTROL         "Include mask (separate by vertical lines ie. *.jpg|*.gif)",IDC_INCLUDE_MASK_CHECK,
-                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,23,277,10
-    COMBOBOX        IDC_INCLUDE_MASK_COMBO,15,35,269,98,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Exclude mask",IDC_EXCLUDE_MASK_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,51,277,10
-    COMBOBOX        IDC_EXCLUDE_MASK_COMBO,15,64,269,170,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Include files matching:",IDC_INCLUDE_MASK_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,23,277,10
+    COMBOBOX        IDC_INCLUDE_MASK_COMBO,15,35,250,98,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Exclude files matching:",IDC_EXCLUDE_MASK_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,51,277,10
+    COMBOBOX        IDC_EXCLUDE_MASK_COMBO,15,64,250,170,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Filtering by size",IDC_FILTER_BY_SIZE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,82,277,10
     COMBOBOX        IDC_FILTER_BY_SIZE_COMBO,122,95,50,135,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Filtering by modification date",IDC_FILTER_BY_DATE_CHECK,
@@ -470,6 +469,8 @@
     LTEXT           "size of destination file",IDC_DST_SIZE_STATIC,176,96,103,8
     RTEXT           "Date of source file",IDC_SOURCE_DATE_STATIC,15,129,103,8
     LTEXT           "date of destination file",IDC_DST_DATE_STATIC,176,129,103,8
+    CONTROL         "...",IDC_INCLUDE_MASK_BUTTON,"MfcButton",WS_TABSTOP,267,34,17,12
+    CONTROL         "...",IDC_EXCLUDE_MASK_BUTTON,"MfcButton",WS_TABSTOP,267,63,17,12
 END
 
 IDD_RULE_EDIT_ERROR_DIALOG DIALOGEX 0, 0, 291, 219
@@ -479,9 +480,9 @@
 BEGIN
     CONTROL         "Include mask (separate by vertical lines ie. *.jpg|*.gif)",IDC_INCLUDE_MASK_CHECK,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,23,277,10
-    COMBOBOX        IDC_INCLUDE_MASK_COMBO,15,35,269,98,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_INCLUDE_MASK_COMBO,15,35,250,98,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Exclude mask",IDC_EXCLUDE_MASK_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,51,277,10
-    COMBOBOX        IDC_EXCLUDE_MASK_COMBO,15,64,269,170,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_EXCLUDE_MASK_COMBO,15,64,250,170,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Filtering by operation",IDC_FILTER_BY_OPERATION_CHECK,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,82,277,10
     COMBOBOX        IDC_FILTER_BY_OPERATION_COMBO,15,96,269,135,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@@ -494,6 +495,8 @@
     LTEXT           "...then respond with:",IDC_RESPONSE_STATIC,7,155,277,8
     COMBOBOX        IDC_RESPONSE_COMBO,15,168,269,133,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     EDITTEXT        IDC_FILTER_BY_SYSTEMERROR_EDIT,15,126,269,14,ES_AUTOHSCROLL | ES_NUMBER
+    CONTROL         "...",IDC_INCLUDE_MASK_BUTTON,"MfcButton",WS_TABSTOP,267,34,17,12
+    CONTROL         "...",IDC_EXCLUDE_MASK_BUTTON,"MfcButton",WS_TABSTOP,267,63,17,12
 END
 
 IDD_RULE_EDIT_NOTENOUGHSPACE_DIALOG DIALOGEX 0, 0, 291, 157
@@ -503,15 +506,17 @@
 BEGIN
     CONTROL         "Include mask (separate by vertical lines ie. *.jpg|*.gif)",IDC_INCLUDE_MASK_CHECK,
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,23,277,10
-    COMBOBOX        IDC_INCLUDE_MASK_COMBO,15,35,269,98,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_INCLUDE_MASK_COMBO,15,35,250,98,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
     CONTROL         "Exclude mask",IDC_EXCLUDE_MASK_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,51,277,10
-    COMBOBOX        IDC_EXCLUDE_MASK_COMBO,15,64,269,170,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+    COMBOBOX        IDC_EXCLUDE_MASK_COMBO,15,64,250,170,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
     DEFPUSHBUTTON   "&OK",IDOK,179,135,50,14
     PUSHBUTTON      "&Cancel",IDCANCEL,234,135,50,14
     CONTROL         "",IDC_BOTTOM_BAR_STATIC,"Static",SS_ETCHEDHORZ,7,128,274,1
     LTEXT           "When all of the following conditions are met...:",IDC_HEADER_STATIC,7,7,277,8
     LTEXT           "...then respond with:",IDC_RESPONSE_STATIC,7,92,277,8
     COMBOBOX        IDC_RESPONSE_COMBO,15,105,269,133,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "...",IDC_INCLUDE_MASK_BUTTON,"MfcButton",WS_TABSTOP,267,34,17,12
+    CONTROL         "...",IDC_EXCLUDE_MASK_BUTTON,"MfcButton",WS_TABSTOP,267,63,17,12
 END
 
 IDD_RULE_EDIT_ALL_DIALOG DIALOGEX 0, 0, 351, 341
@@ -1501,7 +1506,154 @@
     0
 END
 
+IDD_RULE_EDIT_ALREADYEXISTS_DIALOG DLGINIT
+BEGIN
+    IDC_INCLUDE_MASK_BUTTON, 0x37c, 369, 0
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, 
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, 
+0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 
+0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, 
+0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, 
+0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, 
+0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, 
+0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 
+0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, 
+0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 
+0x4f65, 0x526e, 0x6769, 0x7468, "\076" 
+    IDC_EXCLUDE_MASK_BUTTON, 0x37c, 369, 0
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, 
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, 
+0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 
+0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, 
+0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, 
+0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, 
+0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, 
+0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 
+0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, 
+0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 
+0x4f65, 0x526e, 0x6769, 0x7468, "\076" 
+    0
+END
 
+IDD_RULE_EDIT_NOTENOUGHSPACE_DIALOG DLGINIT
+BEGIN
+    IDC_INCLUDE_MASK_BUTTON, 0x37c, 369, 0
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, 
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, 
+0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 
+0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, 
+0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, 
+0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, 
+0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, 
+0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 
+0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, 
+0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 
+0x4f65, 0x526e, 0x6769, 0x7468, "\076" 
+    IDC_EXCLUDE_MASK_BUTTON, 0x37c, 369, 0
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, 
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, 
+0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 
+0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, 
+0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, 
+0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, 
+0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, 
+0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 
+0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, 
+0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 
+0x4f65, 0x526e, 0x6769, 0x7468, "\076" 
+    0
+END
+
+IDD_RULE_EDIT_ERROR_DIALOG DLGINIT
+BEGIN
+    IDC_INCLUDE_MASK_BUTTON, 0x37c, 369, 0
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, 
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, 
+0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 
+0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, 
+0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, 
+0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, 
+0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, 
+0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 
+0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, 
+0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 
+0x4f65, 0x526e, 0x6769, 0x7468, "\076" 
+    IDC_EXCLUDE_MASK_BUTTON, 0x37c, 369, 0
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x535f, 0x7974, 0x656c, 0x343e, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7453, 0x6c79, 0x3e65, 
+0x4d3c, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x415f, 0x7475, 0x736f, 0x7a69, 
+0x3e65, 0x4146, 0x534c, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 
+0x415f, 0x7475, 0x736f, 0x7a69, 0x3e65, 0x4d3c, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x4d2f, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x545f, 0x6f6f, 0x746c, 0x7069, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x7546, 0x6c6c, 0x6554, 0x7478, 0x6f54, 0x6c6f, 
+0x543e, 0x5552, 0x3c45, 0x4d2f, 0x4346, 0x7542, 0x7474, 0x6e6f, 0x465f, 
+0x6c75, 0x546c, 0x7865, 0x5474, 0x6f6f, 0x3e6c, 0x4d3c, 0x4346, 0x7542, 
+0x7474, 0x6e6f, 0x435f, 0x7275, 0x6f73, 0x5472, 0x7079, 0x3e65, 0x3131, 
+0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x7543, 0x7372, 0x726f, 
+0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x5465, 0x7079, 0x3e65, 0x3c38, 0x4d2f, 0x4346, 0x7542, 0x7474, 
+0x6e6f, 0x495f, 0x616d, 0x6567, 0x7954, 0x6570, 0x3c3e, 0x464d, 0x4243, 
+0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x546e, 0x706f, 0x463e, 
+0x4c41, 0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 
+0x6761, 0x4f65, 0x546e, 0x706f, 0x3c3e, 0x464d, 0x4243, 0x7475, 0x6f74, 
+0x5f6e, 0x6d49, 0x6761, 0x4f65, 0x526e, 0x6769, 0x7468, 0x463e, 0x4c41, 
+0x4553, 0x2f3c, 0x464d, 0x4243, 0x7475, 0x6f74, 0x5f6e, 0x6d49, 0x6761, 
+0x4f65, 0x526e, 0x6769, 0x7468, "\076" 
+    0
+END
+
+
 /////////////////////////////////////////////////////////////////////////////
 //
 // String Table
Index: src/ch/ch.vc140.vcxproj
===================================================================
diff -u -r3aa1103497018be2a7494e79e03c5f4c674485be -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/ch.vc140.vcxproj	(.../ch.vc140.vcxproj)	(revision 3aa1103497018be2a7494e79e03c5f4c674485be)
+++ src/ch/ch.vc140.vcxproj	(.../ch.vc140.vcxproj)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -562,6 +562,7 @@
     <ClInclude Include="DirectoryChooser.h" />
     <ClInclude Include="FeedbackHandler.h" />
     <ClInclude Include="FeedbackHandlerFactory.h" />
+    <ClInclude Include="FilterTypesMenuWrapper.h" />
     <ClInclude Include="RuleEditAlreadyExistsDlg.h" />
     <ClInclude Include="RuleEditDlg.h" />
     <ClInclude Include="RuleEditErrorDlg.h" />
@@ -643,6 +644,7 @@
     <ClCompile Include="DirectoryChooser.cpp" />
     <ClCompile Include="FeedbackHandler.cpp" />
     <ClCompile Include="FeedbackHandlerFactory.cpp" />
+    <ClCompile Include="FilterTypesMenuWrapper.cpp" />
     <ClCompile Include="RuleEditAlreadyExistsDlg.cpp" />
     <ClCompile Include="RuleEditDlg.cpp" />
     <ClCompile Include="RuleEditErrorDlg.cpp" />
Index: src/ch/ch.vc140.vcxproj.filters
===================================================================
diff -u -r3aa1103497018be2a7494e79e03c5f4c674485be -r9250a0229add10f4315e76848c755f337a16ae95
--- src/ch/ch.vc140.vcxproj.filters	(.../ch.vc140.vcxproj.filters)	(revision 3aa1103497018be2a7494e79e03c5f4c674485be)
+++ src/ch/ch.vc140.vcxproj.filters	(.../ch.vc140.vcxproj.filters)	(revision 9250a0229add10f4315e76848c755f337a16ae95)
@@ -273,6 +273,7 @@
     <ClInclude Include="ComboDataWrapper.h">
       <Filter>Source Files\GUI\Utils</Filter>
     </ClInclude>
+    <ClInclude Include="FilterTypesMenuWrapper.h" />
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\common\TShellExtMenuConfig.cpp">
@@ -467,6 +468,9 @@
     <ClCompile Include="RuleEditNotEnoughSpaceDlg.cpp">
       <Filter>Source Files\GUI\Dialogs\Feedback rule editor</Filter>
     </ClCompile>
+    <ClCompile Include="FilterTypesMenuWrapper.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <None Include="res\ch.rc2">