Przeglądaj źródła

More work on improving documentation for Doxygen generation

BearishSun 10 lat temu
rodzic
commit
3951b7f825
29 zmienionych plików z 1016 dodań i 1406 usunięć
  1. 17 23
      BansheeEditor/BansheeEditor.vcxproj.filters
  2. 22 47
      BansheeEditor/Include/BsBuildManager.h
  3. 37 49
      BansheeEditor/Include/BsCodeEditor.h
  4. 98 137
      BansheeEditor/Include/BsDockManager.h
  5. 29 30
      BansheeEditor/Include/BsDockManagerLayout.h
  6. 15 28
      BansheeEditor/Include/BsDropDownWindow.h
  7. 17 20
      BansheeEditor/Include/BsDropDownWindowManager.h
  8. 55 0
      BansheeEditor/Include/BsEditorPrerequisites.h
  9. 72 128
      BansheeEditor/Include/BsEditorWidget.h
  10. 59 87
      BansheeEditor/Include/BsEditorWidgetContainer.h
  11. 14 19
      BansheeEditor/Include/BsEditorWidgetLayout.h
  12. 33 45
      BansheeEditor/Include/BsEditorWidgetManager.h
  13. 20 33
      BansheeEditor/Include/BsEditorWindow.h
  14. 32 61
      BansheeEditor/Include/BsEditorWindowBase.h
  15. 16 24
      BansheeEditor/Include/BsEditorWindowManager.h
  16. 30 45
      BansheeEditor/Include/BsGUIColor.h
  17. 16 27
      BansheeEditor/Include/BsGUIColorField.h
  18. 23 25
      BansheeEditor/Include/BsGUIDockSlider.h
  19. 22 23
      BansheeEditor/Include/BsGUIDropButton.h
  20. 67 80
      BansheeEditor/Include/BsGUIFieldBase.h
  21. 33 51
      BansheeEditor/Include/BsGUIFloatField.h
  22. 13 24
      BansheeEditor/Include/BsGUIHoverHitBox.h
  23. 33 51
      BansheeEditor/Include/BsGUIIntField.h
  24. 97 127
      BansheeEditor/Include/BsGUIListBoxField.h
  25. 79 118
      BansheeEditor/Include/BsGUIMenuBar.h
  26. 23 37
      BansheeEditor/Include/BsMainEditorWindow.h
  27. 20 30
      BansheeEditor/Include/BsModalWindow.h
  28. 8 9
      BansheeEditor/Include/BsPlatformInfo.h
  29. 16 28
      BansheeEditor/Include/Win32/BsVSCodeEditor.h

+ 17 - 23
BansheeEditor/BansheeEditor.vcxproj.filters

@@ -12,12 +12,6 @@
     <Filter Include="Header Files\RTTI">
       <UniqueIdentifier>{24ec8e18-6fa3-44c2-a6a5-04d811e55169}</UniqueIdentifier>
     </Filter>
-    <Filter Include="Header Files\Win32">
-      <UniqueIdentifier>{ee1257c5-4335-401a-938c-adc62b074503}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files\Win32">
-      <UniqueIdentifier>{482fa361-f45b-45d4-9d09-05ffb91c39b8}</UniqueIdentifier>
-    </Filter>
     <Filter Include="Header Files\GUI">
       <UniqueIdentifier>{e13d72e6-db5c-4582-8014-ac7bd030b210}</UniqueIdentifier>
     </Filter>
@@ -42,9 +36,6 @@
     <Filter Include="Source Files\EditorWindow">
       <UniqueIdentifier>{b0aeac01-8fa0-4274-96af-89881eb97412}</UniqueIdentifier>
     </Filter>
-    <Filter Include="Header Files\SceneView">
-      <UniqueIdentifier>{c05637ba-7fb5-4f5f-a84b-4eb95f54111a}</UniqueIdentifier>
-    </Filter>
     <Filter Include="Source Files\SceneView">
       <UniqueIdentifier>{75e6779c-51e7-47f4-8156-8a17ce92b0be}</UniqueIdentifier>
     </Filter>
@@ -84,6 +75,9 @@
     <Filter Include="Source Files\Utility">
       <UniqueIdentifier>{7bd61ca8-543d-4029-a0ed-1751d97477a3}</UniqueIdentifier>
     </Filter>
+    <Filter Include="Header Files\Scene">
+      <UniqueIdentifier>{c05637ba-7fb5-4f5f-a84b-4eb95f54111a}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="Include\BsEditorCommand.h">
@@ -98,9 +92,6 @@
     <ClInclude Include="Include\BsCmdRecordSO.h">
       <Filter>Header Files\UndoRedo</Filter>
     </ClInclude>
-    <ClInclude Include="Include\Win32\BsVSCodeEditor.h">
-      <Filter>Header Files\Win32</Filter>
-    </ClInclude>
     <ClInclude Include="Include\BsPlatformInfoRTTI.h">
       <Filter>Header Files\RTTI</Filter>
     </ClInclude>
@@ -233,9 +224,6 @@
     <ClInclude Include="Include\BsBuildManager.h">
       <Filter>Header Files\Build</Filter>
     </ClInclude>
-    <ClInclude Include="Include\BsBuiltinEditorResources.h">
-      <Filter>Header Files\Build</Filter>
-    </ClInclude>
     <ClInclude Include="Include\BsPlatformInfo.h">
       <Filter>Header Files\Build</Filter>
     </ClInclude>
@@ -300,19 +288,19 @@
       <Filter>Header Files\EditorWindow</Filter>
     </ClInclude>
     <ClInclude Include="Include\BsGizmoManager.h">
-      <Filter>Header Files\SceneView</Filter>
+      <Filter>Header Files\Scene</Filter>
     </ClInclude>
     <ClInclude Include="Include\BsSceneGrid.h">
-      <Filter>Header Files\SceneView</Filter>
+      <Filter>Header Files\Scene</Filter>
     </ClInclude>
     <ClInclude Include="Include\BsScenePicking.h">
-      <Filter>Header Files\SceneView</Filter>
+      <Filter>Header Files\Scene</Filter>
     </ClInclude>
     <ClInclude Include="Include\BsSelection.h">
-      <Filter>Header Files\SceneView</Filter>
+      <Filter>Header Files\Scene</Filter>
     </ClInclude>
     <ClInclude Include="Include\BsSelectionRenderer.h">
-      <Filter>Header Files\SceneView</Filter>
+      <Filter>Header Files\Scene</Filter>
     </ClInclude>
     <ClInclude Include="Include\BsProjectLibrary.h">
       <Filter>Header Files\Library</Filter>
@@ -347,6 +335,12 @@
     <ClInclude Include="Include\BsEditorShaderIncludeHandler.h">
       <Filter>Header Files\Library</Filter>
     </ClInclude>
+    <ClInclude Include="Include\Win32\BsVSCodeEditor.h">
+      <Filter>Header Files\CodeEditor</Filter>
+    </ClInclude>
+    <ClInclude Include="Include\BsBuiltinEditorResources.h">
+      <Filter>Header Files\Utility</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="Source\BsEditorCommand.cpp">
@@ -358,9 +352,6 @@
     <ClCompile Include="Source\BsCmdRecordSO.cpp">
       <Filter>Source Files\UndoRedo</Filter>
     </ClCompile>
-    <ClCompile Include="Source\Win32\BsVSCodeEditor.cpp">
-      <Filter>Source Files\Win32</Filter>
-    </ClCompile>
     <ClCompile Include="Source\BsEditorApplication.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -574,5 +565,8 @@
     <ClCompile Include="Source\BsEditorShaderIncludeHandler.cpp">
       <Filter>Source Files\Library</Filter>
     </ClCompile>
+    <ClCompile Include="Source\Win32\BsVSCodeEditor.cpp">
+      <Filter>Source Files\CodeEditor</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>

+ 22 - 47
BansheeEditor/Include/BsBuildManager.h

@@ -9,10 +9,11 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Contains build information for a specific platform to be
-	 *			used by the build manager.
+	/** @addtogroup Build
+	 *  @{
 	 */
+
+	/**	Contains build information for a specific platform to be used by the build manager. */
 	class BS_ED_EXPORT BuildData : public IReflectable
 	{
 	public:
@@ -30,9 +31,7 @@ namespace BansheeEngine
 		virtual RTTITypeBase* getRTTI() const override;
 	};
 
-	/**
-	 * @brief	Types of various folders used by the build manager.
-	 */
+	/**	Types of various folders used by the build manager. */
 	enum class BuildFolder
 	{
 		SourceRoot, /**< Absolute path to the root folder where all the prebuilt binaries and data exist. */
@@ -43,78 +42,52 @@ namespace BansheeEngine
 		Data /**< Folder where builtin data is stored. Relative to root. */
 	};
 
-	/**
-	 * @brief	Handles building of the game executable and related files.
-	 */
+	/**	Handles building of the game executable and related files. */
 	class BS_ED_EXPORT BuildManager : public Module<BuildManager>
 	{
 	public:
 		BuildManager();
 
-		/**
-		 * @brief	Returns a list of available platforms the executable can be built for.
-		 */
+		/**	Returns a list of available platforms the executable can be built for. */
 		const Vector<PlatformType>& getAvailablePlatforms() const;
 
-		/**
-		 * @brief	Returns the currently active platform.
-		 */
+		/**	Returns the currently active platform. */
 		PlatformType getActivePlatform() const;
 
-		/**
-		 * @brief	Changes the active build platform. Might cause asset reimport.
-		 */
+		/**	Changes the active build platform. Might cause asset reimport. */
 		void setActivePlatform(PlatformType type);
 
-		/**
-		 * @brief	Gets stored build setting for the active platform.
-		 */
+		/**	Gets stored build setting for the active platform. */
 		SPtr<PlatformInfo> getActivePlatformInfo() const;
 
-		/**
-		 * @brief	Gets stored build setting for a specific platform.
-		 */
+		/**	Gets stored build setting for a specific platform. */
 		SPtr<PlatformInfo> getPlatformInfo(PlatformType type) const;
 
-		/**
-		 * @brief	Returns a list of file names (without extension) of all .NET assemblies required for a specific platform.
-		 */
+		/**	Returns a list of file names (without extension) of all .NET assemblies required for a specific platform. */
 		Vector<WString> getFrameworkAssemblies(PlatformType type) const;
 
-		/**
-		 * @brief	Returns a list names of all native binaries required for a specific platform.
-		 */
+		/**	Returns a list names of all native binaries required for a specific platform. */
 		Vector<Path> getNativeBinaries(PlatformType type) const;
 
 		/**
-		 * @brief	Returns a path to a specific folder used in the build process. See entries of
-		 *			BuildFolder enum for explanations of individual folder types.
+		 * Returns a path to a specific folder used in the build process. See entries of BuildFolder enum for explanations
+		 * of individual folder types.
 		 */
 		Path getBuildFolder(BuildFolder folder, PlatformType platform) const;
 
-		/**
-		 * @brief	Returns the absolute path of the pre-built executable for the specified platform.
-		 */
+		/**	Returns the absolute path of the pre-built executable for the specified platform. */
 		Path getMainExecutable(PlatformType type) const;
 
-		/**
-		 * @brief	Returns a list of script defines for a specific platform.
-		 */
+		/**	Returns a list of script defines for a specific platform. */
 		WString getDefines(PlatformType type) const;
 
-		/**
-		 * @brief	Stores build settings for all platforms in the specified file.
-		 */
+		/**	Stores build settings for all platforms in the specified file. */
 		void save(const Path& outFile);
 
-		/**
-		 * @brief	Loads a previously stored list of build settings.
-		 */
+		/**	Loads a previously stored list of build settings. */
 		void load(const Path& inFile);
 
-		/**
-		 * @brief	Clears currently active build settings.
-		 */
+		/**	Clears currently active build settings. */
 		void clear();
 
 	private:
@@ -122,4 +95,6 @@ namespace BansheeEngine
 
 		SPtr<BuildData> mBuildData;
 	};
+
+	/** @} */
 }

+ 37 - 49
BansheeEditor/Include/BsCodeEditor.h

@@ -7,23 +7,23 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup CodeEditor
+	 *  @{
+	 */
+
+	 /** @cond INTERNAL */
+
 	class CodeEditor;
 	class CodeEditorFactory;
 
-	/**
-	 * @brief	Contains data about a reference to a 
-	 *			project in an external editor solution.
-	 */
+	/** Contains data about a reference to a project in an external editor solution. */
 	struct BS_ED_EXPORT CodeProjectReference
 	{
 		WString name;
 		Path path;
 	};
 
-	/**
-	 * @brief	Contains data about a single project
-	 *			in an external editor solution.
-	 */
+	/**	Contains data about a single project in an external editor solution. */
 	struct BS_ED_EXPORT CodeProjectData
 	{
 		WString name;
@@ -34,20 +34,18 @@ namespace BansheeEngine
 		Vector<CodeProjectReference> projectReferences;
 	};
 
-	/**
-	 * @brief	Contains data about an external editor solution,
-	 *			including all projects contained.
-	 */
+	/**	Contains data about an external editor solution, including all projects contained. */
 	struct BS_ED_EXPORT CodeSolutionData
 	{
 		WString name;
 		Vector<CodeProjectData> projects;
 	};
 
+	/** @endcond */
+
 	/**
-	 * @brief	Handles connectivity of the editor with external code editing tools.
-	 *			The system provides methods for interacting with external tools but
-	 *			the exact tool used depends on the currently active setting.
+	 * Handles connectivity of the editor with external code editing tools. The system provides methods for interacting with
+	 * external tools but the exact tool used depends on the currently active setting.
 	 */
 	class BS_ED_EXPORT CodeEditorManager : public Module<CodeEditorManager>
 	{
@@ -55,44 +53,35 @@ namespace BansheeEngine
 		CodeEditorManager();
 		~CodeEditorManager();
 
-		/**
-		 * @brief	Returns a list of all available code editors for this platform.
-		 */
+		/**	Returns a list of all available code editors for this platform. */
 		const Vector<CodeEditorType>& getAvailableEditors() const { return mEditors; }
 
 		/**
-		 * @brief	Changes the active code editor. All further operations on this object will
-		 *			be executed using this editor. If the specified editor is not valid for this
-		 *			platform, no change will be made.
+		 * Changes the active code editor. All further operations on this object will be executed using this editor. If the
+		 * specified editor is not valid for this platform, no change will be made.
 		 */
 		void setActive(CodeEditorType editor);
 
-		/**
-		 * @brief	Returns the currently active code editor.
-		 */
+		/**	Returns the currently active code editor. */
 		CodeEditorType getActive() const { return mActiveEditorType; }
 
 		/**
-		 * @brief	Opens a code file in the active external editor. 
+		 * Opens a code file in the active external editor. 
 		 *
-		 * @param	path		Path to the code file to open, can be absolute or relative to project resources folder.
-		 *						The file should be part of a solution in the active editor.
-		 * @param	lineNumber	Line number to focus on once the file is opened. Might not be supported by all
-		 *						editors.
+		 * @param[in]	path		Path to the code file to open, can be absolute or relative to project resources folder.
+		 *							The file should be part of a solution in the active editor.
+		 * @param[in]	lineNumber	Line number to focus on once the file is opened. Might not be supported by all editors.
 		 */
 		void openFile(const Path& path, UINT32 lineNumber) const;
 
 		/**
-		 * @brief	Synchronizes all code files and assemblies in the active project and updates 
-		 *			the project solution for the active editor. Each project can only have one solution
-		 *			per editor.
+		 * Synchronizes all code files and assemblies in the active project and updates the project solution for the active
+		 * editor. Each project can only have one solution per editor.
 		 */
 		void syncSolution() const;
 
 	private:
-		/**
-		 * @brief	Returns the absolute path at which the external editor solution file should be stored.
-		 */
+		/**	Returns the absolute path at which the external editor solution file should be stored. */
 		Path getSolutionPath() const;
 
 		CodeEditor* mActiveEditor;
@@ -102,8 +91,10 @@ namespace BansheeEngine
 		Vector<CodeEditorFactory*> mFactories;
 	};
 
+	/** @cond INTERNAL */
+
 	/**
-	 * @brief	Interface that classes interacting with external code editors needs to implement.
+	 * Interface that classes interacting with external code editors needs to implement.
 	 *
 	 * @see		CodeEditorManager
 	 */
@@ -112,19 +103,15 @@ namespace BansheeEngine
 	public:
 		virtual ~CodeEditor() { }
 
-		/**
-		 * @copydoc	CodeEditorManager::openFile
-		 */
+		/** @copydoc CodeEditorManager::openFile */
 		virtual void openFile(const Path& solutionPath, const Path& path, UINT32 lineNumber) const = 0;
 
-		/**
-		 * @copydoc	CodeEditorManager::syncSolution
-		 */
+		/** @copydoc CodeEditorManager::syncSolution */
 		virtual void syncSolution(const CodeSolutionData& data, const Path& outputPath) const = 0;
 	};
 
 	/**
-	 * @brief	Interface for factory that creates a specific implementation(s) of a code editor.
+	 * Interface for factory that creates a specific implementation(s) of a code editor.
 	 *
 	 * @see		CodeEditor
 	 */
@@ -133,17 +120,18 @@ namespace BansheeEngine
 	public:
 		virtual ~CodeEditorFactory() { }
 
-		/**
-		 * @brief	Returns a list of code editors supported by this factory.
-		 */
+		/**	Returns a list of code editors supported by this factory. */
 		virtual const Vector<CodeEditorType>& getAvailableEditors() const = 0;
 
 		/**
-		 * @brief	Creates a specific implementation of a code editor.
+		 * Creates a specific implementation of a code editor.
 		 *
-		 * @param	editor	Type of editor to create. Make sure to provide a valid value
-		 *					returned by "getAvailableEditors".
+		 * @param[in]	editor	Type of editor to create. Make sure to provide a valid value returned by 
+		 *						getAvailableEditors().
 		 */
 		virtual CodeEditor* create(CodeEditorType editor) const = 0;
 	};
+
+	/** @endcond */
+	/** @} */
 }

+ 98 - 137
BansheeEditor/Include/BsDockManager.h

