Gui: add API ViewProvider::updateColors()

Used in TaskElementColors for general handling of per geometry element
coloring.
This commit is contained in:
Zheng, Lei
2022-09-05 12:06:06 +05:00
committed by Uwe
parent 27c893f71f
commit 4984bd9f05
9 changed files with 1512 additions and 58 deletions
-1
View File
@@ -905,7 +905,6 @@ void LinkBaseExtension::monitorOnChangeCopyObjects(
if (getLinkCopyOnChangeValue() == CopyOnChangeDisabled)
return;
for(auto obj : objs) {
obj->setStatus(App::ObjectStatus::TouchOnColorChange, true);
copyOnChangeSrcConns.push_back(obj->signalChanged.connect(
[this](const DocumentObject &, const Property &) {
if (auto prop = this->getLinkCopyOnChangeTouchedProperty()) {
+105 -46
View File
@@ -40,10 +40,9 @@
#include "Document.h"
#include "FileDialog.h"
#include "Selection.h"
#include "SelectionObject.h"
#include "ViewParams.h"
#include "ViewProviderLink.h"
FC_LOG_LEVEL_INIT("Gui", true, true)
using namespace Gui;
@@ -59,7 +58,6 @@ public:
Document *vpDoc;
std::map<std::string,QListWidgetItem*> elements;
std::vector<QListWidgetItem*> items;
std::string hiddenSub;
Connection connectDelDoc;
Connection connectDelObj;
QPixmap px;
@@ -196,31 +194,108 @@ public:
}
void accept() {
if(touched && ui->recompute->isChecked()) {
auto obj = vp->getObject();
obj->touch();
obj->getDocument()->recompute(obj->getInListRecursive());
if(touched) {
touched = false;
if(ui->recompute->isChecked()) {
auto obj = vp->getObject();
auto objs = obj->getInListRecursive();
objs.push_back(obj);
for (auto o : objs)
o->enforceRecompute();
obj->getDocument()->recompute(objs);
} else {
for (auto obj : App::Document::getDependencyList(
{vp->getObject()}, App::Document::DepSort))
{
auto vp = Application::Instance->getViewProvider(obj);
if (vp)
vp->updateColors();
}
}
}
App::GetApplication().closeActiveTransaction();
}
void removeAll() {
if(elements.size()) {
hiddenSub.clear();
ui->elementList->clear();
elements.clear();
apply();
if(elements.empty())
return;
auto itFace = elements.find("Face");
auto itEdge = elements.find("Edge");
auto itVertex = elements.find("Vertex");
bool revert = false;
for (auto & v : elements) {
if (itFace != elements.end() && v.first != "Face" && boost::starts_with(v.first, "Face")) {
revert = true;
v.second->setData(Qt::UserRole, itFace->second->data(Qt::UserRole));
}
if (itEdge != elements.end() && v.first != "Edge" && boost::starts_with(v.first, "Edge")) {
revert = true;
v.second->setData(Qt::UserRole, itEdge->second->data(Qt::UserRole));
}
if (itVertex != elements.end() && v.first != "Vertex" && boost::starts_with(v.first, "Vertex")) {
revert = true;
v.second->setData(Qt::UserRole, itVertex->second->data(Qt::UserRole));
}
}
if (revert)
apply();
ui->elementList->clear();
elements.clear();
apply();
}
void removeItems() {
std::vector<QListWidgetItem*> faces;
std::vector<QListWidgetItem*> edges;
std::vector<QListWidgetItem*> vertexes;
std::vector<std::string> subs;
for(auto item : ui->elementList->selectedItems()) {
std::string sub = qPrintable(item->data(Qt::UserRole+1).value<QString>());
if(sub == hiddenSub)
hiddenSub.clear();
elements.erase(sub);
delete item;
subs.push_back(qPrintable(item->data(Qt::UserRole+1).value<QString>()));
if (subs.back() != "Face" && boost::starts_with(subs.back(), "Face"))
faces.push_back(item);
else if (subs.back() != "Edge" && boost::starts_with(subs.back(), "Edge"))
edges.push_back(item);
else if (subs.back() != "Vertex" && boost::starts_with(subs.back(), "Vertex"))
vertexes.push_back(item);
}
// In order to better support backward compatibility, Part view provider
// still allow user to set color through DiffuseColor. So when doing
// color mapping, it will not touch any element color that are not
// explicitly set through ColoredElements property. Therefore, when the
// user removes colored elements here, we must explicitly revert only
// those element too. Same for the removeAll() above.
if (faces.size()) {
auto it = elements.find("Face");
if (it != elements.end()) {
for (auto item : faces)
item->setData(Qt::UserRole, it->second->data(Qt::UserRole));
}
}
if (edges.size()) {
auto it = elements.find("Edge");
if (it != elements.end()) {
for (auto item : edges)
item->setData(Qt::UserRole, it->second->data(Qt::UserRole));
}
}
if (vertexes.size()) {
auto it = elements.find("Vertex");
if (it != elements.end()) {
for (auto item : vertexes)
item->setData(Qt::UserRole, it->second->data(Qt::UserRole));
}
}
apply();
// now remove the items
for (auto & sub : subs) {
auto it = elements.find(sub);
if (it != elements.end()) {
delete it->second;
elements.erase(it);
}
}
apply();
}
@@ -287,8 +362,6 @@ public:
}
for(auto item : ui->elementList->selectedItems()) {
std::string name(qPrintable(item->data(Qt::UserRole+1).value<QString>()));
if(ViewProvider::hasHiddenMarker(name.c_str()))
continue;
auto &v = sels[name];
if(!v)
Selection().addSelection(editDoc.c_str(),
@@ -317,12 +390,8 @@ ElementColors::ElementColors(ViewProviderDocumentObject* vp, bool noHide)
if(noHide)
d->ui->hideSelection->setVisible(false);
ParameterGrp::handle hPart = App::GetApplication().GetParameterGroupByPath
("User parameter:BaseApp/Preferences/View");
d->ui->recompute->setChecked(hPart->GetBool("ColorRecompute",true));
d->ui->onTop->setChecked(hPart->GetBool("ColorOnTop",true));
if(d->ui->onTop->isChecked())
d->vpParent->OnTopWhenSelected.setValue(3);
d->ui->recompute->setChecked(ViewParams::instance()->getColorRecompute());
d->ui->onTop->setChecked(ViewParams::instance()->getColorOnTop());
Selection().addSelectionGate(d, ResolveMode::NoResolve);
@@ -342,15 +411,11 @@ ElementColors::~ElementColors()
}
void ElementColors::on_recompute_clicked(bool checked) {
ParameterGrp::handle hPart = App::GetApplication().GetParameterGroupByPath
("User parameter:BaseApp/Preferences/View");
hPart->SetBool("ColorRecompute",checked);
ViewParams::instance()->setColorRecompute(checked);
}
void ElementColors::on_onTop_clicked(bool checked) {
ParameterGrp::handle hPart = App::GetApplication().GetParameterGroupByPath
("User parameter:BaseApp/Preferences/View");
hPart->SetBool("ColorOnTop",checked);
ViewParams::instance()->setColorOnTop(checked);
d->vpParent->OnTopWhenSelected.setValue(checked?3:d->onTopMode);
}
@@ -414,8 +479,12 @@ void ElementColors::on_addSelection_clicked()
break;
}
for(auto &sub : subs) {
if(boost::starts_with(sub,d->editSub))
d->addItem(-1,sub.c_str()+d->editSub.size(),true);
if(!boost::starts_with(sub,d->editSub))
continue;
std::string s(sub.c_str()+d->editSub.size());
if(s.empty() || s.back() == '.')
s += "Face";
d->addItem(-1,s.c_str(),true);
}
break;
}
@@ -468,23 +537,13 @@ void ElementColors::changeEvent(QEvent *e)
void ElementColors::leaveEvent(QEvent *e) {
QWidget::leaveEvent(e);
Selection().rmvPreselect();
if(d->hiddenSub.size()) {
d->vp->partialRender({d->hiddenSub},false);
d->hiddenSub.clear();
}
}
void ElementColors::on_elementList_itemEntered(QListWidgetItem *item) {
std::string name(qPrintable(item->data(Qt::UserRole+1).value<QString>()));
if(d->hiddenSub.size()) {
d->vp->partialRender({d->hiddenSub},false);
d->hiddenSub.clear();
}
if(ViewProvider::hasHiddenMarker(name.c_str())) {
d->hiddenSub = name;
d->vp->partialRender({name},true);
name.resize(name.size()-ViewProvider::hiddenMarker().size());
}
const char *hidden = ViewProvider::hasHiddenMarker(name.c_str());
if(hidden)
name.resize(name.size()-std::strlen(hidden));
Selection().setPreselect(d->editDoc.c_str(),
d->editObj.c_str(), (d->editSub+name).c_str(),0,0,0,
d->ui->onTop->isChecked() ? Gui::SelectionChanges::MsgSource::TreeView
+2
View File
@@ -62,6 +62,8 @@ public:
FC_VIEW_PARAM(EnablePropertyViewForInactiveDocument,bool,Bool,true) \
FC_VIEW_PARAM(ShowSelectionBoundingBox,bool,Bool,false) \
FC_VIEW_PARAM(PropertyViewTimer, unsigned long, Unsigned, 100) \
FC_VIEW_PARAM(ColorOnTop, bool, Bool, true) \
FC_VIEW_PARAM(ColorRecompute, bool, Bool, true) \
#undef FC_VIEW_PARAM
#define FC_VIEW_PARAM(_name,_ctype,_type,_def) \
+4
View File
@@ -411,6 +411,10 @@ public:
virtual void setElementColors(const std::map<std::string, App::Color> &colors) {
(void)colors;
}
virtual void updateColors(App::Document *sourceDoc=0, bool forceColorMap=false) {
(void)sourceDoc;
(void)forceColorMap;
}
static const std::string &hiddenMarker();
static const char *hasHiddenMarker(const char *subname);
//@}
+2
View File
@@ -160,6 +160,8 @@ public:
/** Start the edit mode with ViewProvider::Default */
void startDefaultEditMode();
virtual void checkColorUpdate() {}
protected:
/*! Get the active mdi view of the document this view provider is part of.
@note The returned mdi view doesn't need to be a 3d view but can be e.g.
+8 -7
View File
@@ -114,14 +114,16 @@ ViewProviderGeometryObject::~ViewProviderGeometryObject()
void ViewProviderGeometryObject::onChanged(const App::Property* prop)
{
// Actually, the properties 'ShapeColor' and 'Transparency' are part of the property 'ShapeMaterial'.
// Both redundant properties are kept due to more convenience for the user. But we must keep the values
// consistent of all these properties.
Gui::ColorUpdater colorUpdater;
if (prop == &Selectable) {
bool Sel = Selectable.getValue();
setSelectable(Sel);
}
else if (prop == &ShapeColor) {
// Actually, the properties 'ShapeColor' and 'Transparency' are part of the property 'ShapeMaterial'.
// Both redundant properties are kept due to more convenience for the user. But we must keep the values
// consistent of all these properties.
const App::Color& c = ShapeColor.getValue();
pcShapeMaterial->diffuseColor.setValue(c.r,c.g,c.b);
if (c != ShapeMaterial.getValue().diffuseColor)
@@ -137,21 +139,20 @@ void ViewProviderGeometryObject::onChanged(const App::Property* prop)
}
}
else if (prop == &ShapeMaterial) {
if (getObject() && getObject()->testStatus(App::ObjectStatus::TouchOnColorChange))
getObject()->touch(true);
const App::Material& Mat = ShapeMaterial.getValue();
long value = (long)(100*Mat.transparency);
if (value != Transparency.getValue())
Transparency.setValue(value);
const App::Color& color = Mat.diffuseColor;
if (color != ShapeColor.getValue())
ShapeColor.setValue(Mat.diffuseColor);
pcShapeMaterial->ambientColor.setValue(Mat.ambientColor.r,Mat.ambientColor.g,Mat.ambientColor.b);
pcShapeMaterial->diffuseColor.setValue(Mat.diffuseColor.r,Mat.diffuseColor.g,Mat.diffuseColor.b);
pcShapeMaterial->specularColor.setValue(Mat.specularColor.r,Mat.specularColor.g,Mat.specularColor.b);
pcShapeMaterial->emissiveColor.setValue(Mat.emissiveColor.r,Mat.emissiveColor.g,Mat.emissiveColor.b);
pcShapeMaterial->shininess.setValue(Mat.shininess);
pcShapeMaterial->transparency.setValue(Mat.transparency);
if (color != ShapeColor.getValue())
ShapeColor.setValue(Mat.diffuseColor);
Gui::ColorUpdater::addObject(getObject());
}
else if (prop == &BoundingBox) {
showBoundingBox(BoundingBox.getValue());
+10 -4
View File
@@ -17,6 +17,8 @@ include_directories(
)
link_directories(${OCC_LIBRARY_DIR})
generate_from_xml(ViewProviderPartExtPy)
set(PartGui_LIBS
Part
FreeCADGui
@@ -64,7 +66,7 @@ set(PartGui_UIC_SRCS
DlgProjectionOnSurface.ui
SectionCutting.ui
ShapeFromMesh.ui
TaskFaceColors.ui
# TaskFaceColors.ui
TaskShapeBuilder.ui
TaskLoft.ui
TaskOffset.ui
@@ -215,9 +217,9 @@ SET(PartGui_SRCS
SectionCutting.ui
ShapeFromMesh.cpp
ShapeFromMesh.h
TaskFaceColors.cpp
TaskFaceColors.h
TaskFaceColors.ui
# TaskFaceColors.cpp
# TaskFaceColors.h
# TaskFaceColors.ui
TaskShapeBuilder.cpp
TaskShapeBuilder.h
TaskShapeBuilder.ui
@@ -238,6 +240,10 @@ SET(PartGui_SRCS
TaskCheckGeometry.h
TaskAttacher.h
TaskAttacher.cpp
ViewProviderPartExtPy.xml
ViewProviderPartExtPyImp.cpp
PartParams.h
PartParams.cpp
)
if(FREECAD_USE_PCH)
File diff suppressed because it is too large Load Diff
+341
View File
@@ -0,0 +1,341 @@
/****************************************************************************
* Copyright (c) 2022 Zheng Lei (realthunder) <[email protected]> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
****************************************************************************/
#ifndef PART_PARAMS_H
#define PART_PARAMS_H
/*[[[cog
import PartGuiParams
PartGuiParams.declare()
]]]*/
// Auto generated code (Tools/params_utils.py:72)
#include <Base/Parameter.h>
// Auto generated code (Tools/params_utils.py:78)
namespace PartGui {
/** Convenient class to obtain Part/PartDesign visual related parameters
* The parameters are under group "User parameter:BaseApp/Preferences/Mod/Part"
*
* This class is auto generated by Mod/Part/Gui/PartParams.py. Modify that file
* instead of this one, if you want to add any parameter. You need
* to install Cog Python package for code generation:
* @code
* pip install cogapp
* @endcode
*
* Once modified, you can regenerate the header and the source file,
* @code
* python3 -m cogapp -r Mod/Part/Gui/PartParams.h Mod/Part/Gui/PartParams.cpp
* @endcode
*
* You can add a new parameter by adding lines in Mod/Part/Gui/PartParams.py. Available
* parameter types are 'Int, UInt, String, Bool, Float'. For example, to add
* a new Int type parameter,
* @code
* ParamInt(parameter_name, default_value, documentation, on_change=False)
* @endcode
*
* If there is special handling on parameter change, pass in on_change=True.
* And you need to provide a function implementation in Mod/Part/Gui/PartParams.cpp with
* the following signature.
* @code
* void PartParams:on<parameter_name>Changed()
* @endcode
*/
class PartGuiExport PartParams {
public:
static ParameterGrp::handle getHandle();
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter NormalsFromUVNodes
static const bool & getNormalsFromUVNodes();
static const bool & defaultNormalsFromUVNodes();
static void removeNormalsFromUVNodes();
static void setNormalsFromUVNodes(const bool &v);
static const char *docNormalsFromUVNodes();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter TwoSideRendering
static const bool & getTwoSideRendering();
static const bool & defaultTwoSideRendering();
static void removeTwoSideRendering();
static void setTwoSideRendering(const bool &v);
static const char *docTwoSideRendering();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter MinimumDeviation
static const double & getMinimumDeviation();
static const double & defaultMinimumDeviation();
static void removeMinimumDeviation();
static void setMinimumDeviation(const double &v);
static const char *docMinimumDeviation();
static void onMinimumDeviationChanged();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter MeshDeviation
static const double & getMeshDeviation();
static const double & defaultMeshDeviation();
static void removeMeshDeviation();
static void setMeshDeviation(const double &v);
static const char *docMeshDeviation();
static void onMeshDeviationChanged();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter MeshAngularDeflection
static const double & getMeshAngularDeflection();
static const double & defaultMeshAngularDeflection();
static void removeMeshAngularDeflection();
static void setMeshAngularDeflection(const double &v);
static const char *docMeshAngularDeflection();
static void onMeshAngularDeflectionChanged();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter MinimumAngularDeflection
static const double & getMinimumAngularDeflection();
static const double & defaultMinimumAngularDeflection();
static void removeMinimumAngularDeflection();
static void setMinimumAngularDeflection(const double &v);
static const char *docMinimumAngularDeflection();
static void onMinimumAngularDeflectionChanged();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter OverrideTessellation
static const bool & getOverrideTessellation();
static const bool & defaultOverrideTessellation();
static void removeOverrideTessellation();
static void setOverrideTessellation(const bool &v);
static const char *docOverrideTessellation();
static void onOverrideTessellationChanged();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter MapFaceColor
static const bool & getMapFaceColor();
static const bool & defaultMapFaceColor();
static void removeMapFaceColor();
static void setMapFaceColor(const bool &v);
static const char *docMapFaceColor();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter MapLineColor
static const bool & getMapLineColor();
static const bool & defaultMapLineColor();
static void removeMapLineColor();
static void setMapLineColor(const bool &v);
static const char *docMapLineColor();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter MapPointColor
static const bool & getMapPointColor();
static const bool & defaultMapPointColor();
static void removeMapPointColor();
static void setMapPointColor(const bool &v);
static const char *docMapPointColor();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter MapTransparency
static const bool & getMapTransparency();
static const bool & defaultMapTransparency();
static void removeMapTransparency();
static void setMapTransparency(const bool &v);
static const char *docMapTransparency();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter AutoGridScale
static const bool & getAutoGridScale();
static const bool & defaultAutoGridScale();
static void removeAutoGridScale();
static void setAutoGridScale(const bool &v);
static const char *docAutoGridScale();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter PreviewAddColor
static const unsigned long & getPreviewAddColor();
static const unsigned long & defaultPreviewAddColor();
static void removePreviewAddColor();
static void setPreviewAddColor(const unsigned long &v);
static const char *docPreviewAddColor();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter PreviewSubColor
static const unsigned long & getPreviewSubColor();
static const unsigned long & defaultPreviewSubColor();
static void removePreviewSubColor();
static void setPreviewSubColor(const unsigned long &v);
static const char *docPreviewSubColor();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter PreviewDressColor
static const unsigned long & getPreviewDressColor();
static const unsigned long & defaultPreviewDressColor();
static void removePreviewDressColor();
static void setPreviewDressColor(const unsigned long &v);
static const char *docPreviewDressColor();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter PreviewIntersectColor
static const unsigned long & getPreviewIntersectColor();
static const unsigned long & defaultPreviewIntersectColor();
static void removePreviewIntersectColor();
static void setPreviewIntersectColor(const unsigned long &v);
static const char *docPreviewIntersectColor();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter PreviewOnEdit
static const bool & getPreviewOnEdit();
static const bool & defaultPreviewOnEdit();
static void removePreviewOnEdit();
static void setPreviewOnEdit(const bool &v);
static const char *docPreviewOnEdit();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter PreviewWithTransparency
static const bool & getPreviewWithTransparency();
static const bool & defaultPreviewWithTransparency();
static void removePreviewWithTransparency();
static void setPreviewWithTransparency(const bool &v);
static const char *docPreviewWithTransparency();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter EditOnTop
static const bool & getEditOnTop();
static const bool & defaultEditOnTop();
static void removeEditOnTop();
static void setEditOnTop(const bool &v);
static const char *docEditOnTop();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter EditRecomputeWait
static const long & getEditRecomputeWait();
static const long & defaultEditRecomputeWait();
static void removeEditRecomputeWait();
static void setEditRecomputeWait(const long &v);
static const char *docEditRecomputeWait();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter AdjustCameraForNewFeature
static const bool & getAdjustCameraForNewFeature();
static const bool & defaultAdjustCameraForNewFeature();
static void removeAdjustCameraForNewFeature();
static void setAdjustCameraForNewFeature(const bool &v);
static const char *docAdjustCameraForNewFeature();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter DefaultDatumColor
static const unsigned long & getDefaultDatumColor();
static const unsigned long & defaultDefaultDatumColor();
static void removeDefaultDatumColor();
static void setDefaultDatumColor(const unsigned long &v);
static const char *docDefaultDatumColor();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter RespectSystemDPI
static const bool & getRespectSystemDPI();
static const bool & defaultRespectSystemDPI();
static void removeRespectSystemDPI();
static void setRespectSystemDPI(const bool &v);
static const char *docRespectSystemDPI();
static void onRespectSystemDPIChanged();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter SelectionPickThreshold
static const long & getSelectionPickThreshold();
static const long & defaultSelectionPickThreshold();
static void removeSelectionPickThreshold();
static void setSelectionPickThreshold(const long &v);
static const char *docSelectionPickThreshold();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter SelectionPickThreshold2
static const long & getSelectionPickThreshold2();
static const long & defaultSelectionPickThreshold2();
static void removeSelectionPickThreshold2();
static void setSelectionPickThreshold2(const long &v);
static const char *docSelectionPickThreshold2();
//@}
// Auto generated code (Tools/params_utils.py:122)
//@{
/// Accessor for parameter SelectionPickRTree
static const bool & getSelectionPickRTree();
static const bool & defaultSelectionPickRTree();
static void removeSelectionPickRTree();
static void setSelectionPickRTree(const bool &v);
static const char *docSelectionPickRTree();
//@}
// Auto generated code (Tools/params_utils.py:150)
}; // class PartParams
} // namespace PartGui
//[[[end]]]
#endif // PART_PARAMS_H