Salome HOME
updated copyright message
[modules/shaper.git] / src / XGUI / XGUI_OperationMgr.h
old mode 100755 (executable)
new mode 100644 (file)
index 00d9419..a478c3c
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2023  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // 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
+// 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>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef XGUI_OperationMgr_H
@@ -31,6 +30,7 @@
 #include <QStringList>
 
 class QKeyEvent;
+class QMessageBox;
 
 class ModuleBase_IWorkshop;
 class XGUI_Workshop;
@@ -52,8 +52,8 @@ public:
   /// Enumeration of kind of message that is used when trying to stop the active operation
   enum XGUI_MessageKind
   {
-    XGUI_AbortOperationMessage, //< warns and give possibility to abort current operation
-    XGUI_InformationMessage //< ask to apply the current operation before performing something
+    XGUI_AbortOperationMessage, ///< warns and give possibility to abort current operation
+    XGUI_InformationMessage ///< ask to apply the current operation before performing something
   };
 
 public:
@@ -78,6 +78,9 @@ public:
   /// Current workshop
   ModuleBase_IWorkshop* workshop() const { return myWorkshop; }
 
+  /// Current workshop
+  XGUI_Workshop* xworkshop() const;
+
   /// Returns the current operation or NULL
   /// \return the current operation
   ModuleBase_Operation* currentOperation() const;
@@ -112,6 +115,10 @@ public:
   /// else, or if there is no parent - returns NULL
   ModuleBase_Operation* previousOperation(ModuleBase_Operation* theOperation) const;
 
+  /// Returns an active widget of the current operation.
+  /// \return widget or NULL
+  ModuleBase_ModelWidget* activeWidget() const;
+
   /// Start the operation and append it to the stack of operations
   /// \param theOperation the started operation
   /// \return the state whether the current operation is started
@@ -134,20 +141,30 @@ public:
   /// \param theOperation an aborted operation
   void abortOperation(ModuleBase_Operation* theOperation);
 
+  /// Abort all operations
+  /// \param theMessageKind kind of shown warning message
   bool abortAllOperations(const XGUI_MessageKind& theMessageKind = XGUI_AbortOperationMessage);
 
+  /// Commits the current operation.
+  bool commitOperation();
+
+  /// Returns true if SHIFT is pressed
+  /// \param thePressed new boolean state
+  void setSHIFTPressed(const bool thePressed) { mySHIFTPressed = thePressed; }
+
+  /// Returns true if SHIFT is pressed
+  /// \return boolean value
+  bool hasSHIFTPressed() const { return mySHIFTPressed; }
+
 public slots:
   /// Slot that aborts the current operation.
   void onAbortOperation();
+  /// Slot that aborts all operations. It shows aborting message
+  void onAbortAllOperation();
   /// Slot that validates the current operation using the validateOperation method.
   void onValidateOperation();
   /// Commit all operations
   bool commitAllOperations();
-  /// Abort all operations
-  void onAbortAllOperations();
-
-protected slots:
-
 
 signals:
   /// Signal about an operation is stopped. It is emitted after the stop() of operation is done.
@@ -171,9 +188,6 @@ public: // TEMPORARY, it should be protected and be performed automatically
   /// \param theOperation the sent operation. If it is NULL, all operations in the stack are sent.
   void updateApplyOfOperations(ModuleBase_Operation* theOperation = 0);
 
-  /// Commits the current operatin if it is valid
-  bool commitOperation();
-
 protected: // TEMPORARY
   /// Sets the current operation or NULL
   /// \param theOperation the started operation
@@ -196,6 +210,11 @@ protected: // TEMPORARY
   /// \param theEvent the mouse event
   bool onKeyReleased(QObject *theObject, QKeyEvent* theEvent);
 
+  /// SLOT, that is called by the key in the property panel is clicked.
+  /// \param theObject a sender of the event
+  /// \param theEvent the mouse event
+  bool onKeyPressed(QObject *theObject, QKeyEvent* theEvent);
+
   /// The functionaly, that should be done by delete click
   /// Fistly the active widget processes it, then workshop. If no one does not
   /// process it, do nothing
@@ -242,6 +261,18 @@ private:
   /// \param theParent a candidate to be a parent
   static bool isChildObject(const QObject* theObject, const QObject* theParent);
 
+  /// Creates question message box with OK/Cancel buttons, where Cancel is default button,
+  /// Escape is Null button
+  /// \param theMessage text of the message
+  /// \return message box
+  static QMessageBox* createMessageBox(const QString& theMessage);
+
+  /// Creates information message box with OK button,
+  /// Escape is Null button
+  /// \param theMessage text of the message
+  /// \return message box
+  static QMessageBox* createInformationBox(const QString& theMessage);
+
  private:
   typedef QList<ModuleBase_Operation*> Operations;  ///< definition for a list of operations
   Operations myOperations;  ///< a stack of started operations. The active operation is on top,
@@ -249,8 +280,9 @@ private:
 
   /// Current workshop
   ModuleBase_IWorkshop* myWorkshop;
-
+  QMessageBox* myActiveMessageBox;
   XGUI_ShortCutListener* myShortCutListener;
+  bool mySHIFTPressed;
 };
 
 #endif