diff --git a/src/Doc/mainpage.dox.in b/src/Doc/mainpage.dox.in index 5ab0e6c5dc..d3803f155f 100644 --- a/src/Doc/mainpage.dox.in +++ b/src/Doc/mainpage.dox.in @@ -22,64 +22,112 @@ /** - \mainpage FreeCAD source documentation + @mainpage FreeCAD Source Documentation - This is the source documentation of FreeCAD. - It is automatically generated from the source code, and describes the different - components of the FreeCAD source code, for both the parts written in C++ and Python. - - For general help and documentation about the FreeCAD application and how to use it, head - first to the Wiki Documentation. - - Refer to the - general - introduction to the FreeCAD source code page for a broad view of how the source - code is organized, and browse the modules, classes and namespaces from the menu above. - - The Developers section - of the wiki also contains additional information for developers, and the - Powerusers / python scripting - section contains coding documentation that is specifically aimed at python scripting, but - that will also be useful to C++ coders, as most of the APIs are identical or very similar. - - For space reasons, this on-line version doesn't include the source code headers nor the full - inheritance graphics. But you can build a full version yourself with everything included, - as explained in building - the source code documentation. You can also browse through the source - code on github. + @section toc Table of Contents + - @ref intro_main "Introduction" + - @ref organization "Organization of the API Documentation" + - @ref other_doc "Other Documentation" - \if DEV_DOCUMENTATION + @section intro_main Introduction - \mainpage FreeCAD source documentation + This is the source documentation of [FreeCAD](https://www.freecad.org). It + is automatically generated from the source code and describes the different + components of the FreeCAD source code, for both the parts written in C++ + and Python. The next section discusses the organization of this API + documentation and the last section describes other forms of documentation + that FreeCAD has. + + @section organization Organization of the API Documentation + + This documentation is divided into several topics of which the most important are: + - @ref CORE "Core" + - @ref BASE "Base" + - @ref APP "App" + - @ref GUI "Gui" + - @ref WORKBENCHES "Workbenches" + - @ref EMBEDDED "Embedded 3rd party packages" + + Firstly, topic @ref CORE "Core" contains the core namespaces and classes + that all of FreeCAD relies on. This consists of namespace %Base (see topic + @ref BASE "Base") that contains fundamental base classes, the namespace + %App (see topic @ref APP "App") that contains classes for FreeCAD in + command-line mode, and namespace %Gui (see topic @ref GUI "Gui") that + contains the classes for FreeCAD's GUI. + + FreeCAD is highly modular and most of its functionality is within modules + that are called @ref WORKBENCHES "Workbenches". Workbenches can be written + in C++ or Python or in a combination of the two. FreeCAD also has external + workbenches that can be loaded from the Addon Manager. These external + workbenches need to be written in Python. + + Finally, there is the topic @ref EMBEDDED "Embedded 3rd party packages" + that contains 3rd-party software of which the source is embedded in + FreeCAD. This means that during compilation, these packages will be + compiled and linked to FreeCAD as opposed to non-embedded 3rd-party + packages that are only linked to FreeCAD. An example of an important + non-embedded 3rd party software package is [Open CASCADE + Technology](https://dev.opencascade.org/doc/overview/html/). Its API + documentation can be found + [here](https://dev.opencascade.org/doc/refman/html/index.html). + + @section other_doc Other Documentation + + For general help and documentation about the FreeCAD application and how to + use it, head first to the [Wiki Documentation](https://www.freecad.org/wiki). + + Refer to the [Wiki page "The FreeCAD source + code"](https://www.freecad.org/wiki/The_FreeCAD_source_code) for a broad + view of how the source code is organized, and browse the modules, classes + and namespaces from the menu above. + + The [Developer hub](https://www.freecad.org/wiki/Developer_hub) of the wiki + contains additional information for developers and the [Power users / + Python scripting section](https://www.freecad.org/wiki/Power_users_hub) + contains coding documentation that is specifically aimed at Python + scripting, but that will also be useful to C++ coders, as most of the APIs + are identical or very similar. + + For space reasons, this on-line version doesn't include the source code + headers nor the full inheritance graphics. But you can build a full version + yourself with everything included, as explained in Wiki page [Source + documentation](https://wiki.freecad.org/Source_documentation#Complete_documentation). You + can also browse through the [source code on + GitHub](https://github.com/FreeCAD/FreeCAD). + + @if DEV_DOCUMENTATION + + @mainpage FreeCAD source documentation + + @image html freecadsplash.png - \image html freecadsplash.png - Welcome to FreeCAD source documentation! - + We hope you'll find it a convenient tool to explore, understand and experiment with the internals of the program. - + Being generated from the actual state of the code, this documentation is by no means a well structured corpus or a textbook, but more an utility to browse through the sources. - + If you seek information on FreeCAD at large, please consult our Wiki - + FreeCAD being a fast moving target, don't hesitate to rebuild an up to date doc from source as often as needed (\ref makingdocs "more info"). CPU cycles are cheap - nowadays! - + nowadays! + The homepage of FreeCAD is here. - - \endif + + @endif @GIT_REVISION_INFO@ */ -/** \namespace std - \brief The Standard namespace for the C++ library -*/ +/** + * @namespace std + * @brief The Standard namespace for the C++ library + */