Sandbox:Checklist

= Checklist for adding a new feature to an existing workbench in C++ =

This checklist is intended as an aid to contributors.

The checklist itemizes the tasks involved in adding a wholly new feature to an existing module (workbench). It assumes that the existing workbench (myModule) and the new feature are written in C++.

The module code is divided into an App portion that deals with the document and its objects and a Gui portion that deals with visual aspects. Our source tree looks like this:

src Mod myModule myModuleTest TestmyModuleApp.py               TestmyModuleGui.py                myFeatureTest.py            App AppmyModule.cpp myFeature.cpp myFeature.h               myFeaturePy.xml myFeaturePyImp.cpp Gui GuimyModule.cpp ViewProvidermyFeature.cpp ViewProvidermyFeature.h               TaskmyFeature.cpp TaskmyFeature.h               TaskmyFeature.ui

App changes

 * new myModule/App/myFeature.cpp
 * new myModule/App/myFeature.h
 * new myModule/App/myFeaturePy.xml
 * new myModule/App/myFeaturePyImp.cpp

* add new source files * add include(s) for new objects * add init calls for new objects
 * edit myModule/App/CMakeLists.txt
 * edit myModule/App/AppmyModule.cpp

Gui changes

 * new myModule/Gui/ViewProvidermyFeature.cpp
 * new myModule/Gui/ViewProvidermyFeature.h
 * new myModule/Gui/TaskmyFeature.cpp
 * new myModule/Gui/TaskmyFeature.h
 * new myModule/Gui/TaskmyFeature.ui

* add new source files * add includes for new objects * add init calls for new objects * add new command * add new command to menu & toolbar
 * edit myModule/Gui/CMakeLists.txt
 * edit myModule/Gui/AppmyModuleGui.cpp
 * edit myModule/Gui/CommandXXXX.cpp
 * edit myModule/Gui/Workbench.cpp

* add icon to list
 * new myModule/Gui/Resources/icons/myModule_myFeature.svg
 * edit myModule/Gui/Resources/myModule.qrc

Test changes
* add import for myFeatureTest * add myFeatureTest.py to list * ????
 * new test script myModule/myModuleTest/myFeatureTest.py
 * edit myModule/myModuleTest/TestmyModuleApp.py and/or myModule/myModuleTest/TestmyModuleApp.py
 * edit myModule/CMakeLists.txt
 * new unit tests

Documentation changes
* add new entry in module overview * update next and previous article pointers
 * new wiki.freecadweb.org/myModule_myFeature
 * edit wiki.freecadweb.org/myModule_Workbench
 * edit predecessor and successor wiki entries