text: // DlgPgInfoAttachingSound.cpp : implementation file
  //
  
  #include "stdafx.h"
  
  #ifdef _DEBUG
  #undef new
  #define new DEBUG_NEW
  #undef THIS_FILE
  static char THIS_FILE[] = __FILE__;
  #endif
  
  /////////////////////////////////////////////////////////////////////////////
  // CDlgPgInfoAttachingSound property page
  
  IMPLEMENT_DYNCREATE(CDlgPgInfoAttachingSound, CPropertyPage)
  
  CDlgPgInfoAttachingSound::CDlgPgInfoAttachingSound() : CPropertyPage(CDlgPgInfoAttachingSound::IDD)
  {
  	//{{AFX_DATA_INIT(CDlgPgInfoAttachingSound)
  	m_strAttachedSound = _T("");
  	m_bLooping = FALSE;
  	m_bPlaying = FALSE;
  	m_fDelay = 0.0f;
  	//}}AFX_DATA_INIT
  }
  
  CDlgPgInfoAttachingSound::~CDlgPgInfoAttachingSound()
  {
  }
  
  void CDlgPgInfoAttachingSound::DoDataExchange(CDataExchange* pDX)
  {
  	CPropertyPage::DoDataExchange(pDX);
  
    CModelerView *pModelerView = CModelerView::GetActiveView();
    if(pModelerView == NULL) return;
    CModelerDoc* pDoc = pModelerView->GetDocument();  
    CAttachedSound &asSound = pDoc->m_emEditModel.edm_aasAttachedSounds[pModelerView->m_ModelObject.GetAnim()];
  
    // if transfering data from document to dialog
    if( !pDX->m_bSaveAndValidate)
    {
      m_strAttachedSound = asSound.as_fnAttachedSound;
      if( m_strAttachedSound == "")
        m_strAttachedSound = "<No sound>";
      m_bLooping = asSound.as_bLooping;
      m_bPlaying = asSound.as_bPlaying;
      m_fDelay = asSound.as_fDelay;
      // mark that the values have been updated to reflect the state of the view
      m_udAllValues.MarkUpdated();
    }
    
    //{{AFX_DATA_MAP(CDlgPgInfoAttachingSound)
  	DDX_Text(pDX, IDC_ATTACHING_SOUND_T, m_strAttachedSound);
  	DDX_Check(pDX, IDC_IS_LOOPING, m_bLooping);
  	DDX_Check(pDX, IDC_IS_PLAYING, m_bPlaying);
  	DDX_SkyFloat(pDX, IDC_SOUND_START_DELAY, m_fDelay);
  	//}}AFX_DATA_MAP
  
    // if transfering data from dialog to document
    if( pDX->m_bSaveAndValidate)
    {
      if( m_strAttachedSound != "<No sound>")
      {
        asSound.as_fnAttachedSound = CTString( m_strAttachedSound);
        asSound.as_bLooping = m_bLooping;
        asSound.as_bPlaying = m_bPlaying;
        asSound.as_fDelay = m_fDelay;
      
        pDoc->SetModifiedFlag();
        pDoc->UpdateAllViews( NULL);
      }
    }
  }
  
  
  BEGIN_MESSAGE_MAP(CDlgPgInfoAttachingSound, CPropertyPage)
  	//{{AFX_MSG_MAP(CDlgPgInfoAttachingSound)
  	ON_BN_CLICKED(IDC_BROWSE_SOUND, OnBrowseSound)
  	ON_BN_CLICKED(IDC_IS_LOOPING, OnIsLooping)
  	ON_BN_CLICKED(IDC_IS_PLAYING, OnIsPlaying)
  	ON_BN_CLICKED(IDC_ATTACHING_SOUND_NONE, OnAttachingSoundNone)
  	ON_EN_CHANGE(IDC_SOUND_START_DELAY, OnChangeSoundStartDelay)
  	//}}AFX_MSG_MAP
  END_MESSAGE_MAP()
  
  /////////////////////////////////////////////////////////////////////////////
  // CDlgPgInfoAttachingSound message handlers
  
  BOOL CDlgPgInfoAttachingSound::OnInitDialog() 
  {
  	CPropertyPage::OnInitDialog();
  	return TRUE;
  }
  
  BOOL CDlgPgInfoAttachingSound::OnIdle(LONG lCount)
  {
    return TRUE;   
  }
  
  void CDlgPgInfoAttachingSound::OnBrowseSound() 
  {
    CModelerView *pModelerView = CModelerView::GetActiveView();
    if( pModelerView == NULL) return;
    CModelerDoc* pDoc = pModelerView->GetDocument();  
    CAttachedSound &asSound = pDoc->m_emEditModel.edm_aasAttachedSounds[pModelerView->m_ModelObject.GetAnim()];
  
    // request sound
    CTFileName fnNewSound = _EngineGUI.FileRequester(
      "Select sound to attach to animation", 
      FILTER_WAV FILTER_END,
      "Sounds directory", "Sounds",
      asSound.as_fnAttachedSound.FileName()+asSound.as_fnAttachedSound.FileExt());
    if( fnNewSound == "") return;
  
    asSound.as_fnAttachedSound = fnNewSound;
    pDoc->SetModifiedFlag();
    pDoc->UpdateAllViews( NULL);
    UpdateData( FALSE);
  }
  
  void CDlgPgInfoAttachingSound::OnAttachingSoundNone() 
  {
    CModelerView *pModelerView = CModelerView::GetActiveView();
    if( pModelerView == NULL) return;
    CModelerDoc* pDoc = pModelerView->GetDocument();  
    CAttachedSound &asSound = pDoc->m_emEditModel.edm_aasAttachedSounds[pModelerView->m_ModelObject.GetAnim()];
    asSound.as_fnAttachedSound = CTString("");
    pDoc->SetModifiedFlag();
    pDoc->UpdateAllViews( NULL);
    UpdateData( FALSE);
  }
  
  void CDlgPgInfoAttachingSound::OnIsLooping() 
  {
    UpdateData( TRUE);
  }
  
  void CDlgPgInfoAttachingSound::OnIsPlaying() 
  {
    UpdateData( TRUE);
  }
  
  void CDlgPgInfoAttachingSound::OnChangeSoundStartDelay() 
  {
    UpdateData( TRUE);
  }
  