40#include <unordered_map>
41#include <unordered_set>
96 void SendEventToAll(
const CStr& eventName,
const JS::HandleValueArray& paramData);
152 void SetGlobalHotkey(
const CStr& hotkeyTag,
const CStr& eventName, JS::HandleValue function);
306 template <
typename T>
635 std::unordered_map<const js::BaseProxyHandler*, std::unique_ptr<GUIProxyProps>>
m_ProxyData;
680 std::map<CStr, std::unique_ptr<const CGUISprite>>
m_Sprites;
std::map< CStr, IGUIObject * > map_pObjects
Definition: CGUI.h:55
const double SELECT_DBLCLICK_RATE
Definition: CGUI.cpp:54
EGUIMessageType
Message types.
Definition: SGUIMessage.h:28
Definition: Canvas2D.h:36
Definition: CGUISprite.h:134
The GUI sprite, is actually several real sprites (images) like a collage.
Definition: CGUISprite.h:113
The main object that represents a whole GUI page.
Definition: CGUI.h:61
std::unordered_map< const js::BaseProxyHandler *, std::unique_ptr< GUIProxyProps > > m_ProxyData
This is intended to store the JSFunction when accessing certain properties.
Definition: CGUI.h:635
bool ObjectExists(const CStr &Name) const
Checks if object exists and return true or false accordingly.
Definition: CGUI.cpp:399
const SGUIStyle & GetStyle(const CStr &name) const
Get Style if it exists, otherwise throws an exception.
Definition: CGUI.h:245
static const CStr EventNamePress
Definition: CGUI.h:658
std::map< CStr, std::map< CStr, JS::PersistentRootedValue > > m_GlobalHotkeys
Map from hotkey names to maps of eventNames to functions that are triggered when the hotkey goes thro...
Definition: CGUI.h:649
const unsigned int & GetMouseButtons()
Returns the currently pressed mouse buttons.
Definition: CGUI.h:190
void Xeromyces_ReadRepeat(const XMBData &xmb, XMBElement element, IGUIObject *pParent, std::vector< std::pair< CStr, CStr > > &NameSubst, std::unordered_set< VfsPath > &Paths, u32 nesting_depth)
Reads in the element <repeat>, which repeats its child <object>s 'count' times, replacing the string ...
Definition: CGUI.cpp:930
void AddObjectType(const CStr &str, ConstructObjectFunction pFunc)
The GUI needs to have all object types inputted and their constructors.
Definition: CGUI.h:214
std::map< CStr, const SGUIIcon > m_Icons
Definition: CGUI.h:689
std::map< CStr, ConstructObjectFunction > m_ObjectTypes
Function pointers to functions that constructs IGUIObjects by name... For instance m_ObjectTypes["but...
Definition: CGUI.h:623
void Xeromyces_ReadEffects(const XMBData &xmb, XMBElement element, SGUIImageEffects &effects)
Reads in the element <effect> (the XMBElement) and stores the result within the SGUIImageEffects.
Definition: CGUI.cpp:1132
std::map< CStr, std::vector< IGUIObject * > > m_HotkeyObjects
Map from hotkey names to objects that listen to the hotkey.
Definition: CGUI.h:642
CVector2D m_MousePos
don't want to pass this around with the ChooseMouseOverAndClosest broadcast - we'd need to pack this ...
Definition: CGUI.h:571
const SGUIScrollBarStyle * GetScrollBarStyle(const CStr &style) const
Definition: CGUI.cpp:528
bool HasIcon(const CStr &name) const
Check if an icon exists.
Definition: CGUI.h:230
void SendEventToAll(const CStr &eventName)
Sends a specified script event to every object.
Definition: CGUI.cpp:306
GUITooltip m_Tooltip
Definition: CGUI.h:580
static const CStr EventNameRelease
Definition: CGUI.h:660
void Xeromyces_ReadStyle(const XMBData &xmb, XMBElement element)
Reads in the element <style> (the XMBElement) and stores the result in m_Styles.
Definition: CGUI.cpp:1149
void Xeromyces_ReadImage(const XMBData &xmb, XMBElement element, CGUISprite &parent)
Reads in the element <image> (the XMBElement) and stores the result within the CGUISprite.
Definition: CGUI.cpp:1044
std::map< CStr, const CGUIColor > m_PreDefinedColors
Definition: CGUI.h:677
CSize2D GetWindowSize() const
Returns the current GUI window size.
Definition: CGUI.cpp:421
std::shared_ptr< ScriptInterface > GetScriptInterface()
Definition: CGUI.h:259
void Xeromyces_ReadTooltip(const XMBData &xmb, XMBElement element)
Reads in the element <tooltip> (the XMBElement) and stores the result as an object with the name __to...
Definition: CGUI.cpp:1285
bool HasPreDefinedColor(const CStr &name) const
Check if a predefined color of that name exists.
Definition: CGUI.h:250
std::unique_ptr< IGUIObject > m_BaseObject
Base Object, all its children are considered parentless because this is not a real object per se.
Definition: CGUI.h:592
void Xeromyces_ReadScript(const XMBData &xmb, XMBElement element, std::unordered_set< VfsPath > &Paths)
Reads in the element <script> (the XMBElement) and executes the script's code.
Definition: CGUI.cpp:958
InReaction HandleEvent(const SDL_Event_ *ev)
The replacement of Process(), handles an SDL_Event_.
Definition: CGUI.cpp:117
IGUIObject * ConstructObject(const CStr &str)
You input the name of the object type, and let's say you input "button", then it will construct a CGU...
Definition: CGUI.cpp:365
IGUIObject * GetBaseObject()
Return the object which is an ancestor of every other GUI object.
Definition: CGUI.cpp:394
void UnsetGlobalHotkey(const CStr &hotkeyTag, const CStr &eventName)
Definition: CGUI.cpp:516
static const CStr EventNameMouseRightRelease
Definition: CGUI.h:668
void SetObjectStyle(IGUIObject *pObject, const CStr &styleName)
Allows the JS side to modify the style setting assigned to a GUI object.
Definition: CGUI.cpp:455
map_pObjects m_pAllObjects
Just pointers for fast name access, each object is really constructed within its parent for easy recu...
Definition: CGUI.h:608
std::shared_ptr< ScriptInterface > m_ScriptInterface
Definition: CGUI.h:564
void SetObjectHotkey(IGUIObject *pObject, const CStr &hotkeyTag)
Allows the JS side to modify the hotkey setting assigned to a GUI object.
Definition: CGUI.cpp:467
void UnsetObjectStyle(IGUIObject *pObject)
Definition: CGUI.cpp:462
void SendFocusMessage(EGUIMessageType msg)
Alert the focussed object of this GUIPage that the focus of the page has changed.
Definition: CGUI.cpp:426
static const CStr EventNameTick
Definition: CGUI.h:657
void Xeromyces_ReadRootObjects(const XMBData &xmb, XMBElement element, std::unordered_set< VfsPath > &Paths)
Reads in the root element <objects> (the DOMElement).
Definition: CGUI.cpp:578
static const CStr EventNameLoad
XML and JS can subscribe handlers to events identified by these names.
Definition: CGUI.h:656
const CGUIColor & GetPreDefinedColor(const CStr &name) const
Resolve the predefined color if it exists, otherwise throws an exception.
Definition: CGUI.h:255
static const CStr EventNameKeyDown
Definition: CGUI.h:659
static const CStr EventNameMouseWheelDown
Definition: CGUI.h:663
void Xeromyces_ReadRootSprites(const XMBData &xmb, XMBElement element)
Reads in the root element <sprites> (the DOMElement).
Definition: CGUI.cpp:597
void SetFocusedObject(IGUIObject *pObject)
Change focus to new object.
Definition: CGUI.cpp:435
IGUIObject * Xeromyces_ReadObject(const XMBData &xmb, XMBElement element, IGUIObject *pParent, std::vector< std::pair< CStr, CStr > > &NameSubst, std::unordered_set< VfsPath > &Paths, u32 nesting_depth)
Notice! Recursive function!
Definition: CGUI.cpp:627
static const CStr EventNameMouseLeftPress
Definition: CGUI.h:662
static const CStr EventNameMouseLeftDoubleClick
Definition: CGUI.h:665
void Xeromyces_ReadColor(const XMBData &xmb, XMBElement element)
Reads in the element <color> (the XMBElement) and stores the result in m_PreDefinedColors.
Definition: CGUI.cpp:1304
IGUIObject *(*)(CGUI &) ConstructObjectFunction
Definition: CGUI.h:66
void LoadXmlFile(const VfsPath &Filename, std::unordered_set< VfsPath > &Paths)
Load a GUI XML file into the GUI.
Definition: CGUI.cpp:540
void UpdateResolution()
Update Resolution, should be called every time the resolution of the OpenGL screen has been changed,...
Definition: CGUI.cpp:360
static const CStr EventNameMouseRightDoubleClick
Definition: CGUI.h:667
IGUIObject * m_FocusedObject
Focused object! Say an input box that is selected.
Definition: CGUI.h:599
void DrawSprite(const CGUISpriteInstance &Sprite, CCanvas2D &canvas, const CRect &Rect, const CRect &Clipping=CRect())
Draw GUI Sprite.
Definition: CGUI.cpp:349
unsigned int m_MouseButtons
Indicates which buttons are pressed (bit 0 = LMB, bit 1 = RMB, bit 2 = MMB)
Definition: CGUI.h:577
static bool ParseString(const CGUI *pGUI, const CStrW &Value, T &tOutput)
Reads a string value and modifies the given value of type T if successful.
const CVector2D & GetMousePos() const
Returns the current screen coordinates of the cursor.
Definition: CGUI.h:185
void Draw(CCanvas2D &canvas)
Displays the whole GUI.
Definition: CGUI.cpp:328
static const CStr EventNameMouseRightPress
Definition: CGUI.h:661
void Xeromyces_ReadScrollBarStyle(const XMBData &xmb, XMBElement element)
Reads in the element <scrollbar> (the XMBElement) and stores the result in m_ScrollBarStyles.
Definition: CGUI.cpp:1169
void UnsetObjectHotkey(IGUIObject *pObject, const CStr &hotkeyTag)
Definition: CGUI.cpp:473
void AddObjectTypes()
Informs the GUI page which GUI object types may be constructed from XML.
Definition: GUIObjectTypes.cpp:38
IGUIObject * FindObjectByName(const CStr &Name) const
Returns the GUI object with the desired name, or nullptr if no match is found,.
Definition: CGUI.cpp:404
static const CStr EventNameMouseWheelUp
Definition: CGUI.h:664
void LoadedXmlFiles()
Called after all XML files linked in the page file were loaded.
Definition: CGUI.cpp:564
GUIProxyProps * GetProxyData(const js::BaseProxyHandler *ptr)
Definition: CGUI.h:257
CGUI(ScriptContext &context)
Definition: CGUI.cpp:98
void Xeromyces_ReadIcon(const XMBData &xmb, XMBElement element)
Reads in the element <icon> (the XMBElement) and stores the result in m_Icons.
Definition: CGUI.cpp:1252
std::map< CStr, std::unique_ptr< const CGUISprite > > m_Sprites
Definition: CGUI.h:680
void TickObjects()
Performs processing that should happen every frame (including sending the "Tick" event to scripts)
Definition: CGUI.cpp:299
void Xeromyces_ReadRootSetup(const XMBData &xmb, XMBElement element)
Reads in the root element <setup> (the DOMElement).
Definition: CGUI.cpp:609
static const CStr EventNameMouseLeftRelease
Definition: CGUI.h:666
void SetGlobalHotkey(const CStr &hotkeyTag, const CStr &eventName, JS::HandleValue function)
Allows the JS side to add or remove global hotkeys.
Definition: CGUI.cpp:489
void Xeromyces_ReadRootStyles(const XMBData &xmb, XMBElement element)
Reads in the root element <styles> (the DOMElement).
Definition: CGUI.cpp:603
IGUIObject * FindObjectUnderMouse()
Returns the GUI object under the mouse, or nullptr if none.
Definition: CGUI.cpp:414
bool HasStyle(const CStr &name) const
Check if a style exists.
Definition: CGUI.h:240
~CGUI()
Definition: CGUI.cpp:111
IGUIObject * GetFocusedObject()
Get Focused Object.
Definition: CGUI.h:282
std::unordered_map< CStr, std::vector< IGUIObject * > > m_EventObjects
Map from event names to object which listen to a given event.
Definition: CGUI.h:695
std::map< CStr, const SGUIStyle > m_Styles
Definition: CGUI.h:683
void Xeromyces_ReadSprite(const XMBData &xmb, XMBElement element)
Reads in the element <sprite> (the XMBElement) and stores the result in a new CGUISprite.
Definition: CGUI.cpp:999
bool AddObject(IGUIObject &parent, IGUIObject &child)
The CGUI takes ownership of the child object and links the parent with the child.
Definition: CGUI.cpp:375
std::map< CStr, const SGUIScrollBarStyle > m_ScrollBarStyles
Definition: CGUI.h:686
const SGUIIcon & GetIcon(const CStr &name) const
Get Icon (a const reference, can never be changed)
Definition: CGUI.h:235
int m_InternalNameNumber
Number of object that has been given name automatically.
Definition: CGUI.h:616
Rectangle class used for screen rectangles.
Definition: Rect.h:31
Definition: Vector2D.h:32
Proxies need to store some data whose lifetime is tied to an interface.
Definition: JSInterface_GUIProxy.h:86
GUI object such as a button or an input-box.
Definition: IGUIObject.h:60
Wrapper class for OS paths used by the game.
Definition: Paths.h:28
Abstraction around a SpiderMonkey JSContext.
Definition: ScriptContext.h:46
Definition: XMBData.h:136
#define T(string_literal)
Definition: secure_crt.cpp:77
Same as the CColor class, but this one can also parse colors predefined in the GUI page (such as "yel...
Definition: CGUIColor.h:30
Icon, you create them in the XML file with root element <setup>.
Definition: SGUIIcon.h:29
Definition: CGUISprite.h:40
Contains a list of values for new defaults to objects.
Definition: SGUIStyle.h:29
uint32_t u32
Definition: types.h:39