Measurement: Provide correct VP name for COM (#23329)
* Measurement: Provide correct VP name for COM This patch tries to provide proper ViewProvider name for COM, which results in a proper pixmap assignment, which won't fallback to the default measurement's tool icon for COM. Since MeasurePython runs before actual COM python proxy assignments, we can't access proxy easily from this point of code. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Measure: Use starts_with instead of find Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org> * Update src/Mod/Measure/App/MeasureBase.cpp --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
This commit is contained in:
@@ -209,6 +209,18 @@ PROPERTY_SOURCE_TEMPLATE(Measure::MeasurePython, Measure::MeasureBase)
|
||||
template<>
|
||||
const char* Measure::MeasurePython::getViewProviderName(void) const
|
||||
{
|
||||
std::string objName = this->getNameInDocument();
|
||||
|
||||
// check object's name, this is brute-forceish way to determine
|
||||
// VP name for COM, but at this point python assignments haven't
|
||||
// been run, so we have no way to determine that easily
|
||||
if (objName.starts_with("Center_of_mass")
|
||||
|
||||
|| objName.find("CenterOfMass") != std::string::npos
|
||||
|| objName.find("centerofmass") != std::string::npos) {
|
||||
return "MeasureGui::ViewProviderMeasureCOM";
|
||||
}
|
||||
|
||||
return "MeasureGui::ViewProviderMeasure";
|
||||
}
|
||||
template<>
|
||||
|
||||
@@ -101,6 +101,7 @@ PyMOD_INIT_FUNC(MeasureGui)
|
||||
MeasureGui::ViewProviderMeasureLength ::init();
|
||||
MeasureGui::ViewProviderMeasurePosition ::init();
|
||||
MeasureGui::ViewProviderMeasureRadius ::init();
|
||||
MeasureGui::ViewProviderMeasureCOM ::init();
|
||||
// clang-format on
|
||||
|
||||
// register preferences pages
|
||||
|
||||
@@ -733,3 +733,4 @@ PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureArea, MeasureGui::ViewProviderMea
|
||||
PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureLength, MeasureGui::ViewProviderMeasure)
|
||||
PROPERTY_SOURCE(MeasureGui::ViewProviderMeasurePosition, MeasureGui::ViewProviderMeasure)
|
||||
PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureRadius, MeasureGui::ViewProviderMeasure)
|
||||
PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureCOM, MeasureGui::ViewProviderMeasure)
|
||||
|
||||
@@ -241,6 +241,17 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class ViewProviderMeasureCOM: public ViewProviderMeasure
|
||||
{
|
||||
PROPERTY_HEADER(MeasureGui::ViewProviderMeasureCOM);
|
||||
|
||||
public:
|
||||
ViewProviderMeasureCOM()
|
||||
{
|
||||
sPixmap = "Measurement-CenterOfMass";
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} // namespace MeasureGui
|
||||
|
||||
|
||||
Reference in New Issue
Block a user