Attacher: display modes that can be reached

Attachment mode list used to display only the modes that fit current
references. Now, modes that can be reached by adding more references are
listed too, but grayed out.
This commit is contained in:
DeepSOIC
2016-05-03 02:07:05 +03:00
committed by wmayer
parent 176cc9f241
commit a0e99c425e
3 changed files with 29 additions and 6 deletions

View File

@@ -247,7 +247,8 @@ Base::Placement AttachEngine::placementFactory(const gp_Dir &ZAxis,
eMapMode AttachEngine::listMapModes(eSuggestResult& msg,
std::vector<eMapMode>* allApplicableModes,
std::set<eRefType>* nextRefTypeHint) const
std::set<eRefType>* nextRefTypeHint,
std::set<eMapMode>* reachableModes) const
{
//replace a pointer with a valid reference, to avoid checks for zero pointer everywhere
std::vector<eMapMode> buf;
@@ -263,6 +264,12 @@ eMapMode AttachEngine::listMapModes(eSuggestResult& msg,
std::set<eRefType> &hints = *nextRefTypeHint;
hints.clear();
std::set<eMapMode> buf3;
if (reachableModes == 0)
reachableModes = &buf3;
std::set<eMapMode> &mlist_reachable = *reachableModes;
mlist_reachable.clear();
std::vector<App::GeoFeature*> parts;
std::vector<const TopoDS_Shape*> shapes;
@@ -305,8 +312,10 @@ eMapMode AttachEngine::listMapModes(eSuggestResult& msg,
}
}
if (score > 0 && str.size() > typeStr.size())
if (score > 0 && str.size() > typeStr.size()){
hints.insert(str[typeStr.size()]);
reachableModes->insert(eMapMode(iMode));
}
//size check is last, because we needed to collect hints
if (str.size() != typeStr.size())

View File

@@ -216,10 +216,13 @@ public: //methods
* right type.
*
* @param nextRefTypeHint (output). A hint of what can be added to references.
*
* @param reachableModes (output). List of modes that can be reached by selecing more references.
*/
virtual eMapMode listMapModes(eSuggestResult &msg,
std::vector<eMapMode>* allApplicableModes = 0,
std::set<eRefType>* nextRefTypeHint = 0) const;
std::set<eRefType>* nextRefTypeHint = 0,
std::set<eMapMode> *reachableModes = 0) const;
/**
* @brief getHint function returns a set of types that user can add to