Panel: Difference between revisions
Jump to navigation
Jump to search
(Distinguish) |
CHILLMODEA (talk | contribs) (replace disambig note with Template:For) |
||
| Line 1: | Line 1: | ||
{{lang|Panel}}[[Category:Classes]][[Category:VGUI]] | {{lang|Panel}}[[Category:Classes]][[Category:VGUI]] | ||
{{toc-right}} | {{toc-right}} | ||
<span style="color:white; font-weight:bold"> {{For|about=the base VGUI element|the [[Portal 2]] puzzle element|[[Panels]]|}} </span> | |||
<code>[[Panel|vgui::Panel]]</code> 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. | <code>[[Panel|vgui::Panel]]</code> 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 == | == Functions == | ||
Latest revision as of 00:18, 30 June 2025
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()- Disabled 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.
Layout
bool IsProportional()SetProportional(bool)
Confirm:When a panel is proportional, its layout values are interpreted as being relative to a 640*480 screen. This allows you to position a panel at 64,48 and be certain that it will always be 10% away from the screen edge, regardless of the current resolution. This system does not respond well to changes in aspect ratio. The candr.res keywords were added to resolve this issue.SetPos(), GetPos(), SetSize(), GetSize(), SetBounds(), GetBounds(), GetWide(), SetWide(), GetTall(), SetTall()- Functions for configuring the panel's position or size, or both at once.
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 beforeSetPaintBorderEnabled().- Get an
IBorderfromIScheme::GetBorder()inApplySchemeSettings(). - See
swarm/resource/sourcescheme.resfor examples of border definitions.
- Get an
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*)orSetParent(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.
Script Parameters
These can be used within a .res layout file.
fieldName<string>- Sets the control's name. Default is NULL.
wide<integer>tall<integer>- The initial size of the panel.
xpos<integer>ypos<integer>- The X and Y position of the panel's pinned corner relative to its parent. By default this value is an offset from the left/top edge, but the special characters
candrallow positioning relative to the centre and right/bottom edge respectively. Examples:xpos 300xpos r300xpos c0
PinCorner<choices>- The pinned corner is the one positioned at xpos/ypos. Values are:
TOPLEFT(default)TOPRIGHTBOTTOMLEFTBOTTOMRIGHT
PinnedCornerOffsetX<integer>PinnedCornerOffsetY<integer>UnpinnedCornerOffsetX<integer>UnpinnedCornerOffsetY<integer>- [Todo]
zpos<integer>- The Z position. Default is
1. Higher numbers are drawn on top of lower numbers. IgnoreScheme<boolean>- Todo: "Only get colors if we're ignoring the scheme."See also
IScheme. visible<boolean>- Whether the control is visible.
enabled<boolean>- Whether the control can be used.
tabPosition<integer>- Controls the order in which panels are focused on when Tab ⇆ is pressed. Valid range is 0-255. Default is 0.
tooltiptext<string>- Text displayed when mouse is hovered over this panel. No support on consoles.
paintbackground<boolean>paintborder<boolean>- Whether to draw the background/border of the panel. Default is -1, which means no value will be applied.
AutoResize<choices>- Sets which edges of the panel can be resized. Values are:
NO(default)RIGHTDOWNDOWNANDRIGHT