From f9158592e1478b2013afc7041d9ed041cf2d2f4a Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Mon, 13 Jan 2014 19:47:58 +1000 Subject: Update Irrlicht to 1.8.1. Include actual change markers this time. lol --- .../tools/GUIEditor/CGUIEditWorkspace.h | 168 +++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 libraries/irrlicht-1.8.1/tools/GUIEditor/CGUIEditWorkspace.h (limited to 'libraries/irrlicht-1.8.1/tools/GUIEditor/CGUIEditWorkspace.h') diff --git a/libraries/irrlicht-1.8.1/tools/GUIEditor/CGUIEditWorkspace.h b/libraries/irrlicht-1.8.1/tools/GUIEditor/CGUIEditWorkspace.h new file mode 100644 index 0000000..3f21258 --- /dev/null +++ b/libraries/irrlicht-1.8.1/tools/GUIEditor/CGUIEditWorkspace.h @@ -0,0 +1,168 @@ +// Copyright (C) 2002-2012 Nikolaus Gebhardt / Gaz Davidson +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in irrlicht.h + +#ifndef __C_GUIEDIT_WORKSPACE_H_INCLUDED__ +#define __C_GUIEDIT_WORKSPACE_H_INCLUDED__ + +#include "IGUIElement.h" +#include "CGUIEditWindow.h" +#include "EGUIEditTypes.h" + +namespace irr +{ +namespace gui +{ + + //! Adding the GUI Editor Workspace to an element allows you + /** to create, edit, load and save any elements supported + by any loaded factories. + When you add it without a parent (to the root element) + it will also allow you to edit, load and save settings in + the current skin. + */ + + // custom events + enum EGUIEDIT_CUSTOM_EVENTS + { + EGUIEDCE_ATTRIB_EDITOR = MAKE_IRR_ID('g','A','t','t'), + EGUIEDCE_OPTION_EDITOR = MAKE_IRR_ID('g','O','p','t'), + EGUIEDCE_ENV_EDITOR = MAKE_IRR_ID('g','E','n','v') + }; + + class CGUIEditWorkspace : public IGUIElement + { + public: + + //! constructor + CGUIEditWorkspace(IGUIEnvironment* environment, s32 id=-1, IGUIElement *parent=0); + + //! destructor + ~CGUIEditWorkspace(); + + //! called if an event happened. + virtual bool OnEvent(const SEvent &event); + + //! Removes a child. + virtual void removeChild(IGUIElement* child); + + //! draws the element and its children + virtual void draw(); + + //! Updates the absolute position. + virtual void updateAbsolutePosition(); + + //! Sets the menu command id's + /** The GUI editor defaults to command ID's from 0xED17 to 0xED17+EGUIEDMC_COUNT + In the rare case that these are already in use and you wish to use menus + while the editor is present you can set a new offset here. + */ + virtual void setMenuCommandIDStart(s32 id); + + //! grid drawing... + virtual void setDrawGrid(bool drawGrid); + virtual void setGridSize(const core::dimension2di& gridSize); + virtual void setUseGrid(bool useGrid); + + //! returns the first editable element under the mouse + virtual IGUIElement* getEditableElementFromPoint(IGUIElement *start, const core::position2di &point, s32 index=0 ); + + //! selecting elements + virtual void setSelectedElement(IGUIElement *sel); + virtual void selectNextSibling(); + virtual void selectPreviousSibling(); + + //! returns the selected element + virtual IGUIElement* getSelectedElement(); + + //! copies the xml of the selected element and all children to the clipboard + virtual void CopySelectedElementXML(); + + //! copies the xml of the selected element and all children to the clipboard + virtual void PasteXMLToSelectedElement(); + + virtual const c8* getTypeName() const + { + return GUIEditElementTypeNames[EGUIEDIT_GUIEDIT]; + } + + virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0); + virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0); + + private: + + enum EGUIEDIT_MODE + { + // when we are currently selecting an element + EGUIEDM_SELECT=0, + // selecting a new parent for the selected element + EGUIEDM_SELECT_NEW_PARENT, + + // moving the selected element + EGUIEDM_MOVE, + // resizing the selected element + EGUIEDM_RESIZE_TL, + EGUIEDM_RESIZE_T, + EGUIEDM_RESIZE_TR, + EGUIEDM_RESIZE_R, + EGUIEDM_RESIZE_BR, + EGUIEDM_RESIZE_B, + EGUIEDM_RESIZE_BL, + EGUIEDM_RESIZE_L + }; + + enum EGUIEDIT_MENUCOMMANDS + { + //! file commands + EGUIEDMC_FILE_NEW, + EGUIEDMC_FILE_LOAD, + EGUIEDMC_FILE_SAVE, + //! edit menu + EGUIEDMC_CUT_ELEMENT, + EGUIEDMC_COPY_ELEMENT, + EGUIEDMC_PASTE_ELEMENT, + EGUIEDMC_DELETE_ELEMENT, + EGUIEDMC_SET_PARENT, + EGUIEDMC_BRING_TO_FRONT, + EGUIEDMC_SAVE_ELEMENT, + //! grid + EGUIEDMC_TOGGLE_EDITOR, + + EGUIEDMC_INSERT_XML, + + //! number of menu options + EGUIEDMC_COUNT + }; + + EGUIEDIT_MODE getModeFromPos(core::position2di p); + + EGUIEDIT_MODE CurrentMode; + EGUIEDIT_MODE MouseOverMode; + core::position2di DragStart; + core::position2di StartMovePos; + core::rect SelectedArea; + + core::dimension2di GridSize; + s32 MenuCommandStart; + bool DrawGrid, UseGrid; + + IGUIElement *MouseOverElement, + *SelectedElement; + CGUIEditWindow *EditorWindow; + + core::rect TLRect; + core::rect TRRect; + core::rect TopRect; + core::rect BLRect; + core::rect LRect; + core::rect RRect; + core::rect BRRect; + core::rect BRect; + }; + + +} // end namespace gui +} // end namespace irr + +#endif + -- cgit v1.1