//---------------------------------------------------------------------------- // // Copyright (c) 1997-1999 Microsoft Corporation // All rights reserved. // // File Name: // newedit.c // // Description: // This file has the dialog proc for the New Or Edit Script page. // //---------------------------------------------------------------------------- #include "pch.h" #include "resource.h" //---------------------------------------------------------------------------- // // Function: GreyUnGreyNewEdit // // Purpose: Greys/ungreys controls on this page. // //---------------------------------------------------------------------------- VOID GreyUnGreyNewEdit(HWND hwnd) { BOOL bUnGrey = IsDlgButtonChecked(hwnd, IDC_EDITSCRIPT); EnableWindow(GetDlgItem(hwnd, IDT_SCRIPTNAME), bUnGrey); EnableWindow(GetDlgItem(hwnd, IDC_BROWSE), bUnGrey); EnableWindow(GetDlgItem(hwnd, IDC_GREYTEXT), bUnGrey); } //---------------------------------------------------------------------------- // // Function: OnEditOrNewInitDialog // // Purpose: // // Arguments: IN HWND hwnd - handle to the dialog box // // Returns: VOID // //---------------------------------------------------------------------------- VOID OnEditOrNewInitDialog( IN HWND hwnd ) { // // If they specifed an answer file on the command line, then pre-fill // this page with it // if( lstrcmp( FixedGlobals.ScriptName, _T("") ) != 0 ) { FixedGlobals.iLoadType = LOAD_FROM_ANSWER_FILE; } } //---------------------------------------------------------------------------- // // Function: OnSetActiveNewOrEdit // // Purpose: Called at SETACTIVE time. Fill in the controls. // //---------------------------------------------------------------------------- VOID OnSetActiveNewOrEdit(HWND hwnd) { int nButtonId = IDC_NEWSCRIPT; // // Map the current load type to a radio button // switch ( FixedGlobals.iLoadType ) { case LOAD_UNDEFINED: case LOAD_NEWSCRIPT_DEFAULTS: nButtonId = IDC_NEWSCRIPT; break; case LOAD_FROM_ANSWER_FILE: nButtonId = IDC_EDITSCRIPT; SetWindowText( GetDlgItem( hwnd, IDT_SCRIPTNAME ), FixedGlobals.ScriptName ); break; default: AssertMsg(FALSE, "Bad case OnSetActiveNewEdit"); break; } CheckRadioButton(hwnd, IDC_NEWSCRIPT, IDC_EDITSCRIPT, nButtonId); GreyUnGreyNewEdit(hwnd); PropSheet_SetWizButtons(GetParent(hwnd), PSWIZB_BACK | PSWIZB_NEXT); } //---------------------------------------------------------------------------- // // Function: OnRadioButtonNewOrEdit // // Purpose: Called when a radio button is pushed. Update // FixedGlobals.bEditScript & Grey/ungrey controls. // //---------------------------------------------------------------------------- VOID OnRadioButtonNewOrEdit(HWND hwnd, int nButtonId) { CheckRadioButton(hwnd, IDC_NEWSCRIPT, IDC_EDITSCRIPT, nButtonId); GreyUnGreyNewEdit(hwnd); } //---------------------------------------------------------------------------- // // Function: OnBrowseNewOrEdit // // Purpose: Called when the browse button is pushed. // //---------------------------------------------------------------------------- VOID OnBrowseNewOrEdit(HWND hwnd) { GetAnswerFileName(hwnd, FixedGlobals.ScriptName, FALSE); SendDlgItemMessage(hwnd, IDT_SCRIPTNAME, WM_SETTEXT, (WPARAM) MAX_PATH, (LPARAM) FixedGlobals.ScriptName); } //---------------------------------------------------------------------------- // // Function: OnWizNextNewOrEdit // // Purpose: Called when the Next button is pushed. Retrieve the settings // of the controls and validate. // //---------------------------------------------------------------------------- BOOL OnWizNextNewOrEdit(HWND hwnd) { BOOL bNewScript; BOOL bReturn = TRUE; LOAD_TYPES NewLoadType; // // Figure out where the user wants to load answers from // if ( IsDlgButtonChecked(hwnd, IDC_NEWSCRIPT) ) { NewLoadType = LOAD_NEWSCRIPT_DEFAULTS; bNewScript = TRUE; } else { NewLoadType = LOAD_FROM_ANSWER_FILE; bNewScript = FALSE; } // // If we're loading from an answer file, retrieve the filename. // if ( NewLoadType == LOAD_FROM_ANSWER_FILE ) { SendDlgItemMessage(hwnd, IDT_SCRIPTNAME, WM_GETTEXT, (WPARAM) MAX_PATH, (LPARAM) FixedGlobals.ScriptName); MyGetFullPath(FixedGlobals.ScriptName); if ( FixedGlobals.ScriptName[0] == _T('\0') ) { ReportErrorId(hwnd, MSGTYPE_ERR, IDS_ERR_ENTER_FILENAME); bReturn = FALSE; } if( bReturn ) { INT nStrLen; TCHAR *pFileExtension; lstrcpyn( FixedGlobals.UdfFileName, FixedGlobals.ScriptName, AS(FixedGlobals.UdfFileName) ); nStrLen = lstrlen( FixedGlobals.UdfFileName ); pFileExtension = FixedGlobals.UdfFileName + ( nStrLen - 3 ); lstrcpyn( pFileExtension, _T("udf"), AS(FixedGlobals.UdfFileName)-nStrLen+3); } } // // Load the answers // if ( bReturn ) { if ( ! LoadAllAnswers(hwnd, NewLoadType) ) { bReturn = FALSE; } } FixedGlobals.iLoadType = NewLoadType; WizGlobals.bNewScript = bNewScript; return ( bReturn ); } //---------------------------------------------------------------------------- // // Function: DlgEditOrNewPage // // Purpose: Dialog procedure for the edit or new script page. // //---------------------------------------------------------------------------- INT_PTR CALLBACK DlgEditOrNewPage( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam) { BOOL bStatus = TRUE; switch(uMsg) { case WM_INITDIALOG: OnEditOrNewInitDialog( hwnd ); break; case WM_COMMAND: { int nButtonId=LOWORD(wParam); switch ( nButtonId ) { case IDC_NEWSCRIPT: case IDC_EDITSCRIPT: if ( HIWORD(wParam) == BN_CLICKED ) OnRadioButtonNewOrEdit(hwnd, nButtonId); break; case IDC_BROWSE: if ( HIWORD(wParam) == BN_CLICKED ) OnBrowseNewOrEdit(hwnd); break; default: bStatus = FALSE; break; } } break; case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR)lParam; switch( pnmh->code ) { case PSN_QUERYCANCEL: WIZ_CANCEL(hwnd); break; case PSN_SETACTIVE: g_App.dwCurrentHelp = IDH_ANSW_FILE; // Set this flag so we don't get a prompt when user wants to cancel // SET_FLAG(OPK_EXIT, TRUE); SET_FLAG(OPK_CREATED, FALSE); WIZ_BUTTONS(hwnd, PSWIZB_BACK | PSWIZB_NEXT); OnSetActiveNewOrEdit(hwnd); break; case PSN_WIZBACK: bStatus = FALSE; break; case PSN_WIZNEXT: if ( !OnWizNextNewOrEdit(hwnd) ) WIZ_FAIL(hwnd); else bStatus = FALSE; break; case PSN_HELP: WIZ_HELP(); break; default: bStatus = FALSE; break; } } break; default: bStatus = FALSE; break; } return bStatus; }