BALL 1.5.0
Loading...
Searching...
No Matches
propertyEditor.h
Go to the documentation of this file.
1#ifndef BALL_VIEW_WIDGETS_PROPERTYEDITOR_H
2#define BALL_VIEW_WIDGETS_PROPERTYEDITOR_H
3
4#ifndef BALL_COMMON_GLOBAL_H
5# include <BALL/COMMON/global.h>
6#endif
7
8#ifndef BALL_DATATYPE_HASHMAP_H
10#endif
11
12#include <BALL/VIEW/UIC/ui_propertyEditor.h>
13#include <BALL/VIEW/UIC/ui_propEditorWidget.h>
14#include <BALL/VIEW/UIC/ui_editorPDBInfoDialog.h>
15
16#ifndef BALL_FORMAT_PDBINFO_H
17# include <BALL/FORMAT/PDBInfo.h>
18#endif
19
20#include <QtWidgets/QWidget>
21
22class QLabel;
23class QSpinBox;
24class QLineEdit;
25class QCheckBox;
26
27namespace BALL
28{
29 class NamedProperty;
30 class PropertyManager;
31
32 namespace VIEW
33 {
39 {
40 Q_OBJECT
41
42 public:
46 PropEditorWidget(const std::string& name, QWidget* parent);
47
51 virtual const QString& getName() const;
52
56 void setEditable(bool mode);
57
61 bool isEditable() const;
62
70 void apply(PropertyManager* man, bool create = false);
71
76
81 virtual PropEditorWidget* clone(const std::string& name, QWidget* parent) = 0;
82
83 Q_SIGNALS:
88
93
98
99 protected:
100 void setupUi_();
101
105 bool addWidget_(int i, QWidget* w);
106
111 virtual void apply_(PropertyManager* man) = 0;
112
117 virtual void reset_(const NamedProperty& prop) = 0;
118
119 QString name_;
120 Ui::PropEditorWidget ui_;
121 };
122
124 {
125 Q_OBJECT
126
127 public:
129 virtual BoolEditorWidget* clone(const std::string& name, QWidget* parent);
130
131 protected:
132 virtual void apply_(PropertyManager* man);
133 virtual void reset_(const NamedProperty& prop);
134
135 private:
136 QCheckBox* box_;
137 };
138
140 {
141 Q_OBJECT
142
143 public:
144 IntEditorWidget(const NamedProperty& prop, QWidget* parent);
145 virtual IntEditorWidget* clone(const std::string& name, QWidget* parent);
146
147 protected:
148 virtual void apply_(PropertyManager* man);
149 virtual void reset_(const NamedProperty& prop);
150
151
152 private:
153 QSpinBox* box_;
154 };
155
157 {
158 Q_OBJECT
159
160 public:
162 virtual UIntEditorWidget* clone(const std::string& name, QWidget* parent);
163
164 protected:
165 virtual void apply_(PropertyManager* man);
166 virtual void reset_(const NamedProperty& prop);
167
168 private:
169 QSpinBox* box_;
170 };
171
173 {
174 Q_OBJECT
175
176 public:
178 virtual FloatEditorWidget* clone(const std::string& name, QWidget* parent);
179
180 protected:
181 virtual void apply_(PropertyManager* man);
182 virtual void reset_(const NamedProperty& prop);
183
184 private:
185 QLineEdit* edit_;
186 };
187
189 {
190 Q_OBJECT
191
192 public:
194 virtual DoubleEditorWidget* clone(const std::string& name, QWidget* parent);
195
196 protected:
197 virtual void apply_(PropertyManager* man);
198 virtual void reset_(const NamedProperty& prop);
199
200 private:
201 QLineEdit* edit_;
202 };
203
205 {
206 Q_OBJECT
207
208 public:
210 virtual StringEditorWidget* clone(const std::string& name, QWidget* parent);
211
212 protected:
213 virtual void apply_(PropertyManager* man);
214 virtual void reset_(const NamedProperty& prop);
215
216 private:
217 QLineEdit* edit_;
218 };
219
224 {
225 public:
227 : PropEditorWidget(prop.getName(), parent)
228 {
229 addWidget_(1,new QLabel(tr("(not editable)"),this));
230 ui_.duplicate_button->setEnabled(false);
231 }
232 virtual PropEditorWidget* clone(const std::string&, QWidget*)
233 {
234 return NULL;
235 }
236 protected:
237 virtual void apply_(PropertyManager *) {}
238 virtual void reset_(const NamedProperty &) {}
239 };
240
242 {
243 Q_OBJECT
244
245 public:
246 PDBInfoEditorWidget(const PDBInfo& info, QWidget* parent);
247 virtual PDBInfoEditorWidget* clone(const std::string& name, QWidget* parent);
248
249 protected Q_SLOTS:
251
252 protected:
253 virtual void apply_(PropertyManager* man);
254 virtual void reset_(const NamedProperty& prop);
255
256 private:
257 // TODO: This should maybe become a generic TextEditor and not be as hackish.
258 class EditorPDBInfoDialog : public QDialog {
259 public:
260 EditorPDBInfoDialog(QWidget* parent) : QDialog(parent)
261 {
262 ui_.setupUi(this);
263 QFont mono("Monaco"); mono.setStyleHint(QFont::TypeWriter);
264 ui_.textEditor->setFont(mono);
265 }
266 protected:
267 friend class PDBInfoEditorWidget;
268 Ui::editorPDBInfoDialog ui_;
269 };
270
271 PDBInfo localCopy_;
272 EditorPDBInfoDialog* editorDialog_;
273 };
274
282 {
283 Q_OBJECT
284
285 public:
292 explicit PropertyEditor(QWidget* parent = 0, bool editable = true);
293
301 PropertyEditor(PropertyManager* manager, QWidget* parent, bool editable = true);
302
309
313 void setEditable(bool mode);
314
318 bool isEditable() const;
319
323 bool hasChanges() const;
324
325 public Q_SLOTS:
329 void apply();
330
334 void reset();
335
336 Q_SIGNALS:
341
342 protected:
343 void setupUi_();
344
348 QString chooseName_(const QString& initial);
350
351 protected Q_SLOTS:
355
362
363 private:
364 bool has_changes_;
365 bool is_editable_;
366 PropertyManager* manager_;
367 QList<PropEditorWidget*> new_properties_;
368 QList<PropEditorWidget*> deleted_properties_;
369
370 Ui::PropertyEditor ui_;
371 };
372
373 }
374}
375
376#endif //BALL_VIEW_WIDGETS_PROPERTYEDITOR_H
virtual void reset_(const NamedProperty &prop)=0
virtual PropEditorWidget * clone(const std::string &name, QWidget *parent)=0
void apply(PropertyManager *man, bool create=false)
PropEditorWidget(const std::string &name, QWidget *parent)
void reset(PropertyManager *man)
virtual const QString & getName() const
virtual void apply_(PropertyManager *man)=0
bool addWidget_(int i, QWidget *w)
BoolEditorWidget(const NamedProperty &prop, QWidget *parent)
virtual void apply_(PropertyManager *man)
virtual BoolEditorWidget * clone(const std::string &name, QWidget *parent)
virtual void reset_(const NamedProperty &prop)
virtual void reset_(const NamedProperty &prop)
IntEditorWidget(const NamedProperty &prop, QWidget *parent)
virtual void apply_(PropertyManager *man)
virtual IntEditorWidget * clone(const std::string &name, QWidget *parent)
virtual void reset_(const NamedProperty &prop)
virtual UIntEditorWidget * clone(const std::string &name, QWidget *parent)
UIntEditorWidget(const NamedProperty &prop, QWidget *parent)
virtual void apply_(PropertyManager *man)
virtual FloatEditorWidget * clone(const std::string &name, QWidget *parent)
virtual void reset_(const NamedProperty &prop)
virtual void apply_(PropertyManager *man)
FloatEditorWidget(const NamedProperty &prop, QWidget *parent)
virtual void reset_(const NamedProperty &prop)
virtual void apply_(PropertyManager *man)
virtual DoubleEditorWidget * clone(const std::string &name, QWidget *parent)
DoubleEditorWidget(const NamedProperty &prop, QWidget *parent)
virtual void reset_(const NamedProperty &prop)
StringEditorWidget(const NamedProperty &prop, QWidget *parent)
virtual StringEditorWidget * clone(const std::string &name, QWidget *parent)
virtual void apply_(PropertyManager *man)
virtual void reset_(const NamedProperty &)
virtual PropEditorWidget * clone(const std::string &, QWidget *)
virtual void apply_(PropertyManager *)
PropDeleteWidget(const NamedProperty &prop, QWidget *parent)
virtual PDBInfoEditorWidget * clone(const std::string &name, QWidget *parent)
virtual void apply_(PropertyManager *man)
virtual void reset_(const NamedProperty &prop)
PDBInfoEditorWidget(const PDBInfo &info, QWidget *parent)
void setPropertyManager(PropertyManager *man)
void deleteProperty_(PropEditorWidget *editor)
void setEditable(bool mode)
PropertyEditor(QWidget *parent=0, bool editable=true)
QString chooseName_(const QString &initial)
PropEditorWidget * createEditorWidget_(const NamedProperty &prop)
PropEditorWidget * addProperty_(PropEditorWidget *editor)
PropEditorWidget * addProperty_(const NamedProperty &prop)
PropertyEditor(PropertyManager *manager, QWidget *parent, bool editable=true)
#define BALL_VIEW_EXPORT