You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.7 KiB
91 lines
2.7 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
//=============================================================================
|
||
|
|
||
|
#ifndef ATTRIBUTEWIDGETFACTORY_H
|
||
|
#define ATTRIBUTEWIDGETFACTORY_H
|
||
|
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include "tier0/platform.h"
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Forward declarations
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CDmElement;
|
||
|
class CMovieDoc;
|
||
|
class IDmNotify;
|
||
|
class CDmeEditorAttributeInfo;
|
||
|
class CDmeEditorTypeDictionary;
|
||
|
class CDmAttribute;
|
||
|
|
||
|
namespace vgui
|
||
|
{
|
||
|
class EditablePanel;
|
||
|
class Panel;
|
||
|
}
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Info about the attribute being edited, and how the editor should look
|
||
|
//-----------------------------------------------------------------------------
|
||
|
struct AttributeWidgetInfo_t
|
||
|
{
|
||
|
AttributeWidgetInfo_t()
|
||
|
{
|
||
|
m_nArrayIndex = -1;
|
||
|
}
|
||
|
|
||
|
CDmElement *m_pElement;
|
||
|
const char *m_pAttributeName;
|
||
|
int m_nArrayIndex;
|
||
|
CDmeEditorTypeDictionary *m_pEditorTypeDictionary;
|
||
|
CDmeEditorAttributeInfo *m_pEditorInfo;
|
||
|
|
||
|
IDmNotify *m_pNotify;
|
||
|
bool m_bAutoApply;
|
||
|
bool m_bShowMemoryUsage;
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Interface used to create an attribute widget
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class IAttributeWidgetFactory
|
||
|
{
|
||
|
public:
|
||
|
virtual vgui::Panel *Create( vgui::Panel *pParent, const AttributeWidgetInfo_t &info ) = 0;
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Templatized class used to create widget factories
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class IAttributeWidgetFactoryList
|
||
|
{
|
||
|
public:
|
||
|
// Returns a named widget factory
|
||
|
virtual IAttributeWidgetFactory *GetWidgetFactory( const char *pWidgetName ) = 0;
|
||
|
|
||
|
// Returns a factory used to create widget for the attribute passed in
|
||
|
virtual IAttributeWidgetFactory *GetWidgetFactory( CDmElement *object, CDmAttribute *pAttribute, CDmeEditorTypeDictionary *pTypeDictionary ) = 0;
|
||
|
|
||
|
// Returns a factory used to create widgets for entries in an attribute array
|
||
|
virtual IAttributeWidgetFactory *GetArrayWidgetFactory( CDmElement *object, CDmAttribute *pAttribute, CDmeEditorTypeDictionary *pTypeDictionary ) = 0;
|
||
|
|
||
|
// Applies changes to a widget
|
||
|
virtual void ApplyChanges( vgui::Panel *pWidget, vgui::Panel *pSender = NULL ) = 0;
|
||
|
|
||
|
// Refreshes a widget when attributes change
|
||
|
virtual void Refresh( vgui::Panel *pWidget, vgui::Panel *pSender = NULL ) = 0;
|
||
|
};
|
||
|
|
||
|
extern IAttributeWidgetFactoryList *attributewidgetfactorylist;
|
||
|
|
||
|
|
||
|
#endif // ATTRIBUTEWIDGETFACTORY_H
|