@@ -8,19 +8,24 @@
 
 namespace BansheeEngine
 {
+	/** @cond INTERNAL */
+	/** @addtogroup EditorWindow
+	 *  @{
+	 */
+
 	class DockOverlayRenderer;
 
 	/**
-	 * @brief	GUI element that allows editor widgets to be docked in it using arbitrary
-	 *			layouts. Docked widgets can be resized, undocked, maximizes or closed as needed.
+	 * GUI element that allows editor widgets to be docked in it using arbitrary layouts. Docked widgets can be resized,
+	 * undocked, maximizes or closed as needed.
 	 */
 	class DockManager : public GUIElementContainer
 	{
 	public:
 		/**
-		 * @brief	Contains information about a single dock area. Each container can be a parent to
-		 *			two other containers or may contain a widget, which results in a container hierarchy. 
-		 *			Two children can be split vertically or horizontally at an user-defined point.
+		 * Contains information about a single dock area. Each container can be a parent to two other containers or may
+		 * contain a widget, which results in a container hierarchy. Two children can be split vertically or horizontally
+		 * at an user-defined point.
 		 */
 		class DockContainer
 		{
@@ -29,116 +34,105 @@ namespace BansheeEngine
 			DockContainer(DockManager* manager, DockContainer* parent);
 			~DockContainer();
 
-			/**
-			 * @brief	Determines the position and size of the container, relative to the parent dock manager.
-			 */
+			/**	Determines the position and size of the container, relative to the parent dock manager. */
 			void setArea(INT32 x, INT32 y, UINT32 width, UINT32 height);
 
 			/**
-			 * @brief	Transforms the container from non-leaf (parent to other containers)
-			 *			to leaf (parent to widgets). This involves creating a widget container to
-			 *			which you can dock widgets to.
+			 * Transforms the container from non-leaf (parent to other containers) to leaf (parent to widgets). This
+			 * involves creating a widget container to which you can dock widgets to.
 			 *
-			 * @param	parentWindow	Editor window of the parent dock manager.
+			 * @param[in]	parentWindow	Editor window of the parent dock manager.
 			 */
 			void makeLeaf(EditorWindowBase* parentWindow);
 
 			/**
-			 * @brief	Transforms the container from non-leaf (parent to other containers)
-			 *			to leaf (parent to widgets). Unlike the other overload this one accepts
-			 *			a previously created widget container.
+			 * Transforms the container from non-leaf (parent to other containers) to leaf (parent to widgets). Unlike the
+			 * other overload this one accepts a previously created widget container.
 			 *
-			 * @param	guiWidgetSO			Parent SceneObject of the GUIWidget used by the provided widget container.
-			 * @param	existingContainer	An existing widget container that may be used for docking widgets.
+			 * @param[in]	guiWidgetSO			Parent SceneObject of the GUIWidget used by the provided widget container.
+			 * @param[in]	existingContainer	An existing widget container that may be used for docking widgets.
 			 */
 			void makeLeaf(const HSceneObject& guiWidgetSO, EditorWidgetContainer* existingContainer);
 
 			/**
-			 * @brief	Splits a leaf container containing a widget container (or may be empty in the case of root with no elements) 
-			 *			into a container parent to two other containers.
+			 * Splits a leaf container containing a widget container (or may be empty in the case of root with no elements) 
+			 * into a container parent to two other containers.
 			 *
-			 * @param	horizontal			Whether the split is horizontal (true) or vertical (false.
-			 * @param	newChildIsFirst		Determines to which child should the widget container from this object be moved to.
-			 *								If the new child is first, then bottom or right (for horizontal and vertical respectively)
-			 *								will receive the current widget container, and opposite if it's not first.
-			 * @param	splitPosition		Determines at what position(in percent) should this container be split. User can modify this later
-			 *								via a dock slider.
+			 * @param[in]	horizontal			Whether the split is horizontal (true) or vertical (false.
+			 * @param[in]	newChildIsFirst		Determines to which child should the widget container from this object be
+			 *									moved to. If the new child is first, then bottom or right (for horizontal
+			 *									and vertical respectively) will receive the current widget container, and
+			 *									opposite if it's not first.
+			 * @param[in]	splitPosition		Determines at what position(in percent) should this container be split. User
+			 *									can modify this later via a dock slider.
 			 */
 			void splitContainer(bool horizontal, bool newChildIsFirst, float splitPosition = 0.5f);
 
 			/**
-			 * @brief	Splits a leaf container containing a widget container (or may be empty in the case of root with no elements)
-			 *			into a container parent to two other containers. Unlike "splitContainer" new containers aren't created automatically
-			 *			but you must provide existing ones. If this container is non-leaf its widget container will be destroyed.
+			 * Splits a leaf container containing a widget container (or may be empty in the case of root with no elements)
+			 * into a container parent to two other containers. Unlike "splitContainer" new containers aren't created 
+			 * automatically but you must provide existing ones. If this container is non-leaf its widget container will be
+			 * destroyed.
 			 *
-			 * @param	first			Container to insert into the first child slot (left if vertical split, top if horizontal split).
-			 * @param	second			Container to insert into the second child slot (right if vertical split, bottom if horizontal split).
-			 * @param	horizontal		Whether the split is horizontal (true) or vertical (false.
-			 * @param	splitPosition	Determines at what position(in percent) should this container be split. User can modify this later
-			 *							via a dock slider.
+			 * @param[in]	first			Container to insert into the first child slot (left if vertical split, top if
+			 *								horizontal split).
+			 * @param[in]	second			Container to insert into the second child slot (right if vertical split, bottom
+			 *								if horizontal split).
+			 * @param[in]	horizontal		Whether the split is horizontal (true) or vertical (false.
+			 * @param[in]	splitPosition	Determines at what position(in percent) should this container be split. User can
+			 *								modify this later via a dock slider.
 			 */
 			void makeSplit(DockContainer* first, DockContainer* second, bool horizontal, float splitPosition);
 
 			/**
-			 * @brief	Adds a new widget to the left side of the container. If the container is leaf it will
-			 *			be split into two containers vertically.
+			 * Adds a new widget to the left side of the container. If the container is leaf it will be split into two
+			 * containers vertically.
 			 */
 			void addLeft(EditorWidgetBase* widget);
 
 			/**
-			 * @brief	Adds a new widget to the right side of the container. If the container is leaf it will
-			 *			be split into two containers vertically.
+			 * Adds a new widget to the right side of the container. If the container is leaf it will be split into two
+			 * containers vertically.
 			 */
 			void addRight(EditorWidgetBase* widget);
 
 			/**
-			 * @brief	Adds a new widget to the top side of the container. If the container is leaf it will
-			 *			be split into two containers horizontally.
+			 * Adds a new widget to the top side of the container. If the container is leaf it will be split into two
+			 * containers horizontally.
 			 */
 			void addTop(EditorWidgetBase* widget);
 
 			/**
-			 * @brief	Adds a new widget to the bottom side of the container. If the container is leaf it will
-			 *			be split into two containers horizontally.
+			 * Adds a new widget to the bottom side of the container. If the container is leaf it will be split into two
+			 * containers horizontally.
 			 */
 			void addBottom(EditorWidgetBase* widget);
 
-			/**
-			 * @brief	Adds an existing widget to this leaf container.
-			 */
+			/**	Adds an existing widget to this leaf container. */
 			void addWidget(EditorWidgetBase* widget);
 
-			/**
-			 * @brief	Attempts to find a widget with the specified name, opens it
-			 *			and adds it to this leaf container.
-			 */
+			/** Attempts to find a widget with the specified name, opens it and adds it to this leaf container. */
 			void addWidget(const String& name);
 
-			/**
-			 * @brief	Update to be called once per frame. Calls updates on all child widgets.
-			 */
+			/**	Update to be called once per frame. Calls updates on all child widgets. */
 			void update();
 
 			/**
-			 * @brief	Attempts to find an existing leaf dock container with the specified
-			 *			widget container. Returns null if one cannot be found.
+			 * Attempts to find an existing leaf dock container with the specified widget container. Returns null if one
+			 * cannot be found.
 			 */
 			DockContainer* find(EditorWidgetContainer* widgetContainer);
 
 			/**
-			 * @brief	Searches for a container at the specified position. Call this at this top-most
-			 *			container in order to search them all.
-			 *
-			 * @param	pos	Position is relative to the container area. 
+			 * Searches for a container at the specified position. Call this at this top-most container in order to search
+			 * them all.
 			 *
-			 * @return	null if it fails, else the found DockContainer at position.
+			 * @param[in]	pos	Position is relative to the container area. 
+			 * @return			null if it fails, else the found DockContainer at position.
 			 */
 			DockContainer* findAtPos(const Vector2I& pos);
 
-			/**
-			 * @brief	Returns the bounds of the container that are to be considered
-			 *			dockable and interactable.
-			 */
+			/** Returns the bounds of the container that are to be considered dockable and interactable. */
 			Rect2I getContentBounds() const;
 
 			bool mIsLeaf;
@@ -156,31 +150,20 @@ namespace BansheeEngine
 			static const UINT32 MIN_CHILD_SIZE;
 
 		private:
-			/**
-			 * @brief	Updates sizes and positions of all child containers. 
-			 *			Normally called when parent area changes.
-			 */
+			/**	Updates sizes and positions of all child containers. Normally called when parent area changes. */
 			void updateChildAreas();
 
-			/**
-			 * @brief	Triggered whenever the user drags the GUI slider belonging to this container.
-			 */
+			/**	Triggered whenever the user drags the GUI slider belonging to this container. */
 			void sliderDragged(const Vector2I& delta);
 
-			/**
-			 * @brief	Triggered whenever the user closes or undocks a widget belonging to this container.
-			 */
+			/**	Triggered whenever the user closes or undocks a widget belonging to this container. */
 			void widgetRemoved();
 
-			/**
-			 * @brief	Triggered when the maximize button in the container's title bar is clicked.
-			 */
+			/**	Triggered when the maximize button in the container's title bar is clicked. */
 			void maximizeClicked();
 		};
 
-		/**
-		 * @brief	Available dock locations for the dock manager.
-		 */
+		/**	Available dock locations for the dock manager. */
 		enum class DockLocation
 		{
 			Top,
@@ -190,94 +173,71 @@ namespace BansheeEngine
 			None
 		};
 	public:
-		/**
-		 * @brief	Creates a new dock manager for the specified window.
-		 */
+		/**	Creates a new dock manager for the specified window. */
 		static DockManager* create(EditorWindowBase* parentWindow);
 
-		/**
-		 * @brief	Internal method. Called once every frame.
-		 */
+		/**	Internal method. Called once every frame. */
 		void update();
 
 		/**
-		 * @brief	Inserts a new widget at the specified location.
+		 * Inserts a new widget at the specified location.
 		 *
-		 * @param	relativeTo		Container relative to which to insert the widget. Can be null in which case
-		 *							the widget is inserted at the root.
-		 * @param	widgetToInsert	Widget we want to insert into the dock layout.
-		 * @param	location		Location to insert the widget at, relative to "relativeTo" container. 
-		 *							If "relativeTo" is null this is ignored.
+		 * @param[in]	relativeTo		Container relative to which to insert the widget. Can be null in which case the
+		 *								widget is inserted at the root.
+		 * @param[in]	widgetToInsert	Widget we want to insert into the dock layout.
+		 * @param[in]	location		Location to insert the widget at, relative to @p relativeTo container. 
+		 *								If @p relativeTo is null this is ignored.
 		 */
 		void insert(EditorWidgetContainer* relativeTo, EditorWidgetBase* widgetToInsert, DockLocation location);
 
-		/**
-		 * @brief	Returns a saved layout of all the currently docked widgets and their positions
-		 *			and areas.
-		 */
+		/** Returns a saved layout of all the currently docked widgets and their positions and areas. */
 		DockManagerLayoutPtr getLayout() const;
 
 		/**
-		 * @brief	Sets a previously saved layout of docked widgets. This will close all currently active
-		 *			widgets and open and position new ones according to the layout.
+		 * Sets a previously saved layout of docked widgets. This will close all currently active widgets and open and
+		 * position new ones according to the layout.
 		 */
 		void setLayout(const DockManagerLayoutPtr& layout);
 
-		/**
-		 * @brief	Changes the position and size of the dock manager.
-		 */
+		/**	Changes the position and size of the dock manager. */
 		void setArea(INT32 x, INT32 y, UINT32 width, UINT32 height);
 
-		/**
-		 * @brief	Closes all docked widgets.
-		 */
+		/**	Closes all docked widgets. */
 		void closeAll();
 
 	private:
 		DockManager(EditorWindowBase* parentWindow, const GUIDimensions& dimensions);
 		~DockManager();
 
-		/**
-		 * @brief	Updates the dock overlay mesh that is displayed when user is dragging a widget
-		 *			over a certain area.
-		 */
+		/** Updates the dock overlay mesh that is displayed when user is dragging a widget over a certain area. */
 		void updateDropOverlay(INT32 x, INT32 y, UINT32 width, UINT32 height);
 
 		/**
-		 * @brief	Checks is the provided point inside the provided polygon.
-		 *
-		 * @param	polyPoints	Points of the polygon to test against.
-		 * @param	numPoints	Number of points in "polyPoints".
-		 * @param	point		Point to check if it's in the polygon.
+		 * Checks is the provided point inside the provided polygon.
 		 *
-		 * @returns	True if the point is in the polygon.
+		 * @param[i]	polyPoints	Points of the polygon to test against.
+		 * @param[i]	numPoints	Number of points in "polyPoints".
+		 * @param[i]	point		Point to check if it's in the polygon.
+		 * @return					True if the point is in the polygon.
 		 */
 		bool insidePolygon(Vector2* polyPoints, UINT32 numPoints, Vector2 point) const;
 
-		/**
-		 * @brief	Initializes the renderer used for displaying the dock overlay.
-		 */
+		/**	Initializes the renderer used for displaying the dock overlay. */
 		void initializeOverlayRenderer(const SPtr<MaterialCore>& initData);
 
-		/**
-		 * @brief	Destroys the dock overlay renderer.
-		 */
+		/**	Destroys the dock overlay renderer. */
 		void destroyOverlayRenderer(DockOverlayRenderer* core);
 
-		/**
-		 * @copydoc GUIElementBase::updateClippedBounds
-		 */
+		/** @copydoc GUIElementBase::updateClippedBounds */
 		void updateClippedBounds() override;
 
 		/**
-		 * @brief	Maximizes or restored the specified container. If any container is previously
-		 * 			maximized it needs to be toggled back to restored state before maximizing another.
+		 * Maximizes or restored the specified container. If any container is previously maximized it needs to be toggled
+		 * back to restored state before maximizing another.
 		 */
 		void toggleMaximize(DockContainer* container);
 
-		/**
-		 * @copydoc GUIElementBase::_mouseEvent
-		 */
+		/** @copydoc GUIElementBase::_mouseEvent */
 		bool _mouseEvent(const GUIMouseEvent& event) override;
 
 		std::atomic<DockOverlayRenderer*> mCore;
@@ -303,7 +263,7 @@ namespace BansheeEngine
 	};
 
 	/**
-	 * @brief	Handles rendering of the dock overlay, on the core thread.
+	 * Handles rendering of the dock overlay, on the core thread.
 	 * 			
 	 * @note	Core thread only.
 	 */
@@ -317,26 +277,24 @@ namespace BansheeEngine
 		friend class DockManager;
 
 		/**
-		 * @brief	Initializes the object. Must be called right after construction and before any use.
+		 * Initializes the object. Must be called right after construction and before any use.
 		 *
-		 * @param	material	Material used for drawing the dock overlay.
+		 * @param[in]	material	Material used for drawing the dock overlay.
 		 */
 		void initialize(const SPtr<MaterialCore>& material);
 
 		/**
-		 * @brief	Updates the grid mesh to render.
+		 * Updates the grid mesh to render.
 		 * 			
-		 * @param	camera		Camera to render the dock overlay to.
-		 * @param	mesh		Overlay mesh to render.
-		 * @param	active		Should the overlay be shown or not.
-		 * @param	location	Highlighted location of the overlay.
+		 * @param[in]	camera		Camera to render the dock overlay to.
+		 * @param[in]	mesh		Overlay mesh to render.
+		 * @param[in]	active		Should the overlay be shown or not.
+		 * @param[in]	location	Highlighted location of the overlay.
 		 */
 		void updateData(const SPtr<CameraCore>& camera, const SPtr<MeshCore>& mesh, bool active,
 			DockManager::DockLocation location);
 
-		/**
-		 * @brief	Callback triggered by the renderer, actually draws the dock overlay.
-		 */
+		/**	Callback triggered by the renderer, actually draws the dock overlay. */
 		void render();
 		
 		SPtr<CameraCore> mCamera;
@@ -348,4 +306,7 @@ namespace BansheeEngine
 		static const Color TINT_COLOR;
 		static const Color HIGHLIGHT_COLOR;
 	};
+
+	/** @} */
+	/** @endcond */
 }

+ 29 - 30
BansheeEditor/Include/BsDockManagerLayout.h

