Salome HOME
updated copyright message
[modules/shaper.git] / src / XGUI / XGUI_Tools.h
index 0fe6b2f5ae080056ee526b8089bd66e3fd7d03a1..ce37738d87869215ff648a7dc9ca618f4c15b16b 100644 (file)
+// 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 "XGUI.h"
 #include <QString>
+#include <QRect>
 
-/*!
-  \brief Convert the given parameter to the platform-specific library name.
+#include <ModelAPI_Feature.h>
+#include <ModuleBase_ViewerPrs.h>
 
-  The function appends platform-specific prefix (lib) and suffix (.dll/.so)
-  to the library file name.
-  For example, if \a str = "mylib", "libmylib.so" is returned for Linux and
-  mylib.dll for Windows.
+#include <ModuleBase_Definitions.h>
 
-  \param str short library name
-  \return full library name
-*/
-QString library( const QString& str );
+#include <memory>
+
+class QWidget;
+class XGUI_Workshop;
+class ModuleBase_IWorkshop;
 
 /*!
-  \brief Return directory part of the file path.
+ \ingroup GUI
+ \brief Commonly used methods in XGUI package and higher.
+ */
+namespace XGUI_Tools {
 
-  If the file path does not include directory part (the file is in the
 current directory), null string is returned.
+/**
\brief Return directory part of the file path.
 
-  \param path file path
-  \param abs if true (default) \a path parameter is treated as absolute file path
-  \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 isAbs if true (default) \a path parameter is treated as absolute file path
+ \return directory part of the file path
 */
-QString dir( const QString& path, bool isAbs = true);
+QString XGUI_EXPORT dir(const QString& path, bool isAbs = true);
 
+/*!
+ \brief Return file name part of the file path.
+
+ \param path file path
+ \param withExt if true (default) complete file name (with all
+ extension except the last) is returned, otherwise only base name
+ is returned
+ \return file name part of the file path
+ */
+QString XGUI_EXPORT file(const QString& path, bool withExt = true);
 
 /*!
-  \brief Return file name part of the file path.
+ \brief Add a slash (platform-specific) to the end of \a path
+ if it is not already there.
+ \param path directory path
+ \return modified path (with slash added to the end)
+ */
+QString XGUI_EXPORT addSlash(const QString& path);
 
-  \param path file path
-  \param withExt if true (default) complete file name (with all
-         extension except the last) is returned, otherwise only base name
-         is returned
-  \return file name part of the file path
-*/
-QString file( const QString& path, bool withExt = true );
+// 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);
 
 /*!
-  \brief Return extension part of the file path.
+ Returns true if the feature is a model object
+ \param theFeature a feature
+ */
+bool XGUI_EXPORT isModelObject(FeaturePtr theFeature);
 
-  \param path file path
-  \param full if true complete extension (all extensions, dot separated)
-         is returned, otherwise (default) only last extension is returned
-  \return extension part of the file path
-*/
-QString extension( const QString& path, bool full = false );
+/*!
+ Returns the string presentation of the given feature
+ \param theFeature a feature
+ */
+std::string XGUI_EXPORT featureInfo(FeaturePtr theFeature);
+
+/*!
+ Returns true if there are no parts in the document, which are not activated or
+ 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 theFeatures a list of checked features
+ \return a boolean value
+ */
+bool XGUI_EXPORT canRemoveOrRename(QWidget* theParent, const std::set<FeaturePtr>& theFeatures);
+
+/*! 
+ Check possibility to rename object
+ \param theObject an object to rename
+ \param theName a name
+ */
+bool canRename(const ObjectPtr& theObject, const QString& theName);
 
+/*!
+ Checks that the given string contains only ASCII symbols
+ \param theStr a string to check
+ */
+bool isAscii(const QString& theStr);
 
 /*!
-  \brief Add a slash (platform-specific) to the end of \a path
-         if it is not already there.
-  \param path directory path
-  \return modified path (with slash added to the end)
+ Returns converted workshop
+ \param theWorkshop an interface workshop
+ \return XGUI workshop instance
 */
-QString addSlash( const QString& path );
+XGUI_EXPORT XGUI_Workshop* workshop(ModuleBase_IWorkshop* theWorkshop);
+
+
+/// 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
\ No newline at end of file
+#endif