X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSHAPERGUI%2FSHAPERGUI.h;h=964d4bfe010c65b67abe9775b9567aa32208fec9;hb=64bd95cebe79a5639800635efb7b0d21f13c079c;hp=4920b1bee4347a5033cadfbb49bc5b9a9af2639d;hpb=a9bdd72e4748283ea455fef89e11eb0eae3b7b48;p=modules%2Fshaper.git diff --git a/src/SHAPERGUI/SHAPERGUI.h b/src/SHAPERGUI/SHAPERGUI.h index 4920b1bee..964d4bfe0 100644 --- a/src/SHAPERGUI/SHAPERGUI.h +++ b/src/SHAPERGUI/SHAPERGUI.h @@ -1,36 +1,53 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - - -#ifndef NewGeom_Module_H -#define NewGeom_Module_H - -#include "NewGeom.h" -#include "NewGeom_SalomeViewer.h" +// Copyright (C) 2014-2022 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 SHAPERGUI_H +#define SHAPERGUI_H + +#include "SHAPER_SHAPERGUI.h" +#include "SHAPERGUI_SalomeViewer.h" #include #include #include -#include +#include #include class XGUI_Workshop; -class NewGeom_OCCSelector; +class SHAPERGUI_OCCSelector; class OCCViewer_Viewer; class CAM_Study; +class QtxInfoPanel; /** * \ingroup Salome * An implementation of SALOME connector class for implementation of * XGUI functionality as a module of SALOME */ -class NewGeom_EXPORT NewGeom_Module : public LightApp_Module, public XGUI_SalomeConnector +class SHAPERGUI_EXPORT SHAPERGUI : public LightApp_Module, public XGUI_SalomeConnector { Q_OBJECT public: - NewGeom_Module(); - virtual ~NewGeom_Module(); + SHAPERGUI(); + virtual ~SHAPERGUI(); //----- LightAPP_Module interface --------------- @@ -41,7 +58,7 @@ Q_OBJECT /// \brief Definition of module standard windows virtual void windows(QMap& theWndMap) const; - /// \brief Definition of module viewer + /// \brief Definition of module viewer virtual void viewManagers(QStringList& theList) const; /// \brief The method is called on selection changed event @@ -49,14 +66,16 @@ Q_OBJECT //--- XGUI connector interface ----- - virtual QAction* addFeature(const QString& theWBName, const QString& theId, - const QString& theTitle, const QString& theTip, const QIcon& theIcon, - const QKeySequence& theKeys = QKeySequence(), - bool isCheckable = false); + virtual QAction* addFeature(const QString& theWBName, const QString& theTBName, + const QString& theId, const QString& theTitle, + const QString& theTip, const QIcon& theIcon, + const QKeySequence& theKeys/* = QKeySequence()*/, + bool isCheckable /*= false*/, const bool isAddSeparator/* = false*/, + const QString& theStatusTip); //! Add feature (QAction) in the \a theWBName toolbar with given \a theInfo about action virtual QAction* addFeature(const QString& theWBName, - const ActionInfo& theInfo); + const ActionInfo& theInfo, const bool isAddSeparator); /// Add a nested feature /// \param theWBName a workbench name @@ -73,10 +92,11 @@ Q_OBJECT virtual bool isFeatureOfNested(const QAction* theAction); virtual QAction* addDesktopCommand(const QString& theId, const QString& theTitle, - const QString& theTip, const QIcon& theIcon, - const QKeySequence& theKeys, bool isCheckable, - const char* theMenuSourceText, - const int theMenuPosition = 10); + const QString& theTip, const QIcon& theIcon, + const QKeySequence& theKeys, bool isCheckable, + const char* theMenuSourceText, const QString& theSubMenu = QString(), + const int theMenuPosition = 10, + const int theSuibMenuPosition = -1) Standard_OVERRIDE; virtual void addDesktopMenuSeparator(const char* theMenuSourceText, const int theMenuPosition = 10); @@ -85,28 +105,22 @@ Q_OBJECT /// \param theAction an ation to add /// \param theToolBarTitle a name of tool bar virtual bool addActionInToolbar( QAction* theAction, const QString& theToolBarTitle ); - - virtual QMainWindow* desktop() const; - - virtual QString commandId(const QAction* theCmd) const; - - virtual QAction* command(const QString& theId) const; - //! Set nested actions dependent on command Id - //! \param theId - the command ID - //! \param theActions - the list of nested actions - virtual void setNestedActions(const QString& theId, const QStringList& theActions); + /// Creates menu/tool bar actions for loaded features stored in the menu manager + virtual void createFeatureActions(); - //! Returns list of nested actions according to the given command ID - virtual QStringList nestedActions(const QString& theId) const; + virtual QMainWindow* desktop() const; - //! Set the document kind of the action by the given command Id - //! \param theId - the command ID - //! \param theKind - the document kind - virtual void setDocumentKind(const QString& theId, const QString& theKind); + //! Stores XML information for the feature kind + //! \param theFeatureId a feature kind + //! \param theMessage a container of the feature XML properties + virtual void setFeatureInfo(const QString& theFeatureId, + const std::shared_ptr& theMessage); - //! Returns the document kind of the action by the given command ID - virtual QString documentKind(const QString& theId) const; + //! Returns XML information for the feature kind + //! \param theFeatureId a feature kind + //! \return theMessage a container of the feature XML properties + virtual std::shared_ptr featureInfo(const QString& theFeatureId); //! Returns interface to Salome viewer virtual ModuleBase_IViewer* viewer() const @@ -114,38 +128,59 @@ Q_OBJECT return myProxyViewer; } - //! Returns list of defined actions (just by NewGeom module) + //! Returns list of defined actions (just by SHAPER module) virtual QList commandList() const; - //! Returns list of Ids of defined actions (just by NewGeom module) - virtual QStringList commandIdList() const; - - /// Redefinition of virtual function. + /// Redefinition of virtual function. /// \param theClient name of pop-up client /// \param theMenu popup menu instance /// \param theTitle menu title. virtual void contextMenuPopup(const QString& theClient, QMenu* theMenu, QString& theTitle); - /// Redefinition of virtual function for preferences creation. + /// Redefinition of virtual function for preferences creation. virtual void createPreferences(); - /// Redefinition of virtual function for preferences changed event. + /// Redefinition of virtual function for preferences changed event. virtual void preferencesChanged(const QString& theSection, const QString& theParam); - + + //! Shows the given text in status bar as a permanent text + //! \theInfo a string value + //! \theMsecs interval of msec milliseconds when the message will be hidden, if -1, it stays. + // If 0, default value is used, it is 3000 + virtual void putInfo(const QString& theInfo, const int theMSecs = 0); + /// \return Workshop class instance XGUI_Workshop* workshop() const { return myWorkshop; } /// \brief Set flag about opened document state void setIsOpened(bool theOpened) { myIsOpened = theOpened; } - /// Register current modules of SALOME - void inspectSalomeModules(); + virtual void updateModuleVisibilityState(); + + /// Returns list of the module commands + QIntList shaperActions() const { return myActionsList; } + + /// Returns structure of tool bars + QMap shaperToolbars() const { return myToolbars; } + + /// Returns free commands which are not in toolbars in the module + QIntList getFreeCommands() const; + + /// Returns structure of default tool bars + QMap defaultToolbars() const + { return (myDefaultToolbars.size() == 0)? myToolbars : myDefaultToolbars; } + + void resetToolbars(); + + void publishToStudy(); + + virtual void updateInfoPanel(); public slots: /// \brief The method is redefined to connect to the study viewer before the data /// model is filled by opened file. This file open will flush redisplay signals for, /// objects which should be visualized - virtual void connectToStudy(CAM_Study* theStudy); + //virtual void connectToStudy(CAM_Study* theStudy); /// \brief The method is called on the module activation /// \param theStudy current study @@ -167,6 +202,15 @@ Q_OBJECT /// Set preferences to default void onDefaultPreferences(); + /// Hide object browser if it was created during loading script + void onScriptLoaded(); + + /// Save application functionality with additional processing of aborting the current operation + void onSaveDocByShaper(); + + /// Save application functionality with additional processing of aborting the current operation + void onSaveAsDocByShaper(); + /// Obtains the current application and updates its actions void onUpdateCommandStatus(); @@ -180,42 +224,81 @@ Q_OBJECT /// Abort all operations virtual bool abortAllOperations(); +private slots: + void onWhatIs(bool isToggled); + + void onEditToolbars(); + private: /// Create selector for OCC Viewer /// \param theMgr view manager - NewGeom_OCCSelector* createSelector(SUIT_ViewManager* theMgr); + SHAPERGUI_OCCSelector* createSelector(SUIT_ViewManager* theMgr); - /// List of registered actions - QStringList myActionsList; + void registerCommandToolbar(const QString& theToolName, int theCommandId); + + int getNextCommandId() const; + + // Update current toolbars + void updateToolbars(const QMap& theNewToolbars); + + void saveToolbarsConfig(); + void loadToolbarsConfig(); + + //! Fill Info Panel in Part set mode + void fillPartSetInfoPanel(QtxInfoPanel* theInfoPanel); + + //! Fill Info Panel in Part mode + void fillPartInfoPanel(QtxInfoPanel* theInfoPanel); + + //! Fill Info Panel in Sketcher mode + void fillSketcherInfoPanel(QtxInfoPanel* theInfoPanel); + + //! Fill Info Panel in Sketcher mode + void addActionsToInfoGroup(QtxInfoPanel* theInfoPanel, const QString& theGroup, const QSet& theActions); + + void hideInternalWindows(); + + /// List of registered nested actions + QStringList myNestedActionsList; /// Reference to workshop XGUI_Workshop* myWorkshop; /// OCC viewer selector instance - NewGeom_OCCSelector* mySelector; + SHAPERGUI_OCCSelector* mySelector; /// Proxy viewer for connection to OCC Viewer in SALOME - NewGeom_SalomeViewer* myProxyViewer; - - /// Map of nested actions [ActionID: list of nested actions Id] - QMap myNestedActions; + SHAPERGUI_SalomeViewer* myProxyViewer; - /// Map of document types - QMap myDocumentType; + /// Map of feature kind to a container of XML properties for the feature + QMap > myFeaturesInfo; /// Flag of opened document state bool myIsOpened; - // the next parameters should be restored after this module deactivation - - /// The application value of the preferences parameter - bool myIsStorePositions; - + // the next parameter should be restored after this module deactivation /// The application value - bool myIsEditEnabled; + bool myIsEditEnabled; /// Popup manager QtxPopupMgr* myPopupMgr; + + QAction* myWhatIsAction; + + bool myIsInspectionVisible; + QDockWidget* myInspectionPanel; + bool myIsFacesPanelVisible; + + /// List of registered actions + QIntList myActionsList; + QMap myToolbars; + QMap myDefaultToolbars; + bool myIsToolbarsModified; + + std::vector myOldSelectionColor; + Handle(Graphic3d_AspectMarker3d) myHighlightPointAspect; + + double myAxisArrowRate; }; #endif