Salome HOME
Update error manager processing. Error is got firstly from the feature, then from...
[modules/shaper.git] / src / XGUI / XGUI_Workshop.h
index cb7a51dca2cad2d5eb41917c0819ada5b019b070..cddb72f72d5c2eb242fd5784a0ee25e626a06f94 100644 (file)
@@ -20,23 +20,24 @@ class AppElements_MainWindow;
 class AppElements_Command;
 class AppElements_Workbench;
 
-class XGUI_SelectionMgr;
+class XGUI_ActionsMgr;
+class XGUI_ContextMenuMgr;
 class XGUI_Displayer;
+class XGUI_ErrorDialog;
+class XGUI_ErrorMgr;
+class XGUI_ModuleConnector;
+class XGUI_ObjectsBrowser;
 class XGUI_OperationMgr;
+class XGUI_PropertyPanel;
 class XGUI_SalomeConnector;
-class XGUI_ObjectsBrowser;
-class XGUI_ActionsMgr;
-class XGUI_ErrorDialog;
 class XGUI_SalomeViewer;
+class XGUI_SelectionMgr;
 class XGUI_ViewerProxy;
-class XGUI_PropertyPanel;
-class XGUI_ContextMenuMgr;
-class XGUI_ModuleConnector;
 class XGUI_WorkshopListener;
 
-class ModuleBase_Operation;
 class ModuleBase_IModule;
 class ModuleBase_IViewer;
+class ModuleBase_Operation;
 
 class QWidget;
 class QDockWidget;
@@ -91,6 +92,12 @@ Q_OBJECT
     return myOperationMgr;
   }
 
+  //! ! Returns error manager.
+  XGUI_ErrorMgr* errorMgr() const
+  {
+    return myErrorMgr;
+  }
+
   //! ! Returns an actions manager
   XGUI_ActionsMgr* actionsMgr() const
   {
@@ -163,6 +170,11 @@ Q_OBJECT
   //! Move selected features to be after the current feature
   void moveObjects();
 
+  //! Returns true if the object can be shaded. If the object is a compsolid result, the method
+  //! checks subobjects of the result
+  //! \return boolean value
+  bool canBeShaded(const ObjectPtr& theObject) const;
+
   //! Returns true if there is at least one selected body/construction/group result
   //! \return boolean value
   bool canChangeColor() const;
@@ -208,7 +220,7 @@ Q_OBJECT
    * - operation aborted successfully
    * - there is no active operation
    */
-  bool isActiveOperationAborted();
+  bool abortAllOperations();
 
   //! Delete features. Delete the referenced features. There can be a question with a list of referenced
   //! objects.
@@ -219,7 +231,7 @@ Q_OBJECT
   //! objects features appear. If the user chose do not continue, the deletion is not performed
   //! \return the success of the delete 
   bool deleteFeatures(const QObjectPtrList& theList,
-                      const std::set<FeaturePtr>& theIgnoredFeatures,
+                      const std::set<FeaturePtr>& theIgnoredFeatures = std::set<FeaturePtr>(),
                       QWidget* theParent = 0,
                       const bool theAskAboutDeleteReferences = false);
 
@@ -229,6 +241,10 @@ Q_OBJECT
   /// \param theUpdateViewer a boolean flag to update viewer immediately
   void deactivateActiveObject(const ObjectPtr& theObject, const bool theUpdateViewer);
 
+  /// Returns true if the action of the feature is created to contain Accept/Cancel button
+  /// \param theFeature a feature
+  bool isFeatureOfNested(const FeaturePtr& theFeature);
+
 signals:
   /// Emitted when selection happens in Salome viewer
   void salomeViewerSelection();
@@ -279,10 +295,6 @@ signals:
   /// Rebuild data tree
   void onRebuild();
 
-  // Update enable state of accept all button. It is enabled if the the parent operation is
-  // valid and there are modifications in sesstion(undo can be performed).
-  void updateCompositeActionState();
-
   /// Open preferences dialog box
   void onPreferences();
 
@@ -298,26 +310,20 @@ signals:
   /// Hide object Browser
   void hideObjectBrowser();
 
-  /// Reaction on command call
-  //void onFeatureTriggered();
-
   /// Close document
   void closeDocument();
 
  protected:
-  /// Find the nested features and set them into the operation
+  /// Sets the granted operations for the parameter operation. Firtsly, it finds the nested features
+  /// and set them into the operation. Secondly, it asks the module about ids of granted operations.
   /// \param theOperation an operation
-  void setNestedFeatures(ModuleBase_Operation* theOperation);
+   void setGrantedFeatures(ModuleBase_Operation* theOperation);
 
   /// Update the property panel content by the XML description of the operation and set the panel
   /// into the operation
   /// \param theOperation an operation
   void setPropertyPanel(ModuleBase_Operation* theOperation);
 
-  /// Connect to operation signals
-  /// \param theOperation an operation
-  void connectWithOperation(ModuleBase_Operation* theOperation);
-
 private:
   /// Display all results
   //void displayAllResults();
@@ -361,6 +367,19 @@ private:
   /// Set waiting cursor
   void onStartWaiting();
 
+  /// Called by Ok button clicked in the property panel. Asks the error manager whether
+  /// the operation can be commited and do it if it returns true.
+  void onAcceptActionClicked();
+
+  /// Listens the corresponded signal from operation manager and send it with the Ok
+  /// action to operation manager.
+  /// \param theEnabled an enabled state for the action
+  //void onValidationStateChanged(bool theEnabled);
+
+  //connect(myOperationMgr,  SIGNAL(validationStateChanged(bool)),
+  //        aOkAct,          SLOT(setEnabled(bool)));
+
+
  private:
    /// Init menu
   void initMenu();
@@ -399,6 +418,7 @@ private:
 private:
   AppElements_MainWindow* myMainWindow;
   ModuleBase_IModule* myModule;
+  XGUI_ErrorMgr* myErrorMgr;
   XGUI_ObjectsBrowser* myObjectBrowser;
   XGUI_PropertyPanel* myPropertyPanel;
   XGUI_SelectionMgr* mySelector;