////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2002 Microsoft Corporation. All rights reserved. // Copyright (c) 2002 OSR Open Systems Resources, Inc. // // LogSessionInformationDlg.cpp : implementation file ////////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include #include #include extern "C" { #include } #include #include "TraceView.h" #include "LogSession.h" #include "DisplayDlg.h" #include "ListCtrlEx.h" #include "LogSessionDlg.h" #include "LogSessionInformationDlg.h" #include "ProviderSetupDlg.h" #include "LogDisplayOptionDlg.h" #include "LogSessionPropSht.h" #include "LogSessionOutputOptionDlg.h" #include "LogSessionAdvPropSht.h" // CLogSessionInformationDlg dialog IMPLEMENT_DYNAMIC(CLogSessionInformationDlg, CPropertyPage) CLogSessionInformationDlg::CLogSessionInformationDlg() : CPropertyPage(CLogSessionInformationDlg::IDD) { m_pLogSession = NULL; } CLogSessionInformationDlg::~CLogSessionInformationDlg() { } BOOL CLogSessionInformationDlg::OnInitDialog() { BOOL retVal; CLogSessionPropSht *pSheet = (CLogSessionPropSht *)GetParent(); retVal = CPropertyPage::OnInitDialog(); pSheet = (CLogSessionPropSht*) GetParent(); // // Initialize settings from the parent property sheet // m_pLogSession = pSheet->m_pLogSession; m_bAppend = pSheet->m_bAppend; m_bRealTime = pSheet->m_bRealTime; m_bWriteLogFile = pSheet->m_bWriteLogFile; m_logFileNameString = pSheet->m_logFileName; m_displayNameString = pSheet->m_displayName; return retVal; } // // Enable the correct wizard buttons // BOOL CLogSessionInformationDlg::OnSetActive() { CString str; CDisplayDlg *pDisplayDlg; CLogSessionPropSht *pSheet = (CLogSessionPropSht*) GetParent(); LONG numberOfEntries; BOOL retVal; retVal = CPropertyPage::OnSetActive(); // // Fix the title if in Wizard mode // if(pSheet->IsWizard()) { CTabCtrl* pTab = pSheet->GetTabControl(); // //If its not the active page, just set the tab item // TC_ITEM ti; ti.mask = TCIF_TEXT; ti.pszText =_T("Create New Log Session"); VERIFY(pTab->SetItem(1, &ti)); } // // Enable the back and finish buttons // pSheet->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH); // // Update the display name // m_displayNameString = pSheet->m_displayName; // // set the log session name // m_logSessionName.SetWindowText(m_displayNameString); // // Disable the session name edit if using kernel logger or if the trace is active // if(m_displayNameString.Compare(KERNEL_LOGGER_NAME)) { m_logSessionName.EnableWindow(!m_pLogSession->m_bTraceActive); } else { m_logSessionName.EnableWindow(FALSE); } // // set the logfile name // m_logFileName.SetWindowText(m_logFileNameString); // // set the logfile write check // ((CButton *)GetDlgItem(IDC_WRITE_LOGFILE_CHECK))->SetCheck(m_bWriteLogFile); // // Enable log file stuff as appropriate // ((CButton *)GetDlgItem(IDC_APPEND_CHECK))->EnableWindow(!m_pLogSession->m_bTraceActive && m_bWriteLogFile); ((CEdit *)GetDlgItem(IDC_LOGFILE_EDIT))->EnableWindow(m_bWriteLogFile); ((CButton *)GetDlgItem(IDC_LOGFILE_BROWSE_BUTTON))->EnableWindow(m_bWriteLogFile); // // update the append check // ((CButton *)GetDlgItem(IDC_APPEND_CHECK))->SetCheck(m_bAppend); // // update the real time check // ((CButton *)GetDlgItem(IDC_REALTIME_CHECK))->SetCheck(m_bRealTime); return retVal; } BOOL CLogSessionInformationDlg::OnKillActive() { CLogSessionPropSht *pSheet = (CLogSessionPropSht *)GetParent(); BOOL retVal= TRUE; retVal = CPropertyPage::OnKillActive(); pSheet = (CLogSessionPropSht*) GetParent(); // // Store all settings here so that they are correct if the user // hits the back button and comes back to us. These settings are // not propagated back to the parent property sheet yet though. // // Note: OnKillActive is not called if the user selects the finish // button. // // // store the log session name // m_logSessionName.GetWindowText(m_displayNameString); // // store the logfile name // m_logFileName.GetWindowText(m_logFileNameString); // // store the logfile write check // m_bWriteLogFile = ((CButton *)GetDlgItem(IDC_WRITE_LOGFILE_CHECK))->GetCheck(); // // store the append check // m_bAppend = ((CButton *)GetDlgItem(IDC_APPEND_CHECK))->GetCheck(); // // store the real time value // m_bRealTime = ((CButton *)GetDlgItem(IDC_REALTIME_CHECK))->GetCheck(); return retVal; } void CLogSessionInformationDlg::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); DDX_Control(pDX, IDC_LOG_NAME_EDIT, m_logSessionName); DDX_Control(pDX, IDC_LOGFILE_EDIT, m_logFileName); DDX_Control(pDX, IDC_APPEND_CHECK, m_appendLogFile); DDX_Control(pDX, IDC_REALTIME_CHECK, m_realTime); } BEGIN_MESSAGE_MAP(CLogSessionInformationDlg, CPropertyPage) ON_BN_CLICKED(IDC_LOGFILE_BROWSE_BUTTON, OnBnClickedLogfileBrowseButton) ON_BN_CLICKED(IDC_WRITE_LOGFILE_CHECK, OnBnClickedWriteLogfileCheck) ON_BN_CLICKED(IDC_ADVANCED_BUTTON, OnBnClickedAdvancedButton) END_MESSAGE_MAP() // CLogSessionInformationDlg message handlers void CLogSessionInformationDlg::OnBnClickedLogfileBrowseButton() { DWORD flags; // // If appending the file must exist; Else prompt user to // create if the file doesn't exist // flags = (m_appendLogFile.GetCheck() ? OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_EXPLORER | OFN_NOCHANGEDIR : OFN_CREATEPROMPT | OFN_HIDEREADONLY | OFN_EXPLORER | OFN_NOCHANGEDIR); // // Use the common controls file open dialog // CFileDialog fileDlg(TRUE, _T("etl"),_T("*.etl"), flags, _T("Log Session Files (*.etl)|*.etl|All Files (*.*)|*.*||"), this); // // Pop the dialog... Any error, just return // if( fileDlg.DoModal()!=IDOK ) { return; } // // Get the file name // if(!fileDlg.GetPathName().IsEmpty()) { // // Store the file name // ((CLogSessionPropSht *)GetParent())->m_pLogSession->m_logFileName = fileDlg.GetPathName(); // // Display the file name and give it focus // m_logFileName.SetWindowText(fileDlg.GetPathName()); m_logFileName.SetFocus(); } } void CLogSessionInformationDlg::OnBnClickedWriteLogfileCheck() { // // Enable or disable the log file name edit box, the append // check box, and the browse button as appropriate. // if(((CButton *)GetDlgItem(IDC_WRITE_LOGFILE_CHECK))->GetCheck()) { m_logFileName.EnableWindow(TRUE); m_appendLogFile.EnableWindow(TRUE); ((CButton *)GetDlgItem(IDC_LOGFILE_BROWSE_BUTTON))->EnableWindow(TRUE); } else { m_logFileName.EnableWindow(FALSE); m_appendLogFile.EnableWindow(FALSE); ((CButton *)GetDlgItem(IDC_LOGFILE_BROWSE_BUTTON))->EnableWindow(FALSE); } } void CLogSessionInformationDlg::OnBnClickedAdvancedButton() { INT_PTR retVal; CLogSessionPropSht *pSheet = (CLogSessionPropSht *)GetParent(); // // pop-up our wizard/tab dialog to show/get properties // CLogSessionAdvPropSht *pLogSessionAdvPropertySheet = new CLogSessionAdvPropSht(this, pSheet); if(NULL == pLogSessionAdvPropertySheet) { return; } retVal = pLogSessionAdvPropertySheet->DoModal(); if(IDOK != retVal) { //BUGBUG -- make sure options are correct here } delete pLogSessionAdvPropertySheet; }