[skip ci] tmp. disable viewer selection for several interactive commands in Mesh workbench
This commit is contained in:
@@ -1280,6 +1280,7 @@ void CmdMeshRemoveCompByHand::activated(int)
|
||||
viewer->setEditing(true);
|
||||
viewer->setEditingCursor(QCursor(Qt::OpenHandCursor));
|
||||
viewer->addEventCallback(SoMouseButtonEvent::getClassTypeId(), MeshGui::ViewProviderMeshFaceSet::markPartCallback);
|
||||
viewer->setSelectionEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1595,6 +1596,7 @@ void CmdMeshFillInteractiveHole::activated(int)
|
||||
viewer->setEditing(true);
|
||||
viewer->setEditingCursor(QCursor(Gui::BitmapFactory().pixmap("mesh_fillhole"),5,5));
|
||||
viewer->addEventCallback(SoMouseButtonEvent::getClassTypeId(), MeshGui::ViewProviderMeshFaceSet::fillHoleCallback);
|
||||
viewer->setSelectionEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -149,6 +149,7 @@ TaskSmoothing::TaskSmoothing()
|
||||
|
||||
selection = new Selection();
|
||||
selection->setObjects(Gui::Selection().getSelectionEx(0, Mesh::Feature::getClassTypeId()));
|
||||
Gui::Selection().clearSelection();
|
||||
#if !defined (QSINT_ACTIONPANEL)
|
||||
Gui::TaskView::TaskGroup* tasksel = new Gui::TaskView::TaskGroup();
|
||||
#else
|
||||
|
||||
@@ -195,6 +195,7 @@ void MeshFaceAddition::startEditing(MeshGui::ViewProviderMesh* vp)
|
||||
Gui::View3DInventor* view = static_cast<Gui::View3DInventor*>(parent());
|
||||
Gui::View3DInventorViewer* viewer = view->getViewer();
|
||||
viewer->setEditing(true);
|
||||
viewer->setSelectionEnabled(false);
|
||||
viewer->setRedirectToSceneGraph(true);
|
||||
viewer->setRedirectToSceneGraphEnabled(true);
|
||||
|
||||
@@ -211,6 +212,7 @@ void MeshFaceAddition::finishEditing()
|
||||
Gui::View3DInventor* view = static_cast<Gui::View3DInventor*>(parent());
|
||||
Gui::View3DInventorViewer* viewer = view->getViewer();
|
||||
viewer->setEditing(false);
|
||||
viewer->setSelectionEnabled(true);
|
||||
viewer->setRedirectToSceneGraph(false);
|
||||
viewer->setRedirectToSceneGraphEnabled(false);
|
||||
|
||||
|
||||
@@ -97,6 +97,14 @@ MeshSelection::~MeshSelection()
|
||||
}
|
||||
}
|
||||
|
||||
void MeshSelection::setEnabledViewerSelection(bool on)
|
||||
{
|
||||
Gui::View3DInventorViewer* viewer = this->getViewer();
|
||||
if (viewer) {
|
||||
viewer->setSelectionEnabled(on);
|
||||
}
|
||||
}
|
||||
|
||||
void MeshSelection::setCallback(SoEventCallbackCB *cb)
|
||||
{
|
||||
selectionCB = cb;
|
||||
|
||||
@@ -45,6 +45,8 @@ public:
|
||||
MeshSelection();
|
||||
~MeshSelection();
|
||||
|
||||
void setEnabledViewerSelection(bool);
|
||||
|
||||
void startSelection();
|
||||
void startDeselection();
|
||||
void stopSelection();
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "ui_RemoveComponents.h"
|
||||
#include <Gui/Application.h>
|
||||
#include <Gui/Document.h>
|
||||
#include <Gui/Selection.h>
|
||||
|
||||
using namespace MeshGui;
|
||||
|
||||
@@ -45,8 +46,10 @@ RemoveComponents::RemoveComponents(QWidget* parent, Qt::WindowFlags fl)
|
||||
ui->spDeselectComp->setRange(1, INT_MAX);
|
||||
ui->spDeselectComp->setValue(10);
|
||||
|
||||
Gui::Selection().clearSelection();
|
||||
meshSel.setCheckOnlyVisibleTriangles(ui->visibleTriangles->isChecked());
|
||||
meshSel.setCheckOnlyPointToUserTriangles(ui->screenTriangles->isChecked());
|
||||
meshSel.setEnabledViewerSelection(false);
|
||||
}
|
||||
|
||||
RemoveComponents::~RemoveComponents()
|
||||
@@ -153,6 +156,7 @@ void RemoveComponents::reject()
|
||||
{
|
||||
// deselect all meshes
|
||||
meshSel.clearSelection();
|
||||
meshSel.setEnabledViewerSelection(true);
|
||||
}
|
||||
|
||||
// -------------------------------------------------
|
||||
|
||||
@@ -197,14 +197,17 @@ ParametersDialog::ParametersDialog(std::vector<float>& val, FitParameter* fitPar
|
||||
Gui::SelectionObject obj(mesh);
|
||||
std::vector<Gui::SelectionObject> sel;
|
||||
sel.push_back(obj);
|
||||
Gui::Selection().clearSelection();
|
||||
meshSel.setObjects(sel);
|
||||
meshSel.setCheckOnlyPointToUserTriangles(true);
|
||||
meshSel.setCheckOnlyVisibleTriangles(true);
|
||||
meshSel.setEnabledViewerSelection(false);
|
||||
}
|
||||
|
||||
ParametersDialog::~ParametersDialog()
|
||||
{
|
||||
meshSel.clearSelection();
|
||||
meshSel.setEnabledViewerSelection(true);
|
||||
delete fitParameter;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ Selection::Selection(QWidget* parent)
|
||||
|
||||
meshSel.setCheckOnlyVisibleTriangles(ui->visibleTriangles->isChecked());
|
||||
meshSel.setCheckOnlyPointToUserTriangles(ui->screenTriangles->isChecked());
|
||||
meshSel.setEnabledViewerSelection(false);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -51,6 +52,7 @@ Selection::~Selection()
|
||||
// no need to delete child widgets, Qt does it all for us
|
||||
delete ui;
|
||||
meshSel.clearSelection();
|
||||
meshSel.setEnabledViewerSelection(true);
|
||||
}
|
||||
|
||||
void Selection::setObjects(const std::vector<Gui::SelectionObject>& o)
|
||||
|
||||
@@ -314,8 +314,9 @@ ViewProviderMesh::ViewProviderMesh() : pcOpenEdge(0)
|
||||
CreaseAngle.setValue(angle);
|
||||
}
|
||||
|
||||
if (hGrp->GetBool("ShowBoundingBox", false))
|
||||
if (hGrp->GetBool("ShowBoundingBox", false)) {
|
||||
SelectionStyle.setValue(1);
|
||||
}
|
||||
|
||||
Coloring.setStatus(App::Property::Hidden, true);
|
||||
}
|
||||
@@ -371,8 +372,8 @@ void ViewProviderMesh::onChanged(const App::Property* prop)
|
||||
tryColorPerVertexOrFace(Coloring.getValue());
|
||||
}
|
||||
else if (prop == &SelectionStyle) {
|
||||
pcHighlight->style = SelectionStyle.getValue()
|
||||
?Gui::SoFCSelection::BOX:Gui::SoFCSelection::EMISSIVE;
|
||||
pcHighlight->style = SelectionStyle.getValue() ? Gui::SoFCSelection::BOX
|
||||
: Gui::SoFCSelection::EMISSIVE;
|
||||
}
|
||||
else {
|
||||
// Set the inverse color for open edges
|
||||
@@ -1582,6 +1583,7 @@ void ViewProviderMesh::fillHoleCallback(void * ud, SoEventCallback * n)
|
||||
QAction* id = menu.exec(QCursor::pos());
|
||||
if (cl == id) {
|
||||
view->setEditing(false);
|
||||
view->setSelectionEnabled(true);
|
||||
view->getWidget()->setCursor(QCursor(Qt::ArrowCursor));
|
||||
view->removeEventCallback(SoMouseButtonEvent::getClassTypeId(), fillHoleCallback,ud);
|
||||
}
|
||||
@@ -1629,6 +1631,7 @@ void ViewProviderMesh::markPartCallback(void * ud, SoEventCallback * n)
|
||||
QAction* id = menu.exec(QCursor::pos());
|
||||
if (cl == id) {
|
||||
view->setEditing(false);
|
||||
view->setSelectionEnabled(true);
|
||||
view->removeEventCallback(SoMouseButtonEvent::getClassTypeId(), markPartCallback,ud);
|
||||
|
||||
std::vector<ViewProvider*> views = view->getViewProvidersOfType(ViewProviderMesh::getClassTypeId());
|
||||
|
||||
Reference in New Issue
Block a user