Salome HOME
updated copyright message
[modules/shaper.git] / src / XGUI / XGUI_Tools.h
index 21ca7356d04f531cd42ab29e7fc8b921ecb5440e..ce37738d87869215ff648a7dc9ca618f4c15b16b 100644 (file)
@@ -1,4 +1,21 @@
-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
+// Copyright (C) 2014-2023  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 XGUI_Tools_H
 #define XGUI_Tools_H
 #include <QRect>
 
 #include <ModelAPI_Feature.h>
+#include <ModuleBase_ViewerPrs.h>
 
 #include <ModuleBase_Definitions.h>
 
 #include <memory>
 
 class QWidget;
+class XGUI_Workshop;
+class ModuleBase_IWorkshop;
 
 /*!
  \ingroup GUI
+ \brief Commonly used methods in XGUI package and higher.
+ */
+namespace XGUI_Tools {
+
+/**
  \brief Return directory part of the file path.
 
  If the file path does not include directory part (the file is in the
  current directory), null string is returned.
 
  \param path file path
- \param abs if true (default) \a path parameter is treated as absolute file path
+ \param isAbs if true (default) \a path parameter is treated as absolute file path
  \return directory part of the file path
- */
-namespace XGUI_Tools {
-
-/**
-* Returns directory name from name of file
-* \param path a path to a file
-* \param isAbs is absolute or relative path
 */
 QString XGUI_EXPORT dir(const QString& path, bool isAbs = true);
 
@@ -56,6 +74,12 @@ QString XGUI_EXPORT addSlash(const QString& path);
 
 // The model concerning tools
 
+/*! Unite object names in one string using the separator between values
+ \param theObjects a list of objects
+ \param theSeparator a separator
+ */
+QString unionOfObjectNames(const QObjectPtrList& theObjects, const QString& theSeparator);
+
 /*!
  Returns true if the feature is a model object
  \param theFeature a feature
@@ -73,10 +97,10 @@ std::string XGUI_EXPORT featureInfo(FeaturePtr theFeature);
  all objects in the list are not PartSet document.
  It shows the warning control if the result is false.
  \param theParent a parent for the warning control
- \param aList a list of object
+ \param theFeatures a list of checked features
  \return a boolean value
  */
-bool XGUI_EXPORT canRemoveOrRename(QWidget* theParent, const QObjectPtrList& aList);
+bool XGUI_EXPORT canRemoveOrRename(QWidget* theParent, const std::set<FeaturePtr>& theFeatures);
 
 /*! 
  Check possibility to rename object
@@ -86,48 +110,31 @@ bool XGUI_EXPORT canRemoveOrRename(QWidget* theParent, const QObjectPtrList& aLi
 bool canRename(const ObjectPtr& theObject, const QString& theName);
 
 /*!
- Returns true if there are no parts in the document, which are not activated
- \param theNotActivatedNames out string which contains not activated names
- \return a boolean value
+ Checks that the given string contains only ASCII symbols
+ \param theStr a string to check
  */
-bool XGUI_EXPORT allDocumentsActivated(QString& theNotActivatedNames);
+bool isAscii(const QString& theStr);
 
 /*!
-  Returns a container of referenced feature to the current object in the object document.
-  \param theObject an object, which will be casted to a feature type
-  \param theRefFeatures an output container
- */
-void XGUI_EXPORT refsToFeatureInFeatureDocument(const ObjectPtr& theObject,
-                                                std::set<FeaturePtr>& theRefFeatures);
+ Returns converted workshop
+ \param theWorkshop an interface workshop
+ \return XGUI workshop instance
+*/
+XGUI_EXPORT XGUI_Workshop* workshop(ModuleBase_IWorkshop* theWorkshop);
 
-/*!
- Returns true if the object if a sub child of the feature. The feature is casted to the
- composite one. If it is possible, the sub object check happens. The method is applyed
- recursively to the feature subs.
- \param theObject a candidate to be a sub object
- \param theFeature a candidate to be a composite feature
- \return a boolean value
- */
-bool XGUI_EXPORT isSubOfComposite(const ObjectPtr& theObject, const FeaturePtr& theFeature);
 
-/*!
- Returns a container of references feature to the source object. The search happens in the object
- document and in other Part documents if the object belongs to the PartSet. The search is recursive,
- in other words it is applyed to set of the found objects until it is possible.
- It do not returns the referenced features to the object if this references is a composite feature
- which has the object as a sub object.
- \param theSourceObject an object, which references are searched
- \param theObject an intermediate recursive object, should be set in the source object
- \param theDirectRefFeatures direct references
- \param theIndirectRefFeatures indirect references
- \param theAlreadyProcessed set of processed elements, used for optimization (do not reanalyse processed)
- \return a boolean value
- */
-void XGUI_EXPORT refsToFeatureInAllDocuments(const ObjectPtr& theSourceObject,
-                                             const ObjectPtr& theObject,
-                                             std::set<FeaturePtr>& theDirectRefFeatures,
-                                             std::set<FeaturePtr>& theIndirectRefFeatures,
-                                             std::set<FeaturePtr>& theAlreadyProcessed);
+/// Generates a presentation name in form: <object_name>/<face>_<face_index>
+/// \param thePrs a presentation
+/// \return string value
+XGUI_EXPORT QString generateName(const std::shared_ptr<ModuleBase_ViewerPrs>& thePrs);
+
+/// Creates and returns the temporary directory (with random name) using the environment variable
+/// path to location of such directories,
+std::string getTmpDirByEnv( const char* thePathEnv);
+
+/// Removes files and directory where they are located
+void removeTemporaryFiles(const std::string& theDirectory,
+  const std::list<std::string>& theFiles);
 };
 
 #endif