+bool PartSet_WidgetSketchLabel::focusTo()
+{
+ myLabel->setFocus();
+ return true;
+}
+
+void PartSet_WidgetSketchLabel::enableFocusProcessing()
+{
+ myLabel->installEventFilter(this);
+}
+
+void PartSet_WidgetSketchLabel::storeAttributeValue()
+{
+}
+
+void PartSet_WidgetSketchLabel::restoreAttributeValue(const bool theValid)
+{
+ // it is not necessary to save the previous plane value because the plane is chosen once
+ DataPtr aData = feature()->data();
+ AttributeSelectionPtr aSelAttr = std::dynamic_pointer_cast<ModelAPI_AttributeSelection>
+ (aData->attribute(SketchPlugin_SketchEntity::EXTERNAL_ID()));
+ if (aSelAttr) {
+ ResultPtr anEmptyResult;
+ GeomShapePtr anEmptyShape;
+ aSelAttr->setValue(anEmptyResult, anEmptyShape);
+ }
+}
+
+bool PartSet_WidgetSketchLabel::setSelection(const Handle_SelectMgr_EntityOwner& theOwner)
+{
+ bool isOwnerSet = false;
+
+ ModuleBase_ViewerPrs aPrs;
+ myWorkshop->selector()->selection()->fillPresentation(aPrs, theOwner);
+
+ const TopoDS_Shape& aShape = aPrs.shape();
+ std::shared_ptr<GeomAPI_Dir> aDir;
+
+ if (aPrs.object() && (feature() != aPrs.object())) {
+ DataPtr aData = feature()->data();
+ AttributeSelectionPtr aSelAttr =
+ std::dynamic_pointer_cast<ModelAPI_AttributeSelection>
+ (aData->attribute(SketchPlugin_SketchEntity::EXTERNAL_ID()));
+ if (aSelAttr) {
+ ResultPtr aRes = std::dynamic_pointer_cast<ModelAPI_Result>(aPrs.object());
+ if (aRes) {
+ GeomShapePtr aShapePtr(new GeomAPI_Shape());
+ aShapePtr->setImpl(new TopoDS_Shape(aShape));
+ aSelAttr->setValue(aRes, aShapePtr);
+ isOwnerSet = true;
+ }
+ }
+ }
+ else if (!aShape.IsNull()) {
+ aDir = setSketchPlane(aShape);
+ isOwnerSet = aDir;
+ }
+ return isOwnerSet;
+}
+
+void PartSet_WidgetSketchLabel::activateCustom()