summaryrefslogtreecommitdiff
path: root/engine/vgui_helpers.h
diff options
context:
space:
mode:
Diffstat (limited to 'engine/vgui_helpers.h')
-rw-r--r--engine/vgui_helpers.h76
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