|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================
#include "mdmpRipper.h"
#include "vgui_controls/MessageMap.h"
#include "vgui_controls/MenuBar.h"
#include "vgui_controls/Menu.h"
#include "tier1/KeyValues.h"
#include "vgui/ISurface.h"
#include "vgui_controls/Frame.h"
#include "vgui_controls/FileOpenDialog.h"
#include "vgui_controls/MenuButton.h"
#include "CMDModulePanel.h"
#include "CMDErrorPanel.h"
using namespace vgui;
//-----------------------------------------------------------------------------
// Test panel
//-----------------------------------------------------------------------------
class CVGuiTestPanel : public vgui::Panel { DECLARE_CLASS_SIMPLE( CVGuiTestPanel, vgui::Panel );
public: CVGuiTestPanel( vgui::Panel *pParent, const char *pName );
virtual void PerformLayout();
private: MESSAGE_FUNC( OnOpen, "Open" ); MESSAGE_FUNC( OnError, "Error" ); MESSAGE_FUNC_PARAMS( OnCompare, "compare", data ); MESSAGE_FUNC_CHARPTR( OnFileSelected, "FileSelected", fullpath ); void CVGuiTestPanel::MiniDumpCompare( CUtlVector<HANDLE> *pMiniDumpHandles );
vgui::MenuBar *m_pMenuBar; vgui::Panel *m_pClientArea;
// void OnFileSelected( const char * filename );
};
//-----------------------------------------------------------------------------
// Class factory
//-----------------------------------------------------------------------------
vgui::Panel *CreateVGuiTestPanel( const char *pName ) { CVGuiTestPanel *pVGuiTestPanel = new CVGuiTestPanel( NULL, pName ); // pVGuiTestPanel->SetParent( g_pVGuiSurface->GetEmbeddedPanel() );
return pVGuiTestPanel; }
//-----------------------------------------------------------------------------
// Constructor
//-----------------------------------------------------------------------------
CVGuiTestPanel::CVGuiTestPanel( vgui::Panel *pParent, const char *pName ) : BaseClass( NULL, pName ) { // Create the menu bar
m_pMenuBar = new vgui::MenuBar( this, "Main Menu Bar" ); m_pMenuBar->SetSize( 10, 28 );
// Create a test menu
Menu *pFileMenu = new Menu(NULL, "File"); pFileMenu->AddMenuItem( "&Open", new KeyValues( "Open" ), this ); m_pMenuBar->AddMenu( "&File", pFileMenu );
Menu *pErrorMenu = new Menu(NULL, "Error"); pErrorMenu->AddMenuItem( "&Error", new KeyValues("Error"), this); m_pMenuBar->AddMenu( "&Error", pErrorMenu );
MenuButton *pCloseButton = new vgui::MenuButton( this, "Close", "X" ); m_pMenuBar->AddButton( pCloseButton );
// Area below the menu bar
m_pClientArea = new vgui::Panel( this, "VGuiTest Client Area "); }
//-----------------------------------------------------------------------------
// Test menu button
//-----------------------------------------------------------------------------
void CVGuiTestPanel::OnOpen() { FileOpenDialog *pFileDialog = new FileOpenDialog ( this, "File Open", true); pFileDialog->AddActionSignalTarget(this); pFileDialog->AddFilter( "*.mdmp", "MiniDumps", true ); pFileDialog->DoModal( false ); }
void CVGuiTestPanel::OnError() { CMDErrorPanel *pPanel = new CMDErrorPanel( this, "MDError Panel" ); pPanel->Create(); pPanel->AddActionSignalTarget( this ); pPanel->DoModal(); }
//-----------------------------------------------------------------------------
// The editor panel should always fill the space...
//-----------------------------------------------------------------------------
void CVGuiTestPanel::PerformLayout() { // Make the editor panel fill the space
int iWidth, iHeight;
vgui::VPANEL parent = GetParent() ? GetParent()->GetVPanel() : vgui::surface()->GetEmbeddedPanel(); vgui::ipanel()->GetSize( parent, iWidth, iHeight ); SetSize( iWidth, iHeight ); m_pMenuBar->SetSize( iWidth, 28 );
// Make the client area also fill the space not used by the menu bar
int iTemp, iMenuHeight; m_pMenuBar->GetSize( iTemp, iMenuHeight ); m_pClientArea->SetPos( 0, iMenuHeight ); m_pClientArea->SetSize( iWidth, iHeight - iMenuHeight ); }
void CVGuiTestPanel::OnCompare( KeyValues *data ) { int test = data->GetInt( "handlePointer" ); CUtlVector<HANDLE> *pMiniDumpHandles = (CUtlVector<HANDLE> *)(void *)test; CUtlVector<CMiniDumpObject *> miniDumps;
for( int i = 0; i < pMiniDumpHandles->Count(); i++ ) { miniDumps.AddToTail( new CMiniDumpObject( pMiniDumpHandles->Element( i ) ) ); } CMDModulePanel *pPanel = new CMDModulePanel( this, "MDModule Panel" ); pPanel->Create( &miniDumps ); pPanel->DoModal(); miniDumps.RemoveAll(); pMiniDumpHandles->RemoveAll(); }
void CVGuiTestPanel::OnFileSelected( const char *filename ) { CMDModulePanel *pPanel = new CMDModulePanel( this, "MDModule Panel" ); pPanel->Create( filename ); pPanel->DoModal(); }
|