PanelList SubPanel

From Valve Developer Community
Jump to: navigation, search

CPP

///////////  Copyright © 2007, Mark Chandler. All rights reserved.  ///////////
//
// Description:
//	This is the core of the subpanel
//
//	Mark Chandler 2007 admin@lodle.net
//
////////////////////////////////////////////////////////////////////////////////

#include "cbase.h"
#include "pd_mappanel.h"

#define ROUND(arg) floor(arg+0.5)
#define MARG 5

SubPanel::SubPanel(Panel *parent, const char *name) : PD_BasePanel(parent, name)
{

	m_pNameLab = new vgui::Label(this, "NameLabel", "Sub Name");
	m_pTextLab= new vgui::Label(this, "TextLabel", "Sub Text");

	m_pNameLab->SetMouseInputEnabled(false);
	m_pTextLab->SetMouseInputEnabled(false);

	m_bNeedsUpdate = true;
	Q_strncpy(m_szName,"Sub NAME", 256);
	Q_strncpy(m_szText,"Sub Text", 256);
	m_iLevel = 0;

	OnSizeChanged(GetWide(), GetTall());
}

void SubPanel::OnThink( void )
{
	if (m_bNeedsUpdate)
	{

		m_pNameLab->SetText(m_szName);
		m_pTextLab->SetText(m_szSubName);

		m_pNameLab->SetFgColor(Color(0,0,0,255));
		m_pTextLab->SetFgColor(Color(0,0,0,255));
	}
}

void SubPanel::OnSizeChanged(int newWide, int newTall)
{
	int w = newWide - MARG;
	int h = (newTall - MARG*4 - 2 - 2)/3;

	int y1 = MARG+MARG;
	int y2 = y1 + 2 + h;

	m_pNameLab->SetBounds(newTall+MARG, y1, w, h);
	m_pTextLab->SetBounds(newTall+MARG, y2, w, h);
}

Header

///////////  Copyright © 2007, Mark Chandler. All rights reserved.  ///////////
//
// Description:
//	This is the sub panel for the panel list
//
//	Mark Chandler 2007 admin@lodle.net
//
////////////////////////////////////////////////////////////////////////////////

#ifndef SUBPanel_H
#define SUBPanel_H
#ifdef _WIN32
#pragma once
#endif

#include <vgui_controls/panel.h>
#include <vgui_controls/Label.h>

#include "pd_panel_list.h"

using namespace vgui;

class SubPanel : public PD_BasePanel
{
	DECLARE_CLASS_SIMPLE( PD_MapPanel, PD_BasePanel );

	PD_MapPanel(Panel *parent, const char *name);

	void SetTitle( char* name){Q_strncpy(m_szName,name,256);m_bNeedsUpdate=true;}
	void SetText( char* text){Q_strncpy(m_szText,text,256);m_bNeedsUpdate=true;}

	void OnThink( void );
	void OnSizeChanged(int newWide, int newTall);

private:
	vgui::Label *m_pNameLab;
	vgui::Label *m_pTextLab;

	bool m_bNeedsUpdate;
	char m_szName[256];
	char m_szText[256];
};

#endif