-// Copyright (C) 2014-2017 CEA/DEN, EDF R&D
+// 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
//
// 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or
-// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
#ifndef XGUI_WORKSHOP_H
#include <ModelAPI_Document.h>
#include <ModelAPI_Feature.h>
+#include <ModelAPI_ResultBody.h>
#include <ModuleBase_ActionInfo.h>
#include <ModuleBase_ActionType.h>
#include <QObject>
#include <QKeySequence>
#include <QMap>
+#include <QTemporaryDir>
#ifndef HAVE_SALOME
class AppElements_Command;
bool canMoveFeature();
/// Move selected features to be after the current feature
- void moveObjects();
+ void moveObjects(const bool theSplit);
+
+ /// Start a "Recover" feature on the selected one
+ void recoverFeature();
/// Returns true if the object can be shaded. If the object is a compsolid result, the method
/// checks subobjects of the result
/// theObjects a list of selected objects
void changeColor(const QObjectPtrList& theObjects);
+ /// Change Autocolor of the results if it is possible
+ /// The operation is available for group results
+ /// theObjects a list of selected objects
+ void changeAutoColor(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
/// theObjects a list of selected objects
void changeTransparency(const QObjectPtrList& theObjects);
+ /// Change number of iso-lines for the given objects
+ /// theObjects a list of selected objects
+ void changeIsoLines(const QObjectPtrList& theObjects);
+
/// Show the given features in 3d Viewer
void showObjects(const QObjectPtrList& theList, bool isVisible);
/// \param theMode a mode to set (see \ref XGUI_Displayer)
void setDisplayMode(const QObjectPtrList& theList, int theMode);
+ /// Toggle visualisation of edges direction
+ void toggleEdgesDirection(const QObjectPtrList& theList);
+
+ /// Toggle state of display priority (normal/in front)
+ void toggleBringToFront(const QObjectPtrList& theList);
+
/// 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);
/// Returns current module
ModuleBase_IModule* module() const { return myModule; }
- /// Returns current directory which contains data files
- QString currentDataDir() const { return myCurrentDir; }
+ /// Returns current file
+ QString currentDataFile() const { return myCurrentFile; }
- /// Returns current directory which contains data files
- void setCurrentDataDir(const QString& theDir) { myCurrentDir = theDir; }
+ /// Returns current file
+ void setCurrentDataFile(const QString& theDir) { myCurrentFile = theDir; }
/// Save the current document into a directory
/// \param theName - path to the directory
/// 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 synchronizeResultTree(const ResultBodyPtr& theRes, bool theUpdateViewer);
+
#endif
/// Update the property panel content by the XML description of the operation and set the panel
/// into the operation
/// 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;
+ /// A constant string used for "Move to end and split" command definition
+ /// It is used for specific processing of Undo/Redo for this command.
+ static QString MOVE_TO_END_SPLIT_COMMAND;
/// Closes all in the current session and load the directory
/// \param theDirectory a path to directory
- void openDirectory(const QString& theDirectory);
+ void openFile(const QString& theDirectory);
+
+ void updateAutoComputeState();
+
+ void deactivateCurrentSelector();
+
+ /// The method updates a Color Scale object in the viewer
+ void updateColorScaleVisibility();
+
+ /// The method updates a Text of Group names in the viewer.
+ void updateGroupsText();
+
+ void showHelpPage(const QString& thePage) const;
signals:
/// Emitted when selection happens in Salome viewer
/// Create a new document
void onNew();
+ /// Import part structure from a file
+ void onImportPart();
+
+ /// Import shape from a file
+ void onImportShape();
+
+ /// Import image from a file
+ void onImportImage();
+
+ /// Export features to a file
+ void onExportPart();
+
+ /// Export a shape to a file
+ void onExportShape();
+
#ifndef HAVE_SALOME
/// Exit application
void onExit();
/// Open preferences dialog box
void onPreferences();
-
- void onFileExec();
#endif
+ /// A slot calleon toggle of auto-compute button
+ void onAutoApply();
+
/// 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
/// 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);
+ void setGrantedFeatures(ModuleBase_Operation* theOperation);
private:
/// Display results from document
void onPreviewActionClicked();
/// Called on help button clicked in the property panel.
- void onHelpActionClicked();
+ void onHelpActionClicked() const;
+
+ //! The slot is called only once on resizing of Object Browser
+ void onDockSizeChanged();
private:
/// Init menu
void createDockWidgets();
/// Extends undo/redo toolbutton's with history menu
- /// \param theObject - in the OpenParts it is a QToolButton by itself,
+ /// \param theObject - in the CADBuilder it is a QToolButton by itself,
/// in salome mode - QAction that creates a button.
/// \param theSignal - void "updateUndoHistory" or "updateRedoHistory" SIGNAL;
/// \param theSlot - onUndo(int) or onRedo(int) SLOT
/// \param theTimes number of applies the given action
void processUndoRedo(const ModuleBase_ActionType theActionType, int theTimes);
+ /// Clear content of temporary directory
+ void clearTemporaryDir();
+
+ /// Set current point of view normal to selected planar face
+ /// \param toInvert invert the normal vector
+ void setNormalView(bool toInvert = false);
+
private:
#ifndef HAVE_SALOME
AppElements_MainWindow* myMainWindow; ///< desktop window
XGUI_ContextMenuMgr* myContextMenuMgr; ///< manager of context menu build
XGUI_ModuleConnector* myModuleConnector; ///< implementation of ModuleBase_IWorkshop
XGUI_WorkshopListener* myEventsListener; ///< processing of events
- QString myCurrentDir; ///< cached the last open directory
+ QString myCurrentFile; ///< cached the last open directory
QIntList myViewerSelMode; ///< selection modes set in the viewer
Config_DataModelReader* myDataModelXMLReader; ///< XML reader of data model
XGUI_InspectionPanel* myInspectionPanel; ///< container of feature attributes widgets
+ QTemporaryDir myTmpDir; ///< a direcory for uncompressed files
};
#endif