-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
-
-// File: ModuleBase_ModelWidget.h
-// Created: 25 Apr 2014
-// Author: Natalia ERMOLAEVA
+// Copyright (C) 2014-2017 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
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or
+// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+//
#ifndef MODULEBASE_MODELWIDGET_H
#define MODULEBASE_MODELWIDGET_H
#include <ModuleBase.h>
+#include <ModuleBase_ActionType.h>
+#include <ModuleBase_Definitions.h>
#include <ModuleBase_OperationFeature.h>
+#include <ModuleBase_ActionInfo.h>
+#include <ModuleBase_ActionParameter.h>
#include <ModelAPI_Feature.h>
+#include <SelectMgr_ListOfFilter.hxx>
+
#include <QWidget>
#include <memory>
class Config_WidgetAPI;
class Events_InfoMessage;
+class ModuleBase_IPropertyPanel;
class ModuleBase_IWorkshop;
class ModuleBase_ViewerPrs;
class ModuleBase_WidgetValidator;
/// \return the boolean result
bool isInitialized(ObjectPtr theObject) const;
+ /// Fills given container with selection modes if the widget has it
+ /// \param [out] theModuleSelectionModes module additional modes, -1 means all default modes
+ /// \param [out] theModes a container of modes
+ virtual void selectionModes(int& theModuleSelectionModes, QIntList& theModes);
+
+ /// Appends into container of workshop selection filters
+ /// \param [out] theModuleSelectionFilters module additional modes, -1 means all default modes
+ /// \param [out] theSelectionFilters selection filters
+ virtual void selectionFilters(int& theModuleSelectionFilters,
+ SelectMgr_ListOfFilter& theSelectionFilters);
+
/// Returns true, if default value of the widget should be computed
/// on operation's execute, like radius for circle's constraint (can not be zero)
bool isComputedDefault() const { return myIsComputedDefault; }
/// The method called when widget is deactivated
virtual void deactivate();
+ /// The method called if widget should be activated always
+ virtual bool needToBeActiated() { return false; }
+
/// Returns list of widget controls
/// \return a control list
virtual QList<QWidget*> getControls() const = 0;
/// \return Current Editing mode
bool isEditingMode() const { return myIsEditing; }
- /// Returns true if the event is processed. The default implementation is empty, returns false.
- virtual bool processEnter();
+ /// Returns true if the action can be processed. By default it is empty and returns false.
+ /// \param theActionType an action type
+ /// \param isActionEnabled if true, the enable state of the action
+ virtual bool canProcessAction(ModuleBase_ActionType theActionType, bool& isActionEnabled);
/// Returns true if the event is processed. The default implementation is empty, returns false.
- virtual bool processDelete();
+ virtual bool processAction(ModuleBase_ActionType theActionType,
+ const ActionParamPtr& theParam = ActionParamPtr());
+
+ /// Returns list of accessible actions for Undo/Redo commands. By default it returns empty list.
+ /// \param theActionType type of action. It can be ActionUndo or ActionRedo.
+ virtual QList<ActionInfo> actionsList(ModuleBase_ActionType theActionType) const
+ { return QList<ActionInfo>(); }
/// Sends Update and Redisplay for the given object
/// \param theObj is updating object
void updateObject(ObjectPtr theObj);
-#ifndef SUPPORT_NEW_MOVE
- /// Sends Move event for the given object
- /// \param theObj is object for moving
- static void moveObject(ObjectPtr theObj);
-
-#endif
/// Translate passed string with widget context()
virtual QString translate(const std::string& theStr) const;
+ /// Emit focus in widget to set this control as active in propety panel
+ void emitFocusInWidget() { emit focusInWidget(this); }
+
+ /// Finds model widget parent of the given sub widget
+ /// \param theWidget a candidate to be a child of the model widget
+ /// \param theProp a property panel instance
+ /// \return a model widget or NULL
+ static ModuleBase_ModelWidget* findModelWidget(ModuleBase_IPropertyPanel* theProp,
+ QWidget* theWidget);
signals:
/// The signal about widget values are to be changed
void beforeValuesChanged();
/// The method called when widget is activated
virtual void activateCustom() {};
-protected slots:
+ //// Returns true if the event is processed. The default implementation is empty, returns false.
+ virtual bool processEnter();
+
+ //// Returns true if the event is processed. The default implementation is empty, returns false.
+ virtual bool processEscape();
+
+ //// Returns true if the event is processed. The default implementation is empty, returns false.
+ virtual bool processDelete();
+
+ /// Returns true if envent is processed. It applyes workshop selection for the widget attribute.
+ virtual bool processSelection();
+
+ protected slots:
/// Processing of values changed in model widget by store the current value to the feature
void onWidgetValuesChanged();