Sketcher: Incorporate comments from #20589
See https://github.com/FreeCAD/FreeCAD/pull/20589#pullrequestreview-2830404892.
This commit is contained in:
committed by
Benjamin Nauck
parent
a280cacb93
commit
1cfb85a71f
@@ -2109,11 +2109,14 @@ int SketchObject::setConstruction(int GeoId, bool on)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SketchObject::toggleExternalGeometryFlag(const std::vector<int> &geoIds,
|
||||
const std::vector<ExternalGeometryExtension::Flag> &flags)
|
||||
// clang-format on
|
||||
int SketchObject::toggleExternalGeometryFlag(
|
||||
const std::vector<int>& geoIds,
|
||||
const std::vector<ExternalGeometryExtension::Flag>& flags)
|
||||
{
|
||||
if (flags.empty())
|
||||
if (flags.empty()) {
|
||||
return 0;
|
||||
}
|
||||
auto flag = flags.front();
|
||||
|
||||
// no need to check input data validity as this is an sketchobject managed operation.
|
||||
@@ -2124,10 +2127,10 @@ int SketchObject::toggleExternalGeometryFlag(const std::vector<int> &geoIds,
|
||||
auto geos = ExternalGeo.getValues();
|
||||
std::set<int> idSet(geoIds.begin(), geoIds.end());
|
||||
for (auto geoId : geoIds) {
|
||||
if (geoId > GeoEnum::RefExt || -geoId-1>=ExternalGeo.getSize()) {
|
||||
if (geoId > GeoEnum::RefExt || -geoId - 1 >= ExternalGeo.getSize()) {
|
||||
continue;
|
||||
}
|
||||
if (idSet.count(geoId) == 0) {
|
||||
if (!idSet.contains(geoId)) {
|
||||
continue;
|
||||
}
|
||||
idSet.erase(geoId);
|
||||
@@ -2144,18 +2147,16 @@ int SketchObject::toggleExternalGeometryFlag(const std::vector<int> &geoIds,
|
||||
auto& relatedGeometry = geos[relatedIndex];
|
||||
relatedGeometry = relatedGeometry->clone();
|
||||
auto relatedFacade = ExternalGeometryFacade::getFacade(relatedGeometry);
|
||||
relatedFacade->setFlag(flag, value);
|
||||
for (size_t i = 1; i < flags.size(); ++i) {
|
||||
relatedFacade->setFlag(flags[i], value);
|
||||
for (auto& _flag : flags) {
|
||||
relatedFacade->setFlag(_flag, value);
|
||||
}
|
||||
idSet.erase(relatedGeoId);
|
||||
}
|
||||
}
|
||||
geo = geo->clone();
|
||||
egf->setGeometry(geo);
|
||||
egf->setFlag(flag, value);
|
||||
for (size_t i=1; i<flags.size(); ++i) {
|
||||
egf->setFlag(flags[i], value);
|
||||
for (auto& _flag : flags) {
|
||||
egf->setFlag(_flag, value);
|
||||
}
|
||||
update = update || (value || flag != ExternalGeometryExtension::Frozen);
|
||||
touched = true;
|
||||
@@ -2170,6 +2171,7 @@ int SketchObject::toggleExternalGeometryFlag(const std::vector<int> &geoIds,
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
// clang-format off
|
||||
|
||||
void SketchObject::addGeometryState(const Constraint* cstr) const
|
||||
{
|
||||
@@ -7179,21 +7181,22 @@ int SketchObject::addExternal(App::DocumentObject* Obj,
|
||||
if (!(Objects[i] == Obj && std::string(SubName) == SubElements[i])) {
|
||||
continue;
|
||||
}
|
||||
if (Types[i] == (int)ExtType::Both
|
||||
|| (Types[i] == (int)ExtType::Projection && !intersection)
|
||||
|| (Types[i] == (int)ExtType::Intersection && intersection)) {
|
||||
if (Types[i] == static_cast<int>(ExtType::Both)
|
||||
|| (Types[i] == static_cast<int>(ExtType::Projection) && !intersection)
|
||||
|| (Types[i] == static_cast<int>(ExtType::Intersection) && intersection)) {
|
||||
Base::Console().error("Link to %s already exists in this sketch.\n", SubName);
|
||||
return -1;
|
||||
}
|
||||
// Case where projections are already there when adding intersections.
|
||||
add = false;
|
||||
Types[i] = (int)ExtType::Both;
|
||||
Types[i] = static_cast<int>(ExtType::Both);
|
||||
}
|
||||
if (add) {
|
||||
// add the new ones
|
||||
Objects.push_back(Obj);
|
||||
SubElements.emplace_back(SubName);
|
||||
Types.push_back((int)(intersection ? ExtType::Intersection : ExtType::Projection));
|
||||
Types.push_back(
|
||||
static_cast<int>(intersection ? ExtType::Intersection : ExtType::Projection));
|
||||
if (intersection) {}
|
||||
|
||||
// set the Link list.
|
||||
|
||||
@@ -557,7 +557,7 @@ private:
|
||||
ElementView::ElementView(QWidget* parent)
|
||||
: QListWidget(parent)
|
||||
{
|
||||
ElementItemDelegate* elementItemDelegate = new ElementItemDelegate(this);
|
||||
auto* elementItemDelegate = new ElementItemDelegate(this);
|
||||
setItemDelegate(elementItemDelegate);
|
||||
|
||||
QObject::connect(
|
||||
@@ -1097,7 +1097,7 @@ bool ElementItemDelegate::editorEvent(QEvent* event, QAbstractItemModel* model,
|
||||
|
||||
ElementItem* ElementItemDelegate::getElementItem(const QModelIndex& index) const
|
||||
{
|
||||
ElementView* elementView = static_cast<ElementView*>(parent());
|
||||
auto* elementView = static_cast<ElementView*>(parent());
|
||||
return elementView->itemFromIndex(index);
|
||||
}
|
||||
|
||||
@@ -1338,7 +1338,7 @@ void TaskSketcherElements::onListMultiFilterItemChanged(QListWidgetItem* item)
|
||||
|
||||
void TaskSketcherElements::setItemVisibility(QListWidgetItem* it)
|
||||
{
|
||||
ElementItem* item = static_cast<ElementItem*>(it);
|
||||
auto* item = static_cast<ElementItem*>(it);
|
||||
|
||||
if (ui->filterBox->checkState() == Qt::Unchecked) {
|
||||
item->setHidden(false);
|
||||
@@ -1450,7 +1450,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
QString expr = QString::fromLatin1(msg.pSubName);
|
||||
std::string shapetype(msg.pSubName);
|
||||
// if-else edge vertex
|
||||
if (boost::starts_with(shapetype, "Edge")) {
|
||||
if (shapetype.starts_with("Edge")) {
|
||||
QRegularExpression rx(QStringLiteral("^Edge(\\d+)$"));
|
||||
QRegularExpressionMatch match;
|
||||
boost::ignore_unused(expr.indexOf(rx, 0, &match));
|
||||
@@ -1467,7 +1467,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
// Perhaps we should also maintain a map so that we can look up items
|
||||
// by element number.
|
||||
for (int i = 0; i < countItems; i++) {
|
||||
ElementItem* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
|
||||
auto* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
|
||||
if (item->ElementNbr == ElementId) {
|
||||
item->isLineSelected = select;
|
||||
modified_item = item;
|
||||
@@ -1476,7 +1476,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (boost::starts_with(shapetype, "ExternalEdge")) {
|
||||
else if (shapetype.starts_with("ExternalEdge")) {
|
||||
QRegularExpression rx(QStringLiteral("^ExternalEdge(\\d+)$"));
|
||||
QRegularExpressionMatch match;
|
||||
boost::ignore_unused(expr.indexOf(rx, 0, &match));
|
||||
@@ -1490,7 +1490,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
}
|
||||
int countItems = ui->listWidgetElements->count();
|
||||
for (int i = 0; i < countItems; i++) {
|
||||
ElementItem* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
|
||||
auto* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
|
||||
if (item->ElementNbr == ElementId) {
|
||||
item->isLineSelected = select;
|
||||
modified_item = item;
|
||||
@@ -1498,7 +1498,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (boost::starts_with(shapetype, "Vertex")) {
|
||||
else if (shapetype.starts_with("Vertex")) {
|
||||
QRegularExpression rx(QStringLiteral("^Vertex(\\d+)$"));
|
||||
QRegularExpressionMatch match;
|
||||
boost::ignore_unused(expr.indexOf(rx, 0, &match));
|
||||
@@ -1517,7 +1517,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
|
||||
int countItems = ui->listWidgetElements->count();
|
||||
for (int i = 0; i < countItems; i++) {
|
||||
ElementItem* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
|
||||
auto* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
|
||||
if (item->ElementNbr == GeoId) {
|
||||
modified_item = item;
|
||||
switch (PosId) {
|
||||
@@ -1552,7 +1552,7 @@ void TaskSketcherElements::onListWidgetElementsItemPressed(QListWidgetItem* it)
|
||||
if (!it)
|
||||
return;
|
||||
|
||||
ElementItem* itf = static_cast<ElementItem*>(it);
|
||||
auto* itf = static_cast<ElementItem*>(it);
|
||||
bool rightClickOnSelected = itf->rightClicked
|
||||
&& (itf->isLineSelected || itf->isStartingPointSelected || itf->isEndPointSelected
|
||||
|| itf->isMidPointSelected);
|
||||
@@ -1584,7 +1584,7 @@ void TaskSketcherElements::onListWidgetElementsItemPressed(QListWidgetItem* it)
|
||||
Gui::Selection().clearSelection();
|
||||
|
||||
for (int i = 0; i < ui->listWidgetElements->count(); i++) {
|
||||
ElementItem* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
|
||||
auto* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
|
||||
|
||||
if (!multipleselection && !multipleconsecutiveselection) {
|
||||
// if not multiple selection, then all are disabled but the one that was just
|
||||
@@ -1596,7 +1596,6 @@ void TaskSketcherElements::onListWidgetElementsItemPressed(QListWidgetItem* it)
|
||||
}
|
||||
|
||||
if (item == itf) {
|
||||
|
||||
if (item->clickedOn == SubElementType::mid
|
||||
&& (item->GeometryType == Part::GeomArcOfCircle::getClassTypeId()
|
||||
|| item->GeometryType == Part::GeomArcOfEllipse::getClassTypeId()
|
||||
@@ -1665,7 +1664,6 @@ void TaskSketcherElements::onListWidgetElementsItemPressed(QListWidgetItem* it)
|
||||
// now the scene
|
||||
std::stringstream ss;
|
||||
|
||||
|
||||
if (item->isLineSelected) {
|
||||
if (item->ElementNbr >= 0) {
|
||||
ss << "Edge" << item->ElementNbr + 1;
|
||||
@@ -1731,7 +1729,7 @@ void TaskSketcherElements::onListWidgetElementsMouseMoveOnItem(QListWidgetItem*
|
||||
return;
|
||||
}
|
||||
|
||||
ElementItem* item = static_cast<ElementItem*>(it);
|
||||
auto* item = static_cast<ElementItem*>(it);
|
||||
|
||||
if (!item
|
||||
|| (ui->listWidgetElements->row(item) == previouslyHoveredItemIndex
|
||||
@@ -1845,7 +1843,7 @@ void TaskSketcherElements::slotElementsChanged()
|
||||
return QStringLiteral("(Edge%1#ID%2)").arg(i).arg(i - 1);
|
||||
};
|
||||
|
||||
ElementItem* itemN = new ElementItem(
|
||||
auto* itemN = new ElementItem(
|
||||
i - 1,
|
||||
sketchView->getSketchObject()->getVertexIndexGeoPos(i - 1, Sketcher::PointPos::start),
|
||||
sketchView->getSketchObject()->getVertexIndexGeoPos(i - 1, Sketcher::PointPos::mid),
|
||||
@@ -1986,7 +1984,7 @@ void TaskSketcherElements::slotElementsChanged()
|
||||
|
||||
GeometryState state = GeometryState::External;
|
||||
|
||||
ElementItem* itemN = new ElementItem(
|
||||
auto* itemN = new ElementItem(
|
||||
-j,
|
||||
sketchView->getSketchObject()->getVertexIndexGeoPos(-j, Sketcher::PointPos::start),
|
||||
sketchView->getSketchObject()->getVertexIndexGeoPos(-j, Sketcher::PointPos::mid),
|
||||
@@ -2044,7 +2042,7 @@ void TaskSketcherElements::clearWidget()
|
||||
// update widget
|
||||
int countItems = ui->listWidgetElements->count();
|
||||
for (int i = 0; i < countItems; i++) {
|
||||
ElementItem* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
|
||||
auto* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
|
||||
|
||||
item->isLineSelected = false;
|
||||
item->isStartingPointSelected = false;
|
||||
@@ -2064,7 +2062,7 @@ void TaskSketcherElements::changeEvent(QEvent* e)
|
||||
/* Settings menu ==================================================*/
|
||||
void TaskSketcherElements::createSettingsButtonActions()
|
||||
{
|
||||
QAction* action = new QAction(tr("Extended information"), this);
|
||||
auto* action = new QAction(tr("Extended information"), this);
|
||||
|
||||
action->setCheckable(true);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user