X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Workshop.h;h=9d67d191ec84944b7384f3addbbcaaecda90d759;hb=423c10234142d14d0d5de89383f2f96a4ec5930f;hp=5aa9e7802f64b58ae1de8f4a26e866e5f887b688;hpb=1b93f1881c5fec599aa79707f93c84dd9c287bc0;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index 5aa9e7802..9d67d191e 100755 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -27,6 +27,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,6 +47,7 @@ class QDockWidget; class QMainWindow; class QAction; +class Config_DataModelReader; /**\class XGUI_Workshop * \ingroup GUI @@ -56,7 +58,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(); @@ -111,6 +113,12 @@ Q_OBJECT return myActionsMgr; } + //! ! Returns an actions manager + XGUI_MenuMgr* menuMgr() const + { + return myMenuMgr; + } + //! Returns property panel widget XGUI_PropertyPanel* propertyPanel() const { @@ -167,6 +175,11 @@ Q_OBJECT //! Delete features 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 + //! the list of features to be deleted. + void cleanHistory(); + //! Returns true if the selected feature can be moved to the position after the current feature //! \return boolean value bool canMoveFeature(); @@ -183,11 +196,20 @@ Q_OBJECT //! \return boolean value bool canChangeColor() 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); + //! Returns true if there is at least one selected body/construction/group result + //! \return boolean value + bool canChangeDeflection() const; + + //! 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); + //! Show the given features in 3d Viewer void showObjects(const QObjectPtrList& theList, bool isVisible); @@ -199,6 +221,13 @@ Q_OBJECT /// \param theMode a mode to set (see \ref XGUI_Displayer) void setDisplayMode(const QObjectPtrList& theList, int theMode); + /// Set selection mode in viewer. If theMode=-1 then activate default mode + /// \param theMode the selection mode (according to TopAbs_ShapeEnum) + void setViewerSelectionMode(int theMode); + + /// Activates current selection mode for the given list of objects + void activateObjectsSelection(const QObjectPtrList& theList); + /// Returns current module ModuleBase_IModule* module() const { @@ -226,18 +255,16 @@ Q_OBJECT */ bool abortAllOperations(); - //! 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 - //! \param theParent a parent widget for the question message box - //! \param theAskAboutDeleteReferences if true, the message box with a list of references to the - //! 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& theIgnoredFeatures = std::set(), - QWidget* theParent = 0, - const bool theAskAboutDeleteReferences = false); + /// 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 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) @@ -249,22 +276,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 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 + 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(); @@ -296,13 +359,20 @@ signals: /// Redo previous command void onRedo(int times = 1); - /// Rebuild data tree - void onRebuild(); + // Rebuild data tree + //void onRebuild(); /// Validates the operation to change the "Apply" button state. /// \param thePreviousState the previous state of the widget void onWidgetStateChanged(int thePreviousState); + /// Calls activate of the current widget again. It is possible that selection filters are + /// 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(); @@ -332,21 +402,16 @@ signals: void onPreferences(); #endif + /// Activates/deactivates the trihedron in the viewer AIS context + void onTrihedronVisibilityChanged(bool theState); + + protected: /// 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 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); - - /// 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); - private: /// Display all results //void displayAllResults(); @@ -362,7 +427,7 @@ private: /// 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. @@ -394,14 +459,9 @@ private: /// 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))); - + /// Called by Preview button clicked in the property panel. Sends signal to model to + /// compute preview. + void onPreviewActionClicked(); private: /// Init menu @@ -451,6 +511,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; @@ -459,6 +520,10 @@ private: XGUI_WorkshopListener* myEventsListener; QString myCurrentDir; + + QIntList myViewerSelMode; + + Config_DataModelReader* myDataModelXMLReader; }; #endif