mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 22:27:05 +00:00
60 lines
1.7 KiB
C++
60 lines
1.7 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================
|
|
|
|
#ifndef TOOLWINDOWFACTORY_H
|
|
#define TOOLWINDOWFACTORY_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "vgui_controls/ToolWindow.h"
|
|
#include "vgui/IInput.h"
|
|
|
|
#define TOOLWINDOW_DEFAULT_WIDTH 640
|
|
#define TOOLWINDOW_DEFAULT_HEIGHT 480
|
|
#define TOOLWINDOW_MIN_WIDTH 120
|
|
#define TOOLWINDOW_MIN_HEIGHT 80
|
|
|
|
template < class T >
|
|
class CToolWindowFactory : public vgui::IToolWindowFactory
|
|
{
|
|
public:
|
|
virtual vgui::ToolWindow *InstanceToolWindow
|
|
(
|
|
vgui::Panel *parent,
|
|
bool contextLabel, // Tool window shows context button for pages with context menus?
|
|
vgui::Panel *firstPage,
|
|
char const *title,
|
|
bool contextMenu // Page has context menu
|
|
);
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Methods related to CToolWindowFactory
|
|
//-----------------------------------------------------------------------------
|
|
template < class T >
|
|
vgui::ToolWindow *CToolWindowFactory<T>::InstanceToolWindow( vgui::Panel *parent, bool contextLabel, vgui::Panel *firstPage, char const *title, bool contextMenu )
|
|
{
|
|
Assert( parent );
|
|
if ( !parent )
|
|
return NULL;
|
|
|
|
int mx, my;
|
|
vgui::input()->GetCursorPos( mx, my );
|
|
parent->ScreenToLocal( mx, my );
|
|
|
|
T *container = new T( parent, contextLabel, this, firstPage, title, contextMenu );
|
|
Assert( container );
|
|
if ( container )
|
|
{
|
|
container->SetBounds( mx, my, TOOLWINDOW_DEFAULT_WIDTH, TOOLWINDOW_DEFAULT_HEIGHT );
|
|
container->SetMinimumSize( TOOLWINDOW_MIN_WIDTH, TOOLWINDOW_MIN_HEIGHT );
|
|
}
|
|
return container;
|
|
}
|
|
|
|
#endif // TOOLWINDOWFACTORY_H
|