areaeditor/
/*
** AreaEditor - a program for editing SMAUG and ROM area files.
** Author: Nick Gammon
** http://www.gammon.com.au/
** See Copyright Notice at the end of AreaEditor.h
*/

// FindDlg.cpp : implementation file
//

#include "stdafx.h"
#include "AreaEditor.h"
#include "FindDlg.h"
#include "AreaEditorDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFindDlg dialog


CFindDlg::CFindDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CFindDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFindDlg)
	m_bMatchCase = FALSE;
	m_iFindType = -1;
	m_bAllAreas = FALSE;
	//}}AFX_DATA_INIT
}


void CFindDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFindDlg)
	DDX_Control(pDX, IDC_FIND_TEXT, m_ctlFindText);
	DDX_Check(pDX, IDC_MATCH_CASE, m_bMatchCase);
	DDX_Radio(pDX, IDC_FIND_TYPE, m_iFindType);
	DDX_MinMaxCBString(pDX, IDC_FIND_TEXT, m_strFindText);
	DDV_MinMaxCBString(pDX, m_strFindText, 1, 1000);
	DDX_Check(pDX, IDC_ALL_AREAS, m_bAllAreas);
	//}}AFX_DATA_MAP

  if (pDX->m_bSaveAndValidate)
    {
    
    if (m_iFindType == eFindVnum)
      {
      CString strValidate = m_strFindText;
      strValidate.TrimLeft ();
      strValidate.TrimRight ();
      strValidate.MakeUpper ();

      if (strValidate [0] == 'M' 
        || strValidate [0] == 'O' 
        || strValidate [0] == 'R')
        {
        strValidate = strValidate.Mid (1);
        strValidate.TrimLeft ();
        }

      int vnum = atoi (strValidate);

      for (int i = 0; i < strValidate.GetLength (); i++)
        if (!isdigit (strValidate [i]))
          {
          ::AfxMessageBox ("VNUM must be numeric (optionally starting with M, O, or R)",
                            MB_ICONSTOP);
          DDX_Text(pDX, IDC_FIND_TEXT, m_strFindText);
          pDX->Fail();

          }   // end of bad vnum
      
      }   // end of finding a vnum


    } // end of saving and validating
  else
    {

    // fill the list box in reverse order with the previous things they found
    for (POSITION pos = App.m_strFindText.GetTailPosition (); pos; )
      m_ctlFindText.AddString (App.m_strFindText.GetPrev (pos));
    } // end of not saving


}


BEGIN_MESSAGE_MAP(CFindDlg, CDialog)
	//{{AFX_MSG_MAP(CFindDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFindDlg message handlers