-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
-
+// Copyright (C) 2014-2023 CEA, EDF
+//
+// 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 <ModuleBase_ActionInfo.h>
-#include <QStringList>
+#include <QList>
#include <QMap>
class XGUI_Workshop;
class SHAPERGUI_OCCSelector;
class OCCViewer_Viewer;
class CAM_Study;
+class QtxInfoPanel;
/**
* \ingroup Salome
/// \brief Definition of module standard windows
virtual void windows(QMap<int, int>& 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
//--- 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
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);
/// \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;
+ /// Creates menu/tool bar actions for loaded features stored in the menu manager
+ virtual void createFeatureActions();
- virtual QAction* command(const QString& theId) const;
+ virtual QMainWindow* desktop() const;
- //! Stores XML information for the feature kind
+ //! 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,
//! Returns list of defined actions (just by SHAPER module)
virtual QList<QAction*> commandList() const;
- //! Returns list of Ids of defined actions (just by SHAPER 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<QString, QIntList> 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<QString, QIntList> 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
/// 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();
/// Abort all operations
virtual bool abortAllOperations();
+private slots:
+ void onWhatIs(bool isToggled);
+
+ void onEditToolbars();
+
private:
/// Create selector for OCC Viewer
/// \param theMgr view manager
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<QString, QIntList>& 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<QString>& theActions);
+
+ void hideInternalWindows();
+
+ /// List of registered nested actions
+ QStringList myNestedActionsList;
/// Reference to workshop
XGUI_Workshop* myWorkshop;
/// 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<QString, QIntList> myToolbars;
+ QMap<QString, QIntList> myDefaultToolbars;
+ bool myIsToolbarsModified;
+
+ std::vector<int> myOldSelectionColor;
+ Handle(Graphic3d_AspectMarker3d) myHighlightPointAspect;
+
+ double myAxisArrowRate;
};
#endif