diff options
Diffstat (limited to 'engine/vgui_helpers.h')
| -rw-r--r-- | engine/vgui_helpers.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/engine/vgui_helpers.h b/engine/vgui_helpers.h new file mode 100644 index 0000000..c86fb84 --- /dev/null +++ b/engine/vgui_helpers.h @@ -0,0 +1,76 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef VGUI_HELPERS_H +#define VGUI_HELPERS_H +#ifdef _WIN32 +#pragma once +#endif + + +#include <vgui_controls/TreeView.h> +#include <vgui_controls/CheckButton.h> + + +class KeyValues; +class ConVar; + + +// This control keeps a ConVar's value updated with a CheckButton's value. +class CConVarCheckButton : public vgui::CheckButton +{ +public: + + typedef vgui::CheckButton BaseClass; + + + CConVarCheckButton( vgui::Panel *parent, const char *panelName, const char *text ); + + // Call this to initialize it with a cvar. The CheckButton will be set to the current + // value of the ConVar. + void SetConVar( ConVar *pVar ); + + virtual void SetSelected( bool state ); + + +public: + + ConVar *m_pConVar; +}; + + + + +// Return true if the state was changed at all (in any way that would require an InvalidateLayout on the control). +typedef bool (*UpdateItemStateFn)( + vgui::TreeView *pTree, + int iChildItemId, + KeyValues *pSub ); + + +// This function takes a bunch of KeyValues entries and incrementally updates +// a tree control. This can be a lot more efficient than clearing the whole tree +// control and re-adding all the elements if most of the elements don't usually change. +// +// NOTE: Only KeyValues nodes with a string named "Text" will be treated as items +// that should be added to the tree. +// +// If iRoot is -1, then it uses GetRootItemIndex(). +// +// Returns true if any elements were added or changed. +bool IncrementalUpdateTree( + vgui::TreeView *pTree, + KeyValues *pValues, + UpdateItemStateFn fn, + int iRoot = -1 + ); + + +// Copy the contents of the list panel to the clipboard in tab-delimited form for Excel. +void CopyListPanelToClipboard( vgui::ListPanel *pListPanel ); + + +#endif // VGUI_HELPERS_H |