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.
112 lines
2.8 KiB
112 lines
2.8 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
//=============================================================================
|
||
|
|
||
|
#ifndef SEQUENCEPICKER_H
|
||
|
#define SEQUENCEPICKER_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include "tier1/utlstring.h"
|
||
|
#include "vgui_controls/Frame.h"
|
||
|
#include "vgui_controls/EditablePanel.h"
|
||
|
#include "vgui_controls/ImageList.h"
|
||
|
#include "datacache/imdlcache.h"
|
||
|
#include "matsys_controls/mdlpanel.h"
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Forward declarations
|
||
|
//-----------------------------------------------------------------------------
|
||
|
namespace vgui
|
||
|
{
|
||
|
class Splitter;
|
||
|
}
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Sequence picker panel
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CSequencePicker : public vgui::EditablePanel
|
||
|
{
|
||
|
DECLARE_CLASS_SIMPLE( CSequencePicker, vgui::EditablePanel );
|
||
|
|
||
|
public:
|
||
|
enum PickType_t
|
||
|
{
|
||
|
PICK_NONE = 0,
|
||
|
PICK_SEQUENCES = 0x1,
|
||
|
PICK_ACTIVITIES = 0x2,
|
||
|
PICK_ALL = 0xFFFFFFFF,
|
||
|
};
|
||
|
|
||
|
// Flags come from PickType_t
|
||
|
CSequencePicker( vgui::Panel *pParent, int nFlags = PICK_ALL );
|
||
|
~CSequencePicker();
|
||
|
|
||
|
// overridden frame functions
|
||
|
virtual void PerformLayout();
|
||
|
|
||
|
// Sets the MDL to preview sequences for
|
||
|
void SetMDL( const char *pMDLName );
|
||
|
|
||
|
// Gets the selected activity/sequence
|
||
|
PickType_t GetSelectedSequenceType();
|
||
|
const char *GetSelectedSequenceName( );
|
||
|
|
||
|
private:
|
||
|
void RefreshActivitiesAndSequencesList();
|
||
|
|
||
|
// Plays the selected activity
|
||
|
void PlayActivity( const char *pActivityName );
|
||
|
|
||
|
// Plays the selected sequence
|
||
|
void PlaySequence( const char *pSequenceName );
|
||
|
|
||
|
MESSAGE_FUNC_PARAMS( OnItemSelected, "ItemSelected", kv );
|
||
|
MESSAGE_FUNC( OnPageChanged, "PageChanged" );
|
||
|
|
||
|
CMDLPanel *m_pMDLPreview;
|
||
|
vgui::Splitter* m_pPreviewSplitter;
|
||
|
vgui::PropertySheet *m_pViewsSheet;
|
||
|
vgui::PropertyPage *m_pSequencesPage;
|
||
|
vgui::PropertyPage *m_pActivitiesPage;
|
||
|
vgui::ListPanel *m_pSequencesList;
|
||
|
vgui::ListPanel *m_pActivitiesList;
|
||
|
MDLHandle_t m_hSelectedMDL;
|
||
|
CUtlString m_Filter;
|
||
|
|
||
|
friend class CSequencePickerFrame;
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Main app window
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CSequencePickerFrame : public vgui::Frame
|
||
|
{
|
||
|
DECLARE_CLASS_SIMPLE( CSequencePickerFrame, vgui::Frame );
|
||
|
|
||
|
public:
|
||
|
CSequencePickerFrame( vgui::Panel *pParent, int nFlags );
|
||
|
|
||
|
// Inherited from Frame
|
||
|
virtual void OnCommand( const char *pCommand );
|
||
|
|
||
|
// Purpose: Activate the dialog
|
||
|
void DoModal( const char *pMDLName );
|
||
|
|
||
|
private:
|
||
|
MESSAGE_FUNC_PARAMS( OnSequencePreviewChanged, "SequencePreviewChanged", kv );
|
||
|
|
||
|
CSequencePicker *m_pPicker;
|
||
|
vgui::Button *m_pOpenButton;
|
||
|
vgui::Button *m_pCancelButton;
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // SEQUENCEPICKER_H
|