123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- /*
- * Copyright © 2011-2020 Frictional Games
- *
- * This file is part of Amnesia: A Machine For Pigs.
- *
- * Amnesia: A Machine For Pigs is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * Amnesia: A Machine For Pigs is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Amnesia: A Machine For Pigs. If not, see <https://www.gnu.org/licenses/>.
- */
- #ifndef HPL_WIDGET_WINDOW_H
- #define HPL_WIDGET_WINDOW_H
- #include <list>
- #include <vector>
- #include "gui/Widget.h"
- namespace hpl {
- class cGuiSkinFont;
- class cWidgetButton;
- class cWidgetWindow : public iWidget
- {
- public:
- cWidgetWindow(cGuiSet *apSet, cGuiSkin *apSkin, tWidgetWindowButtonFlag alFlags = 0);
- virtual ~cWidgetWindow();
- void SetStatic(bool abX);
- bool GetStatic(){return mbStatic;}
- void SetDrawLabel(bool abX);
-
- void SetCloseButtonDisablesWindow(bool abX){mbCloseButtonDisablesWindow = abX;}
- bool GetCloseButtonDisablesWindow(){ return mbCloseButtonDisablesWindow;}
- void SetEscapeKeyClosesWindow(bool abX) { mbCloseOnEscapeKey = abX; }
- bool GetEscapeKeyClosesWindow() { return mbCloseOnEscapeKey; }
-
- protected:
- /////////////////////////
- // Window Button Callbacks
- bool ButtonPressed(iWidget* apWidget, const cGuiMessageData& aData);
- kGuiCallbackDeclarationEnd(ButtonPressed);
- /////////////////////////
- // Implemented functions
- void OnInit();
- void OnLoadGraphics();
- void OnAttachChild(iWidget *apChild);
- void OnChangeSize();
-
- void OnDraw(float afTimeStep, cGuiClipRegion *apClipRegion);
- bool OnMouseMove(const cGuiMessageData& aData);
- bool OnMouseDown(const cGuiMessageData& aData);
- bool OnMouseUp(const cGuiMessageData& aData);
- bool OnMouseEnter(const cGuiMessageData& aData);
- bool OnMouseLeave(const cGuiMessageData& aData);
- bool OnKeyPress(const cGuiMessageData& aData);
- bool OnGotFocus(const cGuiMessageData& aData);
- bool OnLostFocus(const cGuiMessageData& aData);
- void OnChildGotFocus(iWidget* apChild, const cGuiMessageData& aData);
- void OnChildLostFocus(iWidget* apChild, const cGuiMessageData& aData);
- /////////////////////////
- // Data
- cGuiSkinFont *mpLabelFont;
- cWidgetButton* mvButtons[1];
- cGuiGfxElement *mpGfxBackground;
- cGuiGfxElement *mpGfxLabel;
- cGuiGfxElement *mvGfxBorders[4];
- cGuiGfxElement *mvGfxCorners[4];
- cGuiGfxElement *mpGfxButtonCross;
- cVector3f mvLabelTextOffset;
- tWidgetWindowButtonFlag mlFlags;
- bool mbStatic;
- bool mbCloseButtonDisablesWindow;
- bool mbCloseOnEscapeKey;
- bool mbDrawLabel;
- bool mbFocused;
- cVector3f mvRelMousePos;
- bool mbMoving;
- iWidget* mpPrevAttention;
- cWidgetWindow* mpPrevTopMostWindow;
- float mfButtonSize;
- bool mbDrawBordersOutside;
- };
- };
- #endif // HPL_WIDGET_H
|