Tulip  4.2.0
Better Visualization Through Research
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Groups Pages
TulipItemEditorCreators.h
1 /*
2  *
3  * This file is part of Tulip (www.tulip-software.org)
4  *
5  * Authors: David Auber and the Tulip development Team
6  * from LaBRI, University of Bordeaux 1 and Inria Bordeaux - Sud Ouest
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 <QtCore/QObject>
25 #include <QtGui/QItemEditorCreatorBase>
26 #include <QtGui/QStyleOptionViewItem>
27 #include <QtGui/QPainter>
28 
29 #include <tulip/tulipconf.h>
30 #include <tulip/PropertyTypes.h>
31 #include <tulip/TulipMetaTypes.h>
32 
33 namespace tlp {
34 
35 class TLP_QT_SCOPE TulipItemEditorCreator {
36 public:
37  virtual ~TulipItemEditorCreator() {}
38  virtual QWidget* createWidget(QWidget*) const=0;
39  virtual bool paint(QPainter*, const QStyleOptionViewItem&, const QVariant&) const;
40  virtual QString displayText(const QVariant &) const {
41  return "";
42  }
43 
44  virtual QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const {
45  return QSize();
46  }
47 
48  virtual void setEditorData(QWidget*,const QVariant&,bool isMandatory,tlp::Graph* g=NULL)=0;
49  virtual QVariant editorData(QWidget*,tlp::Graph* g=NULL)=0;
50 
51 };
52 
53 template<typename T>
54 class TLP_QT_SCOPE StringDisplayEditorCreator: public TulipItemEditorCreator {
55 public:
56  inline QString displayText(const QVariant& v) const {
57  QString text = QString::fromUtf8(T::toString(v.value<typename T::RealType>()).c_str());
58  return text;
59  }
60 };
61 
62 class TLP_QT_SCOPE ColorEditorCreator: public tlp::TulipItemEditorCreator {
63 public:
64  QWidget* createWidget(QWidget*) const;
65  bool paint(QPainter*, const QStyleOptionViewItem&, const QVariant&) const;
66  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
67  virtual QVariant editorData(QWidget*,tlp::Graph*);
68 };
69 
70 template<typename T>
71 class LineEditEditorCreator: public StringDisplayEditorCreator<T> {
72 public:
73  QWidget* createWidget(QWidget*) const;
74  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
75  virtual QVariant editorData(QWidget*,tlp::Graph*);
76 };
77 
78 template<typename T>
79 class MultiLinesEditEditorCreator: public StringDisplayEditorCreator<T> {
80 public:
81  QWidget* createWidget(QWidget*) const;
82  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
83  virtual QVariant editorData(QWidget*,tlp::Graph*);
84  virtual QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const;
85  bool paint(QPainter*, const QStyleOptionViewItem&, const QVariant&) const;
86 };
87 
88 class TLP_QT_SCOPE BooleanEditorCreator: public TulipItemEditorCreator {
89 public:
90  virtual QWidget* createWidget(QWidget*) const;
91  virtual void setEditorData(QWidget*,const QVariant&,bool,tlp::Graph*);
92  virtual QVariant editorData(QWidget*,tlp::Graph*);
93  virtual QString displayText(const QVariant &) const;
94 };
95 
96 class TLP_QT_SCOPE CoordEditorCreator: public StringDisplayEditorCreator<tlp::PointType> {
97 public:
98  QWidget* createWidget(QWidget*) const;
99  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
100  virtual QVariant editorData(QWidget*,tlp::Graph*);
101 };
102 
103 template<typename PROP>
104 class PropertyEditorCreator: public tlp::TulipItemEditorCreator {
105 public:
106  QWidget* createWidget(QWidget*) const;
107  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
108  virtual QVariant editorData(QWidget*,tlp::Graph*);
109  virtual QString displayText(const QVariant &) const;
110 };
111 
112 class TLP_QT_SCOPE PropertyInterfaceEditorCreator: public tlp::TulipItemEditorCreator {
113 public:
114  QWidget* createWidget(QWidget*) const;
115  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
116  virtual QVariant editorData(QWidget*,tlp::Graph*);
117  virtual QString displayText(const QVariant &) const;
118 };
119 
120 class TLP_QT_SCOPE ColorScaleEditorCreator: public tlp::TulipItemEditorCreator {
121 public:
122  QWidget* createWidget(QWidget*) const;
123  bool paint(QPainter*, const QStyleOptionViewItem&, const QVariant&) const;
124  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
125  virtual QVariant editorData(QWidget*,tlp::Graph*);
126 };
127 
128 class TLP_QT_SCOPE StringCollectionEditorCreator: public tlp::TulipItemEditorCreator {
129 public:
130  QWidget* createWidget(QWidget*) const;
131  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
132  virtual QVariant editorData(QWidget*,tlp::Graph*);
133  virtual QString displayText(const QVariant &) const;
134 };
135 
136 class TLP_QT_SCOPE TulipFileDescriptorEditorCreator: public tlp::TulipItemEditorCreator {
137 public:
138  QWidget* createWidget(QWidget*) const;
139  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
140  virtual QVariant editorData(QWidget*,tlp::Graph*);
141  virtual bool paint(QPainter *, const QStyleOptionViewItem &, const QVariant &) const;
142  QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const;
143 };
144 
145 class TLP_QT_SCOPE NodeShapeEditorCreator: public tlp::TulipItemEditorCreator {
146 public:
147  QWidget* createWidget(QWidget*) const;
148  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
149  virtual QVariant editorData(QWidget*,tlp::Graph*);
150  virtual QString displayText(const QVariant &) const;
151  virtual bool paint(QPainter*, const QStyleOptionViewItem&, const QVariant&) const;
152  QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const;
153 };
154 
155 class TLP_QT_SCOPE EdgeExtremityShapeEditorCreator: public tlp::TulipItemEditorCreator {
156 public:
157  QWidget* createWidget(QWidget*) const;
158  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
159  virtual QVariant editorData(QWidget*,tlp::Graph*);
160  virtual QString displayText(const QVariant &) const;
161  virtual bool paint(QPainter*, const QStyleOptionViewItem&, const QVariant&) const;
162 };
163 
164 class TLP_QT_SCOPE EdgeShapeEditorCreator: public tlp::TulipItemEditorCreator {
165 public:
166  QWidget* createWidget(QWidget*) const;
167  virtual void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
168  virtual QVariant editorData(QWidget*,tlp::Graph*);
169  virtual QString displayText(const QVariant &) const;
170 };
171 
172 template<typename ElementType>
173 class VectorEditorCreator : public tlp::TulipItemEditorCreator {
174 public:
175  QWidget* createWidget(QWidget* parent) const;
176  virtual void setEditorData(QWidget* editor, const QVariant& data,bool,tlp::Graph*);
177  virtual QVariant editorData(QWidget* editor,tlp::Graph*);
178  virtual QString displayText(const QVariant &data) const;
179 };
180 
181 
182 class TLP_QT_SCOPE TulipFontEditorCreator: public tlp::TulipItemEditorCreator {
183 public:
184  QWidget* createWidget(QWidget*) const;
185  void setEditorData(QWidget*, const QVariant&,bool,tlp::Graph*);
186  QVariant editorData(QWidget*,tlp::Graph*);
187  QString displayText(const QVariant &) const;
188 };
189 
190 class TLP_QT_SCOPE TulipLabelPositionEditorCreator: public tlp::TulipItemEditorCreator {
191  static QVector<QString> POSITION_LABEL;
192 public:
193  QWidget* createWidget(QWidget*) const;
194  void setEditorData(QWidget*w, const QVariant&var, bool, tlp::Graph*);
195  QVariant editorData(QWidget*,tlp::Graph*);
196  QString displayText(const QVariant &) const;
197 };
198 
199 class TLP_QT_SCOPE GraphEditorCreator: public tlp::TulipItemEditorCreator {
200 public:
201  QWidget* createWidget(QWidget* parent) const;
202  void setEditorData(QWidget*w, const QVariant&var, bool, tlp::Graph*);
203  QVariant editorData(QWidget*,tlp::Graph*);
204  QString displayText(const QVariant &) const;
205 };
206 
207 class TLP_QT_SCOPE QStringEditorCreator: public tlp::TulipItemEditorCreator {
208 public:
209  QWidget* createWidget(QWidget* parent) const;
210  void setEditorData(QWidget*w, const QVariant&var, bool, tlp::Graph*);
211  QVariant editorData(QWidget*,tlp::Graph*);
212  QString displayText(const QVariant &) const;
213 };
214 
215 class TLP_QT_SCOPE QStringListEditorCreator: public tlp::TulipItemEditorCreator {
216 public:
217  QWidget* createWidget(QWidget* parent) const;
218  void setEditorData(QWidget*w, const QVariant& var, bool, tlp::Graph*);
219  QVariant editorData(QWidget*,tlp::Graph*);
220  QString displayText(const QVariant &) const;
221 };
222 
223 }
224 
225 
226 #if defined(__clang__)
227 template class tlp::StringDisplayEditorCreator<tlp::PointType>;
228 template class tlp::StringDisplayEditorCreator<tlp::SizeType>;
229 #endif
230 
231 
232 #include "cxx/TulipItemEditorCreators.cxx"
233 
234 #endif // TULIPITEMEDITORCREATORS_H
235 ///@endcond