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
*/

// ObjectExtraDescriptionView.cpp : implementation file
//

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

#include "ObjectExtraDescriptionView.h"
#include "EditDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CObjectExtraDescriptionView

IMPLEMENT_DYNCREATE(CObjectExtraDescriptionView, CFormView)

CObjectExtraDescriptionView::CObjectExtraDescriptionView()
	: CFormView(CObjectExtraDescriptionView::IDD)
{
	//{{AFX_DATA_INIT(CObjectExtraDescriptionView)
	m_keyword = _T("");
	m_description = _T("");
	//}}AFX_DATA_INIT

  m_extradescription = NULL;
  m_font = NULL;

}

CObjectExtraDescriptionView::~CObjectExtraDescriptionView()
{
  delete m_font;
}

#undef LOAD_VALUE
#define LOAD_VALUE(field, value)  \
  field = m_extradescription->value

#undef UNLOAD_VALUE
#define UNLOAD_VALUE(field, value)  \
  if (field != m_extradescription->value) bChanged = true; \
  m_extradescription->value = field

void CObjectExtraDescriptionView::DoDataExchange(CDataExchange* pDX)
{
bool bChanged = false;

  if (!pDX->m_bSaveAndValidate && m_extradescription)
    {
	  LOAD_VALUE (m_keyword, keyword);
	  LOAD_VALUE (m_description, description);
    }

	CFormView::DoDataExchange(pDX);

  if (pDX->m_bSaveAndValidate)
    {
    if (FixWrap (m_ctlDescription))
      {
      DDX_Text(pDX, IDC_DESCRIPTION, m_description);
      pDX->Fail();
      }
#ifdef SPELL_CHECKER

    // spell check the various edit controls
    if (App.m_bSpellCheckOK && 
        CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_CHECK_ON_VIEW))
      {
      if (CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_EXTRA_DESC))
        App.SpellCheck (this, &m_ctlDescription);
      }
#endif // SPELL_CHECKER

    }   // end of m_bSaveAndValidate

	//{{AFX_DATA_MAP(CObjectExtraDescriptionView)
	DDX_Control(pDX, IDC_DESCRIPTION, m_ctlDescription);
	DDX_Text(pDX, IDC_NAME, m_keyword);
	DDX_Text(pDX, IDC_DESCRIPTION, m_description);
	//}}AFX_DATA_MAP


  if (pDX->m_bSaveAndValidate && m_extradescription)
    {

    // tilde is a FATAL error - do not allow them to ignore it
    CheckForTilde (pDX, IDC_NAME, m_keyword);
    CheckForTilde (pDX, IDC_DESCRIPTION, m_description);

	  UNLOAD_VALUE (m_keyword, keyword);
	  UNLOAD_VALUE (m_description, description);
    m_extradescription->m_pTreeCtrl->SetItemText (m_extradescription->m_hdlTreeItem, m_extradescription->Summary ());

     if (bChanged)
       m_extradescription->m_pDoc->SetModifiedFlag ();
    }

}


BEGIN_MESSAGE_MAP(CObjectExtraDescriptionView, CFormView)
	//{{AFX_MSG_MAP(CObjectExtraDescriptionView)
	ON_BN_CLICKED(IDC_EDIT_DESCRIPTION, OnEditDescription)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CObjectExtraDescriptionView diagnostics

#ifdef _DEBUG
void CObjectExtraDescriptionView::AssertValid() const
{
	CFormView::AssertValid();
}

void CObjectExtraDescriptionView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CObjectExtraDescriptionView message handlers

void CObjectExtraDescriptionView::OnEditDescription() 
{
CEditDlg dlg;

	m_ctlDescription.GetWindowText (dlg.m_strEditText);

  dlg.m_bEndline = true;
  dlg.m_bSpellCheck = CHECK_BIT_NUMBER (App.m_SpellCheckOptions, SK_EXTRA_DESC);

  if (dlg.DoModal () != IDOK)
    return;
  
  m_ctlDescription.SetWindowText (dlg.m_strEditText);
	
}