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.
207 lines
6.1 KiB
207 lines
6.1 KiB
//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================
|
|
|
|
#ifndef BASEANIMSETPRESETFADERPANEL_H
|
|
#define BASEANIMSETPRESETFADERPANEL_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "movieobjects/animsetattributevalue.h"
|
|
#include "dme_controls/dmecontrols_utils.h"
|
|
#include "datamodel/dmehandle.h"
|
|
#include "movieobjects/proceduralpresets.h"
|
|
#include "vgui_controls/PropertyPage.h"
|
|
#include "vgui_controls/PropertySheet.h"
|
|
#include "vgui_controls/Slider.h"
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Forward declarations
|
|
//-----------------------------------------------------------------------------
|
|
class CBaseAnimationSetControl;
|
|
class CPresetSlider;
|
|
class CBaseAnimationSetEditor;
|
|
class CSliderListPanel;
|
|
class CAddPresetDialog;
|
|
class CDmePreset;
|
|
class CDmePresetGroup;
|
|
class CDmePresetGroupEditorFrame;
|
|
|
|
namespace vgui
|
|
{
|
|
class InputDialog;
|
|
}
|
|
|
|
struct FaderPreview_t
|
|
{
|
|
FaderPreview_t() :
|
|
name( 0 ),
|
|
amount( 0 ),
|
|
isbeingdragged( false ),
|
|
holdingPreviewKey( false ),
|
|
values( 0 ),
|
|
nProceduralType( PROCEDURAL_PRESET_NOT )
|
|
{
|
|
}
|
|
const char *name;
|
|
float amount;
|
|
bool isbeingdragged;
|
|
bool holdingPreviewKey;
|
|
AttributeDict_t *values;
|
|
int nProceduralType;
|
|
};
|
|
|
|
CDmePresetGroup *FindAnyPresetGroup( CDmeFilmClip *pFilmClip, const char *pPresetGroupName );
|
|
CDmePreset *FindAnyPreset ( CDmeFilmClip *pFilmClip, const char *pPresetGroupName, const char *pPresetName );
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Base class for the preset fader panel
|
|
//-----------------------------------------------------------------------------
|
|
class CBaseAnimSetPresetFaderPanel : public vgui::EditablePanel
|
|
{
|
|
DECLARE_CLASS_SIMPLE( CBaseAnimSetPresetFaderPanel, vgui::EditablePanel );
|
|
public:
|
|
CBaseAnimSetPresetFaderPanel( vgui::Panel *parent, const char *className, CBaseAnimationSetEditor *editor );
|
|
|
|
void GetPreviewFader( FaderPreview_t& fader );
|
|
|
|
void UpdateProceduralPresetSlider( AttributeDict_t *values );
|
|
|
|
void UpdateControlValues( bool bVisibleOnly = true );
|
|
|
|
CBaseAnimationSetControl *GetController() { return m_pController; }
|
|
|
|
void OnDeletePreset( const char *pPresetName );
|
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *scheme );
|
|
|
|
virtual void DispatchCurve( int nCurveType );
|
|
|
|
CPresetSlider *FindPresetSlider( const char *pName );
|
|
|
|
void SetActivePresetSlider( CPresetSlider *pSlider );
|
|
CPresetSlider *GetActivePresetSlider();
|
|
|
|
protected:
|
|
MESSAGE_FUNC( OnShowAddPresetDialog, "ShowAddPresetDialog" );
|
|
MESSAGE_FUNC( OnPresetsChanged, "PresetsChanged" );
|
|
MESSAGE_FUNC( OnManagePresets, "ManagePresets" );
|
|
MESSAGE_FUNC_PARAMS( OnPresetNameSelected, "PresetNameSelected", params );
|
|
MESSAGE_FUNC( OnPageChanged, "PageChanged" );
|
|
|
|
protected:
|
|
CPresetSlider *GetSliderForRow( int nSlot );
|
|
void UpdateOrCreatePresetSlider( int nSlot, const char *pPresetGroupName, const char *pPresetName );
|
|
void RebuildPresetSliders( const char *pPresetGroupName, const CUtlVector< CUtlSymbolLarge > &presetNames );
|
|
void AddPreset( const char *pPresetGroupName, const char *pPresetName, bool bAnimated );
|
|
void PopulatePresetList( bool bChanged );
|
|
|
|
CBaseAnimationSetControl *m_pController;
|
|
vgui::PropertySheet *m_pSheet;
|
|
CUtlVector< vgui::PropertyPage* > m_presetGroupPages;
|
|
CSliderListPanel *m_pSliders;
|
|
CUtlVector< CPresetSlider* > m_presetSliders;
|
|
vgui::DHANDLE< CDmePresetGroupEditorFrame > m_hPresetEditor;
|
|
|
|
vgui::DHANDLE< CPresetSlider > m_hActivePresetSlider;
|
|
|
|
friend CBaseAnimationSetControl;
|
|
friend CPresetSlider;
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// CPresetSlider: The actual preset slider itself!
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
class CPresetSlider : public vgui::Slider
|
|
{
|
|
DECLARE_CLASS_SIMPLE( CPresetSlider, vgui::Slider );
|
|
|
|
public:
|
|
|
|
CPresetSlider( vgui::Panel *parent, CBaseAnimSetPresetFaderPanel *pFaderPanel );
|
|
~CPresetSlider();
|
|
|
|
void Init( const char *pPresetGroupName, const char *pPresetName );
|
|
void Clear();
|
|
|
|
void SetControlValues( );
|
|
|
|
float GetCurrent();
|
|
void SetPos( float frac );
|
|
|
|
AttributeDict_t *GetAttributeDict();
|
|
|
|
bool IsDragging();
|
|
|
|
void IgnoreCursorMovedEvents( bool bIgnore );
|
|
void Deactivate();
|
|
|
|
const char *GetPresetName();
|
|
const char *GetPresetGroupName();
|
|
int GetProceduralPresetType() { return m_nProceduralType; }
|
|
|
|
protected:
|
|
|
|
virtual void Paint();
|
|
virtual void PaintBackground();
|
|
virtual void ApplySchemeSettings( vgui::IScheme *scheme );
|
|
virtual void GetTrackRect( int &x, int &y, int &w, int &h );
|
|
virtual void OnMousePressed(vgui::MouseCode code);
|
|
virtual void OnMouseReleased(vgui::MouseCode code);
|
|
virtual void OnCursorMoved( int x, int y );
|
|
virtual void OnCursorEntered();
|
|
virtual void OnCursorExited();
|
|
|
|
MESSAGE_FUNC( OnShowContextMenu, "OnShowContextMenu" );
|
|
MESSAGE_FUNC( OnRename, "OnRename" );
|
|
MESSAGE_FUNC( OnDelete, "OnDelete" );
|
|
|
|
MESSAGE_FUNC_PARAMS( OnInputCompleted, "InputCompleted", params );
|
|
|
|
MESSAGE_FUNC( OnDeleteConfirmed, "OnDeleteConfirmed" );
|
|
|
|
protected:
|
|
|
|
KEYBINDING_FUNC( ts_curve_1, KEY_1, 0, OnCurve1, "#ts_curve1_help", 0 );
|
|
KEYBINDING_FUNC( ts_curve_2, KEY_2, 0, OnCurve2, "#ts_curve2_help", 0 );
|
|
KEYBINDING_FUNC( ts_curve_3, KEY_3, 0, OnCurve3, "#ts_curve3_help", 0 );
|
|
KEYBINDING_FUNC( ts_curve_4, KEY_4, 0, OnCurve4, "#ts_curve4_help", 0 );
|
|
|
|
private:
|
|
void OnRenameCompleted( const char *pText, KeyValues *pContextKeyValues );
|
|
|
|
void UpdateTickPos( int x, int y );
|
|
|
|
CBaseAnimSetPresetFaderPanel *m_pPresetFaderPanel;
|
|
|
|
Color m_GradientColor;
|
|
Color m_ZeroColor;
|
|
Color m_TextColor;
|
|
Color m_TextColorFocus;
|
|
vgui::TextImage *m_pName;
|
|
|
|
vgui::DHANDLE< vgui::Menu > m_hContextMenu;
|
|
|
|
AttributeDict_t m_AttributeLookup;
|
|
|
|
CUtlSymbolLarge m_presetGroupName;
|
|
CUtlSymbolLarge m_presetName;
|
|
int m_nProceduralType;
|
|
bool m_bReadOnly;
|
|
|
|
bool m_bIgnoreCursorMovedEvents;
|
|
|
|
static bool s_bResetMousePosOnMouseUp;
|
|
static int s_nMousePosX;
|
|
static int s_nMousePosY;
|
|
};
|
|
|
|
#endif // BASEANIMSETPRESETFADERPANEL_H
|