X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Workshop.h;h=8a96cfa803fd838891e70dad003e90cf6974a787;hb=8259f38e8a93b8a65d5c4ec88a39c211c7ae9c4d;hp=e72ad9b6229299592b15326523ea042bf2a6e1a8;hpb=43439fdaa624bc161321e9caf56e48f259187dad;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index e72ad9b62..8a96cfa80 100755 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -1,4 +1,22 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> +// 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 +// #ifndef XGUI_WORKSHOP_H #define XGUI_WORKSHOP_H @@ -27,6 +45,7 @@ class XGUI_ContextMenuMgr; class XGUI_Displayer; class XGUI_ErrorDialog; class XGUI_ErrorMgr; +class XGUI_MenuMgr; class XGUI_ModuleConnector; class XGUI_ObjectsBrowser; class XGUI_OperationMgr; @@ -46,7 +65,7 @@ class QDockWidget; class QMainWindow; class QAction; - +class Config_DataModelReader; /**\class XGUI_Workshop * \ingroup GUI @@ -57,7 +76,7 @@ class XGUI_EXPORT XGUI_Workshop : public QObject Q_OBJECT public: /// Constructor - /// \param theConnector a Salome connector object. + /// \param theConnector a Salome connector object. /// Used only if the workshop is launched in Salome environment XGUI_Workshop(XGUI_SalomeConnector* theConnector = 0); virtual ~XGUI_Workshop(); @@ -112,6 +131,12 @@ Q_OBJECT return myActionsMgr; } + //! ! Returns an actions manager + XGUI_MenuMgr* menuMgr() const + { + return myMenuMgr; + } + //! Returns property panel widget XGUI_PropertyPanel* propertyPanel() const { @@ -169,7 +194,7 @@ Q_OBJECT void deleteObjects(); //! Searches for selected features unused in other (not selected) features. If one or several - //! selected features are found, a warning message proposes to delete them. It contains + //! selected features are found, a warning message proposes to delete them. It contains //! the list of features to be deleted. void cleanHistory(); @@ -186,14 +211,25 @@ Q_OBJECT bool canBeShaded(const ObjectPtr& theObject) const; //! Returns true if there is at least one selected body/construction/group result + //! \param theActionName text of the checked action //! \return boolean value - bool canChangeColor() const; + bool canChangeProperty(const QString& theActionName) const; - //! Change color of the features if it is possible + //! Change color of the results if it is possible //! The operation is available for construction, body and group results //! theObjects a list of selected objects void changeColor(const QObjectPtrList& theObjects); + //! Change deflection of the results if it is possible + //! The operation is available for construction, body and group results + //! theObjects a list of selected objects + void changeDeflection(const QObjectPtrList& theObjects); + + //! Change transparency of the results if it is possible + //! The operation is available for construction, body and group results + //! theObjects a list of selected objects + void changeTransparency(const QObjectPtrList& theObjects); + //! Show the given features in 3d Viewer void showObjects(const QObjectPtrList& theList, bool isVisible); @@ -239,12 +275,16 @@ Q_OBJECT */ bool abortAllOperations(); + /// Updates workshop state according to the started operation, e.g. visualizes the property panel + /// and connect to it. + /// \param theOpertion a started operation + void operationStarted(ModuleBase_Operation* theOperation); + + //! Delete features. Delete the referenced features. There can be a question with a list of //! referenced objects. - //! \param theList an objects to be deleted - //! \param theIgnoredFeatures a list of features to be ignored during delete - bool deleteFeatures(const QObjectPtrList& theFeatures, - const std::set& theIgnoredFeatures = std::set()); + //! \param theFeatures a list of objects to be deleted + bool deleteFeatures(const QObjectPtrList& theFeatures); /// Deactivates the object, if it is active and the module returns that the activation /// of selection for the object is not possible currently(the current operation uses it) @@ -256,42 +296,58 @@ Q_OBJECT /// \param theFeature a feature bool isFeatureOfNested(const FeaturePtr& theFeature); + //! Shows the message in the status bar + //! \param theMessage a message + void setStatusBarMessage(const QString& theMessage); + /// 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 + /// Has to be called in order to display objects from a specifed 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); + void synchronizeGroupInViewer(const DocumentPtr& theDoc, + const std::string& theGroup, + bool theUpdateViewer); /// 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); + void fillPropertyPanel(ModuleBase_Operation* theOperation); /// Connects or disconnects to the value changed signal of the property panel widgets /// \param isToConnect a boolean value whether connect or disconnect void connectToPropertyPanel(const bool isToConnect); /// Returns defailt selection mode in 3d viewer - int viewerSelectionMode() const { return myViewerSelMode; } + QIntList viewerSelectionModes() const { return myViewerSelMode; } /// Highlights result objects in Object Browser according to /// features found in the given list void highlightResults(const QObjectPtrList& theObjects); + /// Highlights feature objects in Object Browser according to + /// features found in the given list + void highlightFeature(const QObjectPtrList& theObjects); + + /// Returns Data Model XML reader which contains information about + /// Data structure configuration + const Config_DataModelReader* dataModelXMLReader() const { return myDataModelXMLReader; } + /// A constant string used for "Move to end" command definition /// It is used for specific processing of Undo/Redo for this command. static QString MOVE_TO_END_COMMAND; + //! Closes all in the current session and load the directory + //! \param theDirectory a path to directory + void openDirectory(const QString& theDirectory); + signals: /// Emitted when selection happens in Salome viewer void salomeViewerSelection(); - /// Emitted when error in application happens - void errorOccurred(const QString&); - //! the signal about the workshop actions states are updated. void commandStatusUpdated(); @@ -334,6 +390,9 @@ signals: /// differs in the new state of paged container void onValuesChanged(); + /// Listens the corresponded signal of model widget and updates Apply button state by feature + void onWidgetObjectUpdated(); + /// Show property panel void showPropertyPanel(); @@ -366,6 +425,11 @@ signals: /// Activates/deactivates the trihedron in the viewer AIS context void onTrihedronVisibilityChanged(bool theState); + /// Apply the current transparency value if preview in transparency dialog is switched on + void onTransparencyValueChanged(); + + /// Switch on/off preview of transparency change + void onPreviewStateChanged(); protected: /// Sets the granted operations for the parameter operation. Firstly, it finds the nested features @@ -373,39 +437,6 @@ signals: /// \param theOperation an operation void setGrantedFeatures(ModuleBase_Operation* theOperation); - //! Find all referenced features. Return direct and indirect lists of referenced object - //! \param theList an objects to be checked - //! \param aDirectRefFeatures a list of direct reference features - //! \param aIndirectRefFeatures a list of features which depend on the feature through others - void findReferences(const QObjectPtrList& theList, - std::set& aDirectRefFeatures, - std::set& aIndirectRefFeatures); - - //! Shows a dialog box about references. Ask whether they should be also removed. - //! \param theList an objects to be checked - //! \param aDirectRefFeatures a list of direct reference features - //! \param aIndirectRefFeatures a list of features which depend on the feature through others - //! \param theParent a parent widget for the question message box - //! \param doDeleteReferences if there are parameters between features, ask if they should be - //! replaced to their meaning without corresponded features remove - //! \return true if in message box answer is Yes - bool isDeleteFeatureWithReferences(const QObjectPtrList& theList, - const std::set& aDirectRefFeatures, - const std::set& aIndirectRefFeatures, - QWidget* theParent, - bool& doDeleteReferences); - - //! \param theIgnoredFeatures a list of features to be ignored during delete - //! \param theList an objects to be checked - //! \param aDirectRefFeatures a list of direct reference features - //! \param aIndirectRefFeatures a list of features which depend on the feature through others - //! \param doDeleteReferences flag if referenced features should be removed also - bool deleteFeaturesInternal(const QObjectPtrList& theList, - const std::set& aDirectRefFeatures, - const std::set& aIndirectRefFeatures, - const std::set& theIgnoredFeatures, - const bool doDeleteReferences = true); - private: /// Display all results //void displayAllResults(); @@ -417,11 +448,20 @@ private: /// Display results from a group void displayGroupResults(DocumentPtr theDoc, std::string theGroup); + /// Insert folder object before currently selected feature + void insertFeatureFolder(); + + /// Insert an object to a folder above or below + void insertToFolder(bool isBefore); + + /// Insert an object to a folder above or below + void moveOutFolder(bool isBefore); + private slots: /// SLOT, that is called after the operation is started. Update workshop state according to /// the started operation, e.g. visualizes the property panel and connect to it. /// \param theOpertion a started operation - void onOperationStarted(ModuleBase_Operation* theOperation); + // void onOperationStarted(ModuleBase_Operation* theOperation); /// SLOT, that is called after the operation is resumed. Update workshop state according to /// the started operation, e.g. visualizes the property panel and connect to it. @@ -455,7 +495,7 @@ private: /// Called by Preview button clicked in the property panel. Sends signal to model to /// compute preview. - void onPreivewActionClicked(); + void onPreviewActionClicked(); private: /// Init menu @@ -489,15 +529,6 @@ private: //! \param theSlot - onUndo(int) or onRedo(int) SLOT void addHistoryMenu(QObject* theObject, const char* theSignal, const char* theSlot); - - /// Calls removeFeature of the document for each object in the list - //! \param theList an objects to be deleted - //! \param theIgnoredFeatures a list of features to be ignored during delete - //! \param theActionId an action command key to find context menu object types enabled for remove - bool removeFeatures(const QObjectPtrList& theList, - const std::set& theIgnoredFeatures, - const QString& theActionId); - //! Creates list of actions (commands) by given history list from session QList processHistoryList(const std::list&) const; @@ -514,6 +545,7 @@ private: XGUI_Displayer* myDisplayer; XGUI_OperationMgr* myOperationMgr; ///< manager to manipulate through the operations XGUI_ActionsMgr* myActionsMgr; + XGUI_MenuMgr* myMenuMgr; ///< manager to build menu/tool bar using order defined in XML XGUI_SalomeConnector* mySalomeConnector; XGUI_ErrorDialog* myErrorDlg; XGUI_ViewerProxy* myViewerProxy; @@ -523,7 +555,9 @@ private: QString myCurrentDir; - int myViewerSelMode; + QIntList myViewerSelMode; + + Config_DataModelReader* myDataModelXMLReader; }; #endif