Windows2003-3790/sdktools/trace/traceview/logsessionoptionsdlg.cpp
2020-09-30 16:53:55 +02:00

308 lines
11 KiB
C++

// LogSessionOptionsDlg.cpp : implementation file
//
#include "stdafx.h"
#include "TraceView.h"
#include "DisplayDlg.h"
#include "LogSession.h"
#include "LogSessionOptionsDlg.h"
// CLogSessionOptionsDlg dialog
IMPLEMENT_DYNAMIC(CLogSessionOptionsDlg, CDialog)
CLogSessionOptionsDlg::CLogSessionOptionsDlg(CWnd* pParent, CLogSession *pLogSession)
: CDialog(CLogSessionOptionsDlg::IDD, pParent)
{
m_pLogSession = pLogSession;
}
CLogSessionOptionsDlg::~CLogSessionOptionsDlg()
{
}
int CLogSessionOptionsDlg::OnInitDialog()
{
LONG displayEnableFlags;
CString str;
int retVal = CDialog::OnInitDialog();
// Hide all of the non-Tab1 items
m_DisplayMaxBuf.ShowWindow(SW_HIDE);
m_DisplayMinBuf.ShowWindow(SW_HIDE);
m_DisplayBufferSize.ShowWindow(SW_HIDE);
m_DisplayFlushTime.ShowWindow(SW_HIDE);
m_DisplayTraceLevel.ShowWindow(SW_HIDE);
m_DisplayDecayTime.ShowWindow(SW_HIDE);
m_DisplayNewFile.ShowWindow(SW_HIDE);
m_DisplayCir.ShowWindow(SW_HIDE);
m_DisplaySeq.ShowWindow(SW_HIDE);
m_DisplayFlags.ShowWindow(SW_HIDE);
m_MaxBufValue.ShowWindow(SW_HIDE);
m_MinBufValue.ShowWindow(SW_HIDE);
m_BufferSizeValue.ShowWindow(SW_HIDE);
m_FlushTimeValue.ShowWindow(SW_HIDE);
m_TraceLevelValue.ShowWindow(SW_HIDE);
m_DecayTimeValue.ShowWindow(SW_HIDE);
m_NewFileValue.ShowWindow(SW_HIDE);
m_CirValue.ShowWindow(SW_HIDE);
m_SeqValue.ShowWindow(SW_HIDE);
m_FlagsValue.ShowWindow(SW_HIDE);
GetDlgItem(IDC_MAXBUF_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_MINBUF_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUFFERSIZE_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_FLUSHTIME_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_TRACELEVEL_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_DECAYTIME_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_NEWFILE_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CIR_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_SEQ_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_FLAGS_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_DISPLAY1_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_OPTION1_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_VALUE1_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_DISPLAY2_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_OPTION2_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_VALUE2_STATIC)->ShowWindow(SW_HIDE);
// Setup the tab control
((CTabCtrl *)GetDlgItem(IDC_TAB1))->InsertItem(0, "Session Information");
((CTabCtrl *)GetDlgItem(IDC_TAB1))->InsertItem(1, "Display Options");
// Handle the session name
if(m_pLogSession->GetDisplayName() == "") {
str.Format("Trace%d", m_pLogSession->GetLogSessionID());
m_pLogSession->SetDisplayName(str);
} else {
m_LogSessionName.EnableWindow(FALSE);
m_LogFileName.EnableWindow(FALSE);
m_AppendToLogFile.EnableWindow(FALSE);
GetDlgItem(IDC_LOGFILE_BROWSE_BUTTON)->EnableWindow(FALSE);
}
// Set the defaults
displayEnableFlags = m_pLogSession->GetDisplayEnableFlags();
m_DisplayMaxBuf.SetCheck(displayEnableFlags & LOGSESSION_DISPLAY_MAXBUF);
m_DisplayMinBuf.SetCheck(displayEnableFlags & LOGSESSION_DISPLAY_MINBUF);
m_DisplayBufferSize.SetCheck(displayEnableFlags & LOGSESSION_DISPLAY_BUFFERSIZE);
m_DisplayTraceLevel.SetCheck(displayEnableFlags & LOGSESSION_DISPLAY_TRACELEVEL);
m_DisplayFlushTime.SetCheck(displayEnableFlags & LOGSESSION_DISPLAY_FLUSHTIME);
m_DisplayDecayTime.SetCheck(displayEnableFlags & LOGSESSION_DISPLAY_DECAYTIME);
m_DisplayNewFile.SetCheck(displayEnableFlags & LOGSESSION_DISPLAY_NEWFILE);
m_DisplayCir.SetCheck(displayEnableFlags & LOGSESSION_DISPLAY_CIR);
m_DisplaySeq.SetCheck(displayEnableFlags & LOGSESSION_DISPLAY_SEQ);
m_DisplayFlags.SetCheck(displayEnableFlags & LOGSESSION_DISPLAY_FLAGS);
m_LogSessionName.SetWindowText(m_pLogSession->GetDisplayName());
m_LogFileName.SetWindowText(m_pLogSession->m_OutputFileName);
return retVal;
}
void CLogSessionOptionsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_DISPLAY_MAXBUF_CHECK, m_DisplayMaxBuf);
DDX_Control(pDX, IDC_DISPLAY_MINBUF_CHECK, m_DisplayMinBuf);
DDX_Control(pDX, IDC_DISPLAY_BUFSIZ_CHECK, m_DisplayBufferSize);
DDX_Control(pDX, IDC_DISPLAY_FLUSHTIME_CHECK, m_DisplayFlushTime);
DDX_Control(pDX, IDC_DISPLAY_TRCLVL_CHECK, m_DisplayTraceLevel);
DDX_Control(pDX, IDC_DISPLAY_DECAYTIME_CHECK, m_DisplayDecayTime);
DDX_Control(pDX, IDC_DISPLAY_NEWFILE_CHECK, m_DisplayNewFile);
DDX_Control(pDX, IDC_DISPLAY_CIR_CHECK, m_DisplayCir);
DDX_Control(pDX, IDC_DISPLAY_SEQ_CHECK, m_DisplaySeq);
DDX_Control(pDX, IDC_DISPLAY_FLAGS_CHECK, m_DisplayFlags);
DDX_Control(pDX, IDC_LOG_NAME_EDIT, m_LogSessionName);
DDX_Control(pDX, IDC_MAXBUF_VAL_EDIT, m_MaxBufValue);
DDX_Control(pDX, IDC_MINBUF_VAL_EDIT, m_MinBufValue);
DDX_Control(pDX, IDC_BUFSIZ_VAL_EDIT, m_BufferSizeValue);
DDX_Control(pDX, IDC_FLUSHTIME_VAL_EDIT, m_FlushTimeValue);
DDX_Control(pDX, IDC_TRCLVL_VAL_EDIT, m_TraceLevelValue);
DDX_Control(pDX, IDC_DECAYTIME_VAL_EDIT, m_DecayTimeValue);
DDX_Control(pDX, IDC_NEWFILE_VAL_EDIT, m_NewFileValue);
DDX_Control(pDX, IDC_CIR_VAL_EDIT, m_CirValue);
DDX_Control(pDX, IDC_FLAGS_VAL_EDIT, m_FlagsValue);
DDX_Control(pDX, IDC_LOGFILE_EDIT, m_LogFileName);
DDX_Control(pDX, IDC_APPEND_CHECK, m_AppendToLogFile);
DDX_Control(pDX, IDC_SEQ_VAL_EDIT3, m_SeqValue);
}
BEGIN_MESSAGE_MAP(CLogSessionOptionsDlg, CDialog)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_BN_CLICKED(IDC_LOGFILE_BROWSE_BUTTON, OnBnClickedLogfileBrowseButton)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnTcnSelchangeTab1)
END_MESSAGE_MAP()
void CLogSessionOptionsDlg::OnBnClickedOk()
{
CString str;
CString strBogus;
LONG length;
TCHAR logSessionName[500];
m_LogFileName.GetWindowText(m_pLogSession->m_OutputFileName);
// Warn the user that no logfile was specified
if((m_LogFileName.IsWindowEnabled()) && (m_pLogSession->m_OutputFileName.IsEmpty())) {
if(IDCANCEL == AfxMessageBox("No Log File Specified\n\nTrace Data Will Not Be Saved \n", MB_OKCANCEL)) {
return;
}
}
m_DisplayEnableFlags = 0;
if(m_DisplayMaxBuf.GetCheck()) {
m_DisplayEnableFlags |= LOGSESSION_DISPLAY_MAXBUF;
};
if(m_DisplayMinBuf.GetCheck()) {
m_DisplayEnableFlags |= LOGSESSION_DISPLAY_MINBUF;
};
if(m_DisplayBufferSize.GetCheck()) {
m_DisplayEnableFlags |= LOGSESSION_DISPLAY_BUFFERSIZE;
};
if(m_DisplayTraceLevel.GetCheck()) {
m_DisplayEnableFlags |= LOGSESSION_DISPLAY_TRACELEVEL;
};
if(m_DisplayFlushTime.GetCheck()) {
m_DisplayEnableFlags |= LOGSESSION_DISPLAY_FLUSHTIME;
};
if(m_DisplayDecayTime.GetCheck()) {
m_DisplayEnableFlags |= LOGSESSION_DISPLAY_DECAYTIME;
};
if(m_DisplayNewFile.GetCheck()) {
m_DisplayEnableFlags |= LOGSESSION_DISPLAY_NEWFILE;
};
if(m_DisplayCir.GetCheck()) {
m_DisplayEnableFlags |= LOGSESSION_DISPLAY_CIR;
};
if(m_DisplaySeq.GetCheck()) {
m_DisplayEnableFlags |= LOGSESSION_DISPLAY_SEQ;
};
if(m_DisplayFlags.GetCheck()) {
m_DisplayEnableFlags |= LOGSESSION_DISPLAY_FLAGS;
};
m_pLogSession->SetDisplayEnableFlags(m_DisplayEnableFlags);
// Update the log session name if changed
length = m_LogSessionName.LineLength(0);
memset((void *)logSessionName, 0, length + 2);
m_LogSessionName.GetLine(0, logSessionName, length);
str = logSessionName;
m_pLogSession->SetDisplayName(str);
OnOK();
}
void CLogSessionOptionsDlg::OnBnClickedLogfileBrowseButton()
{
char fileName[260] = ""; // buffer for file name
OPENFILENAME openFile;
ZeroMemory(&openFile, sizeof(OPENFILENAME));
openFile.lStructSize = sizeof(OPENFILENAME);
//openFile.hwndOwner = GetSafeHwnd();
openFile.lpstrCustomFilter = NULL;
openFile.nMaxCustFilter = 0;
openFile.nFilterIndex = 1;
openFile.lpstrFile = fileName;
openFile.nMaxFile = 500;
openFile.lpstrFileTitle = NULL;
openFile.nMaxFileTitle = 0;
openFile.lpstrInitialDir = NULL;
openFile.lpstrTitle = "Open Log File";
if(m_AppendToLogFile.GetCheck()) {
openFile.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
} else {
openFile.Flags = OFN_CREATEPROMPT;
}
openFile.lpstrDefExt = "log";
openFile.lpstrFilter = "log files (*.log)\0*.log\0all files (*.*)\0*.*\0";
openFile.lCustData = NULL;
openFile.lpfnHook = NULL;
openFile.lpTemplateName = NULL;
if(!GetOpenFileName(&openFile)) {
AfxMessageBox("Failed To Open Logfile");
} else {
m_pLogSession->m_OutputFileName = fileName;
m_LogFileName.SetWindowText(fileName);
}
}
CTabCtrl
void CLogSessionOptionsDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
// Hide all of the non-Tab1 items
m_DisplayMaxBuf.ShowWindow(SW_HIDE);
m_DisplayMinBuf.ShowWindow(SW_HIDE);
m_DisplayBufferSize.ShowWindow(SW_HIDE);
m_DisplayFlushTime.ShowWindow(SW_HIDE);
m_DisplayTraceLevel.ShowWindow(SW_HIDE);
m_DisplayDecayTime.ShowWindow(SW_HIDE);
m_DisplayNewFile.ShowWindow(SW_HIDE);
m_DisplayCir.ShowWindow(SW_HIDE);
m_DisplaySeq.ShowWindow(SW_HIDE);
m_DisplayFlags.ShowWindow(SW_HIDE);
m_MaxBufValue.ShowWindow(SW_HIDE);
m_MinBufValue.ShowWindow(SW_HIDE);
m_BufferSizeValue.ShowWindow(SW_HIDE);
m_FlushTimeValue.ShowWindow(SW_HIDE);
m_TraceLevelValue.ShowWindow(SW_HIDE);
m_DecayTimeValue.ShowWindow(SW_HIDE);
m_NewFileValue.ShowWindow(SW_HIDE);
m_CirValue.ShowWindow(SW_HIDE);
m_SeqValue.ShowWindow(SW_HIDE);
m_FlagsValue.ShowWindow(SW_HIDE);
GetDlgItem(IDC_MAXBUF_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_MINBUF_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUFFERSIZE_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_FLUSHTIME_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_TRACELEVEL_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_DECAYTIME_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_NEWFILE_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CIR_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_SEQ_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_FLAGS_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_DISPLAY1_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_OPTION1_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_VALUE1_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_DISPLAY2_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_OPTION2_STATIC)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_VALUE2_STATIC)->ShowWindow(SW_HIDE);
*pResult = 0;
}