-// Copyright (C) 2014-2019 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2022 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <memory>
+#ifdef _MSC_VER
+#pragma warning(disable: 4100)
+#endif
+
class Config_WidgetAPI;
class Events_InfoMessage;
class ModuleBase_IPropertyPanel;
//! If the feature is correct, it returns an empty value
//! \param theValueStateChecked the boolean flag if the state of the widget should be checked
//! \return string value
- QString getError(const bool theValueStateChecked = true) const;
+ virtual QString getError(const bool theValueStateChecked = true) const;
/// Set the given wrapped value to the current widget
/// This value should be processed in the widget according to the needs
virtual void updateAfterActivation() {}
/// The method called if widget should be activated always
- virtual bool needToBeActiated() { return false; }
+ virtual bool needToBeActivated() { return false; }
/// Returns list of widget controls
/// \return a control list
/// \return Context for translation
virtual std::string context() const {
-
+ bool isAppendAttr = true;
std::string aContext = myFeatureId;
if(!aContext.empty() && !myAttributeID.empty()) {
- aContext += ":";
+ // workaround for ModelAPI_Filter's attributes:
+ // do not keep attribute name, because it may be changed
+ // if the same filter is selected twice or more.
+ if (myAttributeID.find(aContext + "__") != std::string::npos)
+ isAppendAttr = false;
+ else
+ aContext += ":";
}
- aContext += myAttributeID;
+ if (isAppendAttr)
+ aContext += myAttributeID;
return aContext;
}
/// \param theFeature a feature object
/// \param theToStoreValue a value about necessity to store the widget value to the feature
/// \param isUpdateFlushed a flag if update should be flushed on store value
- void setFeature(const FeaturePtr& theFeature, const bool theToStoreValue = false,
- const bool isUpdateFlushed = true);
+ virtual void setFeature(const FeaturePtr& theFeature, const bool theToStoreValue = false,
+ const bool isUpdateFlushed = true);
/// Editing mode depends on mode of current operation. This value is defined by it.
virtual void setEditingMode(bool isEditing) { myIsEditing = isEditing; }
/// By default this slot does nothing
virtual void onFeatureAccepted() {}
+ /// Returns True in case if the widget contains useful information for inspection tool
+ virtual bool isInformative() const { return true; }
+
+ /// If widgets has several panels then this method has to show a page which contains information
+ /// for current feature. By default does nothing
+ virtual void showInformativePage() {}
+
+ /// Returns True if data of its attribute was modified
+ virtual bool isModified() const { return false; }
+
+ virtual void setReadOnly(bool isReadOnly) { setEnabled(!isReadOnly); }
+
+ virtual bool isReadOnly() const { return !isEnabled(); }
+
+ /// Returns true if the widget should have access to external parts
+ bool canUseExternalParts() const { return myUseExternalParts; }
+
signals:
/// The signal about widget values are to be changed
void beforeValuesChanged();
/// A feature ID
std::string myFeatureId;
- /// Flag which shows that current operation is in editing mode
- bool myIsEditing;
-
/// Flag which shows whether current widget is obligatory
/// The non-obligatory widgets should not accept the focus in the property panel
bool myIsObligatory;
ValueState myState;
private:
+ /// Flag which shows that current operation is in editing mode
+ bool myIsEditing;
+
/// Value should be computed on execute, like radius for circle's constraint (can not be zero)
bool myIsComputedDefault;
bool myIsValueStateBlocked;
/// do not flush updated signal
bool myFlushUpdateBlocked;
+
+ bool myUpdateVisualAttributes;
+
+ /// A flag which indicates that current widget should have access to external parts
+ bool myUseExternalParts;
};
#endif