diff options
Diffstat (limited to 'public/itemtest/itemtest_controls.h')
| -rw-r--r-- | public/itemtest/itemtest_controls.h | 311 |
1 files changed, 311 insertions, 0 deletions
diff --git a/public/itemtest/itemtest_controls.h b/public/itemtest/itemtest_controls.h new file mode 100644 index 0000000..2d416bf --- /dev/null +++ b/public/itemtest/itemtest_controls.h @@ -0,0 +1,311 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +//============================================================================= + + +#ifndef ITEMTEST_CONTROLS_H +#define ITEMTEST_CONTROLS_H + + +#ifdef _WIN32 +#pragma once +#endif + + +// Valve includes +#include "itemtest/itemtest.h" +#include "tier1/utlstring.h" +#include "vgui_controls/Label.h" +#include "vgui_controls/WizardPanel.h" +#include "vgui_controls/WizardSubPanel.h" +#include "vgui_controls/FileOpenStateMachine.h" + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class vgui::CheckButton; +class vgui::PanelListPanel; +class vgui::TextEntry; +class vgui::ComboBox; +class vgui::TextEntry; +class CDualPanelList; +class CVmtEntry; + + +//============================================================================= +// +//============================================================================= +class CStatusLabel : public vgui::Label +{ + DECLARE_CLASS_SIMPLE( CStatusLabel, vgui::Label ); + +public: + CStatusLabel( vgui::Panel *pPanel, const char *pszName, bool bValid = false ); + + // From vgui::Label + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); + + // New functions + virtual void SetValid( bool bValid ); + virtual bool GetValid() const; + +protected: + bool m_bValid; + Color m_cValid; + Color m_cInvalid; + + void UpdateColors(); + +}; + + +//============================================================================= +// +//============================================================================= +class CItemUploadSubPanel : public vgui::WizardSubPanel +{ + DECLARE_CLASS_SIMPLE( CItemUploadSubPanel, vgui::WizardSubPanel ); + +public: + CItemUploadSubPanel( vgui::Panel *pParent, const char *pszName, const char *pszNextName ); + + // From vgui::Panel + virtual void PerformLayout(); + + virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); + + // From vgui::WizardSubPanel + virtual void OnDisplay(); + + virtual vgui::WizardSubPanel *GetNextSubPanel(); + + // Sucks data from the asset into the GUI + virtual void UpdateGUI() + { + AssertMsg1( 0, "Implement UpdateGUI in base class: %s", GetPanelClassName() ); + } + + // Sets the status labels + virtual bool UpdateStatus(); + +protected: + CUtlString m_sNextName; // The name of the next wizard sub panel + + vgui::Label *m_pLabel; // Label at the top of the wizard sub panel + vgui::PanelListPanel *m_pPanelListPanel; // Standard list of widgets to set parameters + CStatusLabel *m_pStatusLabel; // Whether the overall panel is valid or not + vgui::Label *m_pStatusText; // The text for the overall status + + // New functions + + void AddStatusPanels( const char *pszPrefix ); + void SetStatus( bool bValid, const char *pszPrefix, const char *pszMessage = NULL, bool bHide = false ); + +}; + + +//============================================================================= +// +//============================================================================= +class CGlobalSubPanel : public CItemUploadSubPanel +{ + DECLARE_CLASS_SIMPLE( CGlobalSubPanel, CItemUploadSubPanel ); + +public: + CGlobalSubPanel( vgui::Panel *pParent, const char *pszName, const char *pszNextName ); + + // From CItemUploadSubPanel + virtual void UpdateGUI(); + virtual bool UpdateStatus(); + + MESSAGE_FUNC_PTR( OnTextChanged, "TextChanged", panel ); + MESSAGE_FUNC_PTR( OnCheckButtonChecked, "CheckButtonChecked", panel ); + +protected: + vgui::TextEntry *m_pNameTextEntry; + vgui::ComboBox *m_pClassComboBox; + vgui::TextEntry *m_pSteamTextEntry; + vgui::CheckButton *m_pAutoSkinCheckButton; + +}; + + +//============================================================================= +// +//============================================================================= +class CGeometrySubPanel : public CItemUploadSubPanel, public vgui::IFileOpenStateMachineClient +{ + DECLARE_CLASS_SIMPLE( CGeometrySubPanel, CItemUploadSubPanel ); + +public: + CGeometrySubPanel( vgui::Panel *pParent, const char *pszName, const char *pszNextName ); + + // From CItemUploadSubpanel + virtual void UpdateGUI(); + virtual bool UpdateStatus(); + + // From IFileOpenStateMachineClient + virtual void SetupFileOpenDialog( vgui::FileOpenDialog *pDialog, bool bOpenFile, const char *pszFileFormat, KeyValues *pContextKeyValues ); + virtual bool OnReadFileFromDisk( const char *pszFileName, const char *pszFileFormat, KeyValues *pContextKeyValues ); + virtual bool OnWriteFileToDisk( const char *pszFileName, const char *pszFileFormat, KeyValues *pContextKeyValues ); + + MESSAGE_FUNC_INT( OnOpen, "Open", nLodIndex ); + MESSAGE_FUNC_INT( OnDelete, "Delete", nLodIndex ); + +protected: + vgui::FileOpenStateMachine *m_pFileOpenStateMachine; + + void AddGeometry(); +}; + + +//============================================================================= +// +//============================================================================= +class CMaterialSubPanel : public CItemUploadSubPanel, public vgui::IFileOpenStateMachineClient +{ + DECLARE_CLASS_SIMPLE( CMaterialSubPanel, CItemUploadSubPanel ); + +public: + CMaterialSubPanel( vgui::Panel *pParent, const char *pszName, const char *pszNextName ); + + // From CItemUploadSubpanel + virtual void InvalidateLayout(); + + virtual void UpdateGUI(); + virtual bool UpdateStatus(); + + // From IFileOpenStateMachineClient + virtual void SetupFileOpenDialog( vgui::FileOpenDialog *pDialog, bool bOpenFile, const char *pszFileFormat, KeyValues *pContextKeyValues ); + virtual bool OnReadFileFromDisk( const char *pszFileName, const char *pszFileFormat, KeyValues *pContextKeyValues ); + virtual bool OnWriteFileToDisk( const char *pszFileName, const char *pszFileFormat, KeyValues *pContextKeyValues ); + + enum Browse_t + { + kCommon, + kRed, + kBlue, + kNormal + }; + + void Browse( CVmtEntry *pVmtEntry, Browse_t nBrowseType ); + + CTargetVMT *GetTargetVMT( int nTargetVMTIndex ); + +protected: + vgui::FileOpenStateMachine *m_pFileOpenStateMachine; + + void AddMaterial(); + +}; + + +//============================================================================= +// +//============================================================================= +class CFinalSubPanel : public CItemUploadSubPanel +{ + DECLARE_CLASS_SIMPLE( CFinalSubPanel, CItemUploadSubPanel ); + +public: + CFinalSubPanel( vgui::Panel *pParent, const char *pszName, const char *pszNextName ); + + // From CItemUploadSubPanel + virtual void UpdateGUI(); + virtual bool UpdateStatus(); + + virtual void OnCommand( const char *command ); + + virtual void PerformLayout(); + + MESSAGE_FUNC( OnQuitApp, "QuitApp" ); + + void OnZip(); +protected: + void OnGather(); + void OnStudioMDL(); + void OnHlmv(); + void OnExplore( bool bMaterial, bool bContent); + + bool GetHlmvCmd( CFmtStrMax &sHlmvCmd ); + + vgui::Button *m_pHLMVButton; + vgui::Label *m_pHLMVLabel; + + vgui::Button *m_pExploreMaterialContentButton; + vgui::Label *m_pExploreMaterialContentLabel; + + vgui::Button *m_pExploreModelContentButton; + vgui::Label *m_pExploreModelContentLabel; + + vgui::Button *m_pExploreMaterialGameButton; + vgui::Label *m_pExploreMaterialGameLabel; + + vgui::Button *m_pExploreModelGameButton; + vgui::Label *m_pExploreModelGameLabel; +}; + + +//============================================================================= +// +//============================================================================= +class CItemUploadWizard : public vgui::WizardPanel +{ + DECLARE_CLASS_SIMPLE( CItemUploadWizard, vgui::WizardPanel ); + +public: + + CItemUploadWizard( vgui::Panel *pParent, const char *pszName ); + + virtual ~CItemUploadWizard(); + + void Run(); + + void UpdateGUI(); + + // This should be templatized but this is taking too long to write already... + CAssetTF &Asset() { return m_asset; } + + virtual void OnFinishButton(); + + CItemUploadSubPanel *GetCurrentItemUploadSubPanel() + { + return dynamic_cast< CItemUploadSubPanel * >( GetCurrentSubPanel() ); + } + +protected: + friend class CItemUploadSubPanel; + + CUtlVector< vgui::DHANDLE< vgui::WizardSubPanel > > m_hSubPanelList; + + CAssetTF m_asset; + + CFinalSubPanel *m_pFinalSubPanel; + +}; + + +//============================================================================= +// +//============================================================================= +class CItemUploadDialog : public vgui::Frame +{ + DECLARE_CLASS_SIMPLE( CItemUploadDialog, vgui::Frame ); + +public: + + CItemUploadDialog( vgui::Panel *pParent, const char *pszName ); + + ~CItemUploadDialog(); + +}; + + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +extern CItemUploadDialog *g_pItemUploadDialog; + + +#endif // ITEMTEST_CONTROLS_H
\ No newline at end of file |