/// Redefinition of virtual method
virtual QSize minimumSizeHint() const
{
- int aHeight = 2*QFontMetrics( font() ).height();
+ int aHeight = 4/*2*/*QFontMetrics( font() ).height();
QSize aSize = QListWidget::minimumSizeHint();
return QSize( aSize.width(), aHeight );
}
#include <ModelAPI_AttributeSelectionList.h>
#include <ModelAPI_AttributeBoolean.h>
+#include <ModelAPI_Session.h>
+#include <ModelAPI_Validator.h>
+
SketchShapePlugin_Feature::SketchShapePlugin_Feature()
: ModelAPI_Feature()
{
void SketchShapePlugin_Feature::initAttributes()
{
data()->addAttribute(SKETCH_ID(), ModelAPI_AttributeSelection::typeId());
+
data()->addAttribute(VERTEX_LIST_ID(), ModelAPI_AttributeSelectionList::typeId());
data()->addAttribute(VERTEX_CHOICE_ID(), ModelAPI_AttributeBoolean::typeId());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), VERTEX_CHOICE_ID());
+
+ data()->addAttribute(EDGE_LIST_ID(), ModelAPI_AttributeSelectionList::typeId());
+ data()->addAttribute(EDGE_CHOICE_ID(), ModelAPI_AttributeBoolean::typeId());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), EDGE_CHOICE_ID());
+
+ data()->addAttribute(FACE_LIST_ID(), ModelAPI_AttributeSelectionList::typeId());
+ data()->addAttribute(FACE_CHOICE_ID(), ModelAPI_AttributeBoolean::typeId());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), FACE_CHOICE_ID());
}
void SketchShapePlugin_Feature::execute()
void SketchShapePlugin_Feature::attributeChanged(const std::string& theID)
{
+ if (theID == VERTEX_CHOICE_ID() ||
+ theID == EDGE_CHOICE_ID() ||
+ theID == FACE_CHOICE_ID()) {
+ std::string aListAttrId = theID == VERTEX_CHOICE_ID() ? VERTEX_LIST_ID() : (
+ theID == EDGE_CHOICE_ID() ? EDGE_LIST_ID() :
+ FACE_LIST_ID());
+
+ AttributeBooleanPtr aChoiceAttribute = std::dynamic_pointer_cast<ModelAPI_AttributeBoolean>(
+ data()->attribute(theID));
+ if (!aChoiceAttribute->value()) {
+ AttributeSelectionListPtr aListAttribute =
+ std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(data()->attribute(aListAttrId));
+ aListAttribute->clear();
+ }
+ }
+ else if (theID == VERTEX_LIST_ID() ||
+ theID == EDGE_LIST_ID() ||
+ theID == FACE_LIST_ID()) {
+ AttributeSelectionListPtr aSelectionListAttr =
+ std::dynamic_pointer_cast<ModelAPI_AttributeSelectionList>(data()->attribute(theID));
+ for (int i = 0, aSize = aSelectionListAttr->size(); i < aSize; i++) {
+ AttributeSelectionPtr aSelectAttr = aSelectionListAttr->value(i);
+ ObjectPtr anObject = aSelectAttr->context();
+ if (!anObject.get())
+ continue;
+ else {
+ FeaturePtr aFeature = ModelAPI_Feature::feature(anObject);
+ }
+ }
+ }
}
return MY_SKETCH_ID;
}
+ /// State whether the vertices are selectable
+ inline static const std::string& VERTEX_CHOICE_ID()
+ {
+ static const std::string MY_VERTEX_CHOICE_ID("VertexChoice");
+ return MY_VERTEX_CHOICE_ID;
+ }
+
/// List of vertices to be extracted
inline static const std::string& VERTEX_LIST_ID()
{
return MY_VERTEX_LIST_ID;
}
- /// State whether the vertices are selectable
- inline static const std::string& VERTEX_CHOICE_ID()
+ /// State whether the vertices are selectable
+ inline static const std::string& EDGE_CHOICE_ID()
{
- static const std::string MY_VERTEX_CHOICE_ID("VertexChoice");
- return MY_VERTEX_CHOICE_ID;
+ static const std::string MY_EDGE_CHOICE_ID("EdgeChoice");
+ return MY_EDGE_CHOICE_ID;
+ }
+
+ /// List of vertices to be extracted
+ inline static const std::string& EDGE_LIST_ID()
+ {
+ static const std::string MY_EDGE_LIST_ID("EdgeList");
+ return MY_EDGE_LIST_ID;
+ }
+
+ /// State whether the vertices are selectable
+ inline static const std::string& FACE_CHOICE_ID()
+ {
+ static const std::string MY_FACE_CHOICE_ID("FaceChoice");
+ return MY_FACE_CHOICE_ID;
+ }
+
+ /// List of vertices to be extracted
+ inline static const std::string& FACE_LIST_ID()
+ {
+ static const std::string MY_FACE_LIST_ID("FaceList");
+ return MY_FACE_LIST_ID;
}
/// Returns the kind of a feature
<boolvalue id="VertexChoice" label="VERTICES" default="true" tooltip="Vertices selection on sketch"/>
<sketch_multi_selector id="VertexList"
label=""
- tooltip="Select list of mirroring objects"
- type_choice="Vertices"
+ tooltip="Select list of vertices"
+ type_choice="Vertices Edges Faces"
+ use_external="false"
+ use_choice="false">
+ <validator id="SketchShapePlugin_FeatureValidator" />
+ </sketch_multi_selector>
+
+ <boolvalue id="EdgeChoice" label="EDGES" default="true" tooltip="Edges selection on sketch"/>
+ <sketch_multi_selector id="EdgeList"
+ label=""
+ tooltip="Select list of edges"
+ type_choice="Vertices Edges Faces"
+ use_external="false"
+ use_choice="false">
+ <validator id="SketchShapePlugin_FeatureValidator" />
+ </sketch_multi_selector>
+
+ <boolvalue id="FaceChoice" label="FACES" default="true" tooltip="Faces selection on sketch"/>
+ <sketch_multi_selector id="FaceList"
+ label=""
+ tooltip="Select list of faces"
+ type_choice="Vertices Edges Faces"
use_external="false"
use_choice="false">
<validator id="SketchShapePlugin_FeatureValidator" />