Salome HOME
Merge branch 'vsr/make_test' into Dev_1.5.0
[modules/shaper.git] / src / XGUI / XGUI_Workshop.h
index c0ecf8d730bfcf06c163589dc055795764b37563..628e721ce5bcd756319cc8ce474801f882d82226 100644 (file)
@@ -24,6 +24,7 @@ class XGUI_ActionsMgr;
 class XGUI_ContextMenuMgr;
 class XGUI_Displayer;
 class XGUI_ErrorDialog;
+class XGUI_ErrorMgr;
 class XGUI_ModuleConnector;
 class XGUI_ObjectsBrowser;
 class XGUI_OperationMgr;
@@ -61,10 +62,10 @@ Q_OBJECT
   //! Starting of the application
   void startApplication();
 
-  // Activates the module controls. Should be called after module creation
+  /// Activates the module controls. Should be called after module creation
   void activateModule();
 
-  // Deactivates the module controls. Should be called after module creation
+  /// Deactivates the module controls. Should be called after module creation
   void deactivateModule();
 
   //! Returns main window (Desktop) of the application
@@ -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
   {
@@ -142,7 +149,7 @@ Q_OBJECT
     return myViewerProxy;
   }
 
-  /// Returns the module connectory
+  /// Returns the module connector
   /// \returns the instance of connector
   XGUI_ModuleConnector* moduleConnector() 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;
@@ -178,7 +190,7 @@ Q_OBJECT
   //! Show the given features in 3d Viewer
   void showOnlyObjects(const QObjectPtrList& theList);
 
-  /// Set display mode for the given onjects
+  /// Set display mode for the given objects
   /// \param theList a list of displayed objects
   /// \param theMode a mode to set (see \ref XGUI_Displayer)
   void setDisplayMode(const QObjectPtrList& theList, int theMode);
@@ -189,10 +201,10 @@ Q_OBJECT
     return myModule;
   }
 
-  /// Returns current directory whic contains data files
+  /// Returns current directory which contains data files
   QString currentDataDir() const { return myCurrentDir; }
 
-  /// Returns current directory whic contains data files
+  /// Returns current directory which contains data files
   void setCurrentDataDir(const QString& theDir) { myCurrentDir = theDir; }
 
   /**
@@ -203,12 +215,12 @@ Q_OBJECT
   void saveDocument(const QString& theName, std::list<std::string>& theFileNames);
 
   /**
-   * If there is an active (uncommited) operation shows a prompt to abort it
+   * If there is an active (uncommitted) operation shows a prompt to abort it
    * and performs abortion if user agreed. Returns true if
    * - 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.
@@ -229,11 +241,24 @@ 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);
+
+  /// Has to be called in order to display objects with visibility status = true
+  void synchronizeViewer();
+
+  /// Has to be called in order to display objects from a cpecifed group with visibility status = true
+  /// \param theDoc the document for objects synchronisation
+  /// \param theGroup the group name
+  /// \param theUpdateViewer update viewer flag
+  void synchronizeGroupInViewer(const DocumentPtr& theDoc, const std::string& theGroup, bool theUpdateViewer);
+
 signals:
   /// Emitted when selection happens in Salome viewer
   void salomeViewerSelection();
 
-  /// Emitted when error in applivation happens
+  /// Emitted when error in application happens
   void errorOccurred(const QString&);
 
   //! the signal about the workshop actions states are updated.
@@ -252,14 +277,10 @@ signals:
    /// Update of commands status
   void updateCommandStatus();
 
-  // 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();
-
   /// update history list (undo/redo commands)
   void updateHistory();
 
-  /// Create a new dokument
+  /// Create a new document
   void onNew();
 
   /// Open document from file
@@ -298,31 +319,25 @@ 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. Firstly, 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();
 
-  /// Displau results from document
+  /// Display results from document
   /// \param theDoc a document
   void displayDocumentResults(DocumentPtr theDoc);
 
@@ -341,12 +356,12 @@ private:
   virtual void onOperationResumed(ModuleBase_Operation* theOperation);
 
   /// SLOT, that is called after the operation is stopped. Update workshop state, e.g.
-  /// hides the property panel and udpate the command status.
+  /// hides the property panel and update the command status.
   /// \param theOpertion a stopped operation
   virtual void onOperationStopped(ModuleBase_Operation* theOperation);
 
   /// SLOT, that is called after the operation is committed.
-  /// \param theOpertion a commmitted operation
+  /// \param theOpertion a committed operation
   virtual void onOperationCommitted(ModuleBase_Operation* theOperation);
 
   /// SLOT, that is called after the operation is aborted.
@@ -361,6 +376,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 committed 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 +427,7 @@ private:
 private:
   AppElements_MainWindow* myMainWindow;
   ModuleBase_IModule* myModule;
+  XGUI_ErrorMgr* myErrorMgr;
   XGUI_ObjectsBrowser* myObjectBrowser;
   XGUI_PropertyPanel* myPropertyPanel;
   XGUI_SelectionMgr* mySelector;