@@ -8,8 +8,13 @@
 
 namespace BansheeEngine
 {
+	/** @cond INTERNAL */
+	/** @addtogroup EditorWindow
+	 *  @{
+	 */
+
 	/**
-	 * @brief	Used for storing a layout of widgets in a dock manager. 
+	 * Used for storing a layout of widgets in a dock manager. 
 	 *
 	 * @see		DockManager
 	 */
@@ -17,9 +22,8 @@ namespace BansheeEngine
 	{
 	public:
 		/**
-		 * @brief	A single entry in the dock layout which may contain
-		 *			references to two other entries (non-leaf) or may contain
-		 *			multiple widgets (leaf).
+		 * A single entry in the dock layout which may contain references to two other entries (non-leaf) or may contain
+		 * multiple widgets (leaf).
 		 */
 		struct Entry
 		{
@@ -28,22 +32,22 @@ namespace BansheeEngine
 			~Entry();
 
 			/**
-			 * @brief	Creates a new leaf entry with the specified widgets.
+			 * Creates a new leaf entry with the specified widgets.
 			 *
-			 * @param	parent		Parent of this leaf entry. Can be null for root.
-			 * @param	childIdx	Index of this entry in the parents child list. Can be 0 or 1.
-			 * @param	widgetNames	A list of all widgets opened in this entry, listed by name.
+			 * @param[in]	parent		Parent of this leaf entry. Can be null for root.
+			 * @param[in]	childIdx	Index of this entry in the parents child list. Can be 0 or 1.
+			 * @param[in]	widgetNames	A list of all widgets opened in this entry, listed by name.
 			 */
 			static Entry* createLeaf(Entry* parent, UINT32 childIdx, 
 				const Vector<String>& widgetNames);
 
 			/**
-			 * @brief	Creates a new container entry with the specified split data.
+			 * Creates a new container entry with the specified split data.
 			 *
-			 * @param	parent				Parent of this leaf entry. Can be null for root.
-			 * @param	childIdx			Index of this entry in the parents child list. Can be 0 or 1.
-			 * @param	splitPosition		Determines at what position(in percent) should this container be split. 
-			 * @param	horizontalSplit		Whether the split is horizontal (true) or vertical (false).
+			 * @param[in]	parent				Parent of this leaf entry. Can be null for root.
+			 * @param[in]	childIdx			Index of this entry in the parents child list. Can be 0 or 1.
+			 * @param[in]	splitPosition		Determines at what position(in percent) should this container be split. 
+			 * @param[in]	horizontalSplit		Whether the split is horizontal (true) or vertical (false).
 			 */
 			static Entry* createContainer(Entry* parent, UINT32 childIdx, float splitPosition, 
 				bool horizontalSplit);
@@ -61,38 +65,30 @@ namespace BansheeEngine
 		DockManagerLayout();
 		~DockManagerLayout();
 
-		/**
-		 * @brief	Returns the root entry in the saved dock manager hierarchy.
-		 */
+		/**	Returns the root entry in the saved dock manager hierarchy. */
 		Entry& getRootEntry() { return mRootEntry; }
 
 		/**
-		 * @brief	Signals whether there is a maximized dock container in the layout.
+		 * Signals whether there is a maximized dock container in the layout.
 		 *
-		 * @param	maximized 	True if maximized.
-		 * @param	widgetName	Name of the widgets on the maximized container.
+		 * @param[in]	maximized 	True if maximized.
+		 * @param[in]	widgetName	Name of the widgets on the maximized container.
 		 */
 		void setIsMaximized(bool maximized, const Vector<String>& widgetNames);
 
-		/**
-		 * @brief	Check if the layout has a maximized container.
-		 */
+		/**	Check if the layout has a maximized container. */
 		bool isMaximized() const { return mIsMaximized; }
 
-		/**
-		 * @brief	Returns widget names that are in the maximized container, if there is one.
-		 */
+		/**	Returns widget names that are in the maximized container, if there is one. */
 		const Vector<String>& getMaximizedWidgetNames() const { return mMaximizedWidgetNames; }
 
 		/**
-		 * @brief	Removes widgets that can no longer be found (their names no longer reference a widget),
-		 *			and removes containers with no widgets.
+		 * Removes widgets that can no longer be found (their names no longer reference a widget), and removes containers
+		 * with no widgets.
 		 */
 		void pruneInvalidLeaves();
 
-		/**
-		 * @brief	Makes a deep copy of this object.
-		 */
+		/**	Makes a deep copy of this object. */
 		DockManagerLayoutPtr clone();
 
 	private:
@@ -109,4 +105,7 @@ namespace BansheeEngine
 		static RTTITypeBase* getRTTIStatic();
 		virtual RTTITypeBase* getRTTI() const override;	
 	};
+
+	/** @} */
+	/** @endcond */
 }

+ 15 - 28
BansheeEditor/Include/BsDropDownWindow.h

@@ -7,55 +7,42 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	This is a generic GUI drop down window class that 
-	 *			can be used for displaying custom drop down content.
+	/** @addtogroup EditorWindow
+	 *  @{
 	 */
+
+	/** This is a generic GUI drop down window class that can be used for displaying custom drop down content. */
 	class BS_ED_EXPORT DropDownWindow
 	{
 	public:
 		virtual ~DropDownWindow();
 
-		/**
-		 * @brief	Returns width of the window in pixels.
-		 */
+		/**	Returns width of the window in pixels. */
 		UINT32 getWidth() const { return mWidth; }
 		
-		/**
-		 * @brief	Returns height of the window in pixels.
-		 */
+		/**	Returns height of the window in pixels. */
 		UINT32 getHeight() const { return mHeight; }
 
-		/**
-		 * @brief	Converts screen pointer coordinates into coordinates relative to the window contents GUI panel.
-		 */
+		/**	Converts screen pointer coordinates into coordinates relative to the window contents GUI panel. */
 		Vector2I screenToWindowPos(const Vector2I& screenPos) const;
 
-		/**
-		 * @brief	Converts pointer coordinates relative to the window contents GUI panel into screen coordinates.
-		 */
+		/**	Converts pointer coordinates relative to the window contents GUI panel into screen coordinates. */
 		Vector2I windowToScreenPos(const Vector2I& windowPos) const;
 
-		/**
-		 * @brief	Returns the GUI widget used for displaying all GUI contents in the window.
-		 */
+		/**	Returns the GUI widget used for displaying all GUI contents in the window. */
 		HGUIWidget getGUIWidget() const { return mGUI; }
 
 		/**
-		 * @brief	Changes the size of the drop down window area.
+		 * Changes the size of the drop down window area.
 		 *			
 		 * @note	This might reposition the window if the new size doesn't fit at the current position.
 		 */
 		void setSize(UINT32 width, UINT32 height);
 
-		/**
-		 * @brief	Closes the drop down window.
-		 */
+		/**	Closes the drop down window. */
 		void close();
 
-		/**
-		 * @brief	Called once every frame. Internal method.
-		 */
+		/**	Called once every frame. Internal method. */
 		virtual void update() { }
 
 	protected:
@@ -67,9 +54,7 @@ namespace BansheeEngine
 	private:
 		friend class DropDropWindowManager;
 
-		/**
-		 * @brief	Triggered when the user clicks outside of the drop down area.
-		 */
+		/**	Triggered when the user clicks outside of the drop down area. */
 		void dropDownFocusLost();
 
 		RenderWindowPtr mRenderWindow;
@@ -83,4 +68,6 @@ namespace BansheeEngine
 		UINT32 mWidth;
 		UINT32 mHeight;
 	};
+
+	/** @} */
 }

+ 17 - 20
BansheeEditor/Include/BsDropDownWindowManager.h

@@ -7,10 +7,12 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Handles opening and closing of a drop down window. Only a single drop down window
-	 *			can be open at a time.
+	/** @cond INTERNAL */
+	/** @addtogroup EditorWindow
+	 *  @{
 	 */
+
+	/** Handles opening and closing of a drop down window. Only a single drop down window can be open at a time. */
 	class BS_ED_EXPORT DropDownWindowManager : public Module <DropDownWindowManager>
 	{
 	public:
@@ -18,17 +20,15 @@ namespace BansheeEngine
 		~DropDownWindowManager();
 
 		/**
-		 * @brief	Opens a new drop down window with the specified type and arguments.
-		 *
-		 * @param	parent		Render window parent in which to open the drop down window.
-		 * @param	camera		Camera in which to open the drop down window.
-		 * @param	position	Position relative to the viewport at which to open the drop down window.
-		 * @param	...args		A set of arguments to be passed along to the drop down window constructor.
+		 * Opens a new drop down window with the specified type and arguments.
 		 *
-		 * @returns	An instance of the newly created drop down window.
+		 * @param[in]	parent		Render window parent in which to open the drop down window.
+		 * @param[in]	camera		Camera in which to open the drop down window.
+		 * @param[in]	position	Position relative to the viewport at which to open the drop down window.
+		 * @param[in]	...args		A set of arguments to be passed along to the drop down window constructor.
+		 * @return					An instance of the newly created drop down window.
 		 *
-		 * @note	This method will automatically close any existing drop down windows before opening
-		 *			a new one.
+		 * @note	This method will automatically close any existing drop down windows before opening a new one.
 		 */
 		template<class T, class... Args>
 		T* open(const RenderWindowPtr& parent, const CameraPtr& camera,
@@ -40,18 +40,15 @@ namespace BansheeEngine
 			return static_cast<T*>(mOpenWindow);
 		}
 
-		/**
-		 * @brief	Closes a drop down window if one is open.
-		 */
+		/**	Closes a drop down window if one is open. */
 		void close();
 
-		/**
-		 * @brief	To be called once per frame.
-		 *
-		 * @note	Internal method.
-		 */
+		/** To be called once per frame. Internal method. */
 		void update();
 	protected:
 		DropDownWindow* mOpenWindow;
 	};
+
+	/** @} */
+	/** @endcond */
 }

+ 55 - 0
BansheeEditor/Include/BsEditorPrerequisites.h

@@ -4,6 +4,61 @@
 
 #include "BsPrerequisites.h"
 
+/** @defgroup Editor Editor
+ *	Provides functionality specific to the Banshee Editor.
+ *  @{
+ */
+
+/** @defgroup EditorWindow EditorWindow
+ *  Functionality for creating, managing and interacting with editor windows.
+ */
+
+/** @defgroup Utility-Editor Utility
+ *  Various utility methods and types used by the editor layer.
+ */
+
+/** @defgroup GUI-Editor GUI
+  *	Editor specific GUI elements.
+  */
+
+/** @defgroup Build Build
+  *	Functionality for building (publishing) the game from within the editor.
+  */
+
+/** @defgroup CodeEditor CodeEditor
+  *	Functionality for integrating the Banshee Editor with external code editors (e.g. Visual Studio).
+  */
+
+/** @defgroup Handles Handles
+  *	Functionality creating and interacting with handles (e.g. move/rotate/scale and custom tools).
+  */
+
+/** @defgroup Library Library
+  *	Management of all resources (assets) within a project.
+  */
+
+/** @defgroup RTTI-Impl-Editor RTTI types
+ *  Types containing RTTI for specific classes.
+ */
+
+/** @defgroup Scene Scene
+  *	Functionality for rendering/interacting with the scene view in editor.
+  */
+
+/** @defgroup Settings Settings
+  *	Persistent settings for editor and project.
+  */
+
+/** @defgroup Testing-Editor Testing
+ *  Contains editor unit tests.
+ */
+
+/** @defgroup UndoRedo UndoRedo
+ *  Provides functionality for undoing and redoing actions within the editor.
+ */
+
+/** @} */
+
 #if (BS_PLATFORM == BS_PLATFORM_WIN32) && !defined(__MINGW32__)
 #	ifdef BS_ED_EXPORTS
 #		define BS_ED_EXPORT __declspec(dllexport)

+ 72 - 128
BansheeEditor/Include/BsEditorWidget.h

@@ -9,68 +9,48 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup Implementation
+	 *  @{
+	 */
+
 	/**
-	 * @brief	Editor widget represents a single "window" in the editor. It may be dragged,
-	 *			docked and can share space with multiple other widgets by using tabs.
+	 * Editor widget represents a single "window" in the editor. It may be dragged,	docked and can share space with multiple
+	 * other widgets by using tabs.
 	 *
-	 * Each widget has its own position, size, GUI and update method.
-	 * Widget is always docked inside an EditorWidgetContainer unless it's being dragged
-	 * and is not visible.
+	 * Each widget has its own position, size, GUI and update method. Widget is always docked inside an 
+	 * EditorWidgetContainer unless it's being dragged and is not visible.
 	 */
 	class BS_ED_EXPORT EditorWidgetBase
 	{
 	public:
-		/**
-		 * @brief	Gets a unique name for this widget. This name will be used for referencing
-		 *			the widget by other systems.
-		 */
+		/** Gets a unique name for this widget. This name will be used for referencing the widget by other systems. */
 		const String& getName() const { return mName; }
 
-		/**
-		 * @brief	Gets the display name for the widget. This is what editor users will see
-		 *			in the widget title bar.
-		 */
+		/** Gets the display name for the widget. This is what editor users will see in the widget title bar. */
 		const HString& getDisplayName() const { return mDisplayName; }
 
-		/**
-		 * @brief	Returns the X position of the widget inside of its container.
-		 */
+		/**	Returns the X position of the widget inside of its container. */
 		INT32 getX() const { return mX; }
 
-		/**
-		 * @brief	Returns the Y position of the widget inside of its container.
-		 */
+		/**	Returns the Y position of the widget inside of its container. */
 		INT32 getY() const { return mY; }
 
-		/**
-		 * @brief	Returns the width of the widget in pixels.
-		 */
+		/**	Returns the width of the widget in pixels. */
 		UINT32 getWidth() const { return mWidth; }
 
-		/**
-		 * @brief	Returns the height of the widget in pixels.
-		 */
+		/**	Returns the height of the widget in pixels. */
 		UINT32 getHeight() const { return mHeight; }
 
-		/**
-		 * @brief	Returns the width of the widget when initially created, in pixels.
-		 */
+		/**	Returns the width of the widget when initially created, in pixels. */
 		UINT32 getDefaultWidth() const { return mDefaultWidth; }
 
-		/**
-		 * @brief	Returns the height of the widget when initially created, in pixels.
-		 */
+		/**	Returns the height of the widget when initially created, in pixels. */
 		UINT32 getDefaultHeight() const { return mDefaultHeight; }
 
-		/**
-		 * @brief	Returns the bounds of the widget in pixels, relative
-		 *			to its parent container.
-		 */
+		/**	Returns the bounds of the widget in pixels, relative to its parent container. */
 		Rect2I getBounds() const { return Rect2I(mX, mY, mWidth, mHeight); }
 
-		/**
-		 * @brief	Checks if the widget has focus (usually means user clicked on it last).
-		 */
+		/**	Checks if the widget has focus (usually means user clicked on it last). */
 		bool hasFocus() const { return mHasFocus; }
 
 		/** 
@@ -80,93 +60,58 @@ namespace BansheeEngine
 		bool isActive() const { return mIsActive; }
 
 		/**
-		 * @brief	Gets the parent editor window this widget is docked in. Can be null (e.g. when widget is in the
-		 *			process of dragging and not visible).
+		 * Gets the parent editor window this widget is docked in. Can be null (e.g. when widget is in the process of
+		 * dragging and not visible).
 		 */
 		EditorWindowBase* getParentWindow() const;
 
 		/**
-		 * @brief	Changes the size of the widget (and its internal GUI panel).
-		 * 
-		 * @note	Internal method.
-		 */
-		void _setSize(UINT32 width, UINT32 height);
-
-		/**
-		 * @brief	Changes the position of the widget (and its internal GUI panel), 
-		 *			relative to its parent container.
-		 * 
-		 * @note	Internal method.
-		 */
-		void _setPosition(INT32 x, INT32 y);
-
-		/**
-		 * @brief	Changes the parent container of the widget (e.g. when re-docking or moving
-		 *			a widget to another window). Parent can be null (e.g. when widget is in the
-		 *			process of dragging and not visible).
-		 *
-		 * @note	Internal method.
-		 */
-		void _changeParent(EditorWidgetContainer* parent);
-
-		/**
-		 * @brief	Sets or removes focus for this widget.
-		 *
-		 * @note	Internal method.
-		 */
-		void _setHasFocus(bool focus);
-
-		/**
-		 * @brief	Returns the parent widget container. Can be null (e.g. when widget is in the
-		 *			process of dragging and not visible).
-		 *
-		 * @note	Internal method.
+		 * Returns the parent widget container. Can be null (e.g. when widget is in the process of dragging and not 
+		 * visible). 
 		 */
 		EditorWidgetContainer* _getParent() const { return mParent; }
 
-		/**
-		 * @brief	Converts screen coordinates to coordinates relative to the
-		 *			widget.
-		 */
+		/**	Converts screen coordinates to coordinates relative to the widget. */
 		Vector2I screenToWidgetPos(const Vector2I& screenPos) const;
 
-		/**
-		 * @brief	Converts widget relative coordinates to screen coordiantes.
-		 */
+		/**	Converts widget relative coordinates to screen coordiantes. */
 		Vector2I widgetToScreenPos(const Vector2I& widgetPos) const;
 
-		/**
-		 * @brief	Disables the widget making its GUI contents not visible. The widget
-		 *			remains docked in its container.
-		 *
-		 * @note	Internal method.
-		 */
-		void _disable();
-
-		/**
-		 * @brief	Enables the widget making its previously hidden GUI contents visible.
-		 *
-		 * @note	Internal method.
-		 */
-		void _enable();
-
-		/**
-		 * @brief	Closes the widget, undocking it from its container and freeing any resources
-		 *			related to it.
-		 */
+		/**	Closes the widget, undocking it from its container and freeing any resources related to it. */
 		void close();
 
-		/**
-		 * @brief	Called once per frame.
-		 *
-		 * @note	Internal method.
-		 */
+		/** Internal method. Called once per frame.	 */
 		virtual void update() { }
 
 		Event<void(UINT32, UINT32)> onResized; /**< Triggered whenever widget size changes. */
 		Event<void(INT32, INT32)> onMoved; /**< Triggered whenever widget position changes. */
 		Event<void(EditorWidgetContainer*)> onParentChanged; /**< Triggered whenever widget parent container changes. */
 		Event<void(bool)> onFocusChanged; /**< Triggered whenever widget receives or loses focus. */
+
+		/** @cond INTERNAL */
+
+		/**	Changes the size of the widget (and its internal GUI panel). */
+		void _setSize(UINT32 width, UINT32 height);
+
+		/**	Changes the position of the widget (and its internal GUI panel), relative to its parent container. */
+		void _setPosition(INT32 x, INT32 y);
+
+		/**
+		 * Changes the parent container of the widget (e.g. when re-docking or moving a widget to another window). Parent
+		 * can be null (e.g. when widget is in the process of dragging and not visible).
+		 */
+		void _changeParent(EditorWidgetContainer* parent);
+
+		/**	Sets or removes focus for this widget. */
+		void _setHasFocus(bool focus);
+
+		/** Disables the widget making its GUI contents not visible. The widget	remains docked in its container. */
+		void _disable();
+
+		/**	Enables the widget making its previously hidden GUI contents visible. */
+		void _enable();
+
+		/** @endcond */
 	protected:
 		friend class EditorWidgetManager;
 
@@ -174,30 +119,22 @@ namespace BansheeEngine
 			UINT32 defaultHeight, EditorWidgetContainer& parentContainer);
 		virtual ~EditorWidgetBase();
 
-		/**
-		 * @brief	Triggered whenever widget position changes.
-		 */
+		/**	Triggered whenever widget position changes. */
 		virtual void doOnMoved(INT32 x, INT32 y);
 
-		/**
-		 * @brief	Triggered whenever widget size changes.
-		 */
+		/**	Triggered whenever widget size changes. */
 		virtual void doOnResized(UINT32 width, UINT32 height);
 
-		/**
-		 * @brief	Triggered whenever widget parent container changes.
-		 */
+		/**	Triggered whenever widget parent container changes. */
 		virtual void doOnParentChanged();
 
 		/**
-		 * @brief	Returns the parent GUI widget. Before calling this you must ensure
-		 *			the widget has a container parent otherwise this method will fail.
+		 * Returns the parent GUI widget. Before calling this you must ensure the widget has a container parent otherwise
+		 * this method will fail.
 		 */
 		GUIWidget& getParentWidget() const;
 
-		/**
-		 * @brief	Frees widget resources and deletes the instance.
-		 */
+		/**	Frees widget resources and deletes the instance. */
 		static void destroy(EditorWidgetBase* widget);
 
 		String mName;
@@ -211,10 +148,16 @@ namespace BansheeEngine
 		bool mIsActive;
 	};
 
