21 #ifndef TULIPITEMEDITORCREATORS_H 22 #define TULIPITEMEDITORCREATORS_H 24 #include <tulip/tulipconf.h> 25 #include <tulip/PropertyTypes.h> 26 #include <tulip/TlpQtTools.h> 33 class QStyleOptionViewItem;
38 class PropertyInterface;
40 class TLP_QT_SCOPE TulipItemEditorCreator {
42 virtual ~TulipItemEditorCreator() {}
43 virtual QWidget* createWidget(QWidget*)
const=0;
44 virtual bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
45 virtual QString displayText(
const QVariant &)
const {
49 virtual QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
51 virtual void setEditorData(QWidget*,
const QVariant&,
bool isMandatory,
tlp::Graph* g=NULL)=0;
52 virtual QVariant editorData(QWidget*,
tlp::Graph* g=NULL)=0;
57 class TLP_QT_SCOPE StringDisplayEditorCreator:
public TulipItemEditorCreator {
59 inline QString displayText(
const QVariant& v)
const {
64 class TLP_QT_SCOPE ColorEditorCreator:
public tlp::TulipItemEditorCreator {
66 QWidget* createWidget(QWidget*)
const;
67 bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
68 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
69 virtual QVariant editorData(QWidget*,
tlp::Graph*);
73 class NumberEditorCreator:
public StringDisplayEditorCreator<T> {
75 QWidget* createWidget(QWidget*)
const;
76 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
77 virtual QVariant editorData(QWidget*,
tlp::Graph*);
81 class LineEditEditorCreator:
public StringDisplayEditorCreator<T> {
83 QWidget* createWidget(QWidget*)
const;
84 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
85 virtual QVariant editorData(QWidget*,
tlp::Graph*);
89 class MultiLinesEditEditorCreator:
public StringDisplayEditorCreator<T> {
91 QWidget* createWidget(QWidget*)
const;
92 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
93 virtual QVariant editorData(QWidget*,
tlp::Graph*);
94 virtual QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
95 bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
98 class TLP_QT_SCOPE BooleanEditorCreator:
public TulipItemEditorCreator {
100 virtual QWidget* createWidget(QWidget*)
const;
101 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
102 virtual QVariant editorData(QWidget*,
tlp::Graph*);
103 virtual QString displayText(
const QVariant &)
const;
106 class TLP_QT_SCOPE CoordEditorCreator:
public StringDisplayEditorCreator<tlp::PointType> {
109 CoordEditorCreator():editSize(false) {}
110 QWidget* createWidget(QWidget*)
const;
111 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
112 virtual QVariant editorData(QWidget*,
tlp::Graph*);
116 template<
typename PROP>
117 class PropertyEditorCreator:
public tlp::TulipItemEditorCreator {
119 QWidget* createWidget(QWidget*)
const;
120 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
121 virtual QVariant editorData(QWidget*,
tlp::Graph*);
122 virtual QString displayText(
const QVariant &)
const;
125 class TLP_QT_SCOPE PropertyInterfaceEditorCreator:
public tlp::TulipItemEditorCreator {
127 QWidget* createWidget(QWidget*)
const;
128 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
129 virtual QVariant editorData(QWidget*,
tlp::Graph*);
130 virtual QString displayText(
const QVariant &)
const;
133 class TLP_QT_SCOPE NumericPropertyEditorCreator:
public tlp::TulipItemEditorCreator {
135 QWidget* createWidget(QWidget*)
const;
136 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
137 virtual QVariant editorData(QWidget*,
tlp::Graph*);
138 virtual QString displayText(
const QVariant &)
const;
141 class TLP_QT_SCOPE ColorScaleEditorCreator:
public tlp::TulipItemEditorCreator {
143 QWidget* createWidget(QWidget*)
const;
144 bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
145 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
146 virtual QVariant editorData(QWidget*,
tlp::Graph*);
149 class TLP_QT_SCOPE StringCollectionEditorCreator:
public tlp::TulipItemEditorCreator {
151 QWidget* createWidget(QWidget*)
const;
152 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
153 virtual QVariant editorData(QWidget*,
tlp::Graph*);
154 virtual QString displayText(
const QVariant &)
const;
157 class TLP_QT_SCOPE TulipFileDescriptorEditorCreator:
public tlp::TulipItemEditorCreator {
159 QWidget* createWidget(QWidget*)
const;
160 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
161 virtual QVariant editorData(QWidget*,
tlp::Graph*);
162 virtual bool paint(QPainter *,
const QStyleOptionViewItem &,
const QVariant &)
const;
163 QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
166 class TLP_QT_SCOPE TextureFileEditorCreator:
public tlp::TulipItemEditorCreator {
168 QWidget* createWidget(QWidget*)
const;
169 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
170 virtual QVariant editorData(QWidget*,
tlp::Graph*);
171 virtual bool paint(QPainter *,
const QStyleOptionViewItem &,
const QVariant &)
const;
172 QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
175 class TLP_QT_SCOPE TulipFontIconCreator:
public tlp::TulipItemEditorCreator {
177 QWidget* createWidget(QWidget*)
const;
178 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
179 virtual QVariant editorData(QWidget*,
tlp::Graph*);
180 virtual bool paint(QPainter *,
const QStyleOptionViewItem &,
const QVariant &)
const;
181 QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
182 virtual QString displayText(
const QVariant &)
const;
185 class TLP_QT_SCOPE NodeShapeEditorCreator:
public tlp::TulipItemEditorCreator {
187 QWidget* createWidget(QWidget*)
const;
188 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
189 virtual QVariant editorData(QWidget*,
tlp::Graph*);
190 virtual QString displayText(
const QVariant &)
const;
191 virtual bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
192 QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
195 class TLP_QT_SCOPE EdgeExtremityShapeEditorCreator:
public tlp::TulipItemEditorCreator {
197 QWidget* createWidget(QWidget*)
const;
198 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
199 virtual QVariant editorData(QWidget*,
tlp::Graph*);
200 virtual QString displayText(
const QVariant &)
const;
201 virtual bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
202 QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
205 class TLP_QT_SCOPE EdgeShapeEditorCreator:
public tlp::TulipItemEditorCreator {
207 QWidget* createWidget(QWidget*)
const;
208 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
209 virtual QVariant editorData(QWidget*,
tlp::Graph*);
210 virtual QString displayText(
const QVariant &)
const;
213 template<
typename ElementType>
214 class VectorEditorCreator :
public tlp::TulipItemEditorCreator {
216 QWidget* createWidget(QWidget* parent)
const;
217 virtual void setEditorData(QWidget* editor,
const QVariant& data,
bool,
tlp::Graph*);
218 virtual QVariant editorData(QWidget* editor,
tlp::Graph*);
219 virtual QString displayText(
const QVariant &data)
const;
222 class QVectorBoolEditorCreator :
public tlp::TulipItemEditorCreator {
224 QWidget* createWidget(QWidget* parent)
const;
225 virtual void setEditorData(QWidget* editor,
const QVariant& data,
bool,
tlp::Graph*);
226 virtual QVariant editorData(QWidget* editor,
tlp::Graph*);
227 virtual QString displayText(
const QVariant &data)
const;
230 class TLP_QT_SCOPE TulipFontEditorCreator:
public tlp::TulipItemEditorCreator {
232 QWidget* createWidget(QWidget*)
const;
233 void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
235 QString displayText(
const QVariant &)
const;
238 class TLP_QT_SCOPE TulipLabelPositionEditorCreator:
public tlp::TulipItemEditorCreator {
239 static QVector<QString> POSITION_LABEL;
241 QWidget* createWidget(QWidget*)
const;
242 void setEditorData(QWidget*w,
const QVariant&var,
bool,
tlp::Graph*);
244 QString displayText(
const QVariant &)
const;
247 class TLP_QT_SCOPE GraphEditorCreator:
public tlp::TulipItemEditorCreator {
249 QWidget* createWidget(QWidget* parent)
const;
250 void setEditorData(QWidget*w,
const QVariant&var,
bool,
tlp::Graph*);
252 QString displayText(
const QVariant &)
const;
255 class TLP_QT_SCOPE EdgeSetEditorCreator:
public tlp::TulipItemEditorCreator {
257 QWidget* createWidget(QWidget* parent)
const;
258 void setEditorData(QWidget*w,
const QVariant&var,
bool,
tlp::Graph*);
260 QString displayText(
const QVariant &)
const;
263 class TLP_QT_SCOPE QStringEditorCreator:
public tlp::TulipItemEditorCreator {
265 QWidget* createWidget(QWidget* parent)
const;
266 void setEditorData(QWidget*w,
const QVariant&var,
bool,
tlp::Graph*);
268 QString displayText(
const QVariant &)
const;
272 std::string propName;
275 class TLP_QT_SCOPE StdStringEditorCreator:
public QStringEditorCreator {
277 void setEditorData(QWidget*w,
const QVariant&var,
bool,
tlp::Graph*);
279 QString displayText(
const QVariant &)
const;
282 class TLP_QT_SCOPE QStringListEditorCreator:
public tlp::TulipItemEditorCreator {
284 QWidget* createWidget(QWidget* parent)
const;
285 void setEditorData(QWidget*w,
const QVariant& var,
bool,
tlp::Graph*);
287 QString displayText(
const QVariant &)
const;
290 TLP_QT_SCOPE
void addIconToPool(
const QString &iconName,
const QIcon &icon);
295 #if defined(__clang__) 296 template class tlp::StringDisplayEditorCreator<tlp::PointType>;
297 template class tlp::StringDisplayEditorCreator<tlp::SizeType>;
300 inline QString& truncateText(QString &text,
const QString &trailingChars =
" ...",
int maxChars=45) {
301 if (text.size() > maxChars) {
302 text.truncate(maxChars - trailingChars.length());
303 text.append(trailingChars);
309 #include "cxx/TulipItemEditorCreators.cxx" 311 #endif // TULIPITEMEDITORCREATORS_H
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.