#define MODULEBASE_MODELWIDGET_H
#include <ModuleBase.h>
-#include <ModuleBase_ViewerPrs.h>
#include <ModuleBase_OperationFeature.h>
#include <ModelAPI_Feature.h>
class Config_WidgetAPI;
class ModuleBase_IWorkshop;
+class ModuleBase_ViewerPrs;
+class ModuleBase_WidgetValidator;
class QKeyEvent;
/**\class ModuleBase_ModelWidget
/// This value should be processed in the widget according to the needs
/// \param theValues the wrapped selection values
/// \param theToValidate the boolean value whether the value should be checked by filters
- virtual bool setSelection(QList<ModuleBase_ViewerPrs>& theValues,
+ virtual bool setSelection(QList<std::shared_ptr<ModuleBase_ViewerPrs>>& theValues,
const bool theToValidate)
{
return false;
/// Returns values which should be highlighted when the whidget is active
/// \param theValues a list of presentations
- virtual void getHighlighted(QList<ModuleBase_ViewerPrs>& theValues) {};
+ virtual void getHighlighted(QList<std::shared_ptr<ModuleBase_ViewerPrs>>& theValues) {};
+
+ /// Checks if the selection presentation is valid in widget
+ /// \param theValue a selected presentation in the view
+ /// \return a boolean value
+ virtual bool isValidSelectionCustom(const std::shared_ptr<ModuleBase_ViewerPrs>& theValue) { return true; }
+
+ /// Returns widget validator, by default it is NULL. To be created in a child if necessary
+ ModuleBase_WidgetValidator* widgetValidator() { return myWidgetValidator; }
/// Restore value from attribute data to the widget's control. Emits signals before and after store
/// \return True in success
bool restoreValue();
+ /// Saves the internal parameters to the given feature. Emits signals before and after store
+ /// \return True in success
+ bool storeValue();
+
/// Set focus to the first control of the current widget. The focus policy of the control is checked.
/// If the widget has the NonFocus focus policy, it is skipped.
/// \return the state whether the widget can accept the focus
void setFeature(const FeaturePtr& theFeature, const bool theToStoreValue = false);
/// Editing mode depends on mode of current operation. This value is defined by it.
- void setEditingMode(bool isEditing) { myIsEditing = isEditing; }
+ virtual void setEditingMode(bool isEditing) { myIsEditing = isEditing; }
/// \return Current Editing mode
bool isEditingMode() const { return myIsEditing; }
/// or store the control value to the feature
virtual void initializeValueByActivate();
- /// Saves the internal parameters to the given feature. Emits signals before and after store
- /// \return True in success
- bool storeValue();
-
/// Saves the internal parameters to the given feature
/// \return True in success
virtual bool storeValueCustom() const = 0;
void onWidgetValuesModified();
protected:
+ ModuleBase_WidgetValidator* myWidgetValidator; /// own validator, by default it is zero
/// The attribute name of the model feature
std::string myAttributeID;
bool myUseReset;
/// blocked flag of modification of the value state
bool myIsValueStateBlocked;
-
- friend class ModuleBase_OperationFeature; // to call storeValue() by commit if value state is ModifiedInPP
};
#endif