// AddFilterDlg1.cpp : implementation file // #include "stdafx.h" #include "p4win.h" #include "AddFilterDlg.h" #include "hlp\p4win.hh" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAddFilterDlg dialog CAddFilterDlg::CAddFilterDlg(CWnd* pParent /*=NULL*/) : CDialog(CAddFilterDlg::IDD, pParent) { //{{AFX_DATA_INIT(CAddFilterDlg) m_Ext = _T(""); m_Exclude = GET_P4REGPTR()->GetAddFilterExclude(); //}}AFX_DATA_INIT } void CAddFilterDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAddFilterDlg) DDX_Control(pDX, IDC_EXTLIST, m_ExtList); DDX_Text(pDX, IDC_EDIT1, m_Ext); DDX_Radio(pDX, IDC_RADIO1, m_Exclude); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAddFilterDlg, CDialog) //{{AFX_MSG_MAP(CAddFilterDlg) ON_BN_CLICKED(IDC_ADD2FILTER, OnAddToFilter) ON_BN_CLICKED(IDC_DELETE, OnDelete) ON_BN_CLICKED(IDC_DELETEALL, OnDeleteAll) ON_BN_CLICKED(IDC_RADIO1, OnRadio) ON_BN_CLICKED(IDC_RADIO2, OnRadio) ON_BN_CLICKED(IDHELP, OnHelp) ON_LBN_SELCHANGE(IDC_EXTLIST, OnSelchangeList) ON_WM_HELPINFO() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAddFilterDlg message handlers BOOL CAddFilterDlg::OnInitDialog() { CDialog::OnInitDialog(); CString ext; int i; while ((i = m_Extensions.Find(_T(';'))) != -1) { ext = m_Extensions.Left(i); ext.TrimLeft(_T(" *.")); ext.TrimRight(); if (ext.GetLength()) m_ExtList.AddString(ext); m_Extensions = m_Extensions.Right(m_Extensions.GetLength() - i - 1); } if (m_Extensions.GetLength()) m_ExtList.AddString(m_Extensions); OnSelchangeList(); OnRadio(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CAddFilterDlg::OnAddToFilter() { UpdateData( ); if (!m_Ext.GetLength()) { GotoDlgCtrl(GetDlgItem(IDC_EDIT1)); return; } m_Ext.TrimLeft(_T(" *.")); m_Ext.TrimRight(); if ((m_Ext.FindOneOf(_T("*?.\\:")) != -1) || (!m_Ext.GetLength())) { AfxMessageBox(IDS_BADADDFILTER, MB_OK); GotoDlgCtrl(GetDlgItem(IDC_EDIT1)); return; } m_ExtList.AddString(m_Ext); m_ExtList.SelectString( -1, m_Ext ); m_Ext.Empty(); UpdateData(FALSE); OnSelchangeList(); GotoDlgCtrl(GetDlgItem(IDC_EDIT1)); } void CAddFilterDlg::OnSelchangeList() { GetDlgItem(IDC_DELETE)->EnableWindow(m_ExtList.GetCurSel() != LB_ERR); GetDlgItem(IDC_DELETEALL)->EnableWindow(m_ExtList.GetCount() > 0); } void CAddFilterDlg::OnDelete() { int item; if ((item = m_ExtList.GetCurSel( )) != LB_ERR) m_ExtList.DeleteString(item); else MessageBeep(0); OnSelchangeList(); GotoDlgCtrl(GetDlgItem(IDC_EDIT1)); } void CAddFilterDlg::OnDeleteAll() { UpdateData(); // it is necessary to remove the focus from the // Delete All button to make the disable look correct GotoDlgCtrl(GetDlgItem(IDC_ADD2FILTER)); m_ExtList.ResetContent(); OnSelchangeList(); // disables the Delete All button m_Exclude = -1; UpdateData(FALSE); OnRadio(); // Now set the focus where we really want it GotoDlgCtrl(GetDlgItem(IDC_EDIT1)); } void CAddFilterDlg::OnRadio() { UpdateData(); GetDlgItem(IDOK)->EnableWindow(m_Exclude != -1); } void CAddFilterDlg::OnOK() { UpdateData(); if (m_Exclude == -1) { MessageBeep(0); ASSERT(0); return; } CString ext; m_Exts.RemoveAll(); m_Extensions.Empty(); for (int i = -1; ++i < m_ExtList.GetCount(); ) { m_ExtList.GetText( i, ext ); ext.TrimLeft(_T(" *.")); ext.TrimRight(); if (ext.GetLength()) { m_Extensions += ext + _T(';'); m_Exts.AddTail(ext); } } GET_P4REGPTR()->SetAddFilterExclude(m_Exclude); CDialog::EndDialog(IDOK); } void CAddFilterDlg::OnHelp() { AfxGetApp()->WinHelp(ALIAS_96_ADDING_FILES); } BOOL CAddFilterDlg::OnHelpInfo(HELPINFO* pHelpInfo) { OnHelp(); return TRUE; }