You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.7 KiB
60 lines
1.7 KiB
5 years ago
|
//========= 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
|