Some code unification for Gui selections
This commit is contained in:
parent
a8e4f0f1ca
commit
0e9ee59129
|
@ -116,6 +116,22 @@ bool ReferenceSelection::allow(App::Document* pDoc, App::DocumentObject* pObj, c
|
||||||
namespace PartDesignGui
|
namespace PartDesignGui
|
||||||
{
|
{
|
||||||
|
|
||||||
|
void getReferencedSelection(const App::DocumentObject* thisObj, const Gui::SelectionChanges& msg,
|
||||||
|
App::DocumentObject*& selObj, std::vector<std::string>& selSub)
|
||||||
|
{
|
||||||
|
selObj = thisObj->getDocument()->getObject(msg.pObjectName);
|
||||||
|
if (selObj == thisObj)
|
||||||
|
return;
|
||||||
|
std::string subname = msg.pSubName;
|
||||||
|
|
||||||
|
// Remove subname for planes and datum features
|
||||||
|
if (PartDesign::Feature::isDatum(selObj)) {
|
||||||
|
subname = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
selSub = std::vector<std::string>(1,subname);
|
||||||
|
}
|
||||||
|
|
||||||
const QString getRefStr(const App::DocumentObject* obj, const std::vector<std::string>& sub)
|
const QString getRefStr(const App::DocumentObject* obj, const std::vector<std::string>& sub)
|
||||||
{
|
{
|
||||||
if (obj == NULL)
|
if (obj == NULL)
|
||||||
|
|
|
@ -48,6 +48,9 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
// Convenience methods
|
// Convenience methods
|
||||||
|
/// Extract reference from Selection
|
||||||
|
void getReferencedSelection(const App::DocumentObject* thisObj, const Gui::SelectionChanges& msg,
|
||||||
|
App::DocumentObject*& selObj, std::vector<std::string>& selSub);
|
||||||
/// Return reference as string for UI elements (format <obj>:<subelement>
|
/// Return reference as string for UI elements (format <obj>:<subelement>
|
||||||
const QString getRefStr(const App::DocumentObject* obj, const std::vector<std::string>& sub);
|
const QString getRefStr(const App::DocumentObject* obj, const std::vector<std::string>& sub);
|
||||||
/// Return reference as string for python (format (<obj>, ["<subelement>"]) )
|
/// Return reference as string for python (format (<obj>, ["<subelement>"]) )
|
||||||
|
|
|
@ -110,23 +110,6 @@ TaskDraftParameters::TaskDraftParameters(ViewProviderDraft *DraftView,QWidget *p
|
||||||
ui->lineLine->setText(getRefStr(ref, strings));
|
ui->lineLine->setText(getRefStr(ref, strings));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskDraftParameters::getReferencedSelection(const Gui::SelectionChanges& msg,
|
|
||||||
App::DocumentObject*& selObj, std::vector<std::string>& selSub)
|
|
||||||
{
|
|
||||||
PartDesign::DressUp* pcDressup = static_cast<PartDesign::DressUp*>(DraftView->getObject());
|
|
||||||
selObj = pcDressup->getDocument()->getObject(msg.pObjectName);
|
|
||||||
if (selObj == pcDressup)
|
|
||||||
return;
|
|
||||||
std::string subname = msg.pSubName;
|
|
||||||
|
|
||||||
// Remove subname for planes and datum features
|
|
||||||
if (PartDesign::Feature::isDatum(selObj)) {
|
|
||||||
subname = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
selSub = std::vector<std::string>(1,subname);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TaskDraftParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
void TaskDraftParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||||
{
|
{
|
||||||
if (selectionMode == none)
|
if (selectionMode == none)
|
||||||
|
@ -182,7 +165,7 @@ void TaskDraftParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||||
} else if ((selectionMode == plane)) {
|
} else if ((selectionMode == plane)) {
|
||||||
std::vector<std::string> planes;
|
std::vector<std::string> planes;
|
||||||
App::DocumentObject* selObj;
|
App::DocumentObject* selObj;
|
||||||
getReferencedSelection(msg, selObj, planes);
|
getReferencedSelection(pcDraft, msg, selObj, planes);
|
||||||
pcDraft->NeutralPlane.setValue(selObj, planes);
|
pcDraft->NeutralPlane.setValue(selObj, planes);
|
||||||
ui->linePlane->setText(getRefStr(selObj, planes));
|
ui->linePlane->setText(getRefStr(selObj, planes));
|
||||||
|
|
||||||
|
@ -192,7 +175,7 @@ void TaskDraftParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||||
} else if ((selectionMode == line) && (subName.size() > 4 && subName.substr(0,4) == "Edge")) {
|
} else if ((selectionMode == line) && (subName.size() > 4 && subName.substr(0,4) == "Edge")) {
|
||||||
std::vector<std::string> edges;
|
std::vector<std::string> edges;
|
||||||
App::DocumentObject* selObj;
|
App::DocumentObject* selObj;
|
||||||
getReferencedSelection(msg, selObj, edges);
|
getReferencedSelection(pcDraft, msg, selObj, edges);
|
||||||
pcDraft->PullDirection.setValue(selObj, edges);
|
pcDraft->PullDirection.setValue(selObj, edges);
|
||||||
ui->lineLine->setText(getRefStr(selObj, edges));
|
ui->lineLine->setText(getRefStr(selObj, edges));
|
||||||
|
|
||||||
|
|
|
@ -83,10 +83,7 @@ private:
|
||||||
ViewProviderDraft *DraftView;
|
ViewProviderDraft *DraftView;
|
||||||
|
|
||||||
enum selectionModes { none, faceAdd, faceRemove, plane, line };
|
enum selectionModes { none, faceAdd, faceRemove, plane, line };
|
||||||
selectionModes selectionMode;
|
selectionModes selectionMode;
|
||||||
|
|
||||||
void getReferencedSelection(const Gui::SelectionChanges& msg,
|
|
||||||
App::DocumentObject*& selObj, std::vector<std::string>& selSub);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// simulation dialog for the TaskView
|
/// simulation dialog for the TaskView
|
||||||
|
|
|
@ -239,8 +239,8 @@ void TaskLinearPatternParameters::onSelectionChanged(const Gui::SelectionChanges
|
||||||
if (!blockUpdate) {
|
if (!blockUpdate) {
|
||||||
std::vector<std::string> directions;
|
std::vector<std::string> directions;
|
||||||
App::DocumentObject* selObj;
|
App::DocumentObject* selObj;
|
||||||
getReferencedSelection(msg, selObj, directions);
|
|
||||||
PartDesign::LinearPattern* pcLinearPattern = static_cast<PartDesign::LinearPattern*>(getObject());
|
PartDesign::LinearPattern* pcLinearPattern = static_cast<PartDesign::LinearPattern*>(getObject());
|
||||||
|
getReferencedSelection(pcLinearPattern, msg, selObj, directions);
|
||||||
pcLinearPattern->Direction.setValue(selObj, directions);
|
pcLinearPattern->Direction.setValue(selObj, directions);
|
||||||
|
|
||||||
recomputeFeature();
|
recomputeFeature();
|
||||||
|
@ -256,7 +256,8 @@ void TaskLinearPatternParameters::onSelectionChanged(const Gui::SelectionChanges
|
||||||
|
|
||||||
std::vector<std::string> directions;
|
std::vector<std::string> directions;
|
||||||
App::DocumentObject* selObj;
|
App::DocumentObject* selObj;
|
||||||
getReferencedSelection(msg, selObj, directions);
|
PartDesign::LinearPattern* pcLinearPattern = static_cast<PartDesign::LinearPattern*>(getObject());
|
||||||
|
getReferencedSelection(pcLinearPattern, msg, selObj, directions);
|
||||||
ui->comboDirection->addItem(getRefStr(selObj, directions));
|
ui->comboDirection->addItem(getRefStr(selObj, directions));
|
||||||
ui->comboDirection->setCurrentIndex(maxcount);
|
ui->comboDirection->setCurrentIndex(maxcount);
|
||||||
ui->comboDirection->addItem(tr("Select reference..."));
|
ui->comboDirection->addItem(tr("Select reference..."));
|
||||||
|
|
|
@ -195,8 +195,8 @@ void TaskMirroredParameters::onSelectionChanged(const Gui::SelectionChanges& msg
|
||||||
if (!blockUpdate) {
|
if (!blockUpdate) {
|
||||||
std::vector<std::string> mirrorPlanes;
|
std::vector<std::string> mirrorPlanes;
|
||||||
App::DocumentObject* selObj;
|
App::DocumentObject* selObj;
|
||||||
getReferencedSelection(msg, selObj, mirrorPlanes);
|
|
||||||
PartDesign::Mirrored* pcMirrored = static_cast<PartDesign::Mirrored*>(getObject());
|
PartDesign::Mirrored* pcMirrored = static_cast<PartDesign::Mirrored*>(getObject());
|
||||||
|
getReferencedSelection(pcMirrored, msg, selObj, mirrorPlanes);
|
||||||
pcMirrored->MirrorPlane.setValue(selObj, mirrorPlanes);
|
pcMirrored->MirrorPlane.setValue(selObj, mirrorPlanes);
|
||||||
|
|
||||||
recomputeFeature();
|
recomputeFeature();
|
||||||
|
@ -212,7 +212,8 @@ void TaskMirroredParameters::onSelectionChanged(const Gui::SelectionChanges& msg
|
||||||
|
|
||||||
std::vector<std::string> mirrorPlanes;
|
std::vector<std::string> mirrorPlanes;
|
||||||
App::DocumentObject* selObj;
|
App::DocumentObject* selObj;
|
||||||
getReferencedSelection(msg, selObj, mirrorPlanes);
|
PartDesign::Mirrored* pcMirrored = static_cast<PartDesign::Mirrored*>(getObject());
|
||||||
|
getReferencedSelection(pcMirrored, msg, selObj, mirrorPlanes);
|
||||||
ui->comboPlane->addItem(getRefStr(selObj, mirrorPlanes));
|
ui->comboPlane->addItem(getRefStr(selObj, mirrorPlanes));
|
||||||
ui->comboPlane->setCurrentIndex(maxcount);
|
ui->comboPlane->setCurrentIndex(maxcount);
|
||||||
ui->comboPlane->addItem(tr("Select reference..."));
|
ui->comboPlane->addItem(tr("Select reference..."));
|
||||||
|
|
|
@ -209,8 +209,8 @@ void TaskPolarPatternParameters::onSelectionChanged(const Gui::SelectionChanges&
|
||||||
if (!blockUpdate) {
|
if (!blockUpdate) {
|
||||||
std::vector<std::string> axes;
|
std::vector<std::string> axes;
|
||||||
App::DocumentObject* selObj;
|
App::DocumentObject* selObj;
|
||||||
getReferencedSelection(msg, selObj, axes);
|
|
||||||
PartDesign::PolarPattern* pcPolarPattern = static_cast<PartDesign::PolarPattern*>(getObject());
|
PartDesign::PolarPattern* pcPolarPattern = static_cast<PartDesign::PolarPattern*>(getObject());
|
||||||
|
getReferencedSelection(pcPolarPattern, msg, selObj, axes);
|
||||||
pcPolarPattern->Axis.setValue(selObj, axes);
|
pcPolarPattern->Axis.setValue(selObj, axes);
|
||||||
|
|
||||||
recomputeFeature();
|
recomputeFeature();
|
||||||
|
@ -222,7 +222,8 @@ void TaskPolarPatternParameters::onSelectionChanged(const Gui::SelectionChanges&
|
||||||
|
|
||||||
std::vector<std::string> axes;
|
std::vector<std::string> axes;
|
||||||
App::DocumentObject* selObj;
|
App::DocumentObject* selObj;
|
||||||
getReferencedSelection(msg, selObj, axes);
|
PartDesign::PolarPattern* pcPolarPattern = static_cast<PartDesign::PolarPattern*>(getObject());
|
||||||
|
getReferencedSelection(pcPolarPattern, msg, selObj, axes);
|
||||||
ui->comboAxis->addItem(getRefStr(selObj, axes));
|
ui->comboAxis->addItem(getRefStr(selObj, axes));
|
||||||
ui->comboAxis->setCurrentIndex(1);
|
ui->comboAxis->setCurrentIndex(1);
|
||||||
ui->comboAxis->addItem(tr("Select reference..."));
|
ui->comboAxis->addItem(tr("Select reference..."));
|
||||||
|
|
|
@ -228,23 +228,6 @@ void TaskTransformedParameters::addReferenceSelectionGate(bool edge, bool face)
|
||||||
Gui::Selection().addSelectionGate(new ReferenceSelection(getSupportObject(), edge, face, true));
|
Gui::Selection().addSelectionGate(new ReferenceSelection(getSupportObject(), edge, face, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskTransformedParameters::getReferencedSelection(const Gui::SelectionChanges& msg,
|
|
||||||
App::DocumentObject*& selObj, std::vector<std::string>& selSub)
|
|
||||||
{
|
|
||||||
PartDesign::Transformed* pcTransformed = static_cast<PartDesign::Transformed*>(getObject());
|
|
||||||
selObj = pcTransformed->getDocument()->getObject(msg.pObjectName);
|
|
||||||
if (selObj == pcTransformed)
|
|
||||||
return;
|
|
||||||
std::string subname = msg.pSubName;
|
|
||||||
|
|
||||||
// Remove subname for planes and datum features
|
|
||||||
if (PartDesign::Feature::isDatum(selObj)) {
|
|
||||||
subname = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
selSub = std::vector<std::string>(1,subname);
|
|
||||||
}
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TaskDialog
|
// TaskDialog
|
||||||
|
|
|
@ -86,10 +86,7 @@ protected:
|
||||||
void hideOriginals();
|
void hideOriginals();
|
||||||
void showOriginals();
|
void showOriginals();
|
||||||
|
|
||||||
void addReferenceSelectionGate(bool edge, bool face);
|
void addReferenceSelectionGate(bool edge, bool face);
|
||||||
/// Extract reference from Selection (convenience method)
|
|
||||||
void getReferencedSelection(const Gui::SelectionChanges& msg,
|
|
||||||
App::DocumentObject*& selObj, std::vector<std::string>& selSub);
|
|
||||||
|
|
||||||
bool isViewUpdated() const;
|
bool isViewUpdated() const;
|
||||||
int getUpdateViewTimeout() const;
|
int getUpdateViewTimeout() const;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user