summaryrefslogtreecommitdiff
path: root/utils/vp4/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/vp4/main.cpp')
-rw-r--r--utils/vp4/main.cpp147
1 files changed, 147 insertions, 0 deletions
diff --git a/utils/vp4/main.cpp b/utils/vp4/main.cpp
new file mode 100644
index 0000000..d497573
--- /dev/null
+++ b/utils/vp4/main.cpp
@@ -0,0 +1,147 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#define NOWINRES
+#define NOSERVICE
+#define NOMCX
+#define NOIME
+#include <windows.h>
+
+#undef MessageBox
+#undef PostMessage
+
+#include "stdafx.h"
+#include "appframework/tier3app.h"
+#include "tier2/tier2.h"
+#include "inputsystem/iinputsystem.h"
+#include "vgui_controls/controls.h"
+
+// root panel
+vgui::Panel *g_pMainPanel = NULL;
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Adds in any search paths
+//-----------------------------------------------------------------------------
+void AddFileSystemSearchPaths(const char *pszExeName)
+{
+ // search locally first
+ char pExeName[MAX_PATH];
+ if ( ::GetModuleFileName( ( HINSTANCE )GetModuleHandle( NULL ), pExeName, sizeof(pExeName) ) )
+ {
+ char pPlatform[MAX_PATH];
+ Q_StripFilename( pExeName );
+ Q_snprintf( pPlatform, sizeof(pPlatform), "%s\\..\\platform", pExeName );
+ g_pFullFileSystem->AddSearchPath( pExeName, "EXECUTABLE_PATH");
+ g_pFullFileSystem->AddSearchPath( pPlatform, "PLATFORM");
+ g_pFullFileSystem->AddSearchPath( pPlatform, "SKIN");
+ }
+ else
+ {
+ g_pFullFileSystem->AddSearchPath(".", "EXECUTABLE_PATH");
+ g_pFullFileSystem->AddSearchPath("../platform/", "PLATFORM");
+ g_pFullFileSystem->AddSearchPath("../platform/", "SKIN");
+ }
+
+ // add self as a pack file
+// g_pFullFileSystem->AddPackFile(pszExeName, "PLATFORM");
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Sets up the main vgui
+//-----------------------------------------------------------------------------
+bool InitializeVGui( )
+{
+ // add in the search paths
+ AddFileSystemSearchPaths(NULL);
+
+ // Init the surface
+ g_pMainPanel = new vgui::Panel(NULL, NULL);
+ vgui::surface()->SetEmbeddedPanel( g_pMainPanel->GetVPanel() );
+
+ // load the scheme
+ g_pMainPanel->SetScheme( vgui::scheme()->LoadSchemeFromFile( "//PLATFORM/Resource/sourcescheme.res", "PLATFORM" ) );
+
+ // localization
+ g_pVGuiLocalize->AddFile( "Resource/platform_%language%.txt");
+ g_pVGuiLocalize->AddFile( "Resource/vgui_%language%.txt");
+
+ // configuration settings
+ vgui::system()->SetUserConfigFile( "vp4config.txt", "EXECUTABLE_PATH" );
+
+ // Start vgui
+ vgui::ivgui()->Start();
+
+ // finish setting up main panel
+ vgui::SETUP_PANEL( g_pMainPanel );
+
+ return true;
+}
+
+
+//-----------------------------------------------------------------------------
+// The application object
+//-----------------------------------------------------------------------------
+class CVP4App : public CVguiSteamApp
+{
+public:
+ // Methods of IApplication
+ virtual bool Create();
+ virtual int Main();
+ virtual void Destroy() {}
+};
+
+DEFINE_WINDOWED_STEAM_APPLICATION_OBJECT( CVP4App );
+
+
+//-----------------------------------------------------------------------------
+// The application object
+//-----------------------------------------------------------------------------
+bool CVP4App::Create()
+{
+ AppSystemInfo_t appSystems[] =
+ {
+ { "inputsystem.dll", INPUTSYSTEM_INTERFACE_VERSION },
+ { "vgui2.dll", VGUI_IVGUI_INTERFACE_VERSION },
+ { "p4lib.dll", P4_INTERFACE_VERSION },
+ { "", "" } // Required to terminate the list
+ };
+
+ return AddSystems( appSystems );
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: program entrypoint
+//-----------------------------------------------------------------------------
+int CVP4App::Main()
+{
+ if ( !InitializeVGui( ) )
+ {
+ ::MessageBoxA( NULL, "Fatal Error: Could not initialize vgui.", "Steam - Fatal Error", MB_OK | MB_ICONERROR );
+ return 0;
+ }
+
+ // open the wizard
+ CVP4Dialog *dlg = SETUP_PANEL(new CVP4Dialog());
+ dlg->SetParent(g_pMainPanel);
+ dlg->Activate();
+
+ // run vgui
+ while (vgui::ivgui()->IsRunning())
+ {
+ vgui::ivgui()->RunFrame();
+ }
+
+ // save configuration
+ vgui::system()->SaveUserConfigFile();
+
+ // delete all the panels
+ delete g_pMainPanel;
+
+ return 0;
+}