X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_OperationMgr.h;h=503c79c05b026240a72a7befb15cd99c8ae82234;hb=6a23207a9154dac27c710190281aa5bfcf2bd498;hp=00d941981479e68337b4ac30d16b61a8d254c81e;hpb=7074394f8f08413d885f63be01df6bd5007b868c;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_OperationMgr.h b/src/XGUI/XGUI_OperationMgr.h old mode 100755 new mode 100644 index 00d941981..503c79c05 --- a/src/XGUI/XGUI_OperationMgr.h +++ b/src/XGUI/XGUI_OperationMgr.h @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2019 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 @@ -12,10 +12,9 @@ // // 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef XGUI_OperationMgr_H @@ -31,6 +30,7 @@ #include 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: @@ -112,6 +112,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 +138,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 +185,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 +207,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 +258,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 Operations; ///< definition for a list of operations Operations myOperations; ///< a stack of started operations. The active operation is on top, @@ -249,8 +277,9 @@ private: /// Current workshop ModuleBase_IWorkshop* myWorkshop; - + QMessageBox* myActiveMessageBox; XGUI_ShortCutListener* myShortCutListener; + bool mySHIFTPressed; }; #endif