X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_Module.h;h=a3a188ad0347ff9a10f376b7bc06d3f382f84928;hb=d22fc665c79c31c9eea0625e04c2e941adfdf7be;hp=68fe21e6ff22071e2d03136e57feaa5ae5b260cf;hpb=242d94c4e12eb2c2da5a324206b8364e4215c805;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_Module.h b/src/PartSet/PartSet_Module.h index 68fe21e6f..a3a188ad0 100644 --- a/src/PartSet/PartSet_Module.h +++ b/src/PartSet/PartSet_Module.h @@ -3,8 +3,12 @@ #include "PartSet.h" -#include +#include +#include +#include #include +#include +#include #include #include @@ -13,58 +17,57 @@ #include -class QMouseEvent; -class QKeyEvent; class PartSet_Listener; class ModelAPI_Feature; +class XGUI_ViewerPrs; +class XGUI_Workshop; +class ModuleBase_Operation; +class GeomAPI_AISObject; -class PARTSET_EXPORT PartSet_Module: public QObject, public XGUI_Module +class PARTSET_EXPORT PartSet_Module : public ModuleBase_IModule { Q_OBJECT -public: - PartSet_Module(XGUI_Workshop* theWshop); + public: + PartSet_Module(ModuleBase_IWorkshop* theWshop); virtual ~PartSet_Module(); - /// Returns the module workshop - /// \returns a workshop instance - XGUI_Workshop* workshop() const; - + /// Reads description of features from XML file virtual void createFeatures(); - virtual void featureCreated(XGUI_Command* theFeature); - virtual QStringList nestedFeatures(QString theFeature); + + /// Called on creation of menu item in desktop + virtual void featureCreated(QAction* theFeature); + std::string featureFile(const std::string&); /// Creates an operation and send it to loop /// \param theCmdId the operation name - virtual void launchOperation(const QString& theCmdId); + //virtual void launchOperation(const QString& theCmdId); - /// Displays or erase the current operation preview, if it has it. - /// \param theF - /// \param isDisplay the state whether the presentation should be displayed or erased - void visualizePreview(boost::shared_ptr theFeature, bool isDisplay); + /// Updates current operation preview, if it has it. + /// \param theCmdId the operation name + void updateCurrentPreview(const std::string& theCmdId); -public slots: - void onFeatureTriggered(); - /// SLOT, that is called after the operation is stopped. Disconnect the sketch feature - /// from the viewer selection and show the sketch preview. - void onOperationStopped(ModuleBase_Operation* theOperation); + /// Creates custom widgets for property panel + virtual QWidget* createWidgetByType(const std::string& theType, QWidget* theParent, + Config_WidgetAPI* theWidgetApi, + QList& theModelWidgets); - /// SLOT, that is called by the selection in the viewer is changed. - /// The selection is sent to the current operation if it listens selection. - void onSelectionChanged(); - /// SLOT, that is called by mouse click in the viewer. - /// The mouse released point is sent to the current operation to be processed. - /// \param theEvent the mouse event - void onMouseReleased(QMouseEvent* theEvent); - /// SLOT, that is called by the selection in the viewer is changed. - /// The mouse moved point is sent to the current operation to be processed. - /// \param theEvent the mouse event - void onMouseMoved(QMouseEvent* theEvent); + XGUI_Workshop* xWorkshop() const; - /// SLOT, that is called by the key in the viewer is clicked. - /// \param theEvent the mouse event - void onKeyRelease(QKeyEvent*); + + /// Returns list of selection modes for the given object for sketch operation + static QIntList sketchSelectionModes(ObjectPtr theFeature); + + public slots: + void onFeatureTriggered(); + /// SLOT, that is called after the operation is started. Connect on the focus activated signal + void onOperationStarted(ModuleBase_Operation* theOperation); + /// SLOT, that is called after the operation is stopped. Switched off the modfications performed + /// by the operation start + void onOperationStopped(ModuleBase_Operation* theOperation); + /// SLOT, that is called afetr the popup menu action clicked. + void onContextMenuCommand(const QString& theId, bool isChecked); /// SLOT, to apply to the current viewer the operation /// \param theX the X projection value @@ -72,27 +75,90 @@ public slots: /// \param theZ the Z projection value void onPlaneSelected(double theX, double theY, double theZ); - void onLaunchOperation(std::string theName, boost::shared_ptr theFeature); + /// SLOT, to fit all current viewer + void onFitAllView(); + + void onRestartOperation(std::string theName, ObjectPtr theFeature); + + /// SLOT, to switch on/off the multi selection in the viewer + /// \param theEnabled the enabled state + void onMultiSelectionEnabled(bool theEnabled); + + /// SLOT, to stop or start selection mode for the features + /// \param theFeatures a list of features to be disabled + /// \param theToStop the boolean state whether it it stopped or non stopped + void onStopSelection(const QList& theFeatures, const bool isStop); + + /// SLOT, to set selection + /// \param theFeatures a list of features to be selected + void onSetSelection(const QList& theFeatures); + + /// SLOT, Defines Sketch editing mode + /// \param thePln - plane of current sketch + void setSketchingMode(const gp_Pln& thePln); /// SLOT, to visualize the feature in another local context mode /// \param theFeature the feature to be put in another local context mode /// \param theMode the mode appeared on the feature - void onFeatureConstructed(boost::shared_ptr theFeature, - int theMode); -protected: + void onFeatureConstructed(ObjectPtr theFeature, int theMode); + + /// Slot which reacts to the point 2d set to the feature. Creates a constraint + /// \param the feature + /// \param the attribute of the feature + void onStorePoint2D(ObjectPtr theFeature, const std::string& theAttribute); + + /// Called when sketch is launched + void onSketchLaunched(); + +protected slots: + /// Called on selection changed event + virtual void onSelectionChanged(); + + /// SLOT, that is called by mouse press in the viewer. + /// The mouse released point is sent to the current operation to be processed. + /// \param theEvent the mouse event + virtual void onMousePressed(QMouseEvent* theEvent); + + /// SLOT, that is called by mouse release in the viewer. + /// The mouse released point is sent to the current operation to be processed. + /// \param theEvent the mouse event + virtual void onMouseReleased(QMouseEvent* theEvent); + + /// SLOT, that is called by mouse move in the viewer. + /// The mouse moved point is sent to the current operation to be processed. + /// \param theEvent the mouse event + virtual void onMouseMoved(QMouseEvent* theEvent); + + /// SLOT, that is called by the mouse double click in the viewer. + /// \param theEvent the mouse event + virtual void onMouseDoubleClick(QMouseEvent* theEvent); + + /// SLOT, that is called by the key in the viewer is clicked. + /// \param theEvent the mouse event + virtual void onKeyRelease(QKeyEvent* theEvent); + + protected: /// Creates a new operation /// \param theCmdId the operation name - ModuleBase_Operation* createOperation(const QString& theCmdId); + /// \param theFeatureKind a kind of feature to get the feature xml description + ModuleBase_Operation* createOperation(const std::string& theCmdId, + const std::string& theFeatureKind = ""); + - /// Sends the operation - /// \param theOperation the operation - void sendOperation(ModuleBase_Operation* theOperation); + protected: + //! Edits the feature + void editFeature(FeaturePtr theFeature); -private: - XGUI_Workshop* myWorkshop; + gp_Pln getSketchPlane(FeaturePtr theSketch) const; + + private: + //XGUI_Workshop* myWorkshop; PartSet_Listener* myListener; std::map myFeaturesInFiles; + + Handle(StdSelect_FaceFilter) myPlaneFilter; + Handle(ModuleBase_ShapeInPlaneFilter) mySketchFilter; }; #endif