//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #include "cbase.h" #include "resource.h" #include "MultipleRequest.h" #include "workspacemanager.h" static CMultipleParams g_Params; //----------------------------------------------------------------------------- // Purpose: // Input : hwndDlg - // uMsg - // wParam - // lParam - // Output : static BOOL CALLBACK //----------------------------------------------------------------------------- static BOOL CALLBACK MultipleRequestDialogProc( 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 ); SetDlgItemText( hwndDlg, IDC_PROMPT, g_Params.m_szPrompt ); SetWindowText( hwndDlg, g_Params.m_szDialogTitle ); SetFocus( GetDlgItem( hwndDlg, IDC_INPUTSTRING ) ); SendMessage( GetDlgItem( hwndDlg, IDC_INPUTSTRING ), EM_SETSEL, 0, MAKELONG(0, 0xffff) ); } return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_YESALL: EndDialog( hwndDlg, CMultipleParams::YES_ALL ); break; case IDC_YES: EndDialog( hwndDlg, CMultipleParams::YES ); break; case IDC_NOSINGLE: EndDialog( hwndDlg, CMultipleParams::NO ); break; case IDC_NOALL: EndDialog( hwndDlg, CMultipleParams::NO_ALL ); break; //case IDCANCEL: // EndDialog( hwndDlg, CMultipleParams::CANCEL ); // break; } return TRUE; } return FALSE; } static int g_MRContext = 1; static int g_MRCurrentContext; static int g_MRLastResult = -1; void MultipleRequestChangeContext() { ++g_MRContext; } //----------------------------------------------------------------------------- // Purpose: // Input : *view - // *actor - // Output : int //----------------------------------------------------------------------------- int _MultipleRequest( CMultipleParams *params ) { int retval = -1; if ( g_MRCurrentContext == g_MRContext && g_MRLastResult != -1 ) { if ( g_MRLastResult == CMultipleParams::YES_ALL ) { retval = 0; } if ( g_MRLastResult == CMultipleParams::NO_ALL ) { retval = 1; } } if ( retval == -1 ) { g_Params = *params; retval = DialogBox( (HINSTANCE)GetModuleHandle( 0 ), MAKEINTRESOURCE( IDD_MULTIPLEQUESTION ), (HWND)GetWorkspaceManager()->getHandle(), (DLGPROC)MultipleRequestDialogProc ); *params = g_Params; } g_MRCurrentContext = g_MRContext; g_MRLastResult = retval; switch ( retval ) { case CMultipleParams::YES_ALL: case CMultipleParams::YES: return 0; case CMultipleParams::NO_ALL: case CMultipleParams::NO: return 1; default: case CMultipleParams::CANCEL: return 2; } Assert( 0 ); return 1; } int MultipleRequest( char const *prompt ) { CMultipleParams params; memset( ¶ms, 0, sizeof( params ) ); Q_strcpy( params.m_szDialogTitle, g_appTitle ); Q_strncpy( params.m_szPrompt, prompt, sizeof( params.m_szPrompt ) ); return _MultipleRequest( ¶ms ); }