mirror of
https://github.com/0TheSpy/Seaside.git
synced 2025-01-11 11:33:01 +08:00
185 lines
5.3 KiB
C++
185 lines
5.3 KiB
C++
#ifndef BUTTON_H
|
|
#define BUTTON_H
|
|
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "VGUI.h"
|
|
#include "Dar.h"
|
|
#include "Color.h"
|
|
#include "Label.h"
|
|
#include "MouseCode.h"
|
|
|
|
namespace vgui
|
|
{
|
|
|
|
class Button : public Label
|
|
{
|
|
DECLARE_CLASS_SIMPLE(Button, Label);
|
|
|
|
public:
|
|
Button(Panel* parent, const char* panelName, const char* text, Panel* pActionSignalTarget = NULL, const char* pCmd = NULL);
|
|
Button(Panel* parent, const char* panelName, const wchar_t* text, Panel* pActionSignalTarget = NULL, const char* pCmd = NULL);
|
|
~Button();
|
|
private:
|
|
void Init();
|
|
public:
|
|
virtual void SetArmed(bool state);
|
|
virtual bool IsArmed(void);
|
|
|
|
virtual bool IsDepressed();
|
|
virtual void ForceDepressed(bool state);
|
|
virtual void RecalculateDepressedState(void);
|
|
|
|
virtual void SetSelected(bool state);
|
|
virtual bool IsSelected(void);
|
|
|
|
virtual void SetBlink(bool state);
|
|
virtual bool IsBlinking(void);
|
|
|
|
virtual void SetUseCaptureMouse(bool state);
|
|
virtual bool IsUseCaptureMouseEnabled(void);
|
|
|
|
MESSAGE_FUNC(DoClick, "PressButton");
|
|
MESSAGE_FUNC(OnHotkey, "Hotkey")
|
|
{
|
|
DoClick();
|
|
}
|
|
|
|
virtual void SetMouseClickEnabled(MouseCode code, bool state);
|
|
virtual bool IsMouseClickEnabled(MouseCode code);
|
|
enum ActivationType_t
|
|
{
|
|
ACTIVATE_ONPRESSEDANDRELEASED,
|
|
ACTIVATE_ONPRESSED,
|
|
ACTIVATE_ONRELEASED,
|
|
};
|
|
virtual void SetButtonActivationType(ActivationType_t activationType);
|
|
|
|
virtual void FireActionSignal(void);
|
|
virtual void PerformLayout();
|
|
|
|
virtual bool RequestInfo(KeyValues* data);
|
|
|
|
virtual bool CanBeDefaultButton(void);
|
|
|
|
MESSAGE_FUNC_INT(SetAsDefaultButton, "SetAsDefaultButton", state);
|
|
MESSAGE_FUNC_INT(SetAsCurrentDefaultButton, "SetAsCurrentDefaultButton", state);
|
|
|
|
virtual void OnSetFocus();
|
|
virtual void OnKillFocus();
|
|
|
|
virtual void SetButtonBorderEnabled(bool state);
|
|
|
|
virtual void SetDefaultColor(Color fgColor, Color bgColor);
|
|
virtual void SetArmedColor(Color fgColor, Color bgColor);
|
|
virtual void SetSelectedColor(Color fgColor, Color bgColor);
|
|
virtual void SetDepressedColor(Color fgColor, Color bgColor);
|
|
virtual void SetBlinkColor(Color fgColor);
|
|
|
|
virtual Color GetButtonFgColor();
|
|
virtual Color GetButtonBgColor();
|
|
|
|
Color GetButtonDefaultFgColor() { return _defaultFgColor; }
|
|
Color GetButtonDefaultBgColor() { return _defaultBgColor; }
|
|
|
|
Color GetButtonArmedFgColor() { return _armedFgColor; }
|
|
Color GetButtonArmedBgColor() { return _armedBgColor; }
|
|
|
|
Color GetButtonSelectedFgColor() { return _selectedFgColor; }
|
|
Color GetButtonSelectedBgColor() { return _selectedBgColor; }
|
|
|
|
Color GetButtonDepressedFgColor() { return _depressedFgColor; }
|
|
Color GetButtonDepressedBgColor() { return _depressedBgColor; }
|
|
|
|
virtual void SetDefaultBorder(IBorder* border);
|
|
virtual void SetDepressedBorder(IBorder* border);
|
|
virtual void SetKeyFocusBorder(IBorder* border);
|
|
|
|
virtual void SetCommand(const char* command);
|
|
virtual void SetCommand(KeyValues* message);
|
|
|
|
void SetArmedSound(const char* sound);
|
|
void SetDepressedSound(const char* sound);
|
|
void SetReleasedSound(const char* sound);
|
|
|
|
virtual void OnCursorEntered();
|
|
virtual void OnCursorExited();
|
|
virtual void SizeToContents();
|
|
|
|
virtual KeyValues* GetCommand();
|
|
|
|
bool IsDrawingFocusBox();
|
|
void DrawFocusBox(bool bEnable);
|
|
|
|
bool ShouldPaint() { return _paint; }
|
|
void SetShouldPaint(bool paint) { _paint = paint; }
|
|
|
|
virtual void ApplySettings(KeyValues* inResourceData);
|
|
virtual void NavigateTo();
|
|
virtual void NavigateFrom();
|
|
|
|
protected:
|
|
virtual void DrawFocusBorder(int tx0, int ty0, int tx1, int ty1);
|
|
|
|
virtual void Paint(void);
|
|
virtual IBorder* GetBorder(bool depressed, bool armed, bool selected, bool keyfocus);
|
|
|
|
virtual void ApplySchemeSettings(IScheme* pScheme);
|
|
MESSAGE_FUNC_INT(OnSetState, "SetState", state);
|
|
|
|
virtual void OnMousePressed(MouseCode code);
|
|
virtual void OnMouseDoublePressed(MouseCode code);
|
|
virtual void OnMouseReleased(MouseCode code);
|
|
virtual void OnKeyCodePressed(KeyCode code);
|
|
virtual void OnKeyCodeReleased(KeyCode code);
|
|
|
|
virtual void GetSettings(KeyValues* outResourceData);
|
|
virtual const char* GetDescription(void);
|
|
|
|
KeyValues* GetActionMessage();
|
|
void PlayButtonReleasedSound();
|
|
|
|
protected:
|
|
enum ButtonFlags_t
|
|
{
|
|
ARMED = 0x0001,
|
|
DEPRESSED = 0x0002,
|
|
FORCE_DEPRESSED = 0x0004,
|
|
BUTTON_BORDER_ENABLED = 0x0008,
|
|
USE_CAPTURE_MOUSE = 0x0010,
|
|
BUTTON_KEY_DOWN = 0x0020,
|
|
DEFAULT_BUTTON = 0x0040,
|
|
SELECTED = 0x0080,
|
|
DRAW_FOCUS_BOX = 0x0100,
|
|
BLINK = 0x0200,
|
|
ALL_FLAGS = 0xFFFF,
|
|
};
|
|
|
|
CUtlFlags< unsigned short > _buttonFlags;
|
|
int _mouseClickMask;
|
|
KeyValues* _actionMessage;
|
|
ActivationType_t _activationType;
|
|
|
|
IBorder* _defaultBorder;
|
|
IBorder* _depressedBorder;
|
|
IBorder* _keyFocusBorder;
|
|
|
|
Color _defaultFgColor, _defaultBgColor;
|
|
Color _armedFgColor, _armedBgColor;
|
|
Color _selectedFgColor, _selectedBgColor;
|
|
Color _depressedFgColor, _depressedBgColor;
|
|
Color _keyboardFocusColor;
|
|
Color _blinkFgColor;
|
|
|
|
bool _paint;
|
|
|
|
unsigned short m_sArmedSoundName, m_sDepressedSoundName, m_sReleasedSoundName;
|
|
bool m_bSelectionStateSaved;
|
|
bool m_bStaySelectedOnClick;
|
|
};
|
|
|
|
}
|
|
|
|
#endif |