+	/** @} */
+
+	/** @cond INTERNAL */
+	/** @addtogroup EditorWindow
+	 *  @{
+	 */
+
 	/**
-	 * @brief	Helper class that registers a widget creation callback with the widget manager.
-	 *			The creation callback allows the runtime to open widgets just by their name
-	 *			without knowing the actual type.
+	 * Helper class that registers a widget creation callback with the widget manager. The creation callback allows the
+	 * runtime to open widgets just by their name without knowing the actual type.
 	 */
 	template<typename Type>
 	struct RegisterWidgetOnStart
@@ -225,9 +168,7 @@ namespace BansheeEngine
 			EditorWidgetManager::preRegisterWidget(Type::getTypeName(), &create);
 		}
 
-		/**
-		 * @brief	Creates a new widget of a specific type and adds it to the provided container.
-		 */
+		/**	Creates a new widget of a specific type and adds it to the provided container. */
 		static EditorWidgetBase* create(EditorWidgetContainer& parentContainer)
 		{
 			return bs_new<Type>(EditorWidget<Type>::ConstructPrivately(), parentContainer);
@@ -235,8 +176,8 @@ namespace BansheeEngine
 	};
 
 	/**
-	 * @brief	Editor widget template class that widgets can inherit from. Ensures that
-	 *			all widget implementations are automatically registered with the widget manager.
+	 * Editor widget template class that widgets can inherit from. Ensures that	all widget implementations are automatically
+	 * registered with the widget manager.
 	 *
 	 * @see		EditorWidgetBase
 	 */
@@ -262,4 +203,7 @@ namespace BansheeEngine
 
 	template <typename Type>
 	volatile RegisterWidgetOnStart<Type> EditorWidget<Type>::RegisterOnStart;
+
+	/** @} */
+	/** @endcond */
 }

+ 59 - 87
BansheeEditor/Include/BsEditorWidgetContainer.h

@@ -7,12 +7,14 @@
 
 namespace BansheeEngine
 {
+	/** @cond INTERNAL */
+	/** @addtogroup EditorWindow
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A GUI object that contains one or multiple editor widgets.
-	 *			Each widget is represented by a single tab and can be activated,
-	 *			deactivated, moved or dragged off.
-	 *
-	 * @note	Internal class.
+	 * A GUI object that contains one or multiple editor widgets. Each widget is represented by a single tab and can be
+	 * activated, deactivated, moved or dragged off.
 	 */
 	class BS_ED_EXPORT EditorWidgetContainer
 	{
@@ -20,106 +22,75 @@ namespace BansheeEngine
 		EditorWidgetContainer(GUIWidget* parent, EditorWindowBase* parentEditorWindow);
 		virtual ~EditorWidgetContainer();
 
-		/**
-		 * @brief	Adds a new widget to the container, adding a new tab to
-		 *			the end of the tab bar.
-		 */
+		/**	Adds a new widget to the container, adding a new tab to the end of the tab bar. */
 		void add(EditorWidgetBase& widget);
 
-		/**
-		 * @brief	Removes a widget from the container.
-		 */
+		/**	Removes a widget from the container. */
 		void remove(EditorWidgetBase& widget);
 
 		/**
-		 * @brief	Inserts a widget at the specified index, adding a new
-		 *			tab at that position.
+		 * Inserts a widget at the specified index, adding a new tab at that position.
 		 *
-		 * @param	idx		Sequential index where to insert the widget.
-		 * @param	widget	Widget to insert.
+		 * @param[in]	idx		Sequential index where to insert the widget.
+		 * @param[in]	widget	Widget to insert.
 		 */
 		void insert(UINT32 idx, EditorWidgetBase& widget);
 
-		/**
-		 * @brief	Checks if the container already contains the provided widget.
-		 */
+		/**	Checks if the container already contains the provided widget. */
 		bool contains(EditorWidgetBase& widget);
 
-		/**
-		 * @brief	Sets the size of the container in pixels. This also modifies
-		 *			the size of all child widgets.
-		 */
+		/**	Sets the size of the container in pixels. This also modifies the size of all child widgets. */
 		void setSize(UINT32 width, UINT32 height);
 
 		/**
-		 * @brief	Sets the position of the container, relative to the parent
-		 *			GUI widget. This also modifies the position of all child widgets.
+		 * Sets the position of the container, relative to the parent GUI widget. This also modifies the position of all
+		 * child widgets.
 		 */
 		void setPosition(INT32 x, INT32 y);
 
-		/**
-		 * @brief	Returns the number of widgets currently docked in this container.
-		 */
+		/**	Returns the number of widgets currently docked in this container. */
 		UINT32 getNumWidgets() const { return (UINT32)mWidgets.size(); }
 
 		/**
-		 * @brief	Returns a widget at the specified index.
+		 * Returns a widget at the specified index.
 		 *
-		 * @param	idx		Sequential index of the widget to retrieve.
+		 * @param[in]	idx		Sequential index of the widget to retrieve.
 		 */
 		EditorWidgetBase* getWidget(UINT32 idx) const;
 
-		/**
-		 * @brief	Returns a widget that is currently visible (its tab is active).
-		 */
+		/**	Returns a widget that is currently visible (its tab is active). */
 		EditorWidgetBase* getActiveWidget() const;
 
-		/**
-		 * @brief	Returns the parent GUI widget the container is using to render the GUI on.
-		 */
+		/**	Returns the parent GUI widget the container is using to render the GUI on. */
 		GUIWidget& getParentWidget() const { return *mParent; }
 
-		/**
-		 * @brief	Returns the parent editor window the container is docked in.
-		 */
+		/**	Returns the parent editor window the container is docked in. */
 		EditorWindowBase* getParentWindow() const { return mParentWindow; }
 
-		/**
-		 * @brief	Returns bounds not including the tabbed title bar. These are the bounds
-		 *			available to child widget GUI.
-		 */
+		/** Returns bounds not including the tabbed title bar. These are the bounds available to child widget GUI. */
 		Rect2I getContentBounds() const;
 
-		/**
-		 * @brief	Returns a list of areas that can be dragged off. These are normally areas
-		 *			represented by tab buttons.
-		 */
+		/**	Returns a list of areas that can be dragged off. These are normally areas represented by tab buttons. */
 		Vector<Rect2I> getDraggableAreas() const;
 
-		/**
-		 * @brief	Called once per frame. Calls update on all docked widgets.
-		 */
+		/**	Called once per frame. Calls update on all docked widgets. */
 		void update();
 
-		/**
-		 * @brief	Updates the tabbed title bar by refreshing the names of all docked widgets.
-		 */
+		/**	Updates the tabbed title bar by refreshing the names of all docked widgets. */
 		void refreshWidgetNames();
 
-		/**
-		 * @brief	Triggers when a widget is about to be destroyed.
-		 */
+		/**	Triggers when a widget is about to be destroyed. */
 		void _notifyWidgetDestroyed(EditorWidgetBase* widget);
 
 		/**
-		 * @brief	Returns the size of a widget docked in a window of the specified size. Window and widget sizes are
-		 * 			different due to the title bar and potentially other window-specific GUI elements.
+		 * Returns the size of a widget docked in a window of the specified size. Window and widget sizes are different due
+		 * to the title bar and potentially other window-specific GUI elements.
 		 */
 		static Vector2I windowToWidgetSize(const Vector2I& windowSize);
 
 		/**
-		 * @brief	Returns the size of a window required for displaying a widget of the specified size. Window and widget 
-		 * 			sizes are different due to the title bar and potentially other window-specific GUI elements.
+		 * Returns the size of a window required for displaying a widget of the specified size. Window and widget sizes are
+		 * different due to the title bar and potentially other window-specific GUI elements.
 		 */
 		static Vector2I widgetToWindowSize(const Vector2I& widgetSize);
 
@@ -129,68 +100,69 @@ namespace BansheeEngine
 
 		static const UINT32 TitleBarHeight;
 	private:
-		EditorWindowBase* mParentWindow;
-		GUITabbedTitleBar* mTitleBar;
-		GUIPanel* mTitleBarPanel;
-		GUIWidget* mParent;
-		INT32 mX, mY;
-		UINT32 mWidth, mHeight;
-		UnorderedMap<UINT32, EditorWidgetBase*> mWidgets;
-		INT32 mActiveWidget;
-
-		/**
-		 * @brief	Removes a widget without triggering a widget closed event.
-		 */
+		/**	Removes a widget without triggering a widget closed event. */
 		void removeInternal(EditorWidgetBase& widget);
 
 		/**
-		 * @brief	Changes the currently active widget to the one at the specified index. Making
-		 *			the widget active means it will be visible in the container.
+		 * Changes the currently active widget to the one at the specified index. Making the widget active means it will be
+		 * visible in the container.
 		 *
-		 * @param	idx		Unique widget index (not sequential).
+		 * @param[in]	idx		Unique widget index (not sequential).
 		 */
 		void setActiveWidget(UINT32 idx);
 
 		/**
-		 * @brief	Triggered when a user clicks on a tab in the tabbed title bar.
+		 * Triggered when a user clicks on a tab in the tabbed title bar.
 		 *
-		 * @param	idx		Unique widget index (not sequential) of the tab that was activated.
+		 * @param[in]	idx		Unique widget index (not sequential) of the tab that was activated.
 		 */
 		void tabActivated(UINT32 idx);
 
 		/**
-		 * @brief	Triggered when a user closes a tab in the tabbed title bar.
+		 * Triggered when a user closes a tab in the tabbed title bar.
 		 *
-		 * @param	idx		Unique widget index (not sequential) of the tab that was closed.
+		 * @param[in]	idx		Unique widget index (not sequential) of the tab that was closed.
 		 */
 		void tabClosed(UINT32 idx);
 
 		/**
-		 * @brief	Triggered when a user clicks the maximize button on the title bar.
+		 * Triggered when a user clicks the maximize button on the title bar.
 		 *
-		 * @param	idx		Unique widget index (not sequential) of the tab that was closed.
+		 * @param[in]	idx		Unique widget index (not sequential) of the tab that was closed.
 		 */
 		void tabMaximized(UINT32 idx);
 
 		/**
-		 * @brief	Triggered when a user drags a tab off the tabbed title bar.
+		 * Triggered when a user drags a tab off the tabbed title bar.
 		 *
-		 * @param	idx		Unique widget index (not sequential) of the tab that was dragged off.
+		 * @param[in]	idx		Unique widget index (not sequential) of the tab that was dragged off.
 		 */
 		void tabDraggedOff(UINT32 idx);
 
 		/**
-		 * @brief	Triggered when a user drags a tab on the tabbed title bar.
+		 * Triggered when a user drags a tab on the tabbed title bar.
 		 *
-		 * @param	idx		Sequential index at the position on which the tab has been dragged on.
+		 * @param[in]	idx		Sequential index at the position on which the tab has been dragged on.
 		 */
 		void tabDraggedOn(UINT32 idx);
 
 		/**
-		 * @brief	Triggered when the widget drag and drop operation finishes.
+		 * Triggered when the widget drag and drop operation finishes.
 		 *
-		 * @param	wasDragProcessed	Signals whether any object handled the drop.
+		 * @param[in]	wasDragProcessed	Signals whether any object handled the drop.
 		 */
 		static void tabDroppedCallback(bool wasDragProcessed);
+
+		EditorWindowBase* mParentWindow;
+		GUITabbedTitleBar* mTitleBar;
+		GUIPanel* mTitleBarPanel;
+		GUIWidget* mParent;
+		INT32 mX, mY;
+		UINT32 mWidth, mHeight;
+		UnorderedMap<UINT32, EditorWidgetBase*> mWidgets;
+		INT32 mActiveWidget;
 	};
+
+	/** @} */
+	/** @endcond */
 }

+ 14 - 19
BansheeEditor/Include/BsEditorWidgetLayout.h

@@ -7,17 +7,16 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Contains stored positions and sizes of all editor 
-	 *			widgets, whether docked or floating.
+	/** @cond INTERNAL */
+	/** @addtogroup EditorWindow
+	 *  @{
 	 */
+
+	/** Contains stored positions and sizes of all editor widgets, whether docked or floating. */
 	class EditorWidgetLayout : public IReflectable
 	{
 	public:
-		/**
-		 * @brief	An entry representing widgets and area of a single
-		 *			widget container.
-		 */
+		/**	An entry representing widgets and area of a single widget container. */
 		struct Entry
 		{
 		public:
@@ -38,25 +37,18 @@ namespace BansheeEngine
 		EditorWidgetLayout(const PrivatelyConstruct& dummy);
 
 		/**
-		 * @brief	Returns saved representations of all widget containers. Each entry contains information
-		 *			about a single widget container.
+		 * Returns saved representations of all widget containers. Each entry contains information about a single widget
+		 * container.
 		 */
 		Vector<Entry>& getEntries() { return mEntries; }
 
-		/**
-		 * @brief	Returns dock layout that contains data about how were widget containers docked in the
-		 *			dock manager.
-		 */
+		/**	Returns dock layout that contains data about how were widget containers docked in the dock manager. */
 		const DockManagerLayoutPtr& getDockLayout() const { return mDockLayout; }
 
-		/**
-		 * @brief	Sets whether the main editor window is maximized.
-		 */
+		/**	Sets whether the main editor window is maximized. */
 		void setIsMainWindowMaximized(bool maximized) { mMaximized = maximized; }
 
-		/**
-		 * @brief	Checks whether the main editor window was maximized.
-		 */
+		/**	Checks whether the main editor window was maximized. */
 		bool getIsMainWindowMaximized() const { return mMaximized; }
 
 	private:
@@ -72,4 +64,7 @@ namespace BansheeEngine
 		static RTTITypeBase* getRTTIStatic();
 		virtual RTTITypeBase* getRTTI() const override;	
 	};
+
+	/** @} */
+	/** @endcond */
 }

+ 33 - 45
BansheeEditor/Include/BsEditorWidgetManager.h

@@ -7,11 +7,14 @@
 
 namespace BansheeEngine
 {
+	/** @cond INTERNAL */
+	/** @addtogroup EditorWindow
+	 *  @{
+	 */
+
 	/**
-	 * @brief	Handles opening and closing of EditorWidgets. Its primary purpose
-	 * 			is to keep track of all types of widgets so they can be saved and restored
-	 * 			upon program shutdown/startup, as well as being able to change widget layout on
-	 * 			the fly.
+	 * Handles opening and closing of EditorWidgets. Its primary purpose is to keep track of all types of widgets so they
+	 * can be saved and restored upon program shutdown/startup, as well as being able to change widget layout on the fly.
 	 */
 	class BS_ED_EXPORT EditorWidgetManager : public Module<EditorWidgetManager>
 	{
@@ -19,85 +22,67 @@ namespace BansheeEngine
 		EditorWidgetManager();
 		~EditorWidgetManager();
 
-		/**
-		 * @brief	Called every frame.
-		 */
+		/**	Called every frame. */
 		void update();
 
 		/**
-		 * @brief	Registers a widget that can then be opened by calling "open". When loading
-		 * 			a widget layout this name and callback will be used to attempt creating the widget.
+		 * Registers a widget that can then be opened by calling open(). When loading a widget layout this name and callback
+		 * will be used to attempt creating the widget.
 		 *
-		 * @param	name				  	Unique name for the widget.
-		 * @param 	createCallback			Callback that returns a new instance of the widget.
+		 * @param[in]	name				  	Unique name for the widget.
+		 * @param [in]	createCallback			Callback that returns a new instance of the widget.
 		 */
 		void registerWidget(const String& name, std::function<EditorWidgetBase*(EditorWidgetContainer&)> createCallback);
 
-		/**
-		 * @brief	Unregisters a widget so it may no longer be opened using this manager.
-		 */
+		/**	Unregisters a widget so it may no longer be opened using this manager. */
 		void unregisterWidget(const String& name);
 
 		/**
-		 * @brief	Creates a widget with the given name. If widget is already created it returns the existing instance.
-		 * 			Widget is opened in a new window.
-		 *
-		 * @param	name	The name of the widget.
+		 * Creates a widget with the given name. If widget is already created it returns the existing instance.	Widget is
+		 * opened in a new window.
 		 *
-		 * @return	Always returns the created widget, and throws an exception if it fails.
+		 * @param[in]	name	The name of the widget.
+		 * @return				Always returns the created widget, and throws an exception if it fails.
 		 */
 		EditorWidgetBase* open(const String& name);
 
-		/**
-		 * @brief	Creates a new widget an inserts it into the specified container.
-		 */
+		/**	Creates a new widget an inserts it into the specified container. */
 		EditorWidgetBase* create(const String& name, EditorWidgetContainer& parentContainer);
 
-		/**
-		 * @brief	Checks if the provided name represents a widget that can be created.
-		 */
+		/**	Checks if the provided name represents a widget that can be created. */
 		bool isValidWidget(const String& name) const;
 
-		/**
-		 * @brief	Closes the given widget.
-		 */
+		/**	Closes the given widget. */
 		void close(EditorWidgetBase* widget);
 
-		/**
-		 * @brief	Closes all open editor widgets.
-		 */
+		/**	Closes all open editor widgets. */
 		void closeAll();
 
 		/**
-		 * @brief	Retrieves the layout of all currently active widgets. You may later
-		 * 			use this layout to restore exact position of the widgets.
+		 * Retrieves the layout of all currently active widgets. You may later use this layout to restore exact position of
+		 * the widgets.
 		 */
 		EditorWidgetLayoutPtr getLayout() const;
 
 		/**
-		 * @brief	Positions all widgets according to the provided layout. It will open
-		 * 			new widgets or close current ones if needed.
+		 * Positions all widgets according to the provided layout. It will open new widgets or close current ones if needed.
 		 */
 		void setLayout(const EditorWidgetLayoutPtr& layout);
 
 		/**
-		 * @brief	Allows you to queue up widgets that will be registered as soon as an instance of EditorWidgetManager is
-		 * 			created.
+		 * Allows you to queue up widgets that will be registered as soon as an instance of EditorWidgetManager is created.
 		 *
-		 * @note	Useful primarily when widgets are being registered from static methods, because then there is no
-		 * 			EditorWidgetManager instance yet.
+		 * @note	
+		 * Useful primarily when widgets are being registered from static methods, because then there is no
+		 * EditorWidgetManager instance yet.
 		 */
 		static void preRegisterWidget(const String& name, std::function<EditorWidgetBase*(EditorWidgetContainer&)> createCallback);
 
 	private:
-		/**
-		 * @brief	Triggered whenever a window gains focus.
-		 */
+		/**	Triggered whenever a window gains focus. */
 		void onFocusGained(const RenderWindow& window);
 
-		/**
-		 * @brief	Triggered whenever a window loses focus.
-		 */
+		/**	Triggered whenever a window loses focus. */
 		void onFocusLost(const RenderWindow& window);
 
 		Map<String, EditorWidgetBase*> mActiveWidgets;
@@ -108,4 +93,7 @@ namespace BansheeEngine
 
 		static Stack<std::pair<String, std::function<EditorWidgetBase*(EditorWidgetContainer&)>>> QueuedCreateCallbacks;
 	};
+
+	/** @} */
+	/** @endcond */
 }

