Tulip  5.6.0
Large graphs analysis and drawing
TlpQtTools.h
1 /*
2  *
3  * This file is part of Tulip (http://tulip.labri.fr)
4  *
5  * Authors: David Auber and the Tulip development Team
6  * from LaBRI, University of Bordeaux
7  *
8  * Tulip is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License
10  * as published by the Free Software Foundation, either version 3
11  * of the License, or (at your option) any later version.
12  *
13  * Tulip is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16  * See the GNU General Public License for more details.
17  *
18  */
19 
20 #ifndef _TLPQTTOOLS_H
21 #define _TLPQTTOOLS_H
22 
23 #include <QColor>
24 #include <QDebug>
25 
26 #include <tulip/Color.h>
27 #include <tulip/tulipconf.h>
28 #include <tulip/PropertyInterface.h>
29 
30 class QWidget;
31 class QString;
32 
33 namespace tlp {
34 
35 struct PluginLoader;
36 
37 TLP_QT_SCOPE bool getColorDialog(const QColor &color, QWidget *parent, const QString &title,
38  QColor &result);
39 
40 inline QColor colorToQColor(const Color &color) {
41  return QColor(color.getR(), color.getG(), color.getB(), color.getA());
42 }
43 inline Color QColorToColor(const QColor &color) {
44  return Color(color.red(), color.green(), color.blue(), color.alpha());
45 }
46 /**
47  * @brief Convert a QString to a Tulip UTF-8 encoded std::string.
48  **/
49 inline std::string QStringToTlpString(const QString &toConvert) {
50  return std::string(toConvert.toUtf8());
51 }
52 /**
53  * @brief Convert a Tulip UTF-8 encoded std::string to a QString
54  **/
55 inline QString tlpStringToQString(const std::string &toConvert) {
56  return QString::fromUtf8(toConvert.c_str());
57 }
58 
59 /**
60  * @brief Case insensitive comparison of two QStrings
61  **/
62 inline bool QStringCaseCmp(const QString &s1, const QString &s2) {
63  return QString::localeAwareCompare(s1, s2) < 0;
64 }
65 
66 /**
67  * @brief Convert the property type string to a label to display in the GUI.
68  * The property type label is the string to display in the GUI instead of the basic property type
69  *string.
70  **/
71 TLP_QT_SCOPE QString propertyTypeToPropertyTypeLabel(const std::string &typeName);
72 
73 /**
74  * @brief Get the string to display as property type for the given property.
75  * The property type label is the string to display in the GUI instead of the property type string.
76  * By example for a property of type "double" the label displayed in the GUI will be "Metric".
77  **/
78 inline QString propertyInterfaceToPropertyTypeLabel(const tlp::PropertyInterface *const property) {
79  return propertyTypeToPropertyTypeLabel(property->getTypename());
80 }
81 
82 /**
83  * @brief Convert the label of a property type to it's corresponding property type.
84  * The property type label is the string to display in the GUI instead of the property type string.
85  * By example for a property of type "double" the label displayed in the GUI will be "Metric".
86  **/
87 TLP_QT_SCOPE std::string propertyTypeLabelToPropertyType(const QString &typeNameLabel);
88 
89 /**
90  * @brief Gets the name of the package to retrieve for this version of tulip.
91  * The package name uses the Tulip release, platform (windows, unix, ...), architecture (x86,
92  *x86_64), and compiler used (GCC, Clang, MSVC) to determine which package this version can use.
93  *
94  * @param pluginName The name of the plugin for which we want the package name.
95  **/
96 TLP_QT_SCOPE QString getPluginPackageName(const QString &pluginName);
97 
98 TLP_QT_SCOPE QString getPluginStagingDirectory();
99 
100 TLP_QT_SCOPE QString getPluginLocalInstallationDir();
101 
102 TLP_QT_SCOPE QString localPluginsPath();
103 
104 /**
105  @brief Sets up environment when creating an executable using Tulip libraries
106  This method performs basic operations when starting a software using Tulip:
107  @list
108  @li It initializes the tulip library
109  @li it checks plugins to be discarded and uninstalls them
110  @li It loads plugins from the application path
111  @endlist
112  */
113 extern TLP_QT_SCOPE void initTulipSoftware(PluginLoader *loader = nullptr,
114  bool removeDiscardedPlugins = false);
115 
116 /**
117  * @brief redirect tlp::debug() to qDebug()
118  */
119 TLP_QT_SCOPE void redirectDebugOutputToQDebug();
120 
121 /**
122  * @brief redirect tlp::warning() to qWarning()
123  */
124 TLP_QT_SCOPE void redirectWarningOutputToQWarning();
125 
126 /**
127  * @brief redirect tlp::error() to qCritical()
128  */
129 TLP_QT_SCOPE void redirectErrorOutputToQCritical();
130 
131 TLP_QT_SCOPE void disableQtUserInput();
132 
133 TLP_QT_SCOPE void enableQtUserInput();
134 
135 /**
136  * @brief convert sql like filter into an acceptable regexp
137  */
138 TLP_QT_SCOPE void convertLikeFilter(QString &filter);
139 } // namespace tlp
140 
141 // QDebug extension
142 inline QDebug operator<<(QDebug dbg, const std::string &s) {
143  dbg.nospace() << s.c_str();
144  return dbg.space();
145 }
146 
147 // Qt 5.15 warning fix
148 #if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0))
149 #define QT_ENDL endl
150 #else
151 #define QT_ENDL Qt::endl
152 #endif
153 
154 // useful macros needed for menu actions building
155 #ifdef __APPLE__
156 #define SET_TOOLTIP_WITH_CTRL_SHORTCUT(a, tt, sc) \
157  a->setToolTip(QString(tt) + tlpStringToQString(" [⌘+") + sc + "]")
158 #else
159 #define SET_TOOLTIP_WITH_CTRL_SHORTCUT(a, tt, sc) a->setToolTip(QString(tt) + " [Ctrl+" + sc + "]")
160 #endif
161 
162 #define SET_TIPS_WITH_CTRL_SHORTCUT(a, tt, sc) \
163  SET_TOOLTIP_WITH_CTRL_SHORTCUT(a, tt, sc); \
164  a->setStatusTip(a->toolTip())
165 
166 #endif
tlp::initTulipSoftware
void initTulipSoftware(PluginLoader *loader=nullptr, bool removeDiscardedPlugins=false)
Sets up environment when creating an executable using Tulip libraries This method performs basic oper...
tlp::propertyInterfaceToPropertyTypeLabel
QString propertyInterfaceToPropertyTypeLabel(const tlp::PropertyInterface *const property)
Get the string to display as property type for the given property. The property type label is the str...
Definition: TlpQtTools.h:78
tlp::PropertyInterface::getTypename
virtual const std::string & getTypename() const =0
Gets a string describing the type of the property value (e.g. "graph", "double", "layout",...
tlp::convertLikeFilter
void convertLikeFilter(QString &filter)
convert sql like filter into an acceptable regexp
tlp::PropertyInterface
PropertyInterface describes the interface of a graph property.
Definition: PropertyInterface.h:60
tlp::redirectErrorOutputToQCritical
void redirectErrorOutputToQCritical()
redirect tlp::error() to qCritical()
tlp::propertyTypeLabelToPropertyType
std::string propertyTypeLabelToPropertyType(const QString &typeNameLabel)
Convert the label of a property type to it's corresponding property type. The property type label is ...
tlp::operator<<
std::ostream & operator<<(std::ostream &os, const Array< T, N > &array)
operator << stream operator to easily print an array, or save it to a file.
tlp::QStringToTlpString
std::string QStringToTlpString(const QString &toConvert)
Convert a QString to a Tulip UTF-8 encoded std::string.
Definition: TlpQtTools.h:49
tlp::redirectDebugOutputToQDebug
void redirectDebugOutputToQDebug()
redirect tlp::debug() to qDebug()
tlp::getPluginPackageName
QString getPluginPackageName(const QString &pluginName)
Gets the name of the package to retrieve for this version of tulip. The package name uses the Tulip r...
tlp::redirectWarningOutputToQWarning
void redirectWarningOutputToQWarning()
redirect tlp::warning() to qWarning()
tlp::propertyTypeToPropertyTypeLabel
QString propertyTypeToPropertyTypeLabel(const std::string &typeName)
Convert the property type string to a label to display in the GUI. The property type label is the str...
tlp
Definition: AbstractProperty.h:34
tlp::tlpStringToQString
QString tlpStringToQString(const std::string &toConvert)
Convert a Tulip UTF-8 encoded std::string to a QString.
Definition: TlpQtTools.h:55
tlp::QStringCaseCmp
bool QStringCaseCmp(const QString &s1, const QString &s2)
Case insensitive comparison of two QStrings.
Definition: TlpQtTools.h:62