You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
4.2 KiB
182 lines
4.2 KiB
/*++
|
|
|
|
© 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);
|
|
}
|
|
}
|