//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //===========================================================================// #ifndef ENTITYREPORTPANEL_H #define ENTITYREPORTPANEL_H #ifdef _WIN32 #pragma once #endif #include "vgui_controls/editablepanel.h" #include "tier1/utlstring.h" //----------------------------------------------------------------------------- // Forward declarations //----------------------------------------------------------------------------- class CFoundryDoc; class CDmeVMFEntity; namespace vgui { class ComboBox; class Button; class TextEntry; class ListPanel; class CheckButton; class RadioButton; } //----------------------------------------------------------------------------- // Panel that shows all entities in the level //----------------------------------------------------------------------------- class CEntityReportPanel : public vgui::EditablePanel { DECLARE_CLASS_SIMPLE( CEntityReportPanel, vgui::EditablePanel ); public: CEntityReportPanel( CFoundryDoc *pDoc, vgui::Panel* pParent, const char *pName ); // standard constructor // Inherited from Panel virtual void OnTick(); virtual void OnCommand( const char *pCommand ); private: enum FilterType_t { FILTER_SHOW_EVERYTHING = 0, FILTER_SHOW_POINT_ENTITIES = 1, FILTER_SHOW_BRUSH_ENTITIES = 2 }; // Messages handled MESSAGE_FUNC_PARAMS( OnTextChanged, "TextChanged", kv ); MESSAGE_FUNC_PARAMS( OnButtonToggled, "ButtonToggled", kv ); MESSAGE_FUNC( OnDeleteEntities, "DeleteEntities" ); // FIXME: Necessary because SetSelected doesn't cause a ButtonToggled message to trigger MESSAGE_FUNC_PARAMS( OnCheckButtonChecked, "CheckButtonChecked", kv ); MESSAGE_FUNC_PARAMS( OnRadioButtonChecked, "RadioButtonChecked", kv ); // Methods related to filtering void OnFilterByHidden( bool bState ); void OnFilterByKeyvalue( bool bState ); void OnFilterByClass( bool bState ); void OnFilterKeyValueExact( bool bState ); void OnFilterByType( FilterType_t type ); void OnChangeFilterkey( const char *pText ); void OnChangeFiltervalue( const char *pText ); void OnChangeFilterclass( const char *pText ); // Methods related to updating the listpanel void UpdateEntityList(); bool ShouldAddEntityToList( CDmeVMFEntity *pEntity ); // Methods related to saving settings void ReadSettingsFromRegistry(); void SaveSettingsToRegistry(); // Call this when our settings are dirty void MarkDirty( bool bFilterDirty ); // Shows the most recent selected object in properties window void OnProperties(); CFoundryDoc *m_pDoc; FilterType_t m_iFilterByType; bool m_bFilterByClass; bool m_bFilterByHidden; bool m_bFilterByKeyvalue; bool m_bExact; bool m_bSuppressEntityListUpdate; CUtlString m_szFilterKey; CUtlString m_szFilterValue; CUtlString m_szFilterClass; bool m_bFilterTextChanged; float m_flFilterTime; bool m_bRegistrySettingsChanged; float m_flRegistryTime; vgui::CheckButton *m_pExact; vgui::ComboBox *m_pFilterClass; vgui::CheckButton *m_pFilterByClass; vgui::ListPanel *m_pEntities; vgui::TextEntry *m_pFilterKey; vgui::TextEntry *m_pFilterValue; vgui::CheckButton *m_pFilterByKeyvalue; vgui::CheckButton *m_pFilterByHidden; vgui::RadioButton *m_pFilterEverything; vgui::RadioButton *m_pFilterPointEntities; vgui::RadioButton *m_pFilterBrushModels; }; #endif // ENTITYREPORTPANEL_H