initial
This commit is contained in:
238
utils/hlfaceposer/cclookup.cpp
Normal file
238
utils/hlfaceposer/cclookup.cpp
Normal file
@@ -0,0 +1,238 @@
|
||||
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
#include "cbase.h"
|
||||
#include <commctrl.h>
|
||||
#include "mxtk/mx.h"
|
||||
#include "resource.h"
|
||||
#include "CCLookup.h"
|
||||
#include "mdlviewer.h"
|
||||
#include "addsoundentry.h"
|
||||
#include <vgui/ILocalize.h>
|
||||
|
||||
using namespace vgui;
|
||||
|
||||
static CCloseCaptionLookupParams g_Params;
|
||||
|
||||
static HFONT g_UnicodeFont = NULL;
|
||||
|
||||
static void InsertTextColumn( HWND listcontrol, int column, int width, char const *label )
|
||||
{
|
||||
LVCOLUMN col;
|
||||
memset( &col, 0, sizeof( col ) );
|
||||
|
||||
col.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH | LVCF_ORDER;
|
||||
col.iOrder = column;
|
||||
col.pszText = (char *)label;
|
||||
col.cchTextMax = 256;
|
||||
col.iSubItem = column;
|
||||
col.cx = width;
|
||||
|
||||
ListView_InsertColumn( listcontrol, column, &col );
|
||||
}
|
||||
|
||||
static void PopulateCloseCaptionTokenList( HWND wnd, CCloseCaptionLookupParams *params )
|
||||
{
|
||||
HWND control = GetDlgItem( wnd, IDC_CCTOKENLIST );
|
||||
if ( !control )
|
||||
return;
|
||||
|
||||
InsertTextColumn( control, 0, 200, "CloseCaption Token" );
|
||||
InsertTextColumn( control, 1, 800, "Text" );
|
||||
|
||||
|
||||
ListView_DeleteAllItems( control );
|
||||
|
||||
SendMessage( control, WM_SETFONT, (WPARAM)g_UnicodeFont, MAKELPARAM (TRUE, 0) );
|
||||
|
||||
StringIndex_t i = g_pLocalize->GetFirstStringIndex();
|
||||
int saveSelected = -1;
|
||||
|
||||
while ( INVALID_STRING_INDEX != i )
|
||||
{
|
||||
char const *name = g_pLocalize->GetNameByIndex( i );
|
||||
|
||||
LV_ITEMW lvItem;
|
||||
memset( &lvItem, 0, sizeof( lvItem ) );
|
||||
lvItem.iItem = ListView_GetItemCount( control );
|
||||
lvItem.mask = LVIF_TEXT | LVIF_PARAM;
|
||||
lvItem.lParam = (LPARAM)i;
|
||||
|
||||
wchar_t label[ 256 ];
|
||||
g_pLocalize->ConvertANSIToUnicode( name, label, sizeof( label ) );
|
||||
|
||||
lvItem.pszText = label;
|
||||
lvItem.cchTextMax = 256;
|
||||
|
||||
SendMessage( control, LVM_INSERTITEMW, 0, (LPARAM)(const LV_ITEMW FAR*)(&lvItem));
|
||||
|
||||
lvItem.mask = LVIF_TEXT;
|
||||
lvItem.iSubItem = 1;
|
||||
|
||||
wchar_t *value = g_pLocalize->GetValueByIndex( i );
|
||||
|
||||
lvItem.pszText = (wchar_t *)value;
|
||||
lvItem.cchTextMax = 1024;
|
||||
|
||||
SendMessage( control, LVM_SETITEMW, 0, (LPARAM)(const LV_ITEMW FAR*)(&lvItem));
|
||||
|
||||
if ( !Q_stricmp( name, params->m_szCCToken ) )
|
||||
{
|
||||
ListView_SetItemState( control, lvItem.iItem, LVIS_SELECTED, LVIS_STATEIMAGEMASK );
|
||||
saveSelected = lvItem.iItem;
|
||||
}
|
||||
i = g_pLocalize->GetNextStringIndex( i );
|
||||
}
|
||||
|
||||
if ( saveSelected != -1 )
|
||||
{
|
||||
ListView_EnsureVisible(control, saveSelected, FALSE );
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : hwndDlg -
|
||||
// uMsg -
|
||||
// wParam -
|
||||
// lParam -
|
||||
// Output : static BOOL CALLBACK
|
||||
//-----------------------------------------------------------------------------
|
||||
static BOOL CALLBACK CloseCaptionLookupDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
// Insert code here to put the string (to find and replace with)
|
||||
// into the edit controls.
|
||||
// ...
|
||||
{
|
||||
g_Params.PositionSelf( hwndDlg );
|
||||
|
||||
HWND control = GetDlgItem( hwndDlg, IDC_CCTOKENLIST );
|
||||
DWORD exStyle = GetWindowLong( control, GWL_EXSTYLE );
|
||||
exStyle |= LVS_EX_FULLROWSELECT;
|
||||
SetWindowLong( control, GWL_EXSTYLE, exStyle );
|
||||
|
||||
PopulateCloseCaptionTokenList( hwndDlg, &g_Params );
|
||||
|
||||
SetWindowText( hwndDlg, g_Params.m_szDialogTitle );
|
||||
|
||||
SetDlgItemText( hwndDlg, IDC_CCTOKEN, g_Params.m_szCCToken );
|
||||
|
||||
SetFocus( GetDlgItem( hwndDlg, IDC_CCTOKENLIST ) );
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDOK:
|
||||
{
|
||||
/*
|
||||
//int selindex = SendMessage( GetDlgItem( hwndDlg, IDC_CCTOKENLIST ), LB_GETCURSEL, 0, 0 );
|
||||
if ( selindex == LB_ERR )
|
||||
{
|
||||
mxMessageBox( NULL, "You must select an entry from the list", g_appTitle, MB_OK );
|
||||
return TRUE;
|
||||
}
|
||||
*/
|
||||
|
||||
SendMessage( GetDlgItem( hwndDlg, IDC_CCTOKEN ), WM_GETTEXT, (WPARAM)sizeof( g_Params.m_szCCToken ), (LPARAM)g_Params.m_szCCToken );
|
||||
|
||||
EndDialog( hwndDlg, 1 );
|
||||
}
|
||||
break;
|
||||
case IDCANCEL:
|
||||
EndDialog( hwndDlg, 0 );
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
if ( wParam == IDC_CCTOKENLIST )
|
||||
{
|
||||
NMHDR *hdr = ( NMHDR * )lParam;
|
||||
if ( hdr->code == LVN_ITEMCHANGED )
|
||||
{
|
||||
HWND control = GetDlgItem( hwndDlg, IDC_CCTOKENLIST );
|
||||
|
||||
NM_LISTVIEW *nmlv = ( NM_LISTVIEW * )lParam;
|
||||
|
||||
int item = nmlv->iItem;
|
||||
|
||||
if ( item >= 0 )
|
||||
{
|
||||
// look up the lparam value
|
||||
LVITEM lvi;
|
||||
memset( &lvi, 0, sizeof( lvi ) );
|
||||
lvi.mask = LVIF_PARAM;
|
||||
lvi.iItem = item;
|
||||
|
||||
if ( ListView_GetItem( control, &lvi ) )
|
||||
{
|
||||
char const *name = g_pLocalize->GetNameByIndex( lvi.lParam );
|
||||
if ( name )
|
||||
{
|
||||
Q_strncpy( g_Params.m_szCCToken, name, sizeof( g_Params.m_szCCToken ) );
|
||||
SendMessage( GetDlgItem( hwndDlg, IDC_CCTOKEN ), WM_SETTEXT, (WPARAM)sizeof( g_Params.m_szCCToken ), (LPARAM)g_Params.m_szCCToken );
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
if ( hdr->code == NM_DBLCLK )
|
||||
{
|
||||
SendMessage( GetDlgItem( hwndDlg, IDC_CCTOKEN ), WM_GETTEXT, (WPARAM)sizeof( g_Params.m_szCCToken ), (LPARAM)g_Params.m_szCCToken );
|
||||
EndDialog( hwndDlg, 1 );
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : *view -
|
||||
// *actor -
|
||||
// Output : int
|
||||
//-----------------------------------------------------------------------------
|
||||
int CloseCaptionLookup( CCloseCaptionLookupParams *params )
|
||||
{
|
||||
g_Params = *params;
|
||||
|
||||
g_UnicodeFont = CreateFont(
|
||||
-10,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
FW_NORMAL,
|
||||
FALSE,
|
||||
FALSE,
|
||||
FALSE,
|
||||
ANSI_CHARSET,
|
||||
OUT_TT_PRECIS,
|
||||
CLIP_DEFAULT_PRECIS,
|
||||
ANTIALIASED_QUALITY,
|
||||
DEFAULT_PITCH,
|
||||
"Tahoma" );
|
||||
|
||||
int retval = DialogBox( (HINSTANCE)GetModuleHandle( 0 ),
|
||||
MAKEINTRESOURCE( IDD_CCLOOKUP ),
|
||||
(HWND)g_MDLViewer->getHandle(),
|
||||
(DLGPROC)CloseCaptionLookupDialogProc );
|
||||
|
||||
DeleteObject( g_UnicodeFont );
|
||||
g_UnicodeFont = NULL;
|
||||
|
||||
*params = g_Params;
|
||||
|
||||
return retval;
|
||||
}
|
||||
Reference in New Issue
Block a user