mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-11 19:29:08 +00:00
1
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef VGUI_VPROFPANEL_H
|
||||
#define VGUI_VPROFPANEL_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include <vgui_controls/TreeViewListControl.h>
|
||||
#include <vgui_controls/Frame.h>
|
||||
#include <vgui/IScheme.h>
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Forward declarations
|
||||
//-----------------------------------------------------------------------------
|
||||
class CVProfNode;
|
||||
class CVProfile;
|
||||
|
||||
class CProfileHierarchyPanel : public vgui::CTreeViewListControl
|
||||
{
|
||||
DECLARE_CLASS_SIMPLE( CProfileHierarchyPanel, vgui::CTreeViewListControl );
|
||||
|
||||
public:
|
||||
|
||||
CProfileHierarchyPanel(vgui::Panel *parent, const char *panelName);
|
||||
~CProfileHierarchyPanel();
|
||||
|
||||
struct PanelEntry_t
|
||||
{
|
||||
PanelEntry_t() :
|
||||
label( 0 ),
|
||||
dataname( UTL_INVAL_SYMBOL )
|
||||
{
|
||||
}
|
||||
|
||||
vgui::Label *label;
|
||||
CUtlSymbol dataname;
|
||||
};
|
||||
|
||||
struct ColumnPanels_t
|
||||
{
|
||||
ColumnPanels_t();
|
||||
ColumnPanels_t( const ColumnPanels_t& src );
|
||||
void AddColumn( int index, char const *name, vgui::Label *label );
|
||||
void Refresh( KeyValues *kv );
|
||||
|
||||
int treeViewItem;
|
||||
CUtlVector< PanelEntry_t > m_Columns;
|
||||
};
|
||||
|
||||
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
|
||||
|
||||
virtual int AddItem( KeyValues *data, int parentItemIndex, ColumnPanels_t& columnPanels );
|
||||
virtual void ModifyItem( KeyValues *data, int itemIndex );
|
||||
virtual void SetItemColors( int id, const Color& fg, const Color& bg );
|
||||
virtual void SetItemColumnColors( int id, int col, const Color& fg, const Color& bg );
|
||||
|
||||
virtual void PerformLayout();
|
||||
|
||||
virtual void RemoveAll();
|
||||
|
||||
virtual void PostChildPaint();
|
||||
|
||||
virtual void ExpandItem(int itemIndex, bool bExpand);
|
||||
virtual bool IsItemExpanded( int itemIndex );
|
||||
|
||||
virtual KeyValues *GetItemData(int itemIndex);
|
||||
|
||||
public:
|
||||
|
||||
void HideAll();
|
||||
|
||||
|
||||
|
||||
static bool PanelsLessFunc( const ColumnPanels_t& lhs, const ColumnPanels_t& rhs )
|
||||
{
|
||||
return lhs.treeViewItem < rhs.treeViewItem;
|
||||
}
|
||||
|
||||
CUtlRBTree< ColumnPanels_t, int > m_Panels;
|
||||
|
||||
vgui::HFont m_itemFont;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
class CVProfPanel : public vgui::Frame
|
||||
{
|
||||
DECLARE_CLASS_SIMPLE( CVProfPanel, vgui::Frame );
|
||||
|
||||
public:
|
||||
CVProfPanel( vgui::Panel *pParent, const char *pElementName );
|
||||
~CVProfPanel();
|
||||
|
||||
void UpdateProfile( float filteredtime );
|
||||
|
||||
// Command handlers
|
||||
void UserCmd_ShowVProf( void );
|
||||
void UserCmd_HideVProf( void );
|
||||
|
||||
// Inherited from vgui::Frame
|
||||
virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
|
||||
virtual void Close();
|
||||
virtual void Paint();
|
||||
virtual void OnTick( void );
|
||||
virtual void OnCommand( const char *command );
|
||||
|
||||
void ExpandAll( void );
|
||||
void CollapseAll( void );
|
||||
void ExpandGroup( const char *pGroupName );
|
||||
void Reset();
|
||||
|
||||
protected:
|
||||
|
||||
virtual void PerformLayout();
|
||||
|
||||
private:
|
||||
MESSAGE_FUNC_PARAMS( OnTextChanged, "TextChanged", data );
|
||||
MESSAGE_FUNC_PTR( OnCheckButtonChecked, "CheckButtonChecked", panel );
|
||||
|
||||
private:
|
||||
void AddColumns( CProfileHierarchyPanel::ColumnPanels_t& cp );
|
||||
|
||||
void ExpandGroupRecursive( int nBudgetGroupID, CVProfNode *pNode );
|
||||
void FillTree( KeyValues *pKeyValues, CVProfNode *pNode, int parent );
|
||||
int UpdateVProfTreeEntry( KeyValues *pKeyValues, CVProfNode *pNode, int parent );
|
||||
|
||||
// Populates the budget group combo box
|
||||
void PopulateBudgetGroupComboBox();
|
||||
|
||||
private:
|
||||
int m_fShowVprofHeld;
|
||||
CProfileHierarchyPanel *m_pHierarchy;
|
||||
int m_RootItem;
|
||||
vgui::ComboBox *m_pVProfCategory;
|
||||
vgui::ComboBox *m_pVProfSort;
|
||||
vgui::CheckButton *m_pHierarchicalView;
|
||||
vgui::CheckButton *m_pVerbose;
|
||||
int m_nLastBudgetGroupCount;
|
||||
int m_nCurrentBudgetGroup;
|
||||
bool m_bHierarchicalView;
|
||||
|
||||
|
||||
vgui::Button *m_pStepForward;
|
||||
vgui::Button *m_pStepBack;
|
||||
vgui::Button *m_pGotoButton;
|
||||
vgui::Label *m_pPlaybackLabel;
|
||||
vgui::Button *m_pRedoSort;
|
||||
vgui::ScrollBar *m_pPlaybackScroll;
|
||||
|
||||
int m_iLastPlaybackTick;
|
||||
|
||||
CVProfile *m_pVProfile;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global accessor
|
||||
//-----------------------------------------------------------------------------
|
||||
CVProfPanel *GetVProfPanel();
|
||||
|
||||
#endif // VGUI_VPROFPANEL_H
|
||||
Reference in New Issue
Block a user