Panel

From Valve Developer Community
Revision as of 12:23, 2 August 2011 by Artfunkel (talk | contribs)
Jump to navigation Jump to search

vgui::Panel is the base class of all VGUI elements. It is a rectangle which covers an area of the screen and can draw itself, handle events, and host children.

Functions

General

SetVisible(bool)
bool IsVisible()
bool IsFullyVisible()
Invisible panels and their children are not drawn or updated and do not receive input messages. IsFullyVisible() checks parent panels for visibility too.
SetEnabled(bool)
IsEnabled()
Disabel panels do not receive input and are often drawn with muted colours to indicate this.
OnThink()
Called every frame before painting if the panel is visible.
Todo: What about Think()? Is it obsolete? Does it run even if the panel isn't visible?
void OnTick()
Called at regular intervals if ivgui()->AddTickSignal() is called.

Painting

A panel is drawn by its "paint" functions. PaintBackground() and Paint() are enabled by default.

PaintBackground()
SetPaintBackgroundEnabled(bool)
Draws the background of the panel.
Paint()
SetPaintEnabled(bool)
Draws the contents of the panel.
Confirm:Does not draw children.
PaintBorder()
SetPaintBorderEnabled(bool)
SetBorder(IBorder *border)
IBorder *GetBorder()
Paints a border around the panel. SetBorder() must be called before SetPaintBorderEnabled().
  • Get an IBorder from IScheme::GetBorder() in ApplySchemeSettings().
  • See swarm/resource/sourcescheme.res for examples of border definitions.
PostChildPaint()
SetPostChildPaintEnabled(bool)
Performs arbitrary drawing after the panel's children have been painted (i.e. above them).
SetSkipChildDuringPainting(Panel *child)
Prevents a child from drawing,
Confirm:without stopping it from thinking
.
SetAlpha(int)
Sets the alpha of this panel and its children panels. 0 is invisible, 255 is opaque.

Hierarchy

Each panel has one parent and can have many children. Unless made a popup, children are drawn relative to and within the confines of their parent panel.

Parents

Panel *GetParent()
VPANEL GetVParent()
SetParent(Panel*) or SetParent(VPANEL)
Gets/sets this panel's parent.
bool HasParent(VPANEL)
Is the given panel somewhere above this one in the hierarchy?

Children

int GetChildCount()
Panel *GetChild(int index)
Panel *FindChildByName(char* childName, bool recurseDown = false)
Provides access to child panels.
OnChildAdded(VPANEL child)
Called when a child is added to this panel.

Popups

PopupMakePopup(bool showTaskbarIcon = true,bool disabled = false)
bool IsPopup()
Popup panels draw outside of their parent's space and do not follow it around.