|
|
// evntfind.cpp : implementation file
//
#include "stdafx.h"
#include "eventrap.h"
#include "evntfind.h"
#include "source.h"
#include "globals.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CEventFindDlg dialog
CEventFindDlg::CEventFindDlg(CWnd* pParent) : CDialog(CEventFindDlg::IDD, pParent) { //{{AFX_DATA_INIT(CEventFindDlg)
m_sFindWhat = _T(""); m_bMatchWholeWord = FALSE; m_bMatchCase = FALSE; //}}AFX_DATA_INIT
m_pSource = NULL; m_bSearchInTree = TRUE; m_bMatchCase = FALSE; m_bMatchWholeWord = FALSE; m_iFoundWhere = I_FOUND_NOTHING; }
CEventFindDlg::~CEventFindDlg() { m_pSource->m_pdlgFind = NULL; }
BOOL CEventFindDlg::Create(CSource* pSource, UINT nIDTemplate, CWnd* pParentWnd) { m_pSource = pSource; return CDialog::Create(nIDTemplate, pParentWnd); }
void CEventFindDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CEventFindDlg)
DDX_Text(pDX, IDC_EDIT_FIND_WHAT, m_sFindWhat); DDX_Check(pDX, IDC_CHECK_MATCH_WHOLEWORD, m_bMatchWholeWord); DDX_Check(pDX, IDC_CHECK_MATCH_CASE, m_bMatchCase); //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEventFindDlg, CDialog) //{{AFX_MSG_MAP(CEventFindDlg)
ON_BN_CLICKED(IDC_CHECK_MATCH_WHOLEWORD, OnCheckMatchWholeword) ON_BN_CLICKED(IDC_CHECK_MATCH_CASE, OnCheckMatchCase) ON_EN_CHANGE(IDC_EDIT_FIND_WHAT, OnChangeEditFindWhat) ON_BN_CLICKED(IDC_RADIO_SEARCH_DESCRIPTIONS, OnRadioSearchDescriptions) ON_BN_CLICKED(IDC_RADIO_SEARCH_SOURCES, OnRadioSearchSources) ON_WM_HELPINFO() ON_WM_CONTEXTMENU() ON_BN_CLICKED(IDC_FIND_OK, OnOK) ON_BN_CLICKED(IDC_FIND_CANCEL, OnCancel) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEventFindDlg message handlers
void CEventFindDlg::OnCheckMatchWholeword() { CButton *pButton = (CButton*)GetDlgItem(IDC_CHECK_MATCH_WHOLEWORD); if (pButton != NULL) m_bMatchWholeWord = pButton->GetCheck() != 0; }
void CEventFindDlg::OnCheckMatchCase() { CButton *pButton = (CButton*)GetDlgItem(IDC_CHECK_MATCH_CASE); if (pButton != NULL) m_bMatchCase = pButton->GetCheck() != 0; }
void CEventFindDlg::OnCancel() { CDialog::OnCancel(); delete this; }
void CEventFindDlg::OnChangeEditFindWhat() { CWnd* pwndEdit = GetDlgItem(IDC_EDIT_FIND_WHAT); CButton* pbtnWholeWord = (CButton*) GetDlgItem(IDC_CHECK_MATCH_WHOLEWORD); CString sText;
// Get the search string and check to see if it contains any spaces.
pwndEdit->GetWindowText(sText); if (sText.Find(_T(' ')) ==-1) { // It does not contain a space. Enable the window.
if (!pbtnWholeWord->IsWindowEnabled()) { pbtnWholeWord->EnableWindow(); } } else { // The search string contained a space, disable the whole-word button
// and uncheck it if necessary.
if (pbtnWholeWord->IsWindowEnabled()) { if (pbtnWholeWord->GetCheck() == 1) { // The "whole word" button was checked, so uncheck it and
// disable the button.
pbtnWholeWord->SetCheck(0); } pbtnWholeWord->EnableWindow(FALSE); } } }
BOOL CEventFindDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here
int idButton = m_bSearchInTree ? IDC_RADIO_SEARCH_SOURCES : IDC_RADIO_SEARCH_DESCRIPTIONS; CButton *pButton = (CButton*)GetDlgItem(idButton); if (pButton != NULL) pButton->SetCheck(1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CEventFindDlg::OnRadioSearchDescriptions() { m_bSearchInTree = FALSE; }
void CEventFindDlg::OnRadioSearchSources() { m_bSearchInTree = TRUE; }
BOOL CEventFindDlg::OnCommand(WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class
return CDialog::OnCommand(wParam, lParam); }
void CEventFindDlg::OnOK() { // Get the Find What text.
CEdit* pEdit = (CEdit*) GetDlgItem(IDC_EDIT_FIND_WHAT); if (pEdit == NULL) return; // Can't do anything.
// Empty Find What string; nothing to do.
pEdit->GetWindowText(m_sFindWhat); if (m_sFindWhat.IsEmpty()) return; pEdit->SetSel(0, -1);
BOOL bFound = m_pSource->Find(m_bSearchInTree, m_sFindWhat, m_bMatchWholeWord, m_bMatchCase); SetFocus();
// Put the focus on the parent window.
if (bFound) { if (m_bSearchInTree) { m_iFoundWhere = I_FOUND_IN_TREE; } else { m_iFoundWhere = I_FOUND_IN_LIST; } } else { CString sMsg; sMsg.LoadString(IDS_MSG_TEXTNOTFOUND); MessageBox(sMsg, NULL, MB_OK | MB_ICONINFORMATION); } }
FOUND_WHERE CEventFindDlg::Find(CSource* pSource) { m_pSource = pSource; DoModal(); return m_iFoundWhere; }
BOOL CEventFindDlg::OnHelpInfo(HELPINFO* pHelpInfo) { if (pHelpInfo->iContextType == HELPINFO_WINDOW) { ::WinHelp ((HWND)pHelpInfo->hItemHandle, AfxGetApp()->m_pszHelpFilePath, HELP_WM_HELP, (ULONG_PTR)g_aHelpIDs_IDD_EVENTFINDDLG); } return TRUE; }
void CEventFindDlg::OnContextMenu(CWnd* pWnd, CPoint point) { if (this == pWnd) return;
::WinHelp (pWnd->m_hWnd, AfxGetApp()->m_pszHelpFilePath, HELP_CONTEXTMENU, (ULONG_PTR)g_aHelpIDs_IDD_EVENTFINDDLG); }
|