21 #ifndef TULIPITEMEDITORCREATORS_H
22 #define TULIPITEMEDITORCREATORS_H
24 #include <tulip/tulipconf.h>
25 #include <tulip/PropertyTypes.h>
32 class QStyleOptionViewItem;
37 class PropertyInterface;
39 class TLP_QT_SCOPE TulipItemEditorCreator {
41 virtual ~TulipItemEditorCreator() {}
42 virtual QWidget* createWidget(QWidget*)
const=0;
43 virtual bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
44 virtual QString displayText(
const QVariant &)
const {
48 virtual QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
50 virtual void setEditorData(QWidget*,
const QVariant&,
bool isMandatory,
tlp::Graph* g=NULL)=0;
51 virtual QVariant editorData(QWidget*,
tlp::Graph* g=NULL)=0;
56 class TLP_QT_SCOPE StringDisplayEditorCreator:
public TulipItemEditorCreator {
58 inline QString displayText(
const QVariant& v)
const {
59 return QString::fromUtf8(T::toString(v.value<
typename T::RealType>()).c_str());
63 class TLP_QT_SCOPE ColorEditorCreator:
public tlp::TulipItemEditorCreator {
65 QWidget* createWidget(QWidget*)
const;
66 bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
67 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
68 virtual QVariant editorData(QWidget*,
tlp::Graph*);
72 class LineEditEditorCreator:
public StringDisplayEditorCreator<T> {
74 QWidget* createWidget(QWidget*)
const;
75 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
76 virtual QVariant editorData(QWidget*,
tlp::Graph*);
80 class MultiLinesEditEditorCreator:
public StringDisplayEditorCreator<T> {
82 QWidget* createWidget(QWidget*)
const;
83 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
84 virtual QVariant editorData(QWidget*,
tlp::Graph*);
85 virtual QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
86 bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
89 class TLP_QT_SCOPE BooleanEditorCreator:
public TulipItemEditorCreator {
91 virtual QWidget* createWidget(QWidget*)
const;
92 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
93 virtual QVariant editorData(QWidget*,
tlp::Graph*);
94 virtual QString displayText(
const QVariant &)
const;
97 class TLP_QT_SCOPE CoordEditorCreator:
public StringDisplayEditorCreator<tlp::PointType> {
100 CoordEditorCreator():editSize(false) {}
101 QWidget* createWidget(QWidget*)
const;
102 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
103 virtual QVariant editorData(QWidget*,
tlp::Graph*);
107 template<
typename PROP>
108 class PropertyEditorCreator:
public tlp::TulipItemEditorCreator {
110 QWidget* createWidget(QWidget*)
const;
111 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
112 virtual QVariant editorData(QWidget*,
tlp::Graph*);
113 virtual QString displayText(
const QVariant &)
const;
116 class TLP_QT_SCOPE PropertyInterfaceEditorCreator:
public tlp::TulipItemEditorCreator {
118 QWidget* createWidget(QWidget*)
const;
119 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
120 virtual QVariant editorData(QWidget*,
tlp::Graph*);
121 virtual QString displayText(
const QVariant &)
const;
124 class TLP_QT_SCOPE NumericPropertyEditorCreator:
public tlp::TulipItemEditorCreator {
126 QWidget* createWidget(QWidget*)
const;
127 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
128 virtual QVariant editorData(QWidget*,
tlp::Graph*);
129 virtual QString displayText(
const QVariant &)
const;
132 class TLP_QT_SCOPE ColorScaleEditorCreator:
public tlp::TulipItemEditorCreator {
134 QWidget* createWidget(QWidget*)
const;
135 bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
136 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
137 virtual QVariant editorData(QWidget*,
tlp::Graph*);
140 class TLP_QT_SCOPE StringCollectionEditorCreator:
public tlp::TulipItemEditorCreator {
142 QWidget* createWidget(QWidget*)
const;
143 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
144 virtual QVariant editorData(QWidget*,
tlp::Graph*);
145 virtual QString displayText(
const QVariant &)
const;
148 class TLP_QT_SCOPE TulipFileDescriptorEditorCreator:
public tlp::TulipItemEditorCreator {
150 QWidget* createWidget(QWidget*)
const;
151 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
152 virtual QVariant editorData(QWidget*,
tlp::Graph*);
155 class TLP_QT_SCOPE TextureFileEditorCreator:
public tlp::TulipItemEditorCreator {
157 QWidget* createWidget(QWidget*)
const;
158 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
159 virtual QVariant editorData(QWidget*,
tlp::Graph*);
160 virtual bool paint(QPainter *,
const QStyleOptionViewItem &,
const QVariant &)
const;
161 QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
164 class TLP_QT_SCOPE TulipFontAwesomeIconCreator:
public tlp::TulipItemEditorCreator {
166 QWidget* createWidget(QWidget*)
const;
167 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
168 virtual QVariant editorData(QWidget*,
tlp::Graph*);
169 virtual bool paint(QPainter *,
const QStyleOptionViewItem &,
const QVariant &)
const;
170 QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
171 virtual QString displayText(
const QVariant &)
const;
174 class TLP_QT_SCOPE NodeShapeEditorCreator:
public tlp::TulipItemEditorCreator {
176 QWidget* createWidget(QWidget*)
const;
177 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
178 virtual QVariant editorData(QWidget*,
tlp::Graph*);
179 virtual QString displayText(
const QVariant &)
const;
180 virtual bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
181 QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
184 class TLP_QT_SCOPE EdgeExtremityShapeEditorCreator:
public tlp::TulipItemEditorCreator {
186 QWidget* createWidget(QWidget*)
const;
187 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
188 virtual QVariant editorData(QWidget*,
tlp::Graph*);
189 virtual QString displayText(
const QVariant &)
const;
190 virtual bool paint(QPainter*,
const QStyleOptionViewItem&,
const QVariant&)
const;
191 QSize sizeHint(
const QStyleOptionViewItem &,
const QModelIndex &)
const;
194 class TLP_QT_SCOPE EdgeShapeEditorCreator:
public tlp::TulipItemEditorCreator {
196 QWidget* createWidget(QWidget*)
const;
197 virtual void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
198 virtual QVariant editorData(QWidget*,
tlp::Graph*);
199 virtual QString displayText(
const QVariant &)
const;
202 template<
typename ElementType>
203 class VectorEditorCreator :
public tlp::TulipItemEditorCreator {
205 QWidget* createWidget(QWidget* parent)
const;
206 virtual void setEditorData(QWidget* editor,
const QVariant& data,
bool,
tlp::Graph*);
207 virtual QVariant editorData(QWidget* editor,
tlp::Graph*);
208 virtual QString displayText(
const QVariant &data)
const;
211 class QVectorBoolEditorCreator :
public tlp::TulipItemEditorCreator {
213 QWidget* createWidget(QWidget* parent)
const;
214 virtual void setEditorData(QWidget* editor,
const QVariant& data,
bool,
tlp::Graph*);
215 virtual QVariant editorData(QWidget* editor,
tlp::Graph*);
216 virtual QString displayText(
const QVariant &data)
const;
219 class TLP_QT_SCOPE TulipFontEditorCreator:
public tlp::TulipItemEditorCreator {
221 QWidget* createWidget(QWidget*)
const;
222 void setEditorData(QWidget*,
const QVariant&,
bool,
tlp::Graph*);
224 QString displayText(
const QVariant &)
const;
227 class TLP_QT_SCOPE TulipLabelPositionEditorCreator:
public tlp::TulipItemEditorCreator {
228 static QVector<QString> POSITION_LABEL;
230 QWidget* createWidget(QWidget*)
const;
231 void setEditorData(QWidget*w,
const QVariant&var,
bool,
tlp::Graph*);
233 QString displayText(
const QVariant &)
const;
236 class TLP_QT_SCOPE GraphEditorCreator:
public tlp::TulipItemEditorCreator {
238 QWidget* createWidget(QWidget* parent)
const;
239 void setEditorData(QWidget*w,
const QVariant&var,
bool,
tlp::Graph*);
241 QString displayText(
const QVariant &)
const;
244 class TLP_QT_SCOPE EdgeSetEditorCreator:
public tlp::TulipItemEditorCreator {
246 QWidget* createWidget(QWidget* parent)
const;
247 void setEditorData(QWidget*w,
const QVariant&var,
bool,
tlp::Graph*);
249 QString displayText(
const QVariant &)
const;
252 class TLP_QT_SCOPE QStringEditorCreator:
public tlp::TulipItemEditorCreator {
254 QWidget* createWidget(QWidget* parent)
const;
255 void setEditorData(QWidget*w,
const QVariant&var,
bool,
tlp::Graph*);
257 QString displayText(
const QVariant &)
const;
261 std::string propName;
264 class TLP_QT_SCOPE StdStringEditorCreator:
public QStringEditorCreator {
266 void setEditorData(QWidget*w,
const QVariant&var,
bool,
tlp::Graph*);
268 QString displayText(
const QVariant &)
const;
271 class TLP_QT_SCOPE QStringListEditorCreator:
public tlp::TulipItemEditorCreator {
273 QWidget* createWidget(QWidget* parent)
const;
274 void setEditorData(QWidget*w,
const QVariant& var,
bool,
tlp::Graph*);
276 QString displayText(
const QVariant &)
const;
282 #if defined(__clang__)
283 template class tlp::StringDisplayEditorCreator<tlp::PointType>;
284 template class tlp::StringDisplayEditorCreator<tlp::SizeType>;
288 #include "cxx/TulipItemEditorCreators.cxx"
290 #endif // TULIPITEMEDITORCREATORS_H
PropertyInterface describes the interface of a graph property.