diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/public/maya/VsVGuiWindow.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/public/maya/VsVGuiWindow.h')
| -rw-r--r-- | mp/src/public/maya/VsVGuiWindow.h | 390 |
1 files changed, 195 insertions, 195 deletions
diff --git a/mp/src/public/maya/VsVGuiWindow.h b/mp/src/public/maya/VsVGuiWindow.h index 4abd4ca2..e33446dd 100644 --- a/mp/src/public/maya/VsVGuiWindow.h +++ b/mp/src/public/maya/VsVGuiWindow.h @@ -1,195 +1,195 @@ -//===== Copyright � 1996-2006, Valve Corporation, All rights reserved. ======//
-//
-// Base class for windows that draw vgui in Maya
-//
-//===========================================================================//
-
-#ifndef VSVGUIWINDOW_H
-#define VSVGUIWINDOW_H
-
-#ifdef _WIN32
-#pragma once
-#endif
-
-
-#include "imayavgui.h"
-#include "vgui_controls/Frame.h"
-#include "tier1/utlmap.h"
-#include "valveMaya.h"
-
-
-//-----------------------------------------------------------------------------
-// Forward declarations
-//-----------------------------------------------------------------------------
-class IMayaVGui;
-
-
-//-----------------------------------------------------------------------------
-// The singleton is defined here twice just so we don't have to include valvemaya.h also
-//-----------------------------------------------------------------------------
-extern IMayaVGui *g_pMayaVGui;
-
-
-//-----------------------------------------------------------------------------
-// Forward declarations
-//-----------------------------------------------------------------------------
-namespace vgui
-{
- class EditablePanel;
-}
-
-
-class CVsVGuiWindowBase
-{
-public:
- virtual void SetPeriod( float flPeriod ) = 0;
- virtual void StartTick() = 0;
- virtual void StartTick( float flPeriod ) = 0;
- virtual void StopTick() = 0;
- virtual void Tick( float flElapsedTime ) = 0;
- virtual void NonTimerTick() = 0;
-};
-
-
-//-----------------------------------------------------------------------------
-// Creates, destroys a maya vgui window
-//-----------------------------------------------------------------------------
-CVsVGuiWindowBase *CreateMayaVGuiWindow( vgui::EditablePanel *pRootPanel, const char *pPanelName );
-void DestroyMayaVGuiWindow( const char *pPanelName );
-
-
-//-----------------------------------------------------------------------------
-// Factory used to install vgui windows easily
-//-----------------------------------------------------------------------------
-class CVsVguiWindowFactoryBase : public IMayaVguiWindowFactory
-{
-public:
- CVsVguiWindowFactoryBase( const char *pWindowTypeName, const char *pDccStartupCommand );
-
- // Returns the DCC command
- const char *GetDccStartupCommand() const;
-
- // Registers/deregisters all vgui windows
- static void RegisterAllVguiWindows( );
- static void UnregisterAllVguiWindows( );
-
-protected:
- const char *m_pWindowTypeName;
- const char *m_pDccStartupCommand;
-
-private:
- CVsVguiWindowFactoryBase *m_pNext;
- static CVsVguiWindowFactoryBase *s_pFirstCommandFactory;
-};
-
-template< class T >
-class CVsVguiWindowFactory : public CVsVguiWindowFactoryBase
-{
- typedef CVsVguiWindowFactoryBase BaseClass;
-
- static bool StringLessFunc( const CUtlString &a, const CUtlString &b )
- {
- return StringLessThan( a.Get(), b.Get() );
- }
-
-
-public:
- CVsVguiWindowFactory( const char *pWindowTypeName, const char *pDccCommand )
- : BaseClass( pWindowTypeName, pDccCommand )
- , m_panelMap( StringLessFunc )
- {
- }
-
- struct PanelMapElem_s
- {
- CVsVGuiWindowBase *m_pVGuiWindow;
- T *m_pPanel;
- };
-
- typedef CUtlMap< CUtlString, PanelMapElem_s > PanelMap_t;
-
- virtual void CreateVguiWindow( const char *pPanelName )
- {
- T *pVGuiPanel = new T( NULL, pPanelName );
- vgui::Frame *pFrame = dynamic_cast< vgui::Frame * >( pVGuiPanel );
-
- if ( pFrame )
- {
- pFrame->SetSizeable( false );
- pFrame->SetCloseButtonVisible( false );
- pFrame->SetMoveable( false );
-
- CVsVGuiWindowBase *pVGuiWindow = CreateMayaVGuiWindow( pVGuiPanel, pPanelName );
-
- const CUtlString panelName( pPanelName );
-
- PanelMap_t::IndexType_t nIndex = m_panelMap.Find( panelName );
- if ( m_panelMap.IsValidIndex( nIndex ) )
- {
- merr << "[vsVguiWindow]: Panel \"" << pPanelName << "\" of Type: \"" << m_pWindowTypeName << "\" Already Exists!!!" << std::endl;
- }
- else
- {
- PanelMap_t::ElemType_t &element = m_panelMap.Element( m_panelMap.Insert( panelName ) );
- element.m_pVGuiWindow = pVGuiWindow;
- element.m_pPanel = pVGuiPanel;
- }
- }
- }
-
- virtual void DestroyVguiWindow( const char *pPanelName )
- {
- PanelMap_t::IndexType_t nIndex = m_panelMap.Find( pPanelName );
- if ( !m_panelMap.IsValidIndex( nIndex ) )
- return;
-
- PanelMap_t::ElemType_t &element = m_panelMap.Element( nIndex );
- delete element.m_pPanel;
-
- m_panelMap.Remove( CUtlString( pPanelName ) );
- DestroyMayaVGuiWindow( pPanelName );
- }
-
- virtual vgui::Frame *GetVGuiPanel( const char *pPanelName = NULL )
- {
- if ( pPanelName )
- {
- PanelMap_t::IndexType_t nPanelIndex = m_panelMap.Find( CUtlString( pPanelName ) );
- if ( m_panelMap.IsValidIndex( nPanelIndex ) )
- return dynamic_cast< vgui::Frame * >( m_panelMap.Element( nPanelIndex ).m_pPanel );
- }
- else if ( m_panelMap.Count() > 0 )
- {
- return dynamic_cast< vgui::Frame * >( m_panelMap.Element( m_panelMap.FirstInorder() ).m_pPanel );
- }
-
- return NULL;
- }
-
- virtual CVsVGuiWindowBase *GetVGuiWindow( const char *pPanelName = NULL )
- {
- if ( pPanelName )
- {
- PanelMap_t::IndexType_t nPanelIndex = m_panelMap.Find( CUtlString( pPanelName ) );
- if ( m_panelMap.IsValidIndex( nPanelIndex ) )
- return m_panelMap.Element( nPanelIndex ).m_pVGuiWindow;
- }
- else if ( m_panelMap.Count() > 0 )
- {
- return m_panelMap.Element( m_panelMap.FirstInorder() ).m_pVGuiWindow;
- }
-
- return NULL;
- }
-
-private:
-
- PanelMap_t m_panelMap;
-};
-
-
-#define INSTALL_MAYA_VGUI_WINDOW( _className, _windowTypeName, _dccCommand ) \
- static CVsVguiWindowFactory< _className > s_VsVguiWindowFactory##_className##( _windowTypeName, _dccCommand )
-
-
-#endif // VSVGUIWINDOW_H
+//===== Copyright � 1996-2006, Valve Corporation, All rights reserved. ======// +// +// Base class for windows that draw vgui in Maya +// +//===========================================================================// + +#ifndef VSVGUIWINDOW_H +#define VSVGUIWINDOW_H + +#ifdef _WIN32 +#pragma once +#endif + + +#include "imayavgui.h" +#include "vgui_controls/Frame.h" +#include "tier1/utlmap.h" +#include "valveMaya.h" + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class IMayaVGui; + + +//----------------------------------------------------------------------------- +// The singleton is defined here twice just so we don't have to include valvemaya.h also +//----------------------------------------------------------------------------- +extern IMayaVGui *g_pMayaVGui; + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +namespace vgui +{ + class EditablePanel; +} + + +class CVsVGuiWindowBase +{ +public: + virtual void SetPeriod( float flPeriod ) = 0; + virtual void StartTick() = 0; + virtual void StartTick( float flPeriod ) = 0; + virtual void StopTick() = 0; + virtual void Tick( float flElapsedTime ) = 0; + virtual void NonTimerTick() = 0; +}; + + +//----------------------------------------------------------------------------- +// Creates, destroys a maya vgui window +//----------------------------------------------------------------------------- +CVsVGuiWindowBase *CreateMayaVGuiWindow( vgui::EditablePanel *pRootPanel, const char *pPanelName ); +void DestroyMayaVGuiWindow( const char *pPanelName ); + + +//----------------------------------------------------------------------------- +// Factory used to install vgui windows easily +//----------------------------------------------------------------------------- +class CVsVguiWindowFactoryBase : public IMayaVguiWindowFactory +{ +public: + CVsVguiWindowFactoryBase( const char *pWindowTypeName, const char *pDccStartupCommand ); + + // Returns the DCC command + const char *GetDccStartupCommand() const; + + // Registers/deregisters all vgui windows + static void RegisterAllVguiWindows( ); + static void UnregisterAllVguiWindows( ); + +protected: + const char *m_pWindowTypeName; + const char *m_pDccStartupCommand; + +private: + CVsVguiWindowFactoryBase *m_pNext; + static CVsVguiWindowFactoryBase *s_pFirstCommandFactory; +}; + +template< class T > +class CVsVguiWindowFactory : public CVsVguiWindowFactoryBase +{ + typedef CVsVguiWindowFactoryBase BaseClass; + + static bool StringLessFunc( const CUtlString &a, const CUtlString &b ) + { + return StringLessThan( a.Get(), b.Get() ); + } + + +public: + CVsVguiWindowFactory( const char *pWindowTypeName, const char *pDccCommand ) + : BaseClass( pWindowTypeName, pDccCommand ) + , m_panelMap( StringLessFunc ) + { + } + + struct PanelMapElem_s + { + CVsVGuiWindowBase *m_pVGuiWindow; + T *m_pPanel; + }; + + typedef CUtlMap< CUtlString, PanelMapElem_s > PanelMap_t; + + virtual void CreateVguiWindow( const char *pPanelName ) + { + T *pVGuiPanel = new T( NULL, pPanelName ); + vgui::Frame *pFrame = dynamic_cast< vgui::Frame * >( pVGuiPanel ); + + if ( pFrame ) + { + pFrame->SetSizeable( false ); + pFrame->SetCloseButtonVisible( false ); + pFrame->SetMoveable( false ); + + CVsVGuiWindowBase *pVGuiWindow = CreateMayaVGuiWindow( pVGuiPanel, pPanelName ); + + const CUtlString panelName( pPanelName ); + + PanelMap_t::IndexType_t nIndex = m_panelMap.Find( panelName ); + if ( m_panelMap.IsValidIndex( nIndex ) ) + { + merr << "[vsVguiWindow]: Panel \"" << pPanelName << "\" of Type: \"" << m_pWindowTypeName << "\" Already Exists!!!" << std::endl; + } + else + { + PanelMap_t::ElemType_t &element = m_panelMap.Element( m_panelMap.Insert( panelName ) ); + element.m_pVGuiWindow = pVGuiWindow; + element.m_pPanel = pVGuiPanel; + } + } + } + + virtual void DestroyVguiWindow( const char *pPanelName ) + { + PanelMap_t::IndexType_t nIndex = m_panelMap.Find( pPanelName ); + if ( !m_panelMap.IsValidIndex( nIndex ) ) + return; + + PanelMap_t::ElemType_t &element = m_panelMap.Element( nIndex ); + delete element.m_pPanel; + + m_panelMap.Remove( CUtlString( pPanelName ) ); + DestroyMayaVGuiWindow( pPanelName ); + } + + virtual vgui::Frame *GetVGuiPanel( const char *pPanelName = NULL ) + { + if ( pPanelName ) + { + PanelMap_t::IndexType_t nPanelIndex = m_panelMap.Find( CUtlString( pPanelName ) ); + if ( m_panelMap.IsValidIndex( nPanelIndex ) ) + return dynamic_cast< vgui::Frame * >( m_panelMap.Element( nPanelIndex ).m_pPanel ); + } + else if ( m_panelMap.Count() > 0 ) + { + return dynamic_cast< vgui::Frame * >( m_panelMap.Element( m_panelMap.FirstInorder() ).m_pPanel ); + } + + return NULL; + } + + virtual CVsVGuiWindowBase *GetVGuiWindow( const char *pPanelName = NULL ) + { + if ( pPanelName ) + { + PanelMap_t::IndexType_t nPanelIndex = m_panelMap.Find( CUtlString( pPanelName ) ); + if ( m_panelMap.IsValidIndex( nPanelIndex ) ) + return m_panelMap.Element( nPanelIndex ).m_pVGuiWindow; + } + else if ( m_panelMap.Count() > 0 ) + { + return m_panelMap.Element( m_panelMap.FirstInorder() ).m_pVGuiWindow; + } + + return NULL; + } + +private: + + PanelMap_t m_panelMap; +}; + + +#define INSTALL_MAYA_VGUI_WINDOW( _className, _windowTypeName, _dccCommand ) \ + static CVsVguiWindowFactory< _className > s_VsVguiWindowFactory##_className##( _windowTypeName, _dccCommand ) + + +#endif // VSVGUIWINDOW_H |