summaryrefslogtreecommitdiff
path: root/utils/hlfaceposer/cclookup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/hlfaceposer/cclookup.cpp')
-rw-r--r--utils/hlfaceposer/cclookup.cpp240
1 files changed, 240 insertions, 0 deletions
diff --git a/utils/hlfaceposer/cclookup.cpp b/utils/hlfaceposer/cclookup.cpp
new file mode 100644
index 0000000..37f3fc3
--- /dev/null
+++ b/utils/hlfaceposer/cclookup.cpp
@@ -0,0 +1,240 @@
+//========= Copyright 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;
+
+extern vgui::ILocalize *g_pLocalize;
+
+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_LOCALIZE_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;
+} \ No newline at end of file