+ 20 - 33
BansheeEditor/Include/BsEditorWindow.h

@@ -7,72 +7,59 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	A draggable and resizeable window that has a single widget container
-	 *			you may use for docking editor widgets in.
+	/** @addtogroup EditorWindow
+	 *  @{
 	 */
+
+	/**	A draggable and resizeable window that has a single widget container you may use for docking editor widgets in. */
 	class BS_ED_EXPORT EditorWindow : public EditorWindowBase
 	{
 	public:
 		virtual ~EditorWindow();
 
-		/**
-		 * @brief	Returns the widget container for this window.
-		 */
+		/**	Returns the widget container for this window. */
 		EditorWidgetContainer& widgets() const { return *mWidgets; }
 
-		/**
-		 * @copydoc	EditorWindowBase::update 
-		 */
+		/** @copydoc EditorWindowBase::update  */
 		virtual void update() override;
 
-		/**
-		 * @brief	Creates a new empty editor window.
-		 */
+		/**	Creates a new empty editor window. */
 		static EditorWindow* create();
 
 	protected:
 		friend class EditorWindowManager;
 		EditorWindow();
 
-		/**
-		 * @copydoc	EditorWindowBase::resized 
-		 */
+		/** @copydoc EditorWindowBase::resized  */
 		virtual void resized() override;
 	private:
 		EditorWidgetContainer* mWidgets;
 
 		/**
-		 * @brief	Updates the sizes of the child widget container and
-		 *			OS non-client areas (like drag and resize). Call when window
-		 *			size changes.
+		 * Updates the sizes of the child widget container and OS non-client areas (like drag and resize). Call when window
+		 * size changes.
 		 */
 		void updateSize();
 
-		/**
-		 * @brief	Called when a widget is added to the widget container.
-		 */
+		/**	Called when a widget is added to the widget container. */
 		void widgetAdded();
 
-		/**
-		 * @brief	Called when a widget is removed from the widget container.
-		 */
+		/**	Called when a widget is removed from the widget container. */
 		void widgetRemoved();
 
-		/**
-		 * @brief	Triggered when the maximize button on the title bar is clicked.
-		 */
+		/**	Triggered when the maximize button on the title bar is clicked. */
 		void maximizeClicked();
 
 		/**
-		 * @brief	A callback that triggers when a drag and drop operation originated from
-		 *			this window ends. 
+		 * A callback that triggers when a drag and drop operation originated from this window ends. 
 		 *
-		 * @note	This is a workaround to get around the problem that closing the window
-		 *			when the drag operation starts (e.g. if the last widget is dragged from the window)
-		 *			will cause the application to lose mouse capture and will not receive mouse events.
-		 *			Therefore we delay the window closing until the drag ends.
+		 * @note	
+		 * This is a workaround to get around the problem that closing the window when the drag operation starts (e.g. if
+		 * the last widget is dragged from the window) will cause the application to lose mouse capture and will not receive
+		 * mouse events. Therefore we delay the window closing until the drag ends.
 		 */
 		void closeWindowDelayed();
 	};
+
+	/** @} */
 }

+ 32 - 61
BansheeEditor/Include/BsEditorWindowBase.h

@@ -7,91 +7,75 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup Implementation
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A base class for all editor window. Each editor window is backed by a render window
-	 *			(e.g. the OS "window"), and also provides a GUI widget for child elements to use.
-	 *			On top of that it also provides basic GUI like window background and frame, as well
-	 *			as setting up the OS-specific areas for resize/move operations.
+	 * A base class for all editor window. Each editor window is backed by a render window (e.g. the OS "window"), and also
+	 * provides a GUI widget for child elements to use. On top of that it also provides basic GUI like window background
+	 * and frame, as well as setting up the OS-specific areas for resize/move operations.
 	 */
 	class BS_ED_EXPORT EditorWindowBase
 	{
 	public:
 		virtual ~EditorWindowBase();
 
-		/**
-		 * @brief	Moves the window on the desktop. Coordinates are in screen space.
-		 */
+		/**	Moves the window on the desktop. Coordinates are in screen space. */
 		virtual void setPosition(INT32 x, INT32 y);
 
-		/**
-		 * @brief	Resizes the window.
-		 */
+		/**	Resizes the window. */
 		virtual void setSize(UINT32 width, UINT32 height);
 
-		/**
-	     * @brief	Returns the X position of the window in screen coordinates.
-		 */
+		/**	Returns the X position of the window in screen coordinates. */
 		INT32 getLeft() const;
 
-		/**
-	     * @brief	Returns the X position of the window in screen coordinates.
-		 */
+		/**	Returns the X position of the window in screen coordinates. */
 		INT32 getTop() const;
 
-		/**
-	     * @brief	Returns the width of the window in pixels.
-		 */
+		/**	Returns the width of the window in pixels. */
 		UINT32 getWidth() const;
 
-		/**
-	     * @brief	Returns the height of the window in pixels.
-		 */
+		/**	Returns the height of the window in pixels. */
 		UINT32 getHeight() const;
 
-		/**
-	     * @brief	Closes and destroys the window.
-		 */
+		/**	Closes and destroys the window. */
 		virtual void close();
 
-		/**
-	     * @brief	Hides the window without closing it.
-		 */
+		/**	Hides the window without closing it. */
 		void hide();
 
-		/**
-		 * @brief	Return true if this is the main editor window.
-		 */
+		/**	Return true if this is the main editor window. */
 		virtual bool isMain() const { return false; }
 
-		/**
-		 * @brief	Called once every frame. Internal method.
-		 */
+		/**	Called once every frame. Internal method. */
 		virtual void update() { }
 
-		/**
-		 * @brief	Returns the render window that this editor window is being rendered to.
-		 */
+		/**	Returns the render window that this editor window is being rendered to. */
 		RenderWindowPtr getRenderWindow() const { return mRenderWindow; }
 
-		/**
-		 * @brief	Returns the GUI widget used for displaying all GUI contents in the window.
-		 */
+		/**	Returns the GUI widget used for displaying all GUI contents in the window. */
 		HGUIWidget getGUIWidget() const { return mGUI; }
 
-		/**
-		 * @brief	Returns the camera used for rendering the window GUI contents.
-		 */	
+		/**	Returns the camera used for rendering the window GUI contents. */	
 		HCamera getGUICamera() const { return mCamera; }
 
-		/**
-		 * @brief	Checks whether the window currently has keyboard focus.
-		 */	
+		/**	Checks whether the window currently has keyboard focus. */	
 		bool hasFocus() const;
 
 	protected:
 		EditorWindowBase(bool isModal = false);
 		EditorWindowBase(const RenderWindowPtr& renderWindow);
 
+		/**	Common code for constructing the object to be called from all constructors. */
+		void construct(const RenderWindowPtr& renderWindow);
+
+		/**	Initializes elements that cannot be initialized in the constructor. Must be called right after construction. */
+		virtual void initialize();
+
+		/**	Callback that triggers whenever the underlying render window changes size. */
+		virtual void resized() { }
+
 		RenderWindowPtr mRenderWindow;
 		HSceneObject mSceneObject;
 		HGUIWidget mGUI;
@@ -99,22 +83,9 @@ namespace BansheeEngine
 		GameObjectHandle<WindowFrameWidget> mWindowFrame;
 		bool mOwnsRenderWindow;
 		bool mIsModal;
-
-		/**
-		 * @brief	Common code for constructing the object to be called from all constructors.
-		 */
-		void construct(const RenderWindowPtr& renderWindow);
-
-		/**
-		 * @brief	Initializes elements that cannot be initialized in the constructor. Must be called right after construction.
-		 */
-		virtual void initialize();
-
-		/**
-		 * @brief	Callback that triggers whenever the underlying render window changes size.
-		 */
-		virtual void resized() { }
 	private:
 		HEvent mResizedConn;
 	};
+
+	/** @} */
 }

+ 16 - 24
BansheeEditor/Include/BsEditorWindowManager.h

@@ -8,11 +8,12 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Manages that handles creation, destruction and updates of editor windows.
-	 *
-	 * @note	Internal class.
+	/** @cond INTERNAL */
+	/** @addtogroup EditorWindow
+	 *  @{
 	 */
+
+	/** Manages that handles creation, destruction and updates of editor windows. */
 	class BS_ED_EXPORT EditorWindowManager : public Module<EditorWindowManager>
 	{
 	public:
@@ -20,39 +21,27 @@ namespace BansheeEngine
 		~EditorWindowManager();
 
 		/**
-		 * @brief	Creates the main editor window using a previously created render window.
-		 *			If a main window already exists, this will return the existing instance.
+		 * Creates the main editor window using a previously created render window. If a main window already exists, this
+		 * will return the existing instance.
 		 */
 		MainEditorWindow* createMain(const RenderWindowPtr& parentRenderWindow);
 
-		/**
-		 * @brief	Creates a new editor window. There is no limit on the number of editor windows.
-		 */
+		/**	Creates a new editor window. There is no limit on the number of editor windows. */
 		EditorWindow* create();
 
-		/**
-		 * @brief	Notifies the manager that a new editor window was created.
-		 */
+		/**	Notifies the manager that a new editor window was created. */
 		void registerWindow(EditorWindowBase* window);
 
-		/**
-		 * @brief	Schedules the window for destruction. Actual destruction will happen on next update.
-		 */
+		/**	Schedules the window for destruction. Actual destruction will happen on next update. */
 		void destroy(EditorWindowBase* window);
 
-		/**
-		 * @brief	Returns the main editor window, or null if one doesn't exist.
-		 */
+		/**	Returns the main editor window, or null if one doesn't exist. */
 		MainEditorWindow* getMainWindow() const { return mMainWindow; }
 
-		/**
-		 * @brief	Update to be called once per frame. Calls update on all active editor windows.
-		 */
+		/**	Update to be called once per frame. Calls update on all active editor windows. */
 		void update();
 
-		/**
-		 * @brief	Checks if any editor window has keyboard focus.
-		 */
+		/**	Checks if any editor window has keyboard focus. */
 		bool hasFocus() const;
 	protected:
 		MainEditorWindow* mMainWindow;
@@ -62,4 +51,7 @@ namespace BansheeEngine
 
 		Vector<EditorWindowBase*> mEditorWindowsSnapshot;
 	};
+
+	/** @} */
+	/** @endcond */
 }

+ 30 - 45
BansheeEditor/Include/BsGUIColor.h

@@ -9,87 +9,70 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	GUI element that displays the set color. RGB and alpha
-	 *			values are displayed separately.
+	/** @addtogroup GUI-Editor
+	 *  @{
 	 */
+
+	/** GUI element that displays the set color. RGB and alpha values are displayed separately. */
 	class GUIColor : public GUIElement
 	{
 	public:
-		/**
-		 * Returns type name of the GUI element used for finding GUI element styles. 
-		 */
+		/** Returns type name of the GUI element used for finding GUI element styles. */
 		static const String& getGUITypeName();
 
 		/**
-		 * @brief	Creates a new GUI color element.
+		 * Creates a new GUI color element.
 		 *
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIColor* create(const String& styleName = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI color element.
+		 * Creates a new GUI color element.
 		 *
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized. This will
+		 *								override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIColor* create(const GUIOptions& options, const String& styleName = StringUtil::BLANK);
 
-		/**
-		 * @copydoc	GUIElement::_getOptimalSize
-		 */
-		virtual Vector2I _getOptimalSize() const override;
-
-		/**
-		 * @brief	Sets the color to display.
-		 */
+		/**	Sets the color to display. */
 		void setColor(const Color& color);
 
-		/**
-		 * @brief	Returns the currently displayed color.
-		 */
+		/**	Returns the currently displayed color. */
 		Color getColor() const { return mValue; }
 
 		Event<void()> onClicked; /**< Triggered when the user clicks on the GUI element. */
+
+		/** @cond INTERNAL */
+
+		/** @copydoc GUIElement::_getOptimalSize */
+		virtual Vector2I _getOptimalSize() const override;
+
+		/** @endcond */
 	protected:
 		GUIColor(const String& styleName, const GUIDimensions& dimensions);
 		virtual ~GUIColor();
 
-		/**
-		 * @copydoc GUIElement::_getNumRenderElements()
-		 */
+		/** @copydoc GUIElement::_getNumRenderElements() */
 		virtual UINT32 _getNumRenderElements() const override;
 
-		/**
-		 * @copydoc GUIElement::_getMaterial()
-		 */
+		/** @copydoc GUIElement::_getMaterial() */
 		virtual const SpriteMaterialInfo& _getMaterial(UINT32 renderElementIdx) const override;
 
-		/**
-		 * @copydoc GUIElement::_getNumQuads()
-		 */
+		/** @copydoc GUIElement::_getNumQuads() */
 		virtual UINT32 _getNumQuads(UINT32 renderElementIdx) const override;
 
-		/**
-		 * @copydoc GUIElement::_fillBuffer()
-		 */
+		/** @copydoc GUIElement::_fillBuffer() */
 		virtual void _fillBuffer(UINT8* vertices, UINT8* uv, UINT32* indices, UINT32 startingQuad, 
 			UINT32 maxNumQuads, UINT32 vertexStride, UINT32 indexStride, UINT32 renderElementIdx) const override;
 
-		/**
-		 * @copydoc GUIElement::updateRenderElementsInternal()
-		 */
+		/** @copydoc GUIElement::updateRenderElementsInternal() */
 		virtual void updateRenderElementsInternal() override;
 
-		/**
-		 * @copydoc GUIElement::_mouseEvent()
-		 */
+		/** @copydoc GUIElement::_mouseEvent() */
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 
 	private:
@@ -103,4 +86,6 @@ namespace BansheeEngine
 
 		Color mValue;
 	};
+
+	/** @} */
 }

+ 16 - 27
BansheeEditor/Include/BsGUIColorField.h

@@ -8,59 +8,46 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup GUI-Editor
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A composite GUI object representing an editor field. Editor fields are a combination
-	 *			of a label and an input field. Label is optional. This specific implementation
-	 *			displays a color input field.
+	 * A composite GUI object representing an editor field. Editor fields are a combination of a label and an input field.
+	 * Label is optional. This specific implementation displays a color input field.
 	 */
 	class BS_ED_EXPORT GUIColorField : public TGUIField<GUIColorField>
 	{
 	public:
-		/**
-		 * Returns type name of the GUI element used for finding GUI element styles. 
-		 */
+		/** Returns type name of the GUI element used for finding GUI element styles. */
 		static const String& getGUITypeName();
 
-		/**
-		 * Style type name for the internal color field.
-		 */
+		/** Style type name for the internal color field. */
 		static const String& getColorInputStyleType();
 
 		GUIColorField(const PrivatelyConstruct& dummy, const GUIContent& labelContent, UINT32 labelWidth,
 			const String& style, const GUIDimensions& dimensions, bool withLabel);
 
-		/**
-		 * @brief	Returns the value of the field.
-		 */
+		/**	Returns the value of the field. */
 		Color getValue() const { return mValue; }
 
-		/**
-		 * @brief	Changes the value of the field.
-		 */
+		/**	Changes the value of the field. */
 		void setValue(const Color& value);
 
-		/**
-		 * @copydoc	GUIElement::setTint
-		 */
+		/** @copydoc GUIElement::setTint */
 		virtual void setTint(const Color& color) override;
 
-		/**
-		 * @copydoc	GUIElement::_getOptimalSize
-		 */
+		/** @copydoc GUIElement::_getOptimalSize */
 		Vector2I _getOptimalSize() const override;
 
 		Event<void()> onClicked; /**< Triggered when the user clicks on the GUI element. */
 	protected:
 		virtual ~GUIColorField();
 
-		/**
-		 * @copydoc	GUIElement::styleUpdated
-		 */
+		/** @copydoc GUIElement::styleUpdated */
 		void styleUpdated() override;
 
-		/**
-		 * @brief	Triggered when the child color input field is clicked on.
-		 */
+		/**	Triggered when the child color input field is clicked on. */
 		void clicked();
 
 		UINT32 mLabelWidth;
@@ -68,4 +55,6 @@ namespace BansheeEngine
 		GUILabel* mLabel;
 		GUIColor* mColor;
 	};
+
+	/** @} */
 }

+ 23 - 25
BansheeEditor/Include/BsGUIDockSlider.h

