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.
133 lines
3.9 KiB
133 lines
3.9 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef SCROLLBAR_H |
|
#define SCROLLBAR_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include <vgui/VGUI.h> |
|
#include <vgui_controls/Panel.h> |
|
|
|
namespace vgui |
|
{ |
|
|
|
class Button; |
|
class ScrollBarSlider; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Generic scrollbar |
|
// Uses Buttons & SliderBars for the main functionality |
|
//----------------------------------------------------------------------------- |
|
class ScrollBar : public Panel |
|
{ |
|
DECLARE_CLASS_SIMPLE( ScrollBar, Panel ); |
|
|
|
public: |
|
ScrollBar(Panel *parent, const char *panelName, bool vertical); |
|
|
|
// Set the value of the scroll bar slider. |
|
virtual void SetValue(int value); |
|
|
|
// Get the value of the scroll bar slider. |
|
virtual int GetValue(); |
|
|
|
// Set the rangeof numbers the slider can scroll through |
|
virtual void SetRange(int min,int max); |
|
|
|
virtual void GetRange(int &min, int &max); |
|
|
|
// Set how many lines are displayed at one time |
|
// in the window the scroll bar is attached to. |
|
virtual void SetRangeWindow(int rangeWindow); |
|
|
|
// Get how many lines are displayed at one time |
|
// in the window the scroll bar is attached to. |
|
virtual int GetRangeWindow(); |
|
|
|
// Check if the scrollbar is vertical or horizontal |
|
virtual bool IsVertical(); |
|
|
|
// Purpose: Check if the slider can move through one or more pixels per |
|
// unit of its range. |
|
virtual bool HasFullRange(); |
|
|
|
// Setup the indexed scroll bar button with the input params. |
|
virtual void SetButton(Button* button,int index); |
|
// Return the indexed scroll bar button |
|
virtual Button *GetButton(int index); |
|
// Set up the slider. |
|
virtual void SetSlider(ScrollBarSlider* slider); |
|
// Return a pointer to the slider. |
|
virtual ScrollBarSlider *GetSlider(); |
|
// Set how far the scroll bar slider moves |
|
// when a scroll bar button is pressed |
|
virtual void SetButtonPressedScrollValue(int value); |
|
|
|
virtual void Validate(); |
|
|
|
// Update and look for clicks when mouse is in the scroll bar window. |
|
virtual void OnMouseFocusTicked(); |
|
|
|
// Set the slider's Paint border enabled. |
|
virtual void SetPaintBorderEnabled(bool state); |
|
// Set the slider's Paint background enabled. |
|
virtual void SetPaintBackgroundEnabled(bool state); |
|
// Set the slider's Paint enabled. |
|
virtual void SetPaintEnabled(bool state); |
|
|
|
// Sets the scrollbar buttons visible or not |
|
virtual void SetScrollbarButtonsVisible(bool visible); |
|
|
|
void SetAutohideButtons( bool bAutohide ) { m_bAutoHideButtons = bAutohide; } |
|
|
|
void UseImages( const char *pszUpArrow, const char *pszDownArrow, const char *pszLine, const char *pszBox ); |
|
|
|
/* MESSAGES SENT: |
|
"ScrollBarSliderMoved" |
|
"position" - new value of the slider |
|
*/ |
|
|
|
void SetOverriddenButtons( Button *pB1, Button *pB2 ) { m_pOverriddenButtons[0] = pB1; m_pOverriddenButtons[1] = pB2; } |
|
|
|
virtual void ApplySettings( KeyValues *pInResourceData ); |
|
|
|
protected: |
|
|
|
virtual void PerformLayout(); |
|
virtual void SendSliderMoveMessage(int value); |
|
virtual void ApplySchemeSettings(IScheme *pScheme); |
|
virtual void OnSizeChanged(int wide, int tall); |
|
|
|
MESSAGE_FUNC_INT( OnSliderMoved, "ScrollBarSliderMoved", position ); |
|
virtual void RespondToScrollArrow(int const direction); |
|
|
|
virtual void UpdateButtonsForImages( void ); |
|
virtual void UpdateSliderImages( void ); |
|
Button *GetDepressedButton( int iIndex ); |
|
|
|
private: |
|
Button* _button[2]; |
|
ScrollBarSlider* _slider; |
|
int _buttonPressedScrollValue; |
|
int _scrollDelay; // used to control delays in scrolling |
|
bool _respond; |
|
bool m_bNoButtons; |
|
CPanelAnimationVar( bool, m_bAutoHideButtons, "autohide_buttons", "0" ); |
|
|
|
vgui::ImagePanel *m_pUpArrow; |
|
vgui::ImagePanel *m_pLine; |
|
vgui::ImagePanel *m_pDownArrow; |
|
vgui::ImagePanel *m_pBox; |
|
Button *m_pOverriddenButtons[2]; |
|
}; |
|
|
|
} |
|
|
|
#endif // SCROLLBAR_H
|
|
|