diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /utils/itemtest/itemtest_vgui.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'utils/itemtest/itemtest_vgui.cpp')
| -rw-r--r-- | utils/itemtest/itemtest_vgui.cpp | 333 |
1 files changed, 333 insertions, 0 deletions
diff --git a/utils/itemtest/itemtest_vgui.cpp b/utils/itemtest/itemtest_vgui.cpp new file mode 100644 index 0000000..8db45a3 --- /dev/null +++ b/utils/itemtest/itemtest_vgui.cpp @@ -0,0 +1,333 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +//============================================================================= + +#define WIN32_LEAN_AND_MEAN +#include <Windows.h> // HINSTANCE + + +// Valve includes +#include "inputsystem/iinputsystem.h" +#include "itemtest/itemtest.h" +#include "itemtest/itemtest_controls.h" +#include "p4lib/ip4.h" +#include "tier0/icommandline.h" +#include "vgui/ILocalize.h" +#include "vgui/ISurface.h" +#include "vgui/IVGui.h" +#include "vgui_controls/consoledialog.h" +#include "vgui_controls/MessageBox.h" +#include "vgui_controls/Panel.h" + + +// Local includes +#include "itemtestapp.h" + + +// Last include +#include <tier0/memdbgon.h> + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class CConsoleDialogNew; +SpewRetval_t ConsoleDialogSpewFunc( SpewType_t spewType, const tchar *pMsg ); + + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +static vgui::Panel *g_pTopPanel = NULL; +static vgui::DHANDLE< CConsoleDialogNew > g_hConsoleDialog; +static vgui::DHANDLE< vgui::Frame > g_hMainFrame; + + +//============================================================================= +// +//============================================================================= +class CItemTestVGUIApp : public CItemTestApp +{ + typedef CItemTestApp BaseClass; + +public: + virtual bool Create(); + virtual int Main(); + + // Methods of IApplication + virtual bool PreInit(); + +protected: + static vgui::Panel *InitializeVGUI(); + + static void ShutdownVGUI(); + +}; + + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +DEFINE_WINDOWED_STEAM_APPLICATION_OBJECT( CItemTestVGUIApp ); + + +//============================================================================= +// +//============================================================================= +class CConsoleDialogNew : public vgui::CConsoleDialog +{ + DECLARE_CLASS_SIMPLE( CConsoleDialogNew, vgui::CConsoleDialog ); + +public: + CConsoleDialogNew( vgui::Panel *pPanel, const char *pszName ) + : CConsoleDialog( pPanel, pszName, false ) + { + } + + virtual void OnCommandSubmitted( const char *pszCommand ) + { + if ( !V_stricmp( pszCommand, "quit" ) ) + { + if ( g_hMainFrame ) + g_hMainFrame->Close(); + + Close(); + } + else if ( !V_stricmp( pszCommand, "help" ) ) + { + __s_ApplicationObject.PrintHelp(); + } + else + { + Warning( "Error! Unknown command \"%s\"\n", pszCommand ); + } + } + +}; + + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +bool CItemTestVGUIApp::Create() +{ + AppSystemInfo_t appSystems[] = + { + { "inputsystem.dll", INPUTSYSTEM_INTERFACE_VERSION }, + { "vgui2.dll", VGUI_IVGUI_INTERFACE_VERSION }, + { "", "" } // Required to terminate the list + }; + + if ( FindParam( kDev ) && !FindParam( kNoP4 ) ) + { + AppModule_t p4Module = LoadModule( "p4lib.dll" ); + AddSystem( p4Module, P4_INTERFACE_VERSION ); + } + + return AddSystems( appSystems ); +} + + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +bool CItemTestVGUIApp::PreInit() +{ + if ( !BaseClass::PreInit() ) + return false; + + CreateInterfaceFn factory = GetFactory(); + return vgui::VGui_InitInterfacesList( "CVguiSteamApp", &factory, 1 ); +} + + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +int CItemTestVGUIApp::Main() +{ + g_pTopPanel = InitializeVGUI(); + if ( !g_pTopPanel ) + return 1; + + SpewOutputFunc( ConsoleDialogSpewFunc ); + + if ( !g_hMainFrame ) + { + // add our main window + CItemUploadWizard *pItemUploadWizard = new CItemUploadWizard( g_pTopPanel, "Item Upload Wizard" ); + if ( pItemUploadWizard ) + { + g_hMainFrame = pItemUploadWizard; + + CAssetTF &assetTF = pItemUploadWizard->Asset(); + + ProcessCommandLine( &assetTF, false ); + pItemUploadWizard->UpdateGUI(); + } + } + + if ( !g_hConsoleDialog ) + { + if ( g_pTopPanel ) + { + CConsoleDialogNew *pConsoleDialog = g_hMainFrame ? + new CConsoleDialogNew( g_hMainFrame, "console" ) : + new CConsoleDialogNew( g_pTopPanel, "console" ); + + if ( pConsoleDialog ) + { + g_hConsoleDialog = pConsoleDialog; + if ( !g_hMainFrame ) + { + g_hMainFrame = g_hConsoleDialog; + + g_hConsoleDialog->SetSize( 640, 480 ); + g_hConsoleDialog->MoveToCenterOfScreen(); + } + else + { + int nWide = 0; + int nTall = 0; + int nX = 0; + int nY = 0; + + g_hMainFrame->GetBounds( nX, nY, nWide, nTall ); + + g_hConsoleDialog->SetSize( nWide, MAX( nTall / 3, 120 ) ); + g_hConsoleDialog->SetPos( nX, nY + nTall + 3 ); + } + + g_hConsoleDialog->Activate(); + g_hConsoleDialog->SetVisible( true ); + g_hConsoleDialog->SetDeleteSelfOnClose( true ); + g_hConsoleDialog->ColorPrint( Color( 255, 192, 0, 255 ), "\nNOTE" ); + g_hConsoleDialog->Print( ": The only commands available are 'quit' and 'help'\n" ); + } + } + } + + if ( g_hMainFrame ) + { + // show main window + g_hMainFrame->SetSizeable( true ); + g_hMainFrame->SetMenuButtonVisible( true ); + g_hMainFrame->MoveToCenterOfScreen(); + g_hMainFrame->Activate(); + + // Run the app + while ( vgui::ivgui()->IsRunning() && g_hMainFrame ) + { + vgui::ivgui()->RunFrame(); + } + } + + ShutdownVGUI(); + + return 0; +} + + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +vgui::Panel *CItemTestVGUIApp::InitializeVGUI() +{ + // Init the surface + vgui::Panel *pTopPanel = new vgui::Panel( NULL, "TopPanel" ); + if ( !pTopPanel ) + return NULL; + + pTopPanel->SetVisible( true ); + + vgui::surface()->SetEmbeddedPanel( pTopPanel->GetVPanel() ); + + // load the scheme + vgui::scheme()->LoadSchemeFromFile( "resource/itemtest_scheme.res", NULL ); + + // localization + g_pVGuiLocalize->AddFile( "resource/platform_%language%.txt"); + g_pVGuiLocalize->AddFile( "resource/vgui_%language%.txt" ); + + g_pVGuiLocalize->AddFile( "resource/itemtest_%language%.txt"); + g_pVGuiLocalize->AddFile( "resource/itemtest_english.txt"); + + // Start vgui + vgui::ivgui()->Start(); + + + return pTopPanel; +} + + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +void CItemTestVGUIApp::ShutdownVGUI() +{ + if ( g_hConsoleDialog ) + g_hConsoleDialog->Close(); + + if ( g_hMainFrame ) + g_hMainFrame->Close(); + + if ( !g_pTopPanel ) + return; + + delete g_pTopPanel; + g_pTopPanel = NULL; +} + + +//----------------------------------------------------------------------------- +// Spew func +//----------------------------------------------------------------------------- +SpewRetval_t ConsoleDialogSpewFunc( SpewType_t spewType, const tchar *pMsg ) +{ + vgui::CConsoleDialog *pConsole = g_hConsoleDialog; + + if ( !pConsole ) + return SPEW_CONTINUE; + + OutputDebugString( pMsg ); + + switch( spewType ) + { + case SPEW_ASSERT: + pConsole->ColorPrint( Color( 255, 192, 0, 255 ), pMsg ); +#ifdef _DEBUG + return SPEW_DEBUGGER; +#else + return SPEW_CONTINUE; +#endif + + case SPEW_ERROR: + pConsole->ColorPrint( Color( 255, 0, 0, 255 ), pMsg ); + break; + + case SPEW_WARNING: + pConsole->ColorPrint( Color( 192, 192, 0, 255 ), pMsg ); + break; + + case SPEW_MESSAGE: + { + Color c = *GetSpewOutputColor(); + if ( !V_stricmp( GetSpewOutputGroup(), "developer" ) ) + { + pConsole->Print( pMsg ); + } + else + { + pConsole->ColorPrint( c, pMsg ); + } + } + break; + } + + if ( vgui::ivgui()->IsRunning() && g_hMainFrame ) + { + vgui::ivgui()->RunFrame(); + } + + return SPEW_CONTINUE; +}
\ No newline at end of file |