@@ -9,53 +9,49 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup GUI-Editor
+	 *  @{
+	 */
+
 	/**
-	 * @brief	GUI element used by the dock manager to display a slider between
-	 *			two different dock containers. The slider can be vertical or horizontal
-	 *			and will process and report mouse drag events.
+	 * GUI element used by the dock manager to display a slider between two different dock containers. The slider can be
+	 * vertical or horizontal and will process and report mouse drag events.
 	 *
 	 * @note	It's up to the caller to actually handle the drag events.
 	 */
 	class GUIDockSlider : public GUIButtonBase
 	{
 	public:
-		/**
-		 * Returns type name of the GUI element used for finding GUI element styles. 
-		 */
+		/** Returns type name of the GUI element used for finding GUI element styles. */
 		static const String& getGUITypeName();
 
 		/**
-		 * @brief	Creates a new GUI dock slider element.
+		 * Creates a new GUI dock slider element.
 		 *
-		 * @param	horizontal		Should the slider be rendered horizontal or vertical.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	horizontal		Should the slider be rendered horizontal or vertical.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIDockSlider* create(bool horizontal, const String& styleName = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI dock slider element.
+		 * Creates a new GUI dock slider element.
 		 *
-		 * @param	horizontal		Should the slider be rendered horizontal or vertical.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	horizontal		Should the slider be rendered horizontal or vertical.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized. This will
+		 *								override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIDockSlider* create(bool horizontal, const GUIOptions& options, const String& styleName = StringUtil::BLANK);
 
-		Event<void(const Vector2I&)> onDragged; /**< Triggered while the user is dragging the slider (pointer down and being moved) */
+		/** Triggered while the user is dragging the slider (pointer down and being moved) */
+		Event<void(const Vector2I&)> onDragged; 
 	protected:
-		/**
-		 * @copydoc	GUIButtonBase::_mouseEvent
-		 */
+		/** @copydoc GUIButtonBase::_mouseEvent */
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 
-		/**
-		 * @copydoc	GUIButtonBase::_hasCustomCursor
-		 */
+		/** @copydoc GUIButtonBase::_hasCustomCursor */
 		bool _hasCustomCursor(const Vector2I position, CursorType& type) const override;
 	private:
 		Vector2I mLastDragPosition;
@@ -65,4 +61,6 @@ namespace BansheeEngine
 
 		GUIDockSlider(bool horizontal, const String& styleName, const GUIDimensions& dimensions);
 	};
+
+	/** @} */
 }

+ 22 - 23
BansheeEditor/Include/BsGUIDropButton.h

@@ -12,59 +12,58 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup GUI-Editor
+	 *  @{
+	 */
+
 	/**
-	 * @brief	GUI element that accepts a drag and drop operation of a specified type.
+	 * GUI element that accepts a drag and drop operation of a specified type.
 	 *
 	 * @see		DragAndDropManager
 	 */
 	class BS_ED_EXPORT GUIDropButton : public GUIButtonBase
 	{
 	public:
-		/**
-		 * Returns type name of the GUI element used for finding GUI element styles. 
-		 */
+		/** Returns type name of the GUI element used for finding GUI element styles.  */
 		static const String& getGUITypeName();
 
 		/**
-		 * @brief	Creates a new GUI drop button element.
+		 * Creates a new GUI drop button element.
 		 *
-		 * @param	dragType		Identifier of the drag operation to accept.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	dragType		Identifier of the drag operation to accept.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIDropButton* create(UINT32 dragType, const String& styleName = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI drop button element.
+		 * Creates a new GUI drop button element.
 		 *
-		 * @param	dragType		Identifier of the drag operation to accept.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	dragType		Identifier of the drag operation to accept.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized. This will
+		 *								override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIDropButton* create(UINT32 dragType, const GUIOptions& options, 
 			const String& styleName = StringUtil::BLANK);
 
-		Event<void(void*)> onDataDropped; /**< Triggered when drag and drop operation finishes while over the button and is of the correct type. */
+		/** Triggered when drag and drop operation finishes while over the button and is of the correct type. */
+		Event<void(void*)> onDataDropped; 
 	protected:
 		virtual ~GUIDropButton();
 
 	protected:
 		GUIDropButton(UINT32 dragType, const String& styleName, const GUIDimensions& dimensions);
 
-		/**
-		 * @copydoc	GUIButtonBase::_mouseEvent
-		 */
+		/** @copydoc GUIButtonBase::_mouseEvent */
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 
-		/**
-		 * @copydoc	GUIButtonBase::_acceptDragAndDrop
-		 */
+		/** @copydoc GUIButtonBase::_acceptDragAndDrop */
 		virtual bool _acceptDragAndDrop(const Vector2I position, UINT32 typeId) const override;
 
 		UINT32 mDragType;
 	};
+
+	/** @} */
 }

+ 67 - 80
BansheeEditor/Include/BsGUIFieldBase.h

@@ -8,19 +8,18 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Base class for all editor GUI fields. All fields are a combination of
-	 *			an optional label and an input field.
+	/** @addtogroup Implementation
+	 *  @{
 	 */
+
+	/** Base class for all editor GUI fields. All fields are a combination of an optional label and an input field. */
 	class BS_ED_EXPORT GUIFieldBase : public GUIElementContainer
 	{
 	protected:
 		struct PrivatelyConstruct {};
 
 	public:
-		/**
-		 * @brief	Returns the style type name for the internal label element.
-		 */
+		/**	Returns the style type name for the internal label element. */
 		static const String& getLabelStyleType()
 		{
 			static String LABEL_STYLE_TYPE = "EditorFieldLabel";
@@ -30,21 +29,19 @@ namespace BansheeEngine
 		GUIFieldBase(const PrivatelyConstruct& dummy, const GUIContent& labelContent, UINT32 labelWidth,
 			const String& labelStyle, const GUIDimensions& dimensions, bool withLabel);
 
-		/**
-		 * @copydoc	GUIElementContainer::_updateLayoutInternal
-		 */
+		/** @cond INTERNAL */
+
+		/** @copydoc GUIElementContainer::_updateLayoutInternal */
 		void _updateLayoutInternal(const GUILayoutData& data) override;
 
-		/**
-		 * @copydoc	GUIElementContainer::_getOptimalSize
-		 */
+		/** @copydoc GUIElementContainer::_getOptimalSize */
 		virtual Vector2I _getOptimalSize() const override;
+
+		/** @endcond */
 	protected:
 		virtual ~GUIFieldBase() { }
 
-		/**
-		 * @copydoc	GUIElementContainer::styleUpdated
-		 */
+		/** @copydoc GUIElementContainer::styleUpdated */
 		virtual void styleUpdated() override;
 
 		static const UINT32 DEFAULT_LABEL_WIDTH;
@@ -53,23 +50,20 @@ namespace BansheeEngine
 		GUILabel* mLabel;
 	};
 
-	/**
-	 * @brief	Templated GUI field class that provides common methods needed for constructing an editor field.
-	 */
+	/**	Templated GUI field class that provides common methods needed for constructing an editor field. */
 	template <class T>
 	class TGUIField : public GUIFieldBase
 	{
 	public:
 		/**
-		 * @brief	Creates a new GUI editor field with a label.
+		 * Creates a new GUI editor field with a label.
 		 *
-		 * @param	labelContent	Content to display in the editor field label.
-		 * @param	labelWidth		Width of the label in pixels.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static T* create(const GUIContent& labelContent, UINT32 labelWidth, const GUIOptions& options,
 			const String& style = StringUtil::BLANK)
@@ -83,14 +77,13 @@ namespace BansheeEngine
 		}
 
 		/**
-		 * @brief	Creates a new GUI editor field with a label.
+		 * Creates a new GUI editor field with a label.
 		 *
-		 * @param	labelContent	Content to display in the editor field label.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized. This will
+		 *								override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static T* create(const GUIContent& labelContent, const GUIOptions& options,
 			const String& style = StringUtil::BLANK)
@@ -104,15 +97,14 @@ namespace BansheeEngine
 		}
 
 		/**
-		 * @brief	Creates a new GUI editor field with a label.
+		 * Creates a new GUI editor field with a label.
 		 *
-		 * @param	labelText		String to display in the editor field label.
-		 * @param	labelWidth		Width of the label in pixels.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static T* create(const HString& labelText, UINT32 labelWidth, const GUIOptions& options,
 			const String& style = StringUtil::BLANK)
@@ -126,14 +118,13 @@ namespace BansheeEngine
 		}
 
 		/**
-		 * @brief	Creates a new GUI editor field with a label.
+		 * Creates a new GUI editor field with a label.
 		 *
-		 * @param	labelText		String to display in the editor field label.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static T* create(const HString& labelText, const GUIOptions& options,
 			const String& style = StringUtil::BLANK)
@@ -147,13 +138,12 @@ namespace BansheeEngine
 		}
 
 		/**
-		 * @brief	Creates a new GUI editor field without a label.
+		 * Creates a new GUI editor field without a label.
 		 *
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static T* create(const GUIOptions& options, const String& style = StringUtil::BLANK)
 		{
@@ -166,13 +156,12 @@ namespace BansheeEngine
 		}
 
 		/**
-		 * @brief	Creates a new GUI editor field with a label.
+		 * Creates a new GUI editor field with a label.
 		 *
-		 * @param	labelContent	Content to display in the editor field label.
-		 * @param	labelWidth		Width of the label in pixels.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static T* create(const GUIContent& labelContent, UINT32 labelWidth,
 			const String& style = StringUtil::BLANK)
@@ -185,12 +174,11 @@ namespace BansheeEngine
 		}
 
 		/**
-		 * @brief	Creates a new GUI editor field with a label.
+		 * Creates a new GUI editor field with a label.
 		 *
-		 * @param	labelContent	Content to display in the editor field label.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static T* create(const GUIContent& labelContent,
 			const String& style = StringUtil::BLANK)
@@ -204,13 +192,12 @@ namespace BansheeEngine
 		}
 
 		/**
-		 * @brief	Creates a new GUI editor field with a label.
+		 * Creates a new GUI editor field with a label.
 		 *
-		 * @param	labelText		String to display in the editor field label.
-		 * @param	labelWidth		Width of the label in pixels.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static T* create(const HString& labelText, UINT32 labelWidth,
 			const String& style = StringUtil::BLANK)
@@ -224,12 +211,11 @@ namespace BansheeEngine
 		}
 
 		/**
-		 * @brief	Creates a new GUI editor field with a label.
+		 * Creates a new GUI editor field with a label.
 		 *
-		 * @param	labelText		String to display in the editor field label.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static T* create(const HString& labelText, const String& style = StringUtil::BLANK)
 		{
@@ -242,11 +228,10 @@ namespace BansheeEngine
 		}
 
 		/**
-		 * @brief	Creates a new GUI editor field without a label.
+		 * Creates a new GUI editor field without a label.
 		 *
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static T* create(const String& style = StringUtil::BLANK)
 		{
@@ -263,4 +248,6 @@ namespace BansheeEngine
 			:GUIFieldBase(dummy, labelContent, labelWidth, style, dimensions, withLabel)
 		{ }
 	};
+
+	/** @} */
 }

+ 33 - 51
BansheeEditor/Include/BsGUIFloatField.h

@@ -7,104 +7,84 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup GUI-Editor
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A composite GUI object representing an editor field. Editor fields are a combination
-	 *			of a label and an input field. Label is optional. This specific implementation
-	 *			displays a floating point input field.
+	 * A composite GUI object representing an editor field. Editor fields are a combination of a label and an input field.
+	 * Label is optional. This specific implementation displays a floating point input field.
 	 */
 	class BS_ED_EXPORT GUIFloatField : public TGUIField<GUIFloatField>
 	{
 	public:
-		/**
-		 * Returns type name of the GUI element used for finding GUI element styles. 
-		 */
+		/** Returns type name of the GUI element used for finding GUI element styles.  */
 		static const String& getGUITypeName();
 
-		/**
-		 * Style type name for the internal input box.
-		 */
+		/** Style type name for the internal input box. */
 		static const String& getInputStyleType();
 
 		GUIFloatField(const PrivatelyConstruct& dummy, const GUIContent& labelContent, UINT32 labelWidth,
 			const String& style, const GUIDimensions& dimensions, bool withLabel);
 
-		/**
-		 * @brief	Returns the value of the input field.
-		 */
+		/**	Returns the value of the input field. */
 		float getValue() const { return mValue; }
 
-		/**
-		 * @brief	Sets a new value in the input field.
-		 */
+		/**	Sets a new value in the input field. */
 		void setValue(float value);
 
 		/**
-		 * @brief	Sets a minimum and maximum allow values in the input field.
-		 *			Set to large negative/positive values if you don't require clamping.
+		 * Sets a minimum and maximum allow values in the input field. Set to large negative/positive values if you don't
+		 * require clamping.
 		 */
 		void setRange(float min, float max);
 
-		/**
-		 * @brief	Checks is the input field currently active.
-		 */
+		/**	Checks is the input field currently active. */
 		bool hasInputFocus() const { return mHasInputFocus; }
 
-		/**
-		 * @copydoc	GUIElement::setTint
-		 */
+		/** @copydoc	GUIElement::setTint */
 		void setTint(const Color& color) override;
 
+		Event<void(float)> onValueChanged; /**< Triggers when the field value changes. */
+		Event<void()> onConfirm; /**< Triggered when the user hits the Enter key with the input box in focus. */
+
+		/** @cond INTERNAL */
+
 		/**
-		 * @brief	Sets a new value in the input field, and also allows you to choose should the field trigger an
-		 *			onValueChanged event.
+		 * Sets a new value in the input field, and also allows you to choose should the field trigger an onValueChanged
+		 * event.
 		 */
 		void _setValue(float value, bool triggerEvent);
 
-		Event<void(float)> onValueChanged; /**< Triggers when the field value changes. */
-		Event<void()> onConfirm; /**< Triggered when the user hits the Enter key with the input box in focus. */
+		/** @endcond */
 	protected:
 		virtual ~GUIFloatField();
 
-		/**
-		 * @copydoc	GUIElementContainer::_hasCustomCursor
-		 */
+		/** @copydoc GUIElementContainer::_hasCustomCursor */
 		bool _hasCustomCursor(const Vector2I position, CursorType& type) const override;
 
-		/**
-		 * @copydoc	GUIElementContainer::_mouseEvent
-		 */
+		/** @copydoc GUIElementContainer::_mouseEvent */
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 
-		/**
-		 * @copydoc	GUIElementContainer::styleUpdated
-		 */
+		/** @copydoc GUIElementContainer::styleUpdated */
 		void styleUpdated() override;
 
-		/**
-		 * @brief	Triggered when the input box value changes.
-		 */
+		/**	Triggered when the input box value changes. */
 		void valueChanged(const WString& newValue);
 
 		/**
-		 * @brief	Triggered when the input box value changes, but unlike the previous
-		 *			overload the value is parsed into a floating point value.
+		 * Triggered when the input box value changes, but unlike the previous overload the value is parsed into a floating
+		 * point value.
 		 */
 		void valueChanged(float newValue);
 
-		/**
-		 * @brief	Triggers when the input box receives or loses keyboard focus.
-		 */
+		/**	Triggers when the input box receives or loses keyboard focus. */
 		void focusChanged(bool focus);
 
-		/**
-		 * @brief	Triggered when the users confirms input in the input box.
-		 */
+		/**	Triggered when the users confirms input in the input box. */
 		void inputConfirmed();
 
-		/**
-		 * @brief	Callback that checks can the provided string be
-		 *			converted to a floating point value.
-		 */
+		/** Callback that checks can the provided string be converted to a floating point value. */
 		static bool floatFilter(const WString& str);
 
 		static const float DRAG_SPEED;
@@ -117,4 +97,6 @@ namespace BansheeEngine
 		bool mIsDragging;
 		bool mHasInputFocus;
 	};
+
+	/** @} */
 }

+ 13 - 24
BansheeEditor/Include/BsGUIHoverHitBox.h

@@ -7,49 +7,38 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * Helper class used for detecting when mousing over a certain
-	 * and getting notified when that state changes. 
+	/** @addtogroup GUI-Editor
+	 *  @{
 	 */
+
+	/** Helper class used for detecting when mousing over a certain and getting notified when that state changes. */
 	class BS_ED_EXPORT GUIHoverHitBox : public GUIElementContainer
 	{
 	public:
-		/**
-		 * Returns type name of the GUI element used for finding GUI element styles. 
-		 */
+		/** Returns type name of the GUI element used for finding GUI element styles. */
 		static const String& getGUITypeName();
 
-		/**
-		 * Creates a new hover hit box that will detect mouse hover/out events over certain area.
-		 */
+		/** Creates a new hover hit box that will detect mouse hover/out events over certain area. */
 		static GUIHoverHitBox* create();
 
-		/**
-		 * Creates a new hover hit box that will detect mouse hover/out events over certain area.
-		 */
+		/** Creates a new hover hit box that will detect mouse hover/out events over certain area. */
 		static GUIHoverHitBox* create(const GUIOptions& options);
 
-		/**
-		 * @brief	Triggered when pointer hovers over the hit box.
-		 */
+		/**	Triggered when pointer hovers over the hit box. */
 		Event<void()> onHover;
 
-		/**
-		 * @brief	Triggered when pointer that was previously hovering leaves the hit box.
-		 */
+		/**	Triggered when pointer that was previously hovering leaves the hit box. */
 		Event<void()> onOut;
 
 	private:
 		GUIHoverHitBox(const GUIDimensions& dimensions);
 
-		/**
-		 * @copydoc	GUIElementContainer::updateClippedBounds
-		 */
+		/** @copydoc GUIElementContainer::updateClippedBounds */
 		void updateClippedBounds() override;
 
-		/**
-		 * @copydoc	GUIElementContainer::_mouseEvent
-		 */
+		/** @copydoc GUIElementContainer::_mouseEvent */
 		virtual bool _mouseEvent(const GUIMouseEvent& ev) override;
 	};
+
+	/** @} */
 }

+ 33 - 51
BansheeEditor/Include/BsGUIIntField.h

