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:
@@ -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())
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user