// SeriesPropDlg.cpp : implementation file
//
#include "stdafx.h"
#include "ChartDemo.h"
#include "SeriesPropDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSeriesPropDlg dialog
CSeriesPropDlg::CSeriesPropDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSeriesPropDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSeriesPropDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_iHorizAxis = m_iVertAxis = 0;
m_iSeriesType = 0;
m_SeriesColour = 0;
m_iDataType = 0;
m_fMaxXValue = m_fMinXValue = 0.0;
m_iPointsNumber = 0;
m_iRandMinVal = m_iRandMaxVal = 0;
m_fSineAmplitude = m_fSinePeriod = 0;
m_fLineSlope = m_fLineOffset = 0;
}
void CSeriesPropDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSeriesPropDlg)
DDX_Control(pDX, IDC_VERTICALAXIS_COMBO, m_VertAxisCombo);
DDX_Control(pDX, IDC_HORIZONTALAXIS_COMBO, m_HorizAxisCombo);
DDX_Control(pDX, IDC_SERIESCOLOUR_BTN, m_ColourSelect);
DDX_Control(pDX, IDC_SERIESTYPE_COMBO, m_SeriesTypeCombo);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSeriesPropDlg, CDialog)
//{{AFX_MSG_MAP(CSeriesPropDlg)
ON_BN_CLICKED(IDC_LINEDATA_RADIO, OnSelectLineData)
ON_BN_CLICKED(IDC_RANDOMDATA_RADIO, OnSelectRandomData)
ON_BN_CLICKED(IDC_SINEDATA_RADIO, OnSelectSineData)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSeriesPropDlg message handlers
void CSeriesPropDlg::OnOK()
{
char szName[255];
GetDlgItem(IDC_SERIESNAME_EDIT)->GetWindowText(szName,254);
m_strSeriesName = szName;
if (strcmp(szName,"") == 0)
{
MessageBox("You must supply a name","Error");
return;
}
m_iSeriesType = m_SeriesTypeCombo.GetCurSel();
m_SeriesColour = m_ColourSelect.GetColour();
char szBuff[255];
GetDlgItem(IDC_MAXXVALUE_EDIT)->GetWindowText(szBuff,254);
m_fMaxXValue = (float)atof(szBuff);
GetDlgItem(IDC_MINXVALUE_EDIT)->GetWindowText(szBuff,254);
m_fMinXValue = (float)atof(szBuff);
if (m_fMinXValue > m_fMaxXValue)
{
MessageBox("Max X value should be > Min X value");
return;
}
m_iHorizAxis = m_HorizAxisCombo.GetCurSel();
m_iVertAxis = m_VertAxisCombo.GetCurSel();
GetDlgItem(IDC_POINTSNUMBER_EDIT)->GetWindowText(szBuff,254);
m_iPointsNumber = atoi(szBuff);
if (m_iPointsNumber < 2)
{
MessageBox("Number of points should be > 2");
return;
}
if ( ((CButton*)GetDlgItem(IDC_LINEDATA_RADIO))->GetCheck() == 1)
{
m_iDataType = 0;
GetDlgItem(IDC_DATAPARAM1_EDIT)->GetWindowText(szBuff,254);
m_fLineSlope = (float)atof(szBuff);
GetDlgItem(IDC_DATAPARAM2_EDIT)->GetWindowText(szBuff,254);
m_fLineOffset = (float)atof(szBuff);
}
else if ( ((CButton*)GetDlgItem(IDC_SINEDATA_RADIO))->GetCheck() == 1)
{
m_iDataType = 1;
GetDlgItem(IDC_DATAPARAM1_EDIT)->GetWindowText(szBuff,254);
m_fSineAmplitude = (float)atof(szBuff);
GetDlgItem(IDC_DATAPARAM2_EDIT)->GetWindowText(szBuff,254);
m_fSinePeriod = (float)atof(szBuff);
if (m_fSinePeriod == 0)
{
MessageBox("Sine period cannot be 0","Error");
return;
}
}
else
{
m_iDataType = 2;
GetDlgItem(IDC_DATAPARAM1_EDIT)->GetWindowText(szBuff,254);
m_iRandMinVal = atoi(szBuff);
GetDlgItem(IDC_DATAPARAM2_EDIT)->GetWindowText(szBuff,254);
m_iRandMaxVal = atoi(szBuff);
if (m_iRandMaxVal < m_iRandMinVal)
{
MessageBox("Max random value should be > Min random value");
return;
}
}
CDialog::OnOK();
}
BOOL CSeriesPropDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_SeriesTypeCombo.SetCurSel(0);
m_HorizAxisCombo.SetCurSel(0);
m_VertAxisCombo.SetCurSel(0);
((CButton*)GetDlgItem(IDC_LINEDATA_RADIO))->SetCheck(1);
GetDlgItem(IDC_MINXVALUE_EDIT)->SetWindowText("0.0");
GetDlgItem(IDC_MAXXVALUE_EDIT)->SetWindowText("100.0");
GetDlgItem(IDC_DATAPARAM1_EDIT)->SetWindowText("1.0");
GetDlgItem(IDC_DATAPARAM2_EDIT)->SetWindowText("0.0");
GetDlgItem(IDC_POINTSNUMBER_EDIT)->SetWindowText("100");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSeriesPropDlg::OnSelectLineData()
{
GetDlgItem(IDC_DATAPARAM1_TEXT)->SetWindowText("Line Slope:");
GetDlgItem(IDC_DATAPARAM2_TEXT)->SetWindowText("Line Offset:");
GetDlgItem(IDC_DATAPARAM1_EDIT)->SetWindowText("1.0");
GetDlgItem(IDC_DATAPARAM2_EDIT)->SetWindowText("0.0");
}
void CSeriesPropDlg::OnSelectRandomData()
{
GetDlgItem(IDC_DATAPARAM1_TEXT)->SetWindowText("Min Y value:");
GetDlgItem(IDC_DATAPARAM2_TEXT)->SetWindowText("Max Y value:");
GetDlgItem(IDC_DATAPARAM1_EDIT)->SetWindowText("0");
GetDlgItem(IDC_DATAPARAM2_EDIT)->SetWindowText("100");
}
void CSeriesPropDlg::OnSelectSineData()
{
GetDlgItem(IDC_DATAPARAM1_TEXT)->SetWindowText("Sine Amplitude:");
GetDlgItem(IDC_DATAPARAM2_TEXT)->SetWindowText("Sine Period:");
GetDlgItem(IDC_DATAPARAM1_EDIT)->SetWindowText("100.0");
GetDlgItem(IDC_DATAPARAM2_EDIT)->SetWindowText("10.0");
}