@@ -7,104 +7,84 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup GUI-Editor
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A composite GUI object representing an editor field. Editor fields are a combination
-	 *			of a label and an input field. Label is optional. This specific implementation
-	 *			displays a integer input field.
+	 * A composite GUI object representing an editor field. Editor fields are a combination of a label and an input field.
+	 * Label is optional. This specific implementation displays a integer input field.
 	 */
 	class BS_ED_EXPORT GUIIntField : public TGUIField<GUIIntField>
 	{
 	public:
-		/**
-		 * Returns type name of the GUI element used for finding GUI element styles. 
-		 */
+		/** Returns type name of the GUI element used for finding GUI element styles. */
 		static const String& getGUITypeName();
 
-		/**
-		 * Style type name for the internal input box.
-		 */
+		/** Style type name for the internal input box. */
 		static const String& getInputStyleType();
 
 		GUIIntField(const PrivatelyConstruct& dummy, const GUIContent& labelContent, UINT32 labelWidth,
 			const String& style, const GUIDimensions& dimensions, bool withLabel);
 
-		/**
-		 * @brief	Returns the value of the input field.
-		 */
+		/**	Returns the value of the input field. */
 		INT32 getValue() const { return mValue; }
 
-		/**
-		 * @brief	Sets a new value in the input field.
-		 */
+		/**	Sets a new value in the input field. */
 		void setValue(INT32 value);
 
 		/**
-		 * @brief	Sets a minimum and maximum allow values in the input field.
-		 *			Set to large negative/positive values if you don't require clamping.
+		 * Sets a minimum and maximum allow values in the input field. Set to large negative/positive values if you don't
+		 * require clamping.
 		 */
 		void setRange(INT32 min, INT32 max);
 
-		/**
-		 * @brief	Checks is the input field currently active.
-		 */
+		/**	Checks is the input field currently active. */
 		bool hasInputFocus() const { return mHasInputFocus; }
 
-		/**
-		 * @copydoc	GUIElement::setTint
-		 */
+		/** @copydoc GUIElement::setTint */
 		void setTint(const Color& color) override;
 
+		Event<void(INT32)> onValueChanged; /**< Triggers when the internal value changes. */
+		Event<void()> onConfirm; /**< Triggered when the user hits the Enter key with the input box in focus. */
+
+		/** @cond INTERNAL */
+
 		/**
-		 * @brief	Sets a new value in the input field, and also allows you to choose should the field trigger an
-		 *			onValueChanged event.
+		 * Sets a new value in the input field, and also allows you to choose should the field trigger an onValueChanged 
+		 * event.
 		 */
 		void _setValue(INT32 value, bool triggerEvent);
 
-		Event<void(INT32)> onValueChanged; /**< Triggers when the internal value changes. */
-		Event<void()> onConfirm; /**< Triggered when the user hits the Enter key with the input box in focus. */
+		/** @endcond */
 	protected:
 		virtual ~GUIIntField();
 
-		/**
-		 * @copydoc	GUIElement::_hasCustomCursor
-		 */
+		/** @copydoc GUIElement::_hasCustomCursor */
 		bool _hasCustomCursor(const Vector2I position, CursorType& type) const override;
 
-		/**
-		 * @copydoc	GUIElement::_mouseEvent
-		 */
+		/** @copydoc GUIElement::_mouseEvent */
 		bool _mouseEvent(const GUIMouseEvent& ev)  override;
 
-		/**
-		 * @copydoc	GUIElement::styleUpdated
-		 */
+		/** @copydoc GUIElement::styleUpdated */
 		void styleUpdated() override;
 
-		/**
-		 * @brief	Triggered when the input box value changes.
-		 */
+		/**	Triggered when the input box value changes. */
 		void valueChanged(const WString& newValue);
 
 		/**
-		 * @brief	Triggered when the input box value changes, but unlike the previous
-		 *			overload the value is parsed into an integer value.
+		 * Triggered when the input box value changes, but unlike the previous overload the value is parsed into an integer
+		 * value.
 		 */
 		void valueChanged(INT32 newValue);
 
-		/**
-		 * @brief	Triggers when the input box receives or loses keyboard focus.
-		 */
+		/**	Triggers when the input box receives or loses keyboard focus. */
 		void focusChanged(bool focus);
 
-		/**
-		 * @brief	Triggered when the users confirms input in the input box.
-		 */
+		/**	Triggered when the users confirms input in the input box. */
 		void inputConfirmed();
 
-		/**
-		 * @brief	Callback that checks can the provided string be
-		 *			converted to an integer value.
-		 */
+		/**	Callback that checks can the provided string be converted to an integer value. */
 		static bool intFilter(const WString& str);
 
 		static const INT32 DRAG_SPEED;
@@ -118,4 +98,6 @@ namespace BansheeEngine
 		bool mIsDragCursorSet;
 		bool mHasInputFocus;
 	};
+
+	/** @} */
 }

+ 97 - 127
BansheeEditor/Include/BsGUIListBoxField.h

@@ -7,169 +7,156 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup GUI-Editor
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A composite GUI object representing an editor field. Editor fields are a combination
-	 *			of a label and an input field. Label is optional. This specific implementation
-	 *			displays a list box field.
+	 * A composite GUI object representing an editor field. Editor fields are a combination of a label and an input field.
+	 * Label is optional. This specific implementation displays a list box field.
 	 */
 	class BS_ED_EXPORT GUIListBoxField : public GUIElementContainer
 	{
 		struct PrivatelyConstruct {};
 
 	public:
-		/**
-		 * Returns type name of the GUI element used for finding GUI element styles. 
-		 */
+		/** Returns type name of the GUI element used for finding GUI element styles. */
 		static const String& getGUITypeName();
 
-		/**
-		 * Returns style type name of the internal GUILabel element.
-		 */
+		/** Returns style type name of the internal GUILabel element. */
 		static const String& getLabelStyleType();
 
-		/**
-		 * Style type name for the internal list box.
-		 */
+		/** Style type name for the internal list box. */
 		static const String& getListBoxStyleType();
 
 		/**
-		 * @brief	Creates a new GUI list box field with a label.
+		 * Creates a new GUI list box field with a label.
 		 *
-		 * @param	elements		Elements to display in the list box.
-		 * @param	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param	labelContent	Content to display in the editor field label.
-		 * @param	labelWidth		Width of the label in pixels.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent, 
 			UINT32 labelWidth, const GUIOptions& options, const String& style = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI list box field with a label.
+		 * Creates a new GUI list box field with a label.
 		 *
-		 * @param	elements		Elements to display in the list box.
-		 * @param	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param	labelContent	Content to display in the editor field label.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent,
 			const GUIOptions& options, const String& style = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI list box field with a label.
+		 * Creates a new GUI list box field with a label.
 		 *
-		 * @param	elements		Elements to display in the list box.
-		 * @param	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param	labelText		String to display in the editor field label.
-		 * @param	labelWidth		Width of the label in pixels.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText, 
 			UINT32 labelWidth, const GUIOptions& options, const String& style = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI list box field with a label.
+		 * Creates a new GUI list box field with a label.
 		 *
-		 * @param	elements		Elements to display in the list box.
-		 * @param	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param	labelText		String to display in the editor field label.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText, 
 			const GUIOptions& options, const String& style = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI list box field without a label.
+		 * Creates a new GUI list box field without a label.
 		 *
-		 * @param	elements		Elements to display in the list box.
-		 * @param	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param	options			Options that allow you to control how is the element positioned and sized.
-		 *							This will override any similar options set by style.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	options			Options that allow you to control how is the element positioned and sized.
+		 *								This will override any similar options set by style.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIOptions& options,
 			const String& style = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI list box field with a label.
+		 * Creates a new GUI list box field with a label.
 		 *
-		 * @param	elements		Elements to display in the list box.
-		 * @param	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param	labelContent	Content to display in the editor field label.
-		 * @param	labelWidth		Width of the label in pixels.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent,
 			UINT32 labelWidth, const String& style = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI list box field with a label.
+		 * Creates a new GUI list box field with a label.
 		 *
-		 * @param	elements		Elements to display in the list box.
-		 * @param	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param	labelContent	Content to display in the editor field label.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelContent	Content to display in the editor field label.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const GUIContent& labelContent,
 			const String& style = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI list box field with a label.
+		 * Creates a new GUI list box field with a label.
 		 *
-		 * @param	elements		Elements to display in the list box.
-		 * @param	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param	labelText		String to display in the editor field label.
-		 * @param	labelWidth		Width of the label in pixels.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	labelWidth		Width of the label in pixels.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText, 
 			UINT32 labelWidth, const String& style = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI list box field with a label.
+		 * Creates a new GUI list box field with a label.
 		 *
-		 * @param	elements		Elements to display in the list box.
-		 * @param	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param	labelText		String to display in the editor field label.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	labelText		String to display in the editor field label.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, const HString& labelText,
 			const String& style = StringUtil::BLANK);
 
 		/**
-		 * @brief	Creates a new GUI list box field without a label.
+		 * Creates a new GUI list box field without a label.
 		 *
-		 * @param	elements		Elements to display in the list box.
-		 * @param	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
-		 * @param	styleName		Optional style to use for the element. Style will be retrieved
-		 *							from GUISkin of the GUIWidget the element is used on. If not specified
-		 *							default style is used.
+		 * @param[in]	elements		Elements to display in the list box.
+		 * @param[in]	multiselect		Determines should the listbox allow multiple elements to be selected or just one.
+		 * @param[in]	styleName		Optional style to use for the element. Style will be retrieved from GUISkin of the
+		 *								GUIWidget the element is used on. If not specified default style is used.
 		 */
 		static GUIListBoxField* create(const Vector<HString>& elements, bool multiselect, 
 			const String& style = StringUtil::BLANK);
@@ -177,70 +164,53 @@ namespace BansheeEngine
 		GUIListBoxField(const PrivatelyConstruct& dummy, const Vector<HString>& elements, bool multiselect, 
 			const GUIContent& labelContent, UINT32 labelWidth, const String& style, const GUIDimensions& dimensions, bool withLabel);
 
-		/**
-		 * @brief	Checks whether the listbox supports multiple selected elements at once.
-		 */
+		/**	Checks whether the listbox supports multiple selected elements at once. */
 		bool isMultiselect() const;
 
-		/**
-		 * @brief	Changes the list box elements.
-		 */
+		/**	Changes the list box elements. */
 		void setElements(const Vector<HString>& elements);
 
-		/**
-		 * @brief	Selects an element with the specified index.
-		 */
+		/**	Selects an element with the specified index. */
 		void selectElement(UINT32 value);
 
-		/**
-		 * @brief	Deselect element the element with the specified index. Only relevant for multi-select list boxes.
-		 */
+		/**	Deselect element the element with the specified index. Only relevant for multi-select list boxes. */
 		void deselectElement(UINT32 idx);
 
-		/**
-		 * @brief	Returns states of all element in the list box (enabled or disabled).
-		 */
+		/**	Returns states of all element in the list box (enabled or disabled). */
 		const Vector<bool>& getElementStates() const;
 
 		/**
-		 * @brief	Sets states for all list box elements. Only valid for multi-select list boxes. Number of states
-		 * 			must match number of list box elements.
+		 * Sets states for all list box elements. Only valid for multi-select list boxes. Number of states must match number
+		 * of list box elements.
 		 */
 		void setElementStates(const Vector<bool>& states);
 
-		/**
-		 * @copydoc	GUIElement::setTint
-		 */
+		/** @copydoc GUIElement::setTint */
 		virtual void setTint(const Color& color) override;
 
-		Event<void(UINT32, bool)> onSelectionChanged; /**< Triggers when a new element is selected. Provides index to the element. */
+		/** Triggers when a new element is selected. Provides index to the element. */
+		Event<void(UINT32, bool)> onSelectionChanged; 
 	protected:
 		static const UINT32 DEFAULT_LABEL_WIDTH;
 
 		virtual ~GUIListBoxField();
 
-		/**
-		 * @copydoc	GUIElement::_updateLayoutInternal
-		 */
+		/** @copydoc GUIElement::_updateLayoutInternal */
 		void _updateLayoutInternal(const GUILayoutData& data) override;
 
-		/**
-		 * @copydoc	GUIElement::_getOptimalSize
-		 */
+		/** @copydoc GUIElement::_getOptimalSize */
 		Vector2I _getOptimalSize() const override;
 
-		/**
-		 * @copydoc	GUIElement::styleUpdated
-		 */
+		/** @copydoc GUIElement::styleUpdated */
 		void styleUpdated() override;
 
-		/**
-		 * @brief	Triggered when the selected list box element changes.
-		 */
+		/**	Triggered when the selected list box element changes. */
 		void selectionChanged(UINT32 newIndex, bool enabled);
 
 		GUIListBox* mListBox;
 		GUILayout* mLayout;
 		GUILabel* mLabel;
 	};
+
+	/** @} */
 }

+ 79 - 118
BansheeEditor/Include/BsGUIMenuBar.h

@@ -7,19 +7,22 @@
 
 namespace BansheeEngine
 {
+	/** @cond INTERNAL */
+	/** @addtogroup GUI-Editor
+	 *  @{
+	 */
+
 	/**
-	 * @brief	A menu bar GUI element that contains a horizontal list of elements that can each be expanded into a 
-	 * 			hierarchical sub-menus, as well as a list of tool bar buttons.
+	 * A menu bar GUI element that contains a horizontal list of elements that can each be expanded into a hierarchical 
+	 * sub-menus, as well as a list of tool bar buttons.
 	 * 			
-	 *			Contents of the menu and tool bar are customizable.
+	 * Contents of the menu and tool bar are customizable.
 	 *
-	 *			The menu bar also displays the minimize, maximize and close buttons for the window.
+	 * The menu bar also displays the minimize, maximize and close buttons for the window.
 	 */
 	class BS_ED_EXPORT GUIMenuBar
 	{
-		/**
-		 * @brief	Contains data about the top level menu elements.
-		 */
+		/**	Contains data about the top level menu elements. */
 		struct GUIMenuBarData
 		{
 			WString name;
@@ -29,9 +32,7 @@ namespace BansheeEngine
 			INT32 priority;
 		};
 
-		/**
-		 * @brief	Contains data about a single tool bar element.
-		 */
+		/**	Contains data about a single tool bar element. */
 		struct GUIToolBarData
 		{
 			String name;
@@ -42,202 +43,159 @@ namespace BansheeEngine
 		};
 
 	public:
-		/**
-		 * @brief	Returns the style type for the menu bar background.
-		 */
+		/**	Returns the style type for the menu bar background. */
 		static const String& getBackgroundStyleType();
 
-		/**
-		 * @brief	Returns the style type for the menu bar line draw under the menu items.
-		 */
+		/**	Returns the style type for the menu bar line draw under the menu items. */
 		static const String& getLineStyleType();
 
-		/**
-		 * @brief	Returns the style type for the menu bar logo.
-		 */
+		/**	Returns the style type for the menu bar logo. */
 		static const String& getLogoStyleType();
 
-		/**
-		 * @brief	Returns the style type for the menu bar menu item buttons.
-		 */
+		/**	Returns the style type for the menu bar menu item buttons. */
 		static const String& getMenuItemButtonStyleType();
 
-		/**
-		 * @brief	Returns the style type for tool bar buttons.
-		 */
+		/**	Returns the style type for tool bar buttons. */
 		static const String& getToolBarButtonStyleType();
 
-		/**
-		 * @brief	Returns the style type for the tool bar button separator.
-		 */
+		/**	Returns the style type for the tool bar button separator. */
 		static const String& getToolBarSeparatorStyleType();
 
 		/**
-		 * @brief	Constructs a new menu bar.
+		 * Constructs a new menu bar.
 		 *
-		 * @param	parent			Parent GUI widget the menu bar will be docked in.
-		 * @param	parentWindow	Window to trigger the min/max/close events on.
+		 * @param[in]	parent			Parent GUI widget the menu bar will be docked in.
+		 * @param[in]	parentWindow	Window to trigger the min/max/close events on.
 		 */
 		GUIMenuBar(GUIWidget* parent, RenderWindow* parentWindow);
 		virtual ~GUIMenuBar();
 
-		/**
-		 * @brief	Sets the area of the menu bar, in pixels relative
-		 *			to the parent GUI widget.
-		 */
+		/**	Sets the area of the menu bar, in pixels relative to the parent GUI widget. */
 		void setArea(INT32 x, INT32 y, UINT32 width, UINT32 height);
 
 		/**
-		 * @brief	Adds a new menu item to the menu bar. 
+		 * Adds a new menu item to the menu bar. 
 		 *
-		 * @param	path		Path to the menu item. Each element of the path must be separated using "/". 
-		 *						First element of the path will create the top level menu, and any further element
-		 *						will create a new sub-menu. Last element will be the interactable element.
-		 * @param	callback	Callback to trigger when user click on the interactable element (last element in the provided path).
-		 *						Can be null.
-		 * @param	priority	Determines where is the element positioned compared to other elements in the same sub-menu.
-		 *						Higher priority elements get placed higher up in the sub-menu. This only applies to the last
-		 *						element. If you need to customize its parent element priority call this method with
-		 *						with their specific paths.
-		 * @param	shortcut	Keyboard shortcut key to display next to the interactable element, and register with the
-		 *						global shortcut manager.
-		 */
-		GUIMenuItem* addMenuItem(const WString& path, std::function<void()> callback, INT32 priority = 0, const ShortcutKey& shortcut = ShortcutKey::NONE);
-
-		/**
-		 * @brief	Adds a menu item separator element at the specified path. The separator is added as a child of the path.
+		 * @param[in]	path		Path to the menu item. Each element of the path must be separated using "/". 
+		 *							First element of the path will create the top level menu, and any further element
+		 *							will create a new sub-menu. Last element will be the interactable element.
+		 * @param[in]	callback	Callback to trigger when user click on the interactable element (last element in the 
+		 *							provided path). Can be null.
+		 * @param[in]	priority	Determines where is the element positioned compared to other elements in the same 
+		 *							sub-menu. Higher priority elements get placed higher up in the sub-menu. This only
+		 *							applies to the last element. If you need to customize its parent element priority call
+		 *							this method with with their specific paths.
+		 * @param[in]	shortcut	Keyboard shortcut key to display next to the interactable element, and register with the
+		 *							global shortcut manager.
+		 */
+		GUIMenuItem* addMenuItem(const WString& path, std::function<void()> callback, INT32 priority = 0, 
+			const ShortcutKey& shortcut = ShortcutKey::NONE);
+
+		/**
+		 * Adds a menu item separator element at the specified path. The separator is added as a child of the path.
 		 *
-		 * @param	path		Parent path of the sub-menu to add the separator.
-		 * @param	priority	Determines where is the separator positioned compared to other elements in the same sub-menu.
-		 *						Higher priority elements get placed higher up in the sub-menu.
+		 * @param[in]	path		Parent path of the sub-menu to add the separator.
+		 * @param[in]	priority	Determines where is the separator positioned compared to other elements in the same 
+		 *							sub-menu. Higher priority elements get placed higher up in the sub-menu.
 		 */
 		GUIMenuItem* addMenuItemSeparator(const WString& path, INT32 priority = 0);
 
-		/**
-		 * @brief	Returns an existing menu item at the specified path, or null if one cannot be found.
-		 */
+		/**	Returns an existing menu item at the specified path, or null if one cannot be found. */
 		GUIMenuItem* getMenuItem(const WString& path);
 
 		/**
-		 * @brief	Removes a menu item from the specified path. If this path points to a sub-menu entire sub-menu will be removed.
+		 * Removes a menu item from the specified path. If this path points to a sub-menu entire sub-menu will be removed.
 		 */
 		void removeMenuItem(const WString& path);
 
-		/**
-		 * @brief	Removes the specified menu item.
-		 */
+		/**	Removes the specified menu item. */
 		void removeMenuItem(GUIMenuItem* item);
 
 		/**
-		 * @brief	Adds a new button to the tool bar.
+		 * Adds a new button to the tool bar.
 		 *
-		 * @param	name		Unique name of the button that can be used for identifiying it.
-		 * @param	content 	Content to display on the button.
-		 * @param	callback	Callback to trigger when the button is pressed.
-		 * @param	priority	Determines where is the button positioned compared to other elements on the tool bar.
-		 * 						Higher priority elements get placed before lower priority ones.
+		 * @param[in]	name		Unique name of the button that can be used for identifiying it.
+		 * @param[in]	content 	Content to display on the button.
+		 * @param[in]	callback	Callback to trigger when the button is pressed.
+		 * @param[in]	priority	Determines where is the button positioned compared to other elements on the tool bar.
+		 * 							Higher priority elements get placed before lower priority ones.
 		 */
 		void addToolBarButton(const String& name, const GUIContent& content, std::function<void()> callback, INT32 priority = 0);
 
 		/**
-		 * @brief	Toggles an existing toolbar button into an on or off state which changes the visuals of the button.
+		 * Toggles an existing toolbar button into an on or off state which changes the visuals of the button.
 		 *
-		 * @param	name	Name of the existing button to toggle.
-		 * @param	on		True to toggle on, false to toggle off (default).
+		 * @param[in]	name	Name of the existing button to toggle.
+		 * @param[in]	on		True to toggle on, false to toggle off (default).
 		 */
 		void toggleToolbarButton(const String& name, bool on);
 
 		/**
-		 * @brief	Adds a new separator element to the tool bar.
+		 * Adds a new separator element to the tool bar.
 		 *
-		 * @param	name		Unique name of the separator that can be used for identifiying it.
-		 * @param	priority	Determines where is the separator positioned compared to other elements on the tool bar.
-		 * 						Higher priority elements get placed before lower priority ones.
+		 * @param[in]	name		Unique name of the separator that can be used for identifiying it.
+		 * @param[in]	priority	Determines where is the separator positioned compared to other elements on the tool bar.
+		 * 							Higher priority elements get placed before lower priority ones.
 		 */
 		void addToolBarSeparator(const String& name, INT32 priority = 0);
 
 		/**
-		 * @brief	Removes an element from the tool bar.
+		 * Removes an element from the tool bar.
 		 *
-		 * @param	name	Unique name of the element to remove.
+		 * @param[in]	name	Unique name of the element to remove.
 		 */
 		void removeToolBarButton(const String& name);
 	private:
-		/**
-		 * @brief	Finds a top level sub-menu with the specified name.
-		 */
+		/**	Finds a top level sub-menu with the specified name. */
 		const GUIMenuBarData* getSubMenu(const WString& name) const;
 
-		/**
-		 * @brief	Adds a new top level sub-menu button.
-		 */
+		/**	Adds a new top level sub-menu button. */
 		GUIMenuBarData* addNewButton(const WString& name, INT32 priority);
 
 		/**
-		 * @brief	Attempts to remove the first element from the specified path. First element
-		 * 			returned in specified in "pathRoot", and original "path" parameter is modified so
-		 * 			it no longer includes the first element.
+		 * Attempts to remove the first element from the specified path. First element returned in specified in @p pathRoot,
+		 * and original @p path is modified so it no longer includes the first element.
 		 *
 		 * @return	False if first element doesn't exist, true otherwise.
 		 */
 		bool stripPath(WString& path, WString& pathRoot) const;
 
 		/**
-		 * @brief	Registers a shortcut with the global shortcut manager. Pressing the shortcut will trigger
-		 *			the provided callback.
+		 * Registers a shortcut with the global shortcut manager. Pressing the shortcut will trigger the provided callback.
 		 */
 		void registerShortcut(const WString& path, const ShortcutKey& shortcut, std::function<void()> callback);
 
-		/**
-		 * @brief	Unregisters a shortcut assigned to the provided path from the global shortcut manager.
-		 */
+		/**	Unregisters a shortcut assigned to the provided path from the global shortcut manager. */
 		void unregisterShortcut(const WString& path);
 
-		/**
-		 * @brief	Opens a top level sub-menu with the provided name.
-		 */
+		/**	Opens a top level sub-menu with the provided name. */
 		void openSubMenu(const WString& name);
 
-		/**
-		 * @brief	Closes any currently active sub-menu.
-		 */
+		/**	Closes any currently active sub-menu. */
 		void closeSubMenu();
 
 		/**
-		 * @brief	Triggered when a sub-menu is open and a user hovers over another
-		 *			top level sub-menu button
+		 * Triggered when a sub-menu is open and a user hovers over another top level sub-menu button.
 		 *
-		 * @param	name	Name of the sub-menu the user is hovering over.
+		 * @param[in]	name	Name of the sub-menu the user is hovering over.
 		 */
 		void onSubMenuHover(const WString& name);
 
-		/**
-		 * @brief	Triggered when a sub-menu is closed.
-		 */
+		/**	Triggered when a sub-menu is closed. */
 		void onSubMenuClosed();
 
-		/**
-		 * @brief	Triggered when the minimize button is clicked.
-		 *			Minimizes the attached window.
-		 */
+		/**	Triggered when the minimize button is clicked. Minimizes the attached window. */
 		void onMinimizeClicked();
 
-		/**
-		 * @brief	Triggered when the maximize button is clicked.
-		 *			Maximizes the attached window.
-		 */
+		/**	Triggered when the maximize button is clicked. Maximizes the attached window. */
 		void onMaximizeClicked();
 
-		/**
-		 * @brief	Triggered when the close button is clicked.
-		 *			Closes the attached window.
-		 */
+		/**	Triggered when the close button is clicked. Closes the attached window. */
 		void onCloseClicked();
 
 		/**
-		 * @brief	Refreshes the OS client area that allow the window to be dragged
-		 *			by dragging the empty areas on the menu bar. Should be called when top
-		 *			level button configuration changes or menu bar area changes.
+		 * Refreshes the OS client area that allow the window to be dragged by dragging the empty areas on the menu bar.
+		 * Should be called when top level button configuration changes or menu bar area changes.
 		 */
 		void refreshNonClientAreas();
 
@@ -265,4 +223,7 @@ namespace BansheeEngine
 		GUIButton* mSubMenuButton;
 		bool mSubMenuOpen;
 	};
+
+	/** @} */
+	/** @endcond */
 }

+ 23 - 37
BansheeEditor/Include/BsMainEditorWindow.h

@@ -7,49 +7,36 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Primary editor window, containing the menu bar, status bar
-	 *			and the dock area.
+	/** @addtogroup EditorWindow
+	 *  @{
 	 */
+
+	/**	Primary editor window, containing the menu bar, status bar and the dock area. */
 	class BS_ED_EXPORT MainEditorWindow : public EditorWindowBase
 	{
 	public:
 		~MainEditorWindow();
 
-		/**
-		 * @copydoc	EditorWindowBase::update
-		 */
+		/** @copydoc EditorWindowBase::update */
 		void update() override;
 
-		/**
-		 * @copydoc	EditorWindowBase::isMain
-		 */
+		/** @copydoc EditorWindowBase::isMain */
 		virtual bool isMain() const override { return true; }
 
-		/**
-		 * @brief	Gets the DockManager that is responsible for docking and placement
-		 *			of EditorWidget%s on the main window.
-		 */
+		/**	Gets the DockManager that is responsible for docking and placement of EditorWidget%s on the main window. */
 		DockManager& getDockManager() const { return *mDockManager; }
 
-		/**
-		 * @brief	Gets the primary menu bar element.
-		 */
+		/**	Gets the primary menu bar element. */
 		GUIMenuBar& getMenuBar() const { return *mMenuBar; }
 
-		/**
-		 * @brief	Gets status bar GUI element.
-		 */
+		/**	Gets status bar GUI element. */
 		GUIStatusBar& getStatusBar() const { return *mStatusBar; }
 
 		/**
-		 * @brief	Creates a new main editor window. If one is already open this method
-		 *			will return the existing one.
+		 * Creates a new main editor window. If one is already open this method will return the existing one.
 		 *
-		 * @param	renderWindow	Previously created render window to initialize the main
-		 *							editor window in.
-		 *
-		 * @return	Instance of the main editor window.
+		 * @param[in]	renderWindow	Previously created render window to initialize the main editor window in.
+		 * @return						Instance of the main editor window.
 		 */
 		static MainEditorWindow* create(const RenderWindowPtr& renderWindow);
 	protected:
@@ -57,6 +44,15 @@ namespace BansheeEngine
 		MainEditorWindow(const RenderWindowPtr& renderWindow);
 
 	protected:
+		/** @copydoc EditorWindowBase::resized */
+		virtual void resized() override;
+
+		/**
+		 * Updates the placement of child GUI elements and their non-client areas (used for OS move/resize operations). 
+		 * Should be called after window size changes.
+		 */
+		void updateAreas();
+
 		static const UINT32 MENU_BAR_HEIGHT;
 		static const UINT32 STATUS_BAR_HEIGHT;
 
@@ -64,17 +60,7 @@ namespace BansheeEngine
 		DockManager* mDockManager;
 		GUIStatusBar* mStatusBar;
 		HProfilerOverlay mProfilerOverlay;
-
-		/**
-		 * @copydoc	EditorWindowBase::resized
-		 */
-		virtual void resized() override;
-
-		/**
-		 * @brief	Updates the placement of child GUI elements and their non-client
-		 *			areas (used for OS move/resize operations). Should be called after
-		 *			window size changes.
-		 */
-		void updateAreas();
 	};
+
+	/** @} */
 }

+ 20 - 30
BansheeEditor/Include/BsModalWindow.h

@@ -7,40 +7,33 @@
 
 namespace BansheeEngine
 {
+	/** @addtogroup EditorWindow
+	 *  @{
+	 */
+
 	/**
-	 * @brief	Base implementation of a window that when open doesn't allow you
-	 *			to interact with other windows. Modal windows are similar to editor
-	 *			windows but cannot be docked, and are meant to be used for temporary
-	 *			operations like dialog boxes and progress bars.
+	 * Base implementation of a window that when open doesn't allow you to interact with other windows. Modal windows are
+	 * similar to editor windows but cannot be docked, and are meant to be used for temporary operations like dialog boxes
+	 * and progress bars.
 	 */
 	class BS_ED_EXPORT ModalWindow : public EditorWindowBase
 	{
 	public:
 		virtual ~ModalWindow();
 
-		/**
-		 * @copydoc	EditorWindowBase::update
-		 */
+		/** @copydoc EditorWindowBase::update */
 		virtual void update() override;
 
-		/**
-		 * @copydoc	EditorWindowBase::close
-		 */
+		/** @copydoc EditorWindowBase::close */
 		virtual void close() override;
 
-		/**
-		 * @brief	Changes the text in the modal window title bar.
-		 */
+		/**	Changes the text in the modal window title bar. */
 		void setTitle(const HString& title);
 
-		/**
-		 * Converts screen pointer coordinates into coordinates relative to the window content's GUI panel.
-		 */
+		/** Converts screen pointer coordinates into coordinates relative to the window content's GUI panel. */
 		Vector2I screenToWindowPos(const Vector2I& screenPos) const;
 
-		/**
-		 * Converts pointer coordinates relative to the window content's GUI panel into screen coordinates.
-		 */
+		/** Converts pointer coordinates relative to the window content's GUI panel into screen coordinates. */
 		Vector2I windowToScreenPos(const Vector2I& windowPos) const;
 
 	protected:
@@ -49,27 +42,22 @@ namespace BansheeEngine
 		ModalWindow(const HString& title, bool hasCloseButton = false);
 
 		/**
-		 * @brief	Returns the area in which the GUI contents are displayed (i.e. not including
-		 *			title bar and other default elements). Area is relative to window.
+		 * Returns the area in which the GUI contents are displayed (i.e. not including title bar and other default 
+		 * elements). Area is relative to window.
 		 */
 		Rect2I getContentArea() const;
 
-		/**
-		 * @copydoc	EditorWindowBase::resized
-		 */
+		/** @copydoc EditorWindowBase::resized */
 		virtual void resized() override;
 
 	private:
 		/**
-		 * @brief	Updates the placement of child GUI elements and their non-client
-		 *			areas (used for OS move/resize operations). Should be called after
-		 *			window size changes.
+		 * Updates the placement of child GUI elements and their non-client areas (used for OS move/resize operations). 
+		 * Should be called after window size changes.
 		 */
 		void updateSize();
 
-		/**
-		 * @brief	Returns the height in pixels taken up by the title bar.
-		 */
+		/**	Returns the height in pixels taken up by the title bar. */
 		UINT32 getTitleBarHeight() const;
 
 		GUIPanel* mTitleBarPanel;
@@ -82,4 +70,6 @@ namespace BansheeEngine
 	protected:
 		GUIPanel* mContents;
 	};
+
+	/** @} */
 }

+ 8 - 9
BansheeEditor/Include/BsPlatformInfo.h

@@ -8,18 +8,18 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Available platforms we can build for
+	/** @addtogroup Build
+	 *  @{
 	 */
+
+	/**	Available platforms we can build for */
 	enum class PlatformType
 	{
 		Windows,
 		Count // Keep at end
 	};
 
-	/**
-	 * @brief	Contains per-platform information used primarily for build purposes.
-	 */
+	/**	Contains per-platform information used primarily for build purposes. */
 	struct BS_ED_EXPORT PlatformInfo : public IReflectable
 	{
 		PlatformInfo();
@@ -42,10 +42,7 @@ namespace BansheeEngine
 		virtual RTTITypeBase* getRTTI() const override;
 	};
 
-	/**
-	 * @brief	Contains Windows specific per-platform information used
-	 *			primarily for build purposes.
-	 */
+	/** Contains Windows specific per-platform information used primarily for build purposes. */
 	struct BS_ED_EXPORT WinPlatformInfo : public PlatformInfo
 	{
 		WinPlatformInfo();
@@ -61,4 +58,6 @@ namespace BansheeEngine
 		static RTTITypeBase* getRTTIStatic();
 		virtual RTTITypeBase* getRTTI() const override;
 	};
+
+	/** @} */
 }

+ 16 - 28
BansheeEditor/Include/Win32/BsVSCodeEditor.h

@@ -7,10 +7,12 @@
 
 namespace BansheeEngine
 {
-	/**
-	 * @brief	Recognized types of Microsoft Visual Studio versions
-	 *			recognized by VSCodeEditor.
+	/** @cond INTERNAL */
+	/** @addtogroup CodeEditor
+	 *  @{
 	 */
+
+	/** Recognized types of Microsoft Visual Studio versions recognized by VSCodeEditor. */
 	enum class VisualStudioVersion
 	{
 		VS2008,
@@ -20,22 +22,16 @@ namespace BansheeEngine
 		VS2015
 	};
 
-	/**
-	 * @brief	Code editor implementation that handles interacting with Microsoft Visual Studio.
-	 */
+	/**	Code editor implementation that handles interacting with Microsoft Visual Studio. */
 	class BS_ED_EXPORT VSCodeEditor : public CodeEditor
 	{
 	public:
 		VSCodeEditor(VisualStudioVersion version, const Path& execPath, const WString& CLSID);
 
-		/**
-		 * @copydoc	CodeEditor::openFile
-		 */
+		/** @copydoc CodeEditor::openFile */
 		void openFile(const Path& solutionPath, const Path& filePath, UINT32 lineNumber) const override;
 
-		/**
-		 * @copydoc	CodeEditor::syncSolution
-		 */
+		/** @copydoc CodeEditor::syncSolution */
 		void syncSolution(const CodeSolutionData& data, const Path& outputPath) const override;
 
 	private:
@@ -44,29 +40,20 @@ namespace BansheeEngine
 		WString mCLSID;
 	};
 
-	/**
-	 * @brief	Code editor factory used for creating specific instances 
-	 *			of the Visual Studio code editor object.
-	 */
+	/** Code editor factory used for creating specific instances of the Visual Studio code editor object. */
 	class BS_ED_EXPORT VSCodeEditorFactory : public CodeEditorFactory
 	{
 	public:
 		VSCodeEditorFactory();
 
-		/**
-		 * @copydoc	CodeEditorFactory::getAvailableEditors
-		 */
+		/** @copydoc CodeEditorFactory::getAvailableEditors */
 		const Vector<CodeEditorType>& getAvailableEditors() const override { return mAvailableEditors; }
 
-		/**
-		 * @copydoc	CodeEditorFactory::create
-		 */
+		/** @copydoc CodeEditorFactory::create */
 		CodeEditor* create(CodeEditorType editor) const override;
 
 	private:
-		/**
-		 * @brief	Contains detailed information about a specific Visual Studio version.
-		 */
+		/**	Contains detailed information about a specific Visual Studio version. */
 		struct VSVersionInfo
 		{
 			WString name;
@@ -75,12 +62,13 @@ namespace BansheeEngine
 			VisualStudioVersion version;
 		};
 
-		/**
-		 * @brief	Returns a list of Visual Studio versions installed on this machine.
-		 */
+		/**	Returns a list of Visual Studio versions installed on this machine. */
 		Map<CodeEditorType, VSVersionInfo> getAvailableVersions() const;
 
 		Map<CodeEditorType, VSVersionInfo> mAvailableVersions;
 		Vector<CodeEditorType> mAvailableEditors;
 	};
+
+	/** @} */
+	/** @endcond */
 }