//====== Copyright © 1996-2005, 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::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 ); container->SetToolWindowFactory( this ); } return container; } #endif // TOOLWINDOWFACTORY_H