summaryrefslogtreecommitdiff
path: root/public/vgui_controls/Frame.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /public/vgui_controls/Frame.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'public/vgui_controls/Frame.h')
-rw-r--r--public/vgui_controls/Frame.h260
1 files changed, 260 insertions, 0 deletions
diff --git a/public/vgui_controls/Frame.h b/public/vgui_controls/Frame.h
new file mode 100644
index 0000000..0485a37
--- /dev/null
+++ b/public/vgui_controls/Frame.h
@@ -0,0 +1,260 @@
+//========= Copyright 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 );
+
+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();
+
+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( _X360 )
+ 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" );
+ CPanelAnimationVar( int, m_iTitleTextInsetYOverride, "titletextinsetY", "0" );
+};
+
+} // namespace vgui
+
+#endif // VGUI_FRAME_H