windows-nt/Source/XPSP1/NT/base/ntsetup/opktools/setupmgr/main/stdalone.c

222 lines
5.9 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
//----------------------------------------------------------------------------
//
// Copyright (c) 1997-1999 Microsoft Corporation
// All rights reserved.
//
// File Name:
// stdalone.c
//
// Description:
// This file contains the dlgproc for the IDD_STANDALONE page. This
// is a simple YES/NO flow page. If user says NO, we skip all of the
// pages that edit a distribution folder.
//
// Note the title of this page is "Distribution Folder", but internally,
// it is IDD_STANDALONE.
//
//----------------------------------------------------------------------------
#include "pch.h"
#include "resource.h"
VOID
OnInitStandAlone(HWND hwnd)
{
TCHAR *pText1, *pText2, *p;
int nBytes, len;
pText1 = MyLoadString(IDS_STANDALONE_TEXT1);
pText2 = MyLoadString(IDS_STANDALONE_TEXT2);
nBytes = ((len=lstrlen(pText1)) + lstrlen(pText2) + 1) * sizeof(TCHAR);
if ( (p = malloc(nBytes)) == NULL )
return;
lstrcpyn(p, pText1, (nBytes/sizeof(TCHAR)));
lstrcpyn(p+len, pText2, ((nBytes/sizeof(TCHAR))-len));
free(pText1);
free(pText2);
SetDlgItemText(hwnd, IDC_TEXT, p);
}
//----------------------------------------------------------------------------
//
// Function: OnSetActiveStandAlone
//
// Purpose: Called at SETACTIVE time. Init controls.
//
//----------------------------------------------------------------------------
VOID OnSetActiveStandAlone(HWND hwnd)
{
int nButtonId = WizGlobals.bStandAloneScript ? IDC_NODISTFOLD
: IDC_DODISTFOLD;
CheckRadioButton(hwnd,
IDC_DODISTFOLD,
IDC_MODDISTFOLD,
nButtonId);
WIZ_BUTTONS(hwnd, PSWIZB_BACK | PSWIZB_NEXT);
}
//----------------------------------------------------------------------------
//
// Function: OnRadioButtonStandAlone
//
// Purpose: Called when one of the radio buttons is pushed.
//
//----------------------------------------------------------------------------
VOID OnRadioButtonStandAlone(HWND hwnd, int nButtonId)
{
CheckRadioButton(hwnd,
IDC_DODISTFOLD,
IDC_MODDISTFOLD,
nButtonId);
}
//----------------------------------------------------------------------------
//
// Function: OnWizNextStandAlone
//
// Purpose: Called when NEXT button is pushed.
//
//----------------------------------------------------------------------------
BOOL OnWizNextStandAlone(HWND hwnd)
{
WizGlobals.bStandAloneScript = IsDlgButtonChecked( hwnd, IDC_NODISTFOLD );
WizGlobals.bCreateNewDistFolder = IsDlgButtonChecked(hwnd, IDC_DODISTFOLD);
//
// Warn the user that if they have already picked files that need a
// distribution folder but then here have chosen not to create a distrib
// folder.
//
if( WizGlobals.bStandAloneScript )
{
INT iCount = GetNameListSize( &GenSettings.LanguageGroups );
if( ( ( GenSettings.IeCustomizeMethod == IE_USE_BRANDING_FILE ) &&
GenSettings.szInsFile[0] != _T('\0') ) ||
( iCount != 0 ) )
{
INT iRet;
iRet = ReportErrorId( hwnd,
MSGTYPE_YESNO,
IDS_ERR_NEED_DIST_FOLDER_FOR_FILES );
if( iRet == IDNO )
{
return FALSE;
}
}
}
return TRUE;
}
//----------------------------------------------------------------------------
//
// Function: DlgStandAlonePage
//
// Purpose: This is the dialog procedure the IDD_ADVANCED1 page. It simply
// asks if the user wants to deal with advanced features or not.
//
//----------------------------------------------------------------------------
INT_PTR CALLBACK DlgStandAlonePage(
IN HWND hwnd,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam)
{
BOOL bStatus = TRUE;
switch (uMsg) {
case WM_INITDIALOG:
OnInitStandAlone(hwnd);
break;
case WM_COMMAND:
{
int nButtonId;
switch ( nButtonId = LOWORD(wParam) ) {
case IDC_DODISTFOLD:
case IDC_MODDISTFOLD:
case IDC_NODISTFOLD:
if ( HIWORD(wParam) == BN_CLICKED )
OnRadioButtonStandAlone(hwnd, LOWORD(wParam));
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_DIST_FLDR;
if ( WizGlobals.iProductInstall != PRODUCT_UNATTENDED_INSTALL )
WIZ_SKIP( hwnd );
else
OnSetActiveStandAlone(hwnd);
break;
case PSN_WIZBACK:
bStatus = FALSE;
break;
case PSN_WIZNEXT:
if ( !OnWizNextStandAlone(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;
}