Tulip 5.7.1
Large graphs analysis and drawing
Loading...
Searching...
No Matches
TulipItemEditorCreators.h
1/*
2 *
3 * This file is part of Tulip (https://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///@cond DOXYGEN_HIDDEN
20
21#ifndef TULIPITEMEDITORCREATORS_H
22#define TULIPITEMEDITORCREATORS_H
23
24#include <tulip/tulipconf.h>
25#include <tulip/PropertyTypes.h>
26#include <tulip/TlpQtTools.h>
27#include <tulip/TulipViewSettings.h>
28
29#include <QVariant>
30#include <QSize>
31
32class QWidget;
33class QPainter;
34class QStyleOptionViewItem;
35class QModelIndex;
36
37namespace tlp {
38
39class PropertyInterface;
40
41class TLP_QT_SCOPE TulipItemEditorCreator {
42public:
43 virtual ~TulipItemEditorCreator() {}
44 virtual QWidget *createWidget(QWidget *) const = 0;
45 virtual bool paint(QPainter *, const QStyleOptionViewItem &, const QVariant &,
46 const QModelIndex &) const;
47 virtual QString displayText(const QVariant &) const {
48 return "";
49 }
50
51 virtual QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const;
52
53 virtual void setEditorData(QWidget *, const QVariant &, bool isMandatory,
54 tlp::Graph *g = nullptr) = 0;
55 virtual QVariant editorData(QWidget *, tlp::Graph *g = nullptr) = 0;
56 virtual void setPropertyToEdit(tlp::PropertyInterface *) {}
57};
58
59template <typename T>
60class TLP_QT_SCOPE StringDisplayEditorCreator : public TulipItemEditorCreator {
61public:
62 inline QString displayText(const QVariant &v) const override {
63 return tlpStringToQString(T::toString(v.value<typename T::RealType>()));
64 }
65};
66
67class TLP_QT_SCOPE ColorEditorCreator : public tlp::TulipItemEditorCreator {
68public:
69 QWidget *createWidget(QWidget *) const override;
70 bool paint(QPainter *, const QStyleOptionViewItem &, const QVariant &,
71 const QModelIndex &) const override;
72 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
73 QVariant editorData(QWidget *, tlp::Graph *) override;
74};
75
76template <typename T>
77class NumberEditorCreator : public StringDisplayEditorCreator<T> {
78public:
79 QWidget *createWidget(QWidget *) const override;
80 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
81 QVariant editorData(QWidget *, tlp::Graph *) override;
82};
83
84template <typename T>
85class LineEditEditorCreator : public StringDisplayEditorCreator<T> {
86public:
87 QWidget *createWidget(QWidget *) const;
88 virtual void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *);
89 virtual QVariant editorData(QWidget *, tlp::Graph *);
90};
91
92template <typename T>
93class MultiLinesEditEditorCreator : public StringDisplayEditorCreator<T> {
94public:
95 QWidget *createWidget(QWidget *) const override;
96 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
97 QVariant editorData(QWidget *, tlp::Graph *) override;
98 QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const override;
99 bool paint(QPainter *, const QStyleOptionViewItem &, const QVariant &,
100 const QModelIndex &) const override;
101};
102
103class TLP_QT_SCOPE BooleanEditorCreator : public TulipItemEditorCreator {
104public:
105 QWidget *createWidget(QWidget *) const override;
106 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
107 QVariant editorData(QWidget *, tlp::Graph *) override;
108 QString displayText(const QVariant &) const override;
109};
110
111class TLP_QT_SCOPE CoordEditorCreator : public StringDisplayEditorCreator<tlp::PointType> {
112 bool editSize;
113
114public:
115 CoordEditorCreator() : editSize(false) {}
116 QWidget *createWidget(QWidget *) const override;
117 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
118 QVariant editorData(QWidget *, tlp::Graph *) override;
119 void setPropertyToEdit(tlp::PropertyInterface *prop) override;
120};
121
122template <typename PROP>
123class PropertyEditorCreator : public tlp::TulipItemEditorCreator {
124public:
125 QWidget *createWidget(QWidget *) const override;
126 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
127 QVariant editorData(QWidget *, tlp::Graph *) override;
128 QString displayText(const QVariant &) const override;
129};
130
131class TLP_QT_SCOPE PropertyInterfaceEditorCreator : public tlp::TulipItemEditorCreator {
132public:
133 QWidget *createWidget(QWidget *) const override;
134 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
135 QVariant editorData(QWidget *, tlp::Graph *) override;
136 QString displayText(const QVariant &) const override;
137};
138
139class TLP_QT_SCOPE NumericPropertyEditorCreator : public tlp::TulipItemEditorCreator {
140public:
141 QWidget *createWidget(QWidget *) const override;
142 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
143 QVariant editorData(QWidget *, tlp::Graph *) override;
144 QString displayText(const QVariant &) const override;
145};
146
147class TLP_QT_SCOPE ColorScaleEditorCreator : public tlp::TulipItemEditorCreator {
148public:
149 QWidget *createWidget(QWidget *) const override;
150 bool paint(QPainter *, const QStyleOptionViewItem &, const QVariant &,
151 const QModelIndex &) const override;
152 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
153 QVariant editorData(QWidget *, tlp::Graph *) override;
154};
155
156class TLP_QT_SCOPE StringCollectionEditorCreator : public tlp::TulipItemEditorCreator {
157public:
158 QWidget *createWidget(QWidget *) const override;
159 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
160 QVariant editorData(QWidget *, tlp::Graph *) override;
161 QString displayText(const QVariant &) const override;
162};
163
164class TLP_QT_SCOPE PropertiesCollectionEditorCreator : public tlp::TulipItemEditorCreator {
165public:
166 QWidget *createWidget(QWidget *) const override;
167 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
168 QVariant editorData(QWidget *, tlp::Graph *) override;
169 QString displayText(const QVariant &) const override;
170};
171
172class TLP_QT_SCOPE TulipFileDescriptorEditorCreator : public tlp::TulipItemEditorCreator {
173public:
174 QWidget *createWidget(QWidget *) const override;
175 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
176 QVariant editorData(QWidget *, tlp::Graph *) override;
177 bool paint(QPainter *, const QStyleOptionViewItem &, const QVariant &,
178 const QModelIndex &) const override;
179 QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const override;
180};
181
182class TLP_QT_SCOPE TextureFileEditorCreator : public tlp::TulipItemEditorCreator {
183public:
184 QWidget *createWidget(QWidget *) const override;
185 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
186 QVariant editorData(QWidget *, tlp::Graph *) override;
187 bool paint(QPainter *, const QStyleOptionViewItem &, const QVariant &,
188 const QModelIndex &index) const override;
189 QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const override;
190};
191
192class TLP_QT_SCOPE TulipFontIconCreator : public tlp::TulipItemEditorCreator {
193public:
194 QWidget *createWidget(QWidget *) const override;
195 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
196 QVariant editorData(QWidget *, tlp::Graph *) override;
197 bool paint(QPainter *, const QStyleOptionViewItem &, const QVariant &,
198 const QModelIndex &) const override;
199 QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const override;
200 QString displayText(const QVariant &) const override;
201};
202
203class TLP_QT_SCOPE NodeShapeEditorCreator : public tlp::TulipItemEditorCreator {
204public:
205 QWidget *createWidget(QWidget *) const override;
206 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
207 QVariant editorData(QWidget *, tlp::Graph *) override;
208 QString displayText(const QVariant &) const override;
209 bool paint(QPainter *, const QStyleOptionViewItem &, const QVariant &,
210 const QModelIndex &index) const override;
211 QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const override;
212};
213
214class TLP_QT_SCOPE EdgeExtremityShapeEditorCreator : public tlp::TulipItemEditorCreator {
215public:
216 QWidget *createWidget(QWidget *) const override;
217 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
218 QVariant editorData(QWidget *, tlp::Graph *) override;
219 QString displayText(const QVariant &) const override;
220 bool paint(QPainter *, const QStyleOptionViewItem &, const QVariant &,
221 const QModelIndex &index) const override;
222 QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const override;
223};
224
225class TLP_QT_SCOPE EdgeShapeEditorCreator : public tlp::TulipItemEditorCreator {
226public:
227 QWidget *createWidget(QWidget *) const override;
228 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
229 QVariant editorData(QWidget *, tlp::Graph *) override;
230 QString displayText(const QVariant &) const override;
231};
232
233template <typename ElementType>
234class VectorEditorCreator : public tlp::TulipItemEditorCreator {
235public:
236 QWidget *createWidget(QWidget *parent) const override;
237 void setEditorData(QWidget *editor, const QVariant &data, bool, tlp::Graph *) override;
238 QVariant editorData(QWidget *editor, tlp::Graph *) override;
239 QString displayText(const QVariant &data) const override;
240};
241
242class QVectorBoolEditorCreator : public tlp::TulipItemEditorCreator {
243public:
244 QWidget *createWidget(QWidget *parent) const override;
245 void setEditorData(QWidget *editor, const QVariant &data, bool, tlp::Graph *) override;
246 QVariant editorData(QWidget *editor, tlp::Graph *) override;
247 QString displayText(const QVariant &data) const override;
248};
249
250struct TLP_QT_SCOPE TulipFontEditorCreator : public tlp::TulipItemEditorCreator {
251 QWidget *createWidget(QWidget *) const override;
252 void setEditorData(QWidget *, const QVariant &, bool, tlp::Graph *) override;
253 QVariant editorData(QWidget *, tlp::Graph *) override;
254 QString displayText(const QVariant &) const override;
255};
256
257class TLP_QT_SCOPE TulipLabelPositionEditorCreator : public tlp::TulipItemEditorCreator {
258
259public:
260 QWidget *createWidget(QWidget *) const override;
261 void setEditorData(QWidget *w, const QVariant &var, bool, tlp::Graph *) override;
262 QVariant editorData(QWidget *, tlp::Graph *) override;
263 QString displayText(const QVariant &) const override;
264};
265
266class TLP_QT_SCOPE GraphEditorCreator : public tlp::TulipItemEditorCreator {
267public:
268 QWidget *createWidget(QWidget *parent) const override;
269 void setEditorData(QWidget *w, const QVariant &var, bool, tlp::Graph *) override;
270 QVariant editorData(QWidget *, tlp::Graph *) override;
271 QString displayText(const QVariant &) const override;
272};
273
274class TLP_QT_SCOPE EdgeSetEditorCreator : public tlp::TulipItemEditorCreator {
275public:
276 QWidget *createWidget(QWidget *parent) const override;
277 void setEditorData(QWidget *w, const QVariant &var, bool, tlp::Graph *) override;
278 QVariant editorData(QWidget *, tlp::Graph *) override;
279 QString displayText(const QVariant &) const override;
280};
281
282class TLP_QT_SCOPE QStringEditorCreator : public tlp::TulipItemEditorCreator {
283public:
284 QWidget *createWidget(QWidget *parent) const override;
285 void setEditorData(QWidget *w, const QVariant &var, bool, tlp::Graph *) override;
286 QVariant editorData(QWidget *, tlp::Graph *) override;
287 QString displayText(const QVariant &) const override;
288 void setPropertyToEdit(tlp::PropertyInterface *prop) override;
289
290protected:
291 std::string propName;
292};
293
294class TLP_QT_SCOPE StdStringEditorCreator : public QStringEditorCreator {
295public:
296 void setEditorData(QWidget *w, const QVariant &var, bool, tlp::Graph *) override;
297 QVariant editorData(QWidget *, tlp::Graph *) override;
298 QString displayText(const QVariant &) const override;
299};
300
301class TLP_QT_SCOPE QStringListEditorCreator : public tlp::TulipItemEditorCreator {
302public:
303 QWidget *createWidget(QWidget *parent) const override;
304 void setEditorData(QWidget *w, const QVariant &var, bool, tlp::Graph *) override;
305 QVariant editorData(QWidget *, tlp::Graph *) override;
306 QString displayText(const QVariant &) const override;
307};
308
309TLP_QT_SCOPE void addIconToPool(const QString &iconName, const QIcon &icon);
310} // namespace tlp
311
312#if defined(__clang__)
313template class tlp::StringDisplayEditorCreator<tlp::PointType>;
314template class tlp::StringDisplayEditorCreator<tlp::SizeType>;
315#endif
316
317inline QString &truncateText(QString &text, const QString &trailingChars = " ...",
318 int maxChars = 45) {
319 if (text.size() > maxChars) {
320 text.truncate(maxChars - trailingChars.length());
321 text.append(trailingChars);
322 }
323
324 return text;
325}
326
327#include "cxx/TulipItemEditorCreators.cxx"
328
329#endif // TULIPITEMEDITORCREATORS_H
330///@endcond
PropertyInterface describes the interface of a graph property.
QString tlpStringToQString(const std::string &toConvert)
Convert a Tulip UTF-8 encoded std::string to a QString.
Definition: TlpQtTools.h:55