You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
4.8 KiB
193 lines
4.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
#include "cbase.h" |
|
#include <mxtk/mx.h> |
|
#include <stdio.h> |
|
#include "resource.h" |
|
#include "WaveProperties.h" |
|
#include "SoundEmitterSystem/isoundemittersystembase.h" |
|
#include "soundentry.h" |
|
#include "cmdlib.h" |
|
#include "workspacemanager.h" |
|
#include "wavebrowser.h" |
|
#include "wavefile.h" |
|
#include "multiplerequest.h" |
|
|
|
static CWaveParams g_Params; |
|
|
|
static bool WaveLessFunc( const char *const& name1, const char *const& name2 ) |
|
{ |
|
if ( stricmp( name1, name2 ) < 0 ) |
|
return true; |
|
return false; |
|
} |
|
|
|
static void WaveProperties_OnOK( HWND hwndDlg ) |
|
{ |
|
// Gather info and make changes |
|
CWaveFile *item = g_Params.items[ 0 ]; |
|
char sentencetext[ 512 ]; |
|
|
|
GetDlgItemText( hwndDlg, IDC_SENTENCETEXT, sentencetext, sizeof( sentencetext ) ); |
|
|
|
bool voiceduck = SendMessage( GetDlgItem( hwndDlg, IDC_VOICEDUCK ), BM_GETCHECK, 0, 0 ) == BST_CHECKED ? true : false; |
|
|
|
MultipleRequestChangeContext(); |
|
|
|
// Update ducking on wav files |
|
item->SetVoiceDuck( voiceduck ); |
|
item->SetSentenceText( sentencetext ); |
|
|
|
// Repopulate things |
|
GetWorkspaceManager()->RefreshBrowsers(); |
|
} |
|
|
|
char *Q_stristr_slash( char const *pStr, char const *pSearch ); |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : hwndDlg - |
|
//----------------------------------------------------------------------------- |
|
static void WaveProperties_ExportSentence() |
|
{ |
|
int c = g_Params.items.Count(); |
|
if ( c <= 0 ) |
|
return; |
|
|
|
MultipleRequestChangeContext(); |
|
|
|
int i; |
|
for ( i = 0; i < c; i++ ) |
|
{ |
|
CWaveFile *item = g_Params.items[ i ]; |
|
Assert( item ); |
|
|
|
char relative[ 512 ]; |
|
item->GetPhonemeExportFile( relative, sizeof( relative ) ); |
|
if ( filesystem->FileExists( relative ) ) |
|
{ |
|
int retval = MultipleRequest( va( "Overwrite '%s'?", relative ) ); |
|
if ( retval != 0 ) |
|
continue; |
|
|
|
filesystem->RemoveFile( relative ); |
|
} |
|
|
|
item->ExportValveDataChunk( relative ); |
|
} |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : hwndDlg - |
|
//----------------------------------------------------------------------------- |
|
static void WaveProperties_ImportSentence() |
|
{ |
|
int c = g_Params.items.Count(); |
|
if ( c <= 0 ) |
|
return; |
|
|
|
int i; |
|
for ( i = 0; i < c; i++ ) |
|
{ |
|
CWaveFile *item = g_Params.items[ i ]; |
|
Assert( item ); |
|
|
|
char relative[ 512 ]; |
|
item->GetPhonemeExportFile( relative, sizeof( relative ) ); |
|
if ( filesystem->FileExists( relative ) ) |
|
{ |
|
item->ImportValveDataChunk( relative ); |
|
} |
|
} |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : hwndDlg - |
|
// Output : static |
|
//----------------------------------------------------------------------------- |
|
static void WaveProperties_InitSentenceData( HWND hwndDlg ) |
|
{ |
|
CWaveFile *item = g_Params.items[ 0 ]; |
|
|
|
SetDlgItemText( hwndDlg, IDC_WAVENAME, item->GetName() ); |
|
SetDlgItemText( hwndDlg, IDC_SENTENCETEXT, item->GetSentenceText() ); |
|
|
|
SendMessage( GetDlgItem( hwndDlg, IDC_VOICEDUCK ), BM_SETCHECK, |
|
( WPARAM ) item->GetVoiceDuck() ? BST_CHECKED : BST_UNCHECKED, |
|
( LPARAM )0 ); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : hwndDlg - |
|
// uMsg - |
|
// wParam - |
|
// lParam - |
|
// Output : static BOOL CALLBACK |
|
//----------------------------------------------------------------------------- |
|
static BOOL CALLBACK WavePropertiesDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) |
|
{ |
|
switch(uMsg) |
|
{ |
|
case WM_INITDIALOG: |
|
{ |
|
g_Params.PositionSelf( hwndDlg ); |
|
|
|
WaveProperties_InitSentenceData( hwndDlg ); |
|
|
|
SetWindowText( hwndDlg, g_Params.m_szDialogTitle ); |
|
|
|
SetFocus( GetDlgItem( hwndDlg, IDC_WAVENAME ) ); |
|
} |
|
return FALSE; |
|
|
|
case WM_COMMAND: |
|
switch (LOWORD(wParam)) |
|
{ |
|
case IDOK: |
|
{ |
|
WaveProperties_OnOK( hwndDlg ); |
|
|
|
EndDialog( hwndDlg, 1 ); |
|
} |
|
break; |
|
case IDCANCEL: |
|
EndDialog( hwndDlg, 0 ); |
|
break; |
|
case IDC_EXPORTSENTENCE: |
|
WaveProperties_ExportSentence(); |
|
break; |
|
case IDC_IMPORTSENTENCE: |
|
WaveProperties_ImportSentence(); |
|
WaveProperties_InitSentenceData( hwndDlg ); |
|
break; |
|
} |
|
return FALSE; |
|
} |
|
return FALSE; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : *view - |
|
// *actor - |
|
// Output : int |
|
//----------------------------------------------------------------------------- |
|
int WaveProperties( CWaveParams *params ) |
|
{ |
|
g_Params = *params; |
|
|
|
int retval = DialogBox( (HINSTANCE)GetModuleHandle( 0 ), |
|
MAKEINTRESOURCE( IDD_WAVEPROPERTIES ), |
|
(HWND)GetWorkspaceManager()->getHandle(), |
|
(DLGPROC)WavePropertiesDialogProc ); |
|
|
|
*params = g_Params; |
|
|
|
return retval; |
|
} |