172 lines
5.7 KiB
C++
172 lines
5.7 KiB
C++
/*
|
|
** Command & Conquer Renegade(tm)
|
|
** Copyright 2025 Electronic Arts Inc.
|
|
**
|
|
** This program is free software: you can redistribute it and/or modify
|
|
** it under the terms of the GNU General Public License as published by
|
|
** the Free Software Foundation, either version 3 of the License, or
|
|
** (at your option) any later version.
|
|
**
|
|
** This program is distributed in the hope that it will be useful,
|
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
** GNU General Public License for more details.
|
|
**
|
|
** You should have received a copy of the GNU General Public License
|
|
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/***********************************************************************************************
|
|
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
|
|
***********************************************************************************************
|
|
* *
|
|
* Project Name : LevelEdit *
|
|
* *
|
|
* $Archive:: /Commando/Code/Tools/LevelEdit/PresetPropSheet.cpp $*
|
|
* *
|
|
* Author:: Patrick Smith *
|
|
* *
|
|
* $Modtime:: 6/13/00 2:53p $*
|
|
* *
|
|
* $Revision:: 3 $*
|
|
* *
|
|
*---------------------------------------------------------------------------------------------*
|
|
* Functions: *
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
|
|
|
#include "stdafx.h"
|
|
#include "presetpropsheet.h"
|
|
#include "parameterinheritancedialog.h"
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Local constants
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
static const int BORDER_BUTTON_X = 6;
|
|
static const int BORDER_BUTTON_Y = 6;
|
|
static const int BORDER_TAB_X = 6;
|
|
static const int BORDER_TAB_Y = 6;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// OnInitDialog
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
BOOL
|
|
PresetPropSheetClass::OnInitDialog (void)
|
|
{
|
|
//
|
|
// Get the dimensions of the buttons
|
|
//
|
|
CRect button_rect;
|
|
::GetWindowRect (::GetDlgItem (m_hWnd, IDCANCEL), &button_rect);
|
|
ScreenToClient (&button_rect);
|
|
|
|
//
|
|
// Create a new button
|
|
//
|
|
::CreateWindow ( "BUTTON",
|
|
"OK && Propagate...",
|
|
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
|
|
0, 0,
|
|
(button_rect.Width () * 3) / 2, button_rect.Height (),
|
|
m_hWnd,
|
|
(HMENU)IDC_PROPAGATE,
|
|
::AfxGetInstanceHandle (),
|
|
NULL);
|
|
//
|
|
// Set the new button's font
|
|
//
|
|
SendDlgItemMessage (IDC_PROPAGATE, WM_SETFONT, ::SendMessage (m_hWnd, WM_GETFONT, 0, 0L));
|
|
|
|
//
|
|
// Disable the button if we are in read-only mode
|
|
//
|
|
if (Is_Read_Only ()) {
|
|
::EnableWindow (::GetDlgItem (m_hWnd, IDC_PROPAGATE), FALSE);
|
|
}
|
|
|
|
return EditorPropSheetClass::OnInitDialog ();
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Reposition_Buttons
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
void
|
|
PresetPropSheetClass::Reposition_Buttons (int cx, int cy)
|
|
{
|
|
//
|
|
// Get the dimensions of the buttons
|
|
//
|
|
CRect button_rect;
|
|
::GetWindowRect (::GetDlgItem (m_hWnd, IDCANCEL), &button_rect);
|
|
ScreenToClient (&button_rect);
|
|
|
|
//
|
|
// Reposition the OK and Cancel buttons
|
|
//
|
|
int first_width = ((button_rect.Width () * 3) / 2);
|
|
::SetWindowPos (::GetDlgItem (m_hWnd, IDC_PROPAGATE),
|
|
NULL,
|
|
(cx - first_width) - BORDER_BUTTON_X,
|
|
(cy - button_rect.Height ()) - BORDER_BUTTON_Y,
|
|
0,
|
|
0,
|
|
SWP_NOZORDER | SWP_NOSIZE);
|
|
|
|
::SetWindowPos (::GetDlgItem (m_hWnd, IDCANCEL),
|
|
NULL,
|
|
(cx - (button_rect.Width () + first_width)) - (BORDER_BUTTON_X * 3),
|
|
(cy - button_rect.Height ()) - BORDER_BUTTON_Y,
|
|
0,
|
|
0,
|
|
SWP_NOZORDER | SWP_NOSIZE);
|
|
|
|
::SetWindowPos (::GetDlgItem (m_hWnd, IDC_OK),
|
|
NULL,
|
|
(cx - ((button_rect.Width () * 2) + first_width)) - (BORDER_BUTTON_X * 4),
|
|
(cy - button_rect.Height ()) - BORDER_BUTTON_Y,
|
|
0,
|
|
0,
|
|
SWP_NOZORDER | SWP_NOSIZE);
|
|
return ;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// OnCommand
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
BOOL
|
|
PresetPropSheetClass::OnCommand (WPARAM wParam, LPARAM lParam)
|
|
{
|
|
//
|
|
// If the user clicked the propagate button, then save the
|
|
// preset changes and display the dialog
|
|
//
|
|
if ( LOWORD (wParam) == IDC_PROPAGATE &&
|
|
HIWORD (wParam) == BN_CLICKED)
|
|
{
|
|
if (Apply_Changes ()) {
|
|
|
|
//
|
|
// Show the propagation dialog
|
|
//
|
|
ParameterInheritanceDialogClass dialog (this);
|
|
dialog.Set_Preset (m_Preset);
|
|
dialog.DoModal ();
|
|
|
|
//
|
|
// Close the property sheet
|
|
//
|
|
EndDialog (IDOK);
|
|
}
|
|
}
|
|
|
|
return EditorPropSheetClass::OnCommand (wParam, lParam);
|
|
}
|