You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.5 KiB
115 lines
2.5 KiB
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============ |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//============================================================================= |
|
|
|
#ifndef VOICE_LISTBOX_H |
|
#define VOICE_LISTBOX_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
|
|
#include "VGUI_Panel.h" |
|
#include "VGUI_IntChangeSignal.h" |
|
|
|
#include "VGUI_Slider2.h" |
|
#include "VGUI_ScrollBar2.h" |
|
|
|
|
|
namespace vgui |
|
{ |
|
|
|
// Listbox class used by voice code. Based off of vgui's list panel but with some modifications: |
|
// - This listbox clips its child items to its rectangle. |
|
// - You can access things like the scrollbar and find out the item width. |
|
// - The scrollbar scrolls one element at a time and the range is correct. |
|
|
|
// Note: this listbox does not provide notification when items are |
|
class CListBox : public Panel |
|
{ |
|
public: |
|
|
|
CListBox(); |
|
~CListBox(); |
|
|
|
void Init(); |
|
void Term(); |
|
|
|
// Add an item to the listbox. This automatically sets the item's parent to the listbox |
|
// and resizes the item's width to fit within the listbox. |
|
void AddItem(Panel *pPanel); |
|
|
|
// Get the number of items currently in the listbox. |
|
int GetNumItems(); |
|
|
|
// Get the width that listbox items will be set to (this changes if you resize the listbox). |
|
int GetItemWidth(); |
|
|
|
// Get/set the scrollbar position (position says which element is at the top of the listbox). |
|
int GetScrollPos(); |
|
void SetScrollPos(int pos); |
|
|
|
// sets the last item the listbox should scroll to |
|
// scroll to GetNumItems() if not set |
|
void SetScrollRange(int maxScroll); |
|
|
|
// returns the maximum value the scrollbar can scroll to |
|
int GetScrollMax(); |
|
|
|
// vgui overrides. |
|
public: |
|
|
|
virtual void setPos(int x, int y); |
|
virtual void setSize(int wide,int tall); |
|
virtual void setPixelScroll(int value); |
|
virtual void paintBackground(); |
|
|
|
|
|
protected: |
|
|
|
class LBItem |
|
{ |
|
public: |
|
Panel *m_pPanel; |
|
LBItem *m_pPrev, *m_pNext; |
|
}; |
|
|
|
class ListBoxSignal : public IntChangeSignal |
|
{ |
|
public: |
|
void intChanged(int value,Panel* panel) |
|
{ |
|
m_pListBox->setPixelScroll(-value); |
|
} |
|
|
|
vgui::CListBox *m_pListBox; |
|
}; |
|
|
|
|
|
protected: |
|
|
|
void InternalLayout(); |
|
|
|
|
|
protected: |
|
|
|
// All the items.. |
|
LBItem m_Items; |
|
|
|
Panel m_ItemsPanel; |
|
|
|
int m_ItemOffset; // where we're scrolled to |
|
Slider2 m_Slider; |
|
ScrollBar2 m_ScrollBar; |
|
ListBoxSignal m_Signal; |
|
|
|
int m_iScrollMax; |
|
}; |
|
|
|
} |
|
|
|
|
|
#endif // VOICE_LISTBOX_H
|
|
|