|
|
//========= Copyright � 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef VGUI_FRAME_H
#define VGUI_FRAME_H
#ifdef _WIN32
#pragma once
#endif
#include <vgui/vgui.h>
#include <vgui/Dar.h>
#include <vgui_controls/Panel.h>
#include <vgui_controls/EditablePanel.h>
#include <vgui_controls/FocusNavGroup.h>
namespace vgui {
class FrameButton; class FrameSystemButton;
//-----------------------------------------------------------------------------
// Purpose: Windowed frame
//-----------------------------------------------------------------------------
class Frame : public EditablePanel { DECLARE_CLASS_SIMPLE( Frame, EditablePanel );
public: Frame(Panel *parent, const char *panelName, bool showTaskbarIcon = true, bool bPopup = true ); virtual ~Frame();
// Set the text in the title bar. Set surfaceTitle=true if you want this to be the taskbar text as well.
virtual void SetTitle(const char *title, bool surfaceTitle); virtual void SetTitle(const wchar_t *title, bool surfaceTitle);
// Bring the frame to the front and requests focus, ensures it's not minimized
virtual void Activate();
// activates the dialog; if dialog is not currently visible it starts it minimized and flashing in the taskbar
virtual void ActivateMinimized();
// closes the dialog
MESSAGE_FUNC( Close, "Close" ); MESSAGE_FUNC( CloseModal, "CloseModal" );
// sets the dialog to delete self on close
virtual void SetDeleteSelfOnClose( bool state );
// Move the dialog to the center of the screen
virtual void MoveToCenterOfScreen();
// Set the movability of the panel
virtual void SetMoveable(bool state); // Check the movability of the panel
virtual bool IsMoveable();
// Set the resizability of the panel
virtual void SetSizeable(bool state); // Check the resizability of the panel
virtual bool IsSizeable(); // Toggle visibility of the system menu button
virtual void SetMenuButtonVisible(bool state); void SetMenuButtonResponsive(bool state);
// Toggle visibility of the minimize button
virtual void SetMinimizeButtonVisible(bool state); // Toggle visibility of the maximize button
virtual void SetMaximizeButtonVisible(bool state); // Toggles visibility of the minimize-to-systray icon (defaults to false)
virtual void SetMinimizeToSysTrayButtonVisible(bool state);
// Toggle visibility of the close button
virtual void SetCloseButtonVisible(bool state);
// returns true if the dialog is currently minimized
virtual bool IsMinimized(); // Flash the window system tray button until the frame gets focus
virtual void FlashWindow(); // Stops any window flashing
virtual void FlashWindowStop(); // command handling
virtual void OnCommand(const char *command);
// Get the system menu
virtual Menu *GetSysMenu(); // Set the system menu
virtual void SetSysMenu(Menu *menu);
// Set the system menu images
void SetImages( const char *pEnabledImage, const char *pDisabledImage = NULL );
// set whether the title bar should be rendered
virtual void SetTitleBarVisible( bool state );
// When moving via caption, don't let any part of window go outside parent's bounds
virtual void SetClipToParent( bool state ); virtual bool GetClipToParent() const;
// Set to true to make the caption height small
virtual void SetSmallCaption( bool state ); virtual bool IsSmallCaption() const;
virtual int GetDraggerSize(); virtual int GetCornerSize(); virtual int GetBottomRightSize(); virtual int GetCaptionHeight();
/* CUSTOM MESSAGE HANDLING
"SetTitle" input: "text" - string to set the title to be */
// Load the control settings
virtual void LoadControlSettings( const char *dialogResourceName, const char *pathID = NULL, KeyValues *pPreloadedKeyValues = NULL, KeyValues *pConditions = NULL );
void SetChainKeysToParent( bool state ); bool CanChainKeysToParent() const;
// Shows the dialog in a modal fashion
virtual void DoModal();
void PlaceUnderCursor( );
// Disables the fade-in/out-effect even if configured in the scheme settings
void DisableFadeEffect( void );
// Temporarily enables or disables the fade effect rather than zeroing the fade times as done in DisableFadeEffect
void SetFadeEffectDisableOverride( bool disabled );
virtual void OnGripPanelMoved( int nNewX, int nNewY, int nNewW, int nNewH ); virtual void OnGripPanelMoveFinished() {}
protected: // Respond to mouse presses
virtual void OnMousePressed(MouseCode code); // Respond to Key typing
virtual void OnKeyCodeTyped(KeyCode code); virtual void OnKeyTyped(wchar_t unichar); // Respond to Key releases
virtual void OnKeyCodeReleased(KeyCode code); // Respond to Key focus ticks
virtual void OnKeyFocusTicked(); virtual void ApplySchemeSettings(IScheme *pScheme); // Recalculate the position of all items
virtual void PerformLayout(); // Respond when a close message is recieved. Can be called directly to close a frame.
virtual void OnClose(); // Respond to a window finishing its closure. i.e. when a fading window has fully finished its fadeout.
virtual void OnFinishedClose(); // Minimize the window on the taskbar.
MESSAGE_FUNC( OnMinimize, "Minimize" ); // Called when minimize-to-systray button is pressed (does nothing by default)
virtual void OnMinimizeToSysTray(); // the frame close button was pressed
MESSAGE_FUNC( OnCloseFrameButtonPressed, "CloseFrameButtonPressed" ); // Add the child to the focus nav group
virtual void OnChildAdded(VPANEL child); // settings
virtual void ApplySettings(KeyValues *inResourceData); // records the settings into the resource data
virtual void GetSettings(KeyValues *outResourceData); virtual const char *GetDescription( void );
// gets the default position and size on the screen to appear the first time (defaults to centered)
virtual bool GetDefaultScreenPosition(int &x, int &y, int &wide, int &tall);
// painting
virtual void PaintBackground();
// per-frame thinking, used for transition effects
virtual void OnThink();
// screen size
virtual void OnScreenSizeChanged(int iOldWide, int iOldTall);
// Get the size of the panel inside the frame edges.
virtual void GetClientArea(int &x, int &y, int &wide, int &tall);
// user configuration settings
// this is used for any control details the user wants saved between sessions
// eg. dialog positions, last directory opened, list column width
virtual void ApplyUserConfigSettings(KeyValues *userConfig);
// returns user config settings for this control
virtual void GetUserConfigSettings(KeyValues *userConfig);
// optimization, return true if this control has any user config settings
virtual bool HasUserConfigSettings();
virtual void GetSizerClientArea(int &x, int &y, int &wide, int &tall);
private: MESSAGE_FUNC_CHARPTR( InternalSetTitle, "SetTitle", text ); MESSAGE_FUNC( InternalFlashWindow, "FlashWindow" ); MESSAGE_FUNC_PARAMS( OnDialogVariablesChanged, "DialogVariables", dialogVariables );
void SetupResizeCursors(); void LayoutProportional( FrameButton *bt); void FinishClose(); void OnFrameFocusChanged(bool bHasFocus);
Color _titleBarBgColor; Color _titleBarDisabledBgColor; Color _titleBarFgColor; Color _titleBarDisabledFgColor; Color m_InFocusBgColor; Color m_OutOfFocusBgColor; TextImage *_title;
#if !defined( _GAMECONSOLE )
Panel *_topGrip; Panel *_bottomGrip; Panel *_leftGrip; Panel *_rightGrip; Panel *_topLeftGrip; Panel *_topRightGrip; Panel *_bottomLeftGrip; Panel *_bottomRightGrip; Panel *_captionGrip; FrameButton *_minimizeButton; FrameButton *_maximizeButton; FrameButton *_minimizeToSysTrayButton; FrameButton *_closeButton; FrameSystemButton *_menuButton; Menu *_sysMenu; #endif
float m_flTransitionEffectTime; float m_flFocusTransitionEffectTime; int m_iClientInsetX; int m_iClientInsetY; int m_iTitleTextInsetX; int m_nGripperWidth; VPANEL m_hPreviousModal; HFont m_hCustomTitleFont;
bool _sizeable : 1; bool _moveable : 1; bool m_bHasFocus : 1; bool _flashWindow : 1; bool _nextFlashState : 1; bool _drawTitleBar : 1; bool m_bPreviouslyVisible : 1; bool m_bFadingOut : 1; bool m_bDeleteSelfOnClose : 1; bool m_bDisableFadeEffect : 1; bool m_bClipToParent : 1; bool m_bSmallCaption : 1; bool m_bChainKeysToParent : 1; bool m_bPrimed : 1; bool m_iClientInsetXOverridden : 1; CPanelAnimationVarAliasType( int, m_iTitleTextInsetXOverride, "titletextinsetX", "0", "proportional_int" ); CPanelAnimationVarAliasType( int, m_iTitleTextInsetYOverride, "titletextinsetY", "0", "proportional_int" ); };
} // namespace vgui
#endif // VGUI_FRAME_H
|