VGUI PanelListPanel: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
No edit summary
Line 8: Line 8:


  #include <vgui_controls/PanelListPanel.h>
  #include <vgui_controls/PanelListPanel.h>


These next two lines of code generally should be added to the constructor.
These next two lines of code generally should be added to the constructor.


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:

Revision as of 11:46, 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.

This is a screenshot of a skeleton PanelListPanel using ImagePanels as the added controls.

Example Usage

Before creating anything, we first need to include the PanelListPanel header file.

#include <vgui_controls/PanelListPanel.h>


These next two lines of code generally should be added to the constructor.


PanelListPanels can be created via the c++ keyword new with a simple call to PanelListPanel:

vgui::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);
	vgui::ImagePanel* imagePanel = new ImagePanel( this, buffer );
	imagePanel->SetImage(scheme()->GetImage("", false));

       //Create Label
	Q_snprintf(buffer, sizeof(buffer), "label%i", i);
	vgui::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!