/*++ © 1998 Seagate Software, Inc. All rights reserved Module Name: Rule.cpp Abstract: Rule object for use in inclusion exclusion. Author: Art Bragg [abragg] 08-Aug-1997 Revision History: --*/ #include "stdafx.h" #include "Rule.h" ///////////////////////////////////////////////////////////////////////////// // CRule dialog static DWORD pHelpIds[] = { IDC_EDIT_RESOURCE_NAME, idh_rule_edit_name, IDC_EDIT_PATH, idh_rule_edit_path, IDC_EDIT_FILESPEC, idh_rule_edit_file_type, IDC_RADIO_EXCLUDE, idh_rule_edit_exclude, IDC_RADIO_INCLUDE, idh_rule_edit_include, IDC_CHECK_SUBDIRS, idh_rule_edit_apply_subfolders, 0, 0 }; CRule::CRule(CWnd* pParent /*=NULL*/) : CRsDialog(CRule::IDD, pParent) { //{{AFX_DATA_INIT(CRule) m_subDirs = FALSE; m_fileSpec = _T(""); m_path = _T(""); m_includeExclude = -1; m_pResourceName = _T(""); //}}AFX_DATA_INIT m_pHelpIds = pHelpIds; } void CRule::DoDataExchange(CDataExchange* pDX) { CRsDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CRule) DDX_Check(pDX, IDC_CHECK_SUBDIRS, m_subDirs); DDX_Text(pDX, IDC_EDIT_FILESPEC, m_fileSpec); DDX_Text(pDX, IDC_EDIT_PATH, m_path); DDX_Radio(pDX, IDC_RADIO_EXCLUDE, m_includeExclude); DDX_Text(pDX, IDC_EDIT_RESOURCE_NAME, m_pResourceName); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CRule, CRsDialog) //{{AFX_MSG_MAP(CRule) ON_BN_CLICKED(IDC_RADIO_EXCLUDE, OnRadioExclude) ON_BN_CLICKED(IDC_RADIO_INCLUDE, OnRadioInclude) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CRule message handlers void CRule::OnRadioExclude() { // TODO: Add your control notification handler code here } void CRule::OnRadioInclude() { // TODO: Add your control notification handler code here } BOOL CRule::OnInitDialog() { CRsDialog::OnInitDialog(); UpdateData (FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } ////////////////////////////////////////////////////////////////////////// // // Returns: False if path is not legal // BOOL CRule::FixRulePath (CString& sPath) { BOOL fOk = TRUE; TCHAR c; int length = 0; int i; // Test for illegal characters length = sPath.GetLength(); for (i = 0; i < length; i++) { c = sPath[i]; if (c == ':') { fOk = FALSE; break; } } if (fOk) { // Convert all "/" to "\" length = sPath.GetLength(); for (i = 0; i < length; i++) { c = sPath[i]; if (c == '/') sPath.SetAt (i, '\\'); } // Make sure path starts with a "\" c = sPath[0]; if (c != '\\') { sPath = "\\" + sPath; } // If path has at least one dir, clean up final "\" if there is one length = sPath.GetLength(); if (length > 1) { c = sPath[length - 1]; if (c == '\\') { sPath = sPath.Left (length - 1); } } } return fOk; } void CRule::OnOK() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); UpdateData (TRUE); // Verify the path and name fields if (m_path != "") { if (m_fileSpec != "") { // Fix up the path if (FixRulePath (m_path)) { // Show the new data - because when we call OnOK the variables // will get updated again. UpdateData (FALSE); CRsDialog::OnOK(); } else { AfxMessageBox (IDS_ERR_RULE_ILLEGAL_PATH, RS_MB_ERROR); } } else { AfxMessageBox (IDS_ERR_RULE_NO_FILESPEC, RS_MB_ERROR); } } else { AfxMessageBox (IDS_ERR_RULE_NO_PATH, RS_MB_ERROR); } }