hl2_src-leak-2017/src/hammer/objectpage.h

100 lines
2.6 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef OBJECTPAGE_H
#define OBJECTPAGE_H
#ifdef _WIN32
#pragma once
#endif
#include "MapClass.h"
class CObjectPage : public CPropertyPage
{
DECLARE_DYNCREATE(CObjectPage)
public:
CObjectPage(void)
{
m_bMultiEdit = false;
m_bFirstTimeActive = true;
m_bHasUpdatedData = false;
}
CObjectPage(UINT nResourceID) : CPropertyPage(nResourceID)
{
m_bMultiEdit = false;
m_bFirstTimeActive = false;
}
~CObjectPage() {}
virtual void MarkDataDirty() {}
enum
{
LoadFirstData,
LoadData,
LoadFinished,
};
inline void SetObjectList(const CMapObjectList *pObjectList);
// Called by the sheet to update the selected objects. pData points to the object being added to the selection.
virtual void UpdateData( int Mode, PVOID pData, bool bCanEdit );
// Called by the sheet to store this page's data into the objects being edited.
virtual bool SaveData(void) { return(true); }
// Called by the sheet to let the dialog remember its state before a refresh of the data.
virtual void RememberState(void) {}
virtual void SetMultiEdit(bool b) { m_bMultiEdit = b; }
virtual void OnShowPropertySheet(BOOL bShow, UINT nStatus) {}
bool IsMultiEdit() { return m_bMultiEdit; }
CRuntimeClass * GetEditObjectRuntimeClass(void) { return m_pEditObjectRuntimeClass; }
PVOID GetEditObject();
BOOL OnSetActive(void);
BOOL OnApply(void) { return(TRUE); }
bool m_bFirstTimeActive; // Used to detect the first time this page becomes active.
bool m_bHasUpdatedData; // Used to prevent SaveData() called on pages that haven't had loaded the data yet.
// Set while we are changing the page layout.
static BOOL s_bRESTRUCTURING;
protected:
const CMapObjectList *m_pObjectList; // The list of objects that we are editing.
bool m_bMultiEdit; // Set to true if we are editing more than one object.
bool m_bCanEdit; // Set to true if this page allows for editing
CRuntimeClass *m_pEditObjectRuntimeClass; // The type of object that this page can edit.
static char *VALUE_DIFFERENT_STRING;
};
//-----------------------------------------------------------------------------
// Purpose: Sets the list of objects that this dialog should reflect.
// Input : pObjectList - List of objects (typically the selection list).
//-----------------------------------------------------------------------------
void CObjectPage::SetObjectList(const CMapObjectList *pObjectList)
{
Assert(pObjectList != NULL);
m_pObjectList = pObjectList;
}
#endif // OBJECTPAGE_H