//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ // //=============================================================================// #ifndef ATTRIBUTEASSETPICKERPANEL_H #define ATTRIBUTEASSETPICKERPANEL_H #ifdef _WIN32 #pragma once #endif #include "dme_controls/AttributeBasePickerPanel.h" //----------------------------------------------------------------------------- // Forward declarations //----------------------------------------------------------------------------- class CBaseAssetPickerFrame; //----------------------------------------------------------------------------- // CAttributeAssetPickerPanel //----------------------------------------------------------------------------- class CAttributeAssetPickerPanel : public CAttributeBasePickerPanel { DECLARE_CLASS_SIMPLE( CAttributeAssetPickerPanel, CAttributeBasePickerPanel ); public: CAttributeAssetPickerPanel( vgui::Panel *parent, const AttributeWidgetInfo_t &info ); ~CAttributeAssetPickerPanel(); private: virtual CBaseAssetPickerFrame *CreateAssetPickerFrame() = 0; MESSAGE_FUNC_PARAMS( OnAssetSelected, "AssetSelected", kv ); virtual void ShowPickerDialog(); }; //----------------------------------------------------------------------------- // Macro to quickly make new attribute types //----------------------------------------------------------------------------- #define DECLARE_ATTRIBUTE_ASSET_PICKER( _className ) \ class _className : public CAttributeAssetPickerPanel \ { \ DECLARE_CLASS_SIMPLE( _className, CAttributeAssetPickerPanel ); \ public: \ _className( vgui::Panel *parent, const AttributeWidgetInfo_t &info ) : \ BaseClass( parent, info ) {} \ private: \ virtual CBaseAssetPickerFrame *CreateAssetPickerFrame(); \ } #define IMPLEMENT_ATTRIBUTE_ASSET_PICKER( _className, _popupTitle, _assetType, _assetExt, _assetSubDir, _assetTextType ) \ CBaseAssetPickerFrame *_className::CreateAssetPickerFrame() \ { \ return new CAssetPickerFrame( this, _popupTitle, _assetType, _assetExt, _assetSubDir, _assetTextType ); \ } //----------------------------------------------------------------------------- // Macro to quickly make new attribute types //----------------------------------------------------------------------------- #define DECLARE_ATTRIBUTE_ASSET_PREVIEW_PICKER( _className ) \ class _className : public CAttributeAssetPickerPanel \ { \ DECLARE_CLASS_SIMPLE( _className, CAttributeAssetPickerPanel ); \ public: \ _className( vgui::Panel *parent, const AttributeWidgetInfo_t &info ) : \ BaseClass( parent, info ) {} \ private: \ virtual CBaseAssetPickerFrame *CreateAssetPickerFrame(); \ } #define IMPLEMENT_ATTRIBUTE_ASSET_PREVIEW_PICKER( _className, _pickerClassName, _popupTitle ) \ CBaseAssetPickerFrame *_className::CreateAssetPickerFrame() \ { \ return new _pickerClassName( this, _popupTitle ); \ } //----------------------------------------------------------------------------- // Assets //----------------------------------------------------------------------------- DECLARE_ATTRIBUTE_ASSET_PICKER( CAttributeBspPickerPanel ); DECLARE_ATTRIBUTE_ASSET_PREVIEW_PICKER( CAttributeVmtPickerPanel ); DECLARE_ATTRIBUTE_ASSET_PREVIEW_PICKER( CAttributeVtfPickerPanel ); #endif // ATTRIBUTEASSETPICKERPANEL_H