1
0
forked from 0ad/0ad
0ad/source/gui/GUIbase.h
Gee c2a71e41bf Essential files for the GUI
This was SVN commit r31.
2003-11-06 00:21:45 +00:00

114 lines
2.8 KiB
C++
Executable File

/*
GUI Core, stuff that the whole GUI uses
by Gustav Larsson
gee@pyro.nu
--Overview--
Contains defines, includes, types etc that the whole
GUI should have included.
--More info--
http://gee.pyro.nu/wfg/GUI/
*/
#ifndef GUIbase_H
#define GUIbase_H
//--------------------------------------------------------
// Compiler specific
//--------------------------------------------------------
#ifdef _MSC_VER
# pragma warning(disable:4786)
#endif
//--------------------------------------------------------
// Includes / Compiler directives
//--------------------------------------------------------
//--------------------------------------------------------
// Forward declarations
//--------------------------------------------------------
class CGUIObject;
//--------------------------------------------------------
// Macros
//--------------------------------------------------------
// Temp
#define CInput nemInput
#define CStr std::string
// Example
// GUI_ADD_OFFSET(CButton, SButtonSettings, m_Settings, "frozen", m_Frozen);
//
#define GUI_ADD_OFFSET(_class, _struct, name, type, str, var) \
m_SettingsInfo[str].m_Offset = offsetof(_class, name) + offsetof(_struct, var); \
m_SettingsInfo[str].m_Type = type;
// Declares the static variable in CGUISettingsObject<>
#define DECLARE_SETTINGS_INFO(_struct) \
map_Settings CGUISettingsObject<_struct>::m_SettingsInfo;
// Setup an object's ConstructObject function
#define GUI_OBJECT(obj) \
public: \
static CGUIObject *ConstructObject() { return new obj(); }
//--------------------------------------------------------
// Types
//--------------------------------------------------------
// Message send to HandleMessage in order
// to give life to Objects manually with
// a derived HandleMessage().
enum EGUIMessage
{
GUIM_PREPROCESS,
GUIM_POSTPROCESS,
GUIM_MOUSE_OVER,
GUIM_MOUSE_ENTER,
GUIM_MOUSE_LEAVE,
GUIM_MOUSE_PRESS_LEFT,
GUIM_MOUSE_PRESS_RIGHT,
GUIM_MOUSE_DOWN_LEFT,
GUIM_MOUSE_DOWN_RIGHT,
GUIM_MOUSE_RELEASE_LEFT,
GUIM_MOUSE_RELEASE_RIGHT,
GUIM_SETTINGS_UPDATED,
GUIM_PRESSED
};
// Recurse restrictions, when we recurse, if an object
// is hidden for instance, you might want it to skip
// the children also
// Notice these are flags! and we don't really need one
// for no restrictions, because then you'll just enter 0
enum
{
GUIRR_HIDDEN=1,
GUIRR_DISABLED=2
};
// Typedefs
typedef std::map<CStr, CGUIObject*> map_pObjects;
//--------------------------------------------------------
// Error declarations
//--------------------------------------------------------
DECLARE_ERROR(PS_NAME_TAKEN)
DECLARE_ERROR(PS_OBJECT_FAIL)
DECLARE_ERROR(PS_SETTING_FAIL)
DECLARE_ERROR(PS_VALUE_INVALID)
DECLARE_ERROR(PS_NEEDS_PGUI)
DECLARE_ERROR(PS_NAME_AMBIGUITY)
DECLARE_ERROR(PS_NEEDS_NAME)
DECLARE_ERROR(PS_LEXICAL_FAIL)
DECLARE_ERROR(PS_SYNTACTICAL_FAIL)
#endif