VGUI PanelListPanel: Difference between revisions
No edit summary |
No edit summary |
||
| Line 19: | Line 19: | ||
PanelListPanels can be created via the c++ keyword new with a simple call to PanelListPanel: | PanelListPanels can be created via the c++ keyword new with a simple call to PanelListPanel: | ||
PanelListPanel* myPanel = new PanelListPanel(this, "myPanel"); | |||
| Line 30: | Line 30: | ||
//Create Image | //Create Image | ||
Q_snprintf(buffer, sizeof(buffer), "image%i", i); | Q_snprintf(buffer, sizeof(buffer), "image%i", i); | ||
ImagePanel* imagePanel = new ImagePanel( this, buffer ); | |||
imagePanel->SetImage(scheme()->GetImage("", false)); | imagePanel->SetImage(scheme()->GetImage("", false)); | ||
//Create Label | //Create Label | ||
Q_snprintf(buffer, sizeof(buffer), "label%i", i); | Q_snprintf(buffer, sizeof(buffer), "label%i", i); | ||
Label* label = new Label( this, buffer, buffer ); | |||
label->SetText(buffer); | label->SetText(buffer); | ||
Revision as of 12:41, 7 June 2009
A PanelListPanel is a vgui2 element defined in the vgui_controls library, in the file PanelListPanel.cpp. PanelListPanels are available in all source games. PanelListPanels display a list of user specified label, control pairs.
Example Usage
Before creating anything, we first need to include our header files and use the vgui namespace.
#include <vgui_controls/Label.h> #include <vgui_controls/ImagePanel.h> #include <vgui_controls/PanelListPanel.h>
using namespace vgui;
These next two blocks of code generally should be added to the constructor.
PanelListPanels can be created via the c++ keyword new with a simple call to PanelListPanel:
PanelListPanel* myPanel = new PanelListPanel(this, "myPanel");
Once we have our PanelListPanel created, we can now add controls to it:
char buffer [40];
for (int i = 0; i < 5; i++)
{
//Create Image
Q_snprintf(buffer, sizeof(buffer), "image%i", i);
ImagePanel* imagePanel = new ImagePanel( this, buffer );
imagePanel->SetImage(scheme()->GetImage("", false));
//Create Label
Q_snprintf(buffer, sizeof(buffer), "label%i", i);
Label* label = new Label( this, buffer, buffer );
label->SetText(buffer);
//Add Label and Image to PanelListPanel
m_pList->AddItem(label, imagePanel);
}
With m_pList being a pointer to the PanelListPanel.
Its also important to note that scheme()->GetImage begins from "materials/vgui" and no extensions should be provided. So, scheme()->GetImage("vgui/eye", false) would really point to "materials/vgui/vgui/eye.vmt".
Lastly we'll set the control size and make it visible.
void CExample::PerformLayout()
{
BaseClass::PerformLayout();
m_pList->SetBounds( 280, 300, 200, 200 ); //posX, posY, width, height
m_pList->SetVisible( true );
}
And we're done!
