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
|
||||
{
|
||||
|
||||
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)
|
||||
{
|
||||
if (obj == NULL)
|
||||
|
|
|
@ -48,6 +48,9 @@ public:
|
|||
};
|
||||
|
||||
// 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>
|
||||
const QString getRefStr(const App::DocumentObject* obj, const std::vector<std::string>& sub);
|
||||
/// 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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (selectionMode == none)
|
||||
|
@ -182,7 +165,7 @@ void TaskDraftParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
|||
} else if ((selectionMode == plane)) {
|
||||
std::vector<std::string> planes;
|
||||
App::DocumentObject* selObj;
|
||||
getReferencedSelection(msg, selObj, planes);
|
||||
getReferencedSelection(pcDraft, msg, selObj, planes);
|
||||
pcDraft->NeutralPlane.setValue(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")) {
|
||||
std::vector<std::string> edges;
|
||||
App::DocumentObject* selObj;
|
||||
getReferencedSelection(msg, selObj, edges);
|
||||
getReferencedSelection(pcDraft, msg, selObj, edges);
|
||||
pcDraft->PullDirection.setValue(selObj, edges);
|
||||
ui->lineLine->setText(getRefStr(selObj, edges));
|
||||
|
||||
|
|
|
@ -83,10 +83,7 @@ private:
|
|||
ViewProviderDraft *DraftView;
|
||||
|
||||
enum selectionModes { none, faceAdd, faceRemove, plane, line };
|
||||
selectionModes selectionMode;
|
||||
|
||||
void getReferencedSelection(const Gui::SelectionChanges& msg,
|
||||
App::DocumentObject*& selObj, std::vector<std::string>& selSub);
|
||||
selectionModes selectionMode;
|
||||
};
|
||||
|
||||
/// simulation dialog for the TaskView
|
||||
|
|
|
@ -239,8 +239,8 @@ void TaskLinearPatternParameters::onSelectionChanged(const Gui::SelectionChanges
|
|||
if (!blockUpdate) {
|
||||
std::vector<std::string> directions;
|
||||
App::DocumentObject* selObj;
|
||||
getReferencedSelection(msg, selObj, directions);
|
||||
PartDesign::LinearPattern* pcLinearPattern = static_cast<PartDesign::LinearPattern*>(getObject());
|
||||
getReferencedSelection(pcLinearPattern, msg, selObj, directions);
|
||||
pcLinearPattern->Direction.setValue(selObj, directions);
|
||||
|
||||
recomputeFeature();
|
||||
|
@ -256,7 +256,8 @@ void TaskLinearPatternParameters::onSelectionChanged(const Gui::SelectionChanges
|
|||
|
||||
std::vector<std::string> directions;
|
||||
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->setCurrentIndex(maxcount);
|
||||
ui->comboDirection->addItem(tr("Select reference..."));
|
||||
|
|
|
@ -195,8 +195,8 @@ void TaskMirroredParameters::onSelectionChanged(const Gui::SelectionChanges& msg
|
|||
if (!blockUpdate) {
|
||||
std::vector<std::string> mirrorPlanes;
|
||||
App::DocumentObject* selObj;
|
||||
getReferencedSelection(msg, selObj, mirrorPlanes);
|
||||
PartDesign::Mirrored* pcMirrored = static_cast<PartDesign::Mirrored*>(getObject());
|
||||
getReferencedSelection(pcMirrored, msg, selObj, mirrorPlanes);
|
||||
pcMirrored->MirrorPlane.setValue(selObj, mirrorPlanes);
|
||||
|
||||
recomputeFeature();
|
||||
|
@ -212,7 +212,8 @@ void TaskMirroredParameters::onSelectionChanged(const Gui::SelectionChanges& msg
|
|||
|
||||
std::vector<std::string> mirrorPlanes;
|
||||
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->setCurrentIndex(maxcount);
|
||||
ui->comboPlane->addItem(tr("Select reference..."));
|
||||
|
|
|
@ -209,8 +209,8 @@ void TaskPolarPatternParameters::onSelectionChanged(const Gui::SelectionChanges&
|
|||
if (!blockUpdate) {
|
||||
std::vector<std::string> axes;
|
||||
App::DocumentObject* selObj;
|
||||
getReferencedSelection(msg, selObj, axes);
|
||||
PartDesign::PolarPattern* pcPolarPattern = static_cast<PartDesign::PolarPattern*>(getObject());
|
||||
getReferencedSelection(pcPolarPattern, msg, selObj, axes);
|
||||
pcPolarPattern->Axis.setValue(selObj, axes);
|
||||
|
||||
recomputeFeature();
|
||||
|
@ -222,7 +222,8 @@ void TaskPolarPatternParameters::onSelectionChanged(const Gui::SelectionChanges&
|
|||
|
||||
std::vector<std::string> axes;
|
||||
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->setCurrentIndex(1);
|
||||
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));
|
||||
}
|
||||
|
||||
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
|
||||
|
|
|
@ -86,10 +86,7 @@ protected:
|
|||
void hideOriginals();
|
||||
void showOriginals();
|
||||
|
||||
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);
|
||||
void addReferenceSelectionGate(bool edge, bool face);
|
||||
|
||||
bool isViewUpdated() const;
|
||||
int getUpdateViewTimeout() const;
|
||||
|
|
Loading…
Reference in New Issue
Block a user