265 lines
7.9 KiB
C++
265 lines
7.9 KiB
C++
#include "Precomp.h"
|
|
#include "resource.h"
|
|
#include "global.h"
|
|
#include "PropPg.h"
|
|
//#include "SelTargt.h"
|
|
#include "FileParm.h"
|
|
#include "nmakwiz.h"
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Static member vars
|
|
/* static */ CDistributionSheet* CDistributionSheet::ms_pDistributionFileSheet = NULL;
|
|
/* static */ int CDistributionSheet::ms_MaxDistributionFilePathLen;
|
|
/* static */ TCHAR CDistributionSheet::ms_szOFNData[ MAX_PATH];
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Static member fns
|
|
|
|
BOOL APIENTRY CDistributionSheet::DlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) {
|
|
|
|
|
|
switch( message )
|
|
{
|
|
case WM_INITDIALOG:
|
|
{
|
|
PropSheet_SetWizButtons( GetParent( hDlg ), PSWIZB_NEXT | PSWIZB_BACK );
|
|
ms_pDistributionFileSheet->CreateFilePanes(hDlg);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
case WM_COMMAND:
|
|
{
|
|
switch (GET_WM_COMMAND_ID(wParam, lParam))
|
|
{
|
|
case IDC_BUTTON_BROWSE_DISTRIBUTION_FILE_PATH:
|
|
{
|
|
switch (GET_WM_COMMAND_CMD(wParam, lParam))
|
|
{
|
|
case BN_CLICKED:
|
|
{
|
|
ms_pDistributionFileSheet->m_pDistroFilePane->QueryFilePath( );
|
|
return TRUE;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
|
|
case IDC_BUTTON_BROWSE_AUTO_CONFIG_PATH:
|
|
{
|
|
switch (GET_WM_COMMAND_CMD(wParam, lParam))
|
|
{
|
|
case BN_CLICKED:
|
|
{
|
|
ms_pDistributionFileSheet->m_pAutoFilePane->QueryFilePath( );
|
|
return TRUE;
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
|
|
|
|
case WM_NOTIFY:
|
|
{
|
|
switch( reinterpret_cast< NMHDR FAR* >( lParam )->code )
|
|
{
|
|
case PSN_QUERYCANCEL:
|
|
SetWindowLong( hDlg, DWL_MSGRESULT, !VerifyExitMessageBox());
|
|
return TRUE;
|
|
|
|
case PSN_SETACTIVE:
|
|
g_hwndActive = hDlg;
|
|
PropSheet_SetWizButtons( GetParent( hDlg ), PSWIZB_NEXT | PSWIZB_BACK );
|
|
|
|
ms_pDistributionFileSheet->m_pDistroFilePane->Validate(FALSE);
|
|
|
|
ms_pDistributionFileSheet->m_pAutoFilePane->Validate(FALSE);
|
|
|
|
return TRUE;
|
|
|
|
case PSN_WIZNEXT:
|
|
// Distro
|
|
if( !ms_pDistributionFileSheet->m_pDistroFilePane->Validate(TRUE) )
|
|
{
|
|
SetWindowLong( hDlg, DWL_MSGRESULT, -1 );
|
|
return TRUE;
|
|
}
|
|
|
|
// AutoConf
|
|
if( !ms_pDistributionFileSheet->m_pAutoFilePane->Validate(TRUE) )
|
|
{
|
|
SetWindowLong( hDlg, DWL_MSGRESULT, -1 );
|
|
return TRUE;
|
|
}
|
|
|
|
if( ms_pDistributionFileSheet->m_pAutoFilePane->OptionEnabled() )
|
|
{
|
|
if( !Edit_GetTextLength(
|
|
GetDlgItem( ms_pDistributionFileSheet->m_pAutoFilePane->GetHwnd(),
|
|
IDC_AUTOCONF_URL ) ) )
|
|
{
|
|
NmrkMessageBox(MAKEINTRESOURCE(IDS_NEED_CONF_SERVER), NULL, MB_OK | MB_ICONWARNING );
|
|
SetWindowLong( hDlg, DWL_MSGRESULT, -1 );
|
|
return TRUE;
|
|
}
|
|
}
|
|
else if( ms_pDistributionFileSheet->m_bHadAutoConf )
|
|
{
|
|
if( IDNO == NmrkMessageBox(MAKEINTRESOURCE(IDS_TURNING_OFF_AUTOCONF), NULL, MB_YESNO | MB_ICONWARNING ) )
|
|
{
|
|
ms_pDistributionFileSheet->m_pAutoFilePane->SetCheck( IDC_CHECK_AUTOCONFIG_CLIENTS, TRUE );
|
|
SetWindowLong( hDlg, DWL_MSGRESULT, -1 );
|
|
return TRUE;
|
|
}
|
|
else
|
|
{
|
|
ms_pDistributionFileSheet->m_pAutoFilePane->SetEditData( IDC_EDIT_AUTO_CONFIG_FILE_PATH, ms_pDistributionFileSheet->m_szLastLocation );
|
|
ms_pDistributionFileSheet->m_bLastRoundUp = TRUE;
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
default:
|
|
break;
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Member fns
|
|
|
|
|
|
CDistributionSheet::CDistributionSheet( void )
|
|
: m_PropertySheetPage( MAKEINTRESOURCE( IDD_PROPPAGE_DEFAULT ),
|
|
( DLGPROC ) CDistributionSheet::DlgProc /*,
|
|
PSP_HASHELP */
|
|
),
|
|
m_pDistroFilePane( NULL ), m_pAutoFilePane( NULL ), m_bHadAutoConf( FALSE ), m_bLastRoundUp( FALSE ), m_szLastLocation( NULL )
|
|
{
|
|
ZeroMemory( &m_ofn, sizeof( OPENFILENAME ) );
|
|
ms_MaxDistributionFilePathLen = MAX_PATH;
|
|
ms_pDistributionFileSheet = this;
|
|
}
|
|
|
|
CDistributionSheet::~CDistributionSheet( void )
|
|
{
|
|
delete m_pDistroFilePane;
|
|
m_pDistroFilePane = NULL;
|
|
|
|
delete m_pAutoFilePane;
|
|
m_pAutoFilePane = NULL;
|
|
|
|
delete [] m_szLastLocation;
|
|
m_szLastLocation = NULL;
|
|
|
|
ms_pDistributionFileSheet = NULL;
|
|
}
|
|
|
|
void CDistributionSheet::CreateFilePanes(HWND hWndDlg)
|
|
{
|
|
RECT rect;
|
|
|
|
GetClientRect( hWndDlg, &rect );
|
|
int iWidth = rect.right - CPropertyDataWindow2::mcs_iLeft;
|
|
int iTop = CPropertyDataWindow2::mcs_iTop + CPropertyDataWindow2::mcs_iBorder;
|
|
|
|
// The top panel is being given 1/3 of the vertical space
|
|
int iHeight = MulDiv( rect.bottom, 1, 3 );
|
|
m_pDistroFilePane = new CFilePanePropWnd2(hWndDlg,
|
|
IDD_FILEPANE_DISTRO,
|
|
TEXT("IDD_FILEPANE_DISTRO"),
|
|
0,
|
|
CPropertyDataWindow2::mcs_iLeft,
|
|
iTop,
|
|
iWidth,
|
|
iHeight );
|
|
|
|
HWND hwndCond = GetDlgItem( m_pDistroFilePane->GetHwnd(), IDC_CHECK_CREATE_DISTRIBUTION );
|
|
m_pDistroFilePane->ConnectControlsToCheck( IDC_CHECK_CREATE_DISTRIBUTION, 2,
|
|
new CControlID( hwndCond,
|
|
IDC_CHECK_CREATE_DISTRIBUTION,
|
|
IDC_EDIT_DISTRIBUTION_FILE_PATH,
|
|
CControlID::EDIT ),
|
|
new CControlID( hwndCond,
|
|
IDC_CHECK_CREATE_DISTRIBUTION,
|
|
IDC_BUTTON_BROWSE_DISTRIBUTION_FILE_PATH,
|
|
// Note this is not a check but I don't think I care
|
|
CControlID::CHECK ) );
|
|
|
|
m_pDistroFilePane->SetFilePane( FALSE, IDC_EDIT_DISTRIBUTION_FILE_PATH,
|
|
IDC_CHECK_CREATE_DISTRIBUTION,
|
|
IDC_BUTTON_BROWSE_DISTRIBUTION_FILE_PATH,
|
|
TEXT( "Application (*.exe)" ),
|
|
TEXT( ".exe" ),
|
|
TEXT( "Nm3c.exe" ) );
|
|
|
|
m_pDistroFilePane->SetCheck( IDC_CHECK_CREATE_DISTRIBUTION, TRUE );
|
|
|
|
|
|
//iHeight = rect.bottom - iHeight;
|
|
m_pAutoFilePane = new CFilePanePropWnd2(hWndDlg,
|
|
IDD_FILEPANE_AUTOCONF,
|
|
TEXT("IDD_FILEPANE_AUTOCONF"),
|
|
0,
|
|
CPropertyDataWindow2::mcs_iLeft,
|
|
iHeight,
|
|
iWidth,
|
|
rect.bottom - iHeight );
|
|
|
|
hwndCond = GetDlgItem( m_pAutoFilePane->GetHwnd(), IDC_CHECK_AUTOCONFIG_CLIENTS );
|
|
m_pAutoFilePane->ConnectControlsToCheck( IDC_CHECK_AUTOCONFIG_CLIENTS, 3,
|
|
new CControlID( hwndCond,
|
|
IDC_CHECK_AUTOCONFIG_CLIENTS,
|
|
IDC_EDIT_AUTO_CONFIG_FILE_PATH,
|
|
CControlID::EDIT ),
|
|
new CControlID( hwndCond,
|
|
IDC_CHECK_AUTOCONFIG_CLIENTS,
|
|
IDC_AUTOCONF_URL,
|
|
CControlID::EDIT ),
|
|
new CControlID( hwndCond,
|
|
IDC_CHECK_AUTOCONFIG_CLIENTS,
|
|
IDC_BUTTON_BROWSE_AUTO_CONFIG_PATH,
|
|
// Note this is not a check but I don't think I care
|
|
CControlID::CHECK ) );
|
|
|
|
|
|
m_pAutoFilePane->SetFilePane( FALSE, IDC_EDIT_AUTO_CONFIG_FILE_PATH,
|
|
IDC_CHECK_AUTOCONFIG_CLIENTS,
|
|
IDC_BUTTON_BROWSE_AUTO_CONFIG_PATH,
|
|
TEXT( "Application Settings(*.inf)" ),
|
|
TEXT( ".inf" ),
|
|
TEXT( "nm3conf.inf" ) );
|
|
m_pAutoFilePane->SetCheck( IDC_CHECK_AUTOCONFIG_CLIENTS, FALSE );
|
|
|
|
if (g_pWiz->m_IntroSheet.GetFilePane()->OptionEnabled())
|
|
{
|
|
m_pDistroFilePane->ReadSettings();
|
|
m_pAutoFilePane->ReadSettings();
|
|
}
|
|
|
|
if (m_bHadAutoConf = m_pAutoFilePane->OptionEnabled())
|
|
{
|
|
m_szLastLocation = new TCHAR[ MAX_PATH ];
|
|
assert( m_szLastLocation );
|
|
m_pAutoFilePane->GetPathAndFile( m_szLastLocation );
|
|
}
|
|
|
|
m_pAutoFilePane->ShowWindow( TRUE );
|
|
m_pDistroFilePane->ShowWindow( TRUE );
|
|
|
|
}
|