Developer documentation | Axl-2.5.1

axlInspectorTool.cpp
Go to the documentation of this file.
1 /* axlInspectorTool.cpp ---
2  *
3  * Author: Julien Wintz
4  * Copyright (C) 2008 - Julien Wintz, Inria.
5  * Created: Mon Mar 14 19:39:54 2011 (+0100)
6  * Version: $Id$
7  * Last-Updated: Wed Nov 9 15:08:23 2011 (+0100)
8  * By: Julien Wintz
9  * Update #: 72
10  */
11 
12 /* Commentary:
13  *
14  */
15 
16 /* Change log:
17  *
18  */
19 
20 #include "axlInspectorTool.h"
25 //#include "axlInspectorToolCreatorPointSet.h"
32 
37 
39 #include <axlCore/axlPoint.h>
40 
41 #include <dtkCoreSupport/dtkAbstractProcess.h>
42 #include <dtkCoreSupport/dtkGlobal.h>
43 
44 #include <QtDebug>
45 
46 class axlInspectorToolPrivate
47 {
48 public:
49  axlAbstractView *view;
50  axlInspectorObjectController *controller;
51 };
52 
53 axlInspectorTool::axlInspectorTool(QWidget *parent) : QScrollArea(parent), d(new axlInspectorToolPrivate)
54 {
55  d->controller = NULL;
56  d->view = NULL;
57 
58  this->setAttribute(Qt::WA_MacShowFocusRect, false);
59  this->setFrameShape(QFrame::NoFrame);
60  this->setWidgetResizable(true);
61  this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
62 }
63 
65 {
66  delete d;
67 
68  d = NULL;
69 }
70 
72  QObject * obj = QObject::sender();
73 
74  if(axlInspectorToolInterface *tool = dynamic_cast<axlInspectorToolInterface *>(obj)){
75  tool->setVisible(false);
76  disconnect(tool, SIGNAL(dataChanged(dtkAbstractData*)), this, SIGNAL(dataChanged(dtkAbstractData *)));
77  disconnect(tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData*>, QString)), d->view, SLOT(onUpdateActorField(QList<axlAbstractData *>, QString)));
78  disconnect(tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData*>, QString)), this, SIGNAL(fieldsCreatedOnData(QList<axlAbstractData *>, QString)));
79  disconnect(tool, SIGNAL(dataInserted(axlAbstractData*)), this, SIGNAL(dataInserted(axlAbstractData*)));
80  disconnect(tool, SIGNAL(dataChangedByControlPoints(dtkAbstractData*)), this, SIGNAL(dataChangedByControlPoints(dtkAbstractData *)));
81  disconnect(tool, SIGNAL(modifiedProperty(dtkAbstractData*,int)), this, SIGNAL(modifiedProperty(dtkAbstractData * ,int)));
82 
83  disconnect(tool, SIGNAL(dataSetToRemove(QList<dtkAbstractData *>)), this, SIGNAL(dataSetToRemove(QList<dtkAbstractData *>)));
84  disconnect(tool, SIGNAL(update()), this, SIGNAL(update()));
85  disconnect(tool, SIGNAL(finished()),this, SLOT(onCloseProcessDialog()));
86  delete tool;
87  tool = NULL;
88  }
89 
90 }
91 
92 void axlInspectorTool::onProcessSelected(QString implementation, QString interface_name)
93 {
94 
96 
97  if (tool && !dynamic_cast<axlInspectorToolCreator *>(tool)) {
98  //qDebug()<< " axlInspectorTool::onProcessSelected";
99  if(d->controller)
100  tool->setController(d->controller);
101  else
102  if(d->view)
103  tool->setView(d->view);
104 
105 
106  connect(tool, SIGNAL(dataChanged(dtkAbstractData*)), this, SIGNAL(dataChanged(dtkAbstractData *)));
107  connect(tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData*>, QString)), d->view, SLOT(onUpdateActorField(QList<axlAbstractData *>, QString)));
108  connect(tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData*>, QString)), this, SIGNAL(fieldsCreatedOnData(QList<axlAbstractData *>, QString)));
109  // connect(tool, SIGNAL(dataChangedByShader(dtkAbstractData*,QString)), this, SIGNAL(dataChangedByShader(dtkAbstractData * ,QString)));
110  // connect(tool, SIGNAL(dataChangedByShaderFromString(dtkAbstractData*,QString)), this, SIGNAL(dataChangedByShaderFromString(dtkAbstractData * ,QString)));
111  connect(tool, SIGNAL(dataInserted(axlAbstractData*)), this, SIGNAL(dataInserted(axlAbstractData*)));
112  connect(tool, SIGNAL(dataChangedByControlPoints(dtkAbstractData*)), this, SIGNAL(dataChangedByControlPoints(dtkAbstractData *)));
113  connect(tool, SIGNAL(modifiedProperty(dtkAbstractData*,int)), this, SIGNAL(modifiedProperty(dtkAbstractData * ,int)));
114 
115  connect(tool, SIGNAL(dataSetToRemove(QList<dtkAbstractData *>)), this, SIGNAL(dataSetToRemove(QList<dtkAbstractData *>)));
116  connect(tool, SIGNAL(update()), this, SIGNAL(update()));
117  connect(tool, SIGNAL(finished()),this, SLOT(onCloseProcessDialog()));
118 
119 
120  if(!(interface_name == "FieldGenerator")) {
121  tool->setAttribute(Qt::WA_DeleteOnClose);
122  }
123  tool->setImplementation(implementation);
124 
125  if(interface_name == "FieldGenerator") {
126  connect(tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData*>, QString)), d->view, SLOT(onUpdateActorField(QList<axlAbstractData *>, QString)));
127  connect(tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData*>, QString)), this, SIGNAL(fieldsCreatedOnData(QList<axlAbstractData *>, QString)));
128  //connect(tool->getProcess(), SIGNAL(dataSetFieldsChanged(QList<axlAbstractData *>, QString)), tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData *>, QString)));
129 
130  }
131  this->setWidget(tool);
132 
133 
134  } else if(interface_name == "axlAbstractCreator") {
135 
136  if(implementation == "axlLineCreator") {
137 
139 
140  if(d->controller)
141  tool->setController(d->controller);
142  else
143  qDebug()<<"No controller founded for InspectorTool";
144 
145  connect(tool, SIGNAL(dataInserted(axlAbstractData *)), this, SIGNAL(dataInserted(axlAbstractData *)));
146  this->setWidget(tool);
147  tool->setAttribute(Qt::WA_DeleteOnClose);
148  }
149 
150  else if(implementation == "axlConeCreator") {
151 
153 
154  if(d->controller)
155  tool->setController(d->controller);
156  else
157  qDebug()<<"No controller founded for InspectorTool";
158 
159  connect(tool, SIGNAL(dataInserted(axlAbstractData *)), this, SIGNAL(dataInserted(axlAbstractData *)));
160  // //useful for dynamic objects
161  // connect(tool,SIGNAL(doubleInputInserted(QList<axlDouble*>)), this, SIGNAL(doubleInputInserted(QList<axlDouble*>)));
162  this->setWidget(tool);
163  tool->setAttribute(Qt::WA_DeleteOnClose);
164  }
165 
166  else if(implementation == "axlCylinderCreator") {
167 
169 
170  if(d->controller)
171  tool->setController(d->controller);
172  else
173  qDebug()<<"No controller founded for InspectorTool";
174 
175  connect(tool, SIGNAL(dataInserted(axlAbstractData *)), this, SIGNAL(dataInserted(axlAbstractData *)));
176  // //useful for dynamic objects
177  // connect(tool,SIGNAL(doubleInputInserted(QList<axlDouble*>)), this, SIGNAL(doubleInputInserted(QList<axlDouble*>)));
178  this->setWidget(tool);
179  tool->setAttribute(Qt::WA_DeleteOnClose);
180  }
181 
182  else if(implementation == "axlTorusCreator") {
183 
185 
186  if(d->controller)
187  tool->setController(d->controller);
188  else
189  qDebug()<<"No controller founded for InspectorTool";
190 
191  connect(tool, SIGNAL(dataInserted(axlAbstractData *)), this, SIGNAL(dataInserted(axlAbstractData *)));
192  // //useful for dynamic objects
193  // connect(tool,SIGNAL(doubleInputInserted(QList<axlDouble*>)), this, SIGNAL(doubleInputInserted(QList<axlDouble*>)));
194  this->setWidget(tool);
195  tool->setAttribute(Qt::WA_DeleteOnClose);
196  }
197 
198 
199  else if(implementation == "axlCircleArcCreator") {
200 
202 
203  if(d->controller)
204  tool->setController(d->controller);
205  else
206  qDebug()<<"No controller founded for InspectorTool";
207 
208  connect(tool, SIGNAL(dataInserted(axlAbstractData *)), this, SIGNAL(dataInserted(axlAbstractData *)));
209  this->setWidget(tool);
210  tool->setAttribute(Qt::WA_DeleteOnClose);
211  }
212 
213  else if(implementation == "axlEllipsoidCreator") {
214 
216 
217  if(d->controller)
218  tool->setController(d->controller);
219  else
220  qDebug()<<"No controller founded for InspectorTool";
221 
222  connect(tool, SIGNAL(dataInserted(axlAbstractData *)), this, SIGNAL(dataInserted(axlAbstractData *)));
223  this->setWidget(tool);
224  tool->setAttribute(Qt::WA_DeleteOnClose);
225  }
226 
227 
228  else if(implementation == "axlPlaneCreator") {
229 
231 
232  if(d->controller)
233  tool->setController(d->controller);
234  else
235  qDebug()<<"No controller founded for InspectorTool";
236 
237  connect(tool, SIGNAL(dataInserted(axlAbstractData *)), this, SIGNAL(dataInserted(axlAbstractData *)));
238  this->setWidget(tool);
239  tool->setAttribute(Qt::WA_DeleteOnClose);
240  }
241 
242 
243  if(implementation == "axlPointCreator") {
244 
246 
247  if(d->controller)
248  tool->setController(d->controller);
249  else
250  qDebug()<<"No controller founded for InspectorTool";
251 
252  connect(tool, SIGNAL(dataInserted(axlAbstractData *)), this, SIGNAL(dataInserted(axlAbstractData *)));
253  this->setWidget(tool);
254  tool->setAttribute(Qt::WA_DeleteOnClose);
255  }
256 
257  // if(implementation == "axlCreatePointSet") {
258 
259  // axlInspectorToolCreatorPointSet *tool = new axlInspectorToolCreatorPointSet(this);
260 
261  // if(d->controller)
262  // tool->setController(d->controller);
263  // else
264  // qDebug()<<"No controller founded for InspectorTool";
265 
266  // connect(tool, SIGNAL(dataInserted(axlAbstractData*)), this, SIGNAL(dataInserted(axlAbstractData*)));
267  // this->setWidget(tool);
268  // tool->setAttribute(Qt::WA_DeleteOnClose);
269  // }
270  if(implementation == "axlSphereCreator") {
271 
273 
274  if(d->controller)
275  tool->setController(d->controller);
276  else
277  qDebug()<<"No controller founded for InspectorTool";
278 
279  connect(tool, SIGNAL(dataInserted(axlAbstractData*)), this, SIGNAL(dataInserted(axlAbstractData*)));
280  // //useful for dynamic objects
281  // connect(tool,SIGNAL(doubleInputInserted(QList<axlDouble*>)), this, SIGNAL(doubleInputInserted(QList<axlDouble*>)));
282  this->setWidget(tool);
283  tool->setAttribute(Qt::WA_DeleteOnClose);
284  }
285 
286  if(implementation == "axlDataDynamicCreator") {
287 
289 
290  if(d->controller)
291  tool->setController(d->controller);
292  else
293  qDebug()<<"No controller founded for InspectorTool";
294 
295  connect(tool, SIGNAL(dataInserted(axlAbstractData*)), this, SIGNAL(dataInserted(axlAbstractData*)));
296  this->setWidget(tool);
297  tool->setAttribute(Qt::WA_DeleteOnClose);
298  }
299 
300  }
301 
302 
303  else if(interface_name == "FieldGenerator") {
304 
306 
307  if(d->controller)
308  tool->setController(d->controller);
309  else
310  qDebug()<<"No controller founded for InspectorTool";
311 
312  connect(tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData*>, QString)), d->view, SLOT(onUpdateActorField(QList<axlAbstractData *>, QString)));
313  connect(tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData*>, QString)), this, SIGNAL(fieldsCreatedOnData(QList<axlAbstractData *>, QString)));
314 
315  this->setWidget(tool);
316  //tool->setAttribute(Qt::WA_DeleteOnClose);
317  tool->setImplementation(implementation);
318  //tool->setParent(this);
319  }
320 
321  else /*if(interface_name == "axlAbstractProcess")*/{
322  //qDebug() << Q_FUNC_INFO << implementation << interface_name;
323  // if(d->controller)
324  axlInspectorToolGeneric *tool = new axlInspectorToolGeneric(implementation,d->controller, this);
325  // else
326  // qDebug() << Q_FUNC_INFO << implementation << interface_name << "no controller";
327 
328  //fields display
329  connect(tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData*>, QString)), d->view, SLOT(onUpdateActorField(QList<axlAbstractData *>, QString)));
330  connect(tool, SIGNAL(dataSetFieldsChanged(QList<axlAbstractData*>, QString)), this, SIGNAL(fieldsCreatedOnData(QList<axlAbstractData *>, QString)));
331  //data inserted in view
332  connect(tool, SIGNAL(dataInserted(axlAbstractData*)), this, SIGNAL(dataInserted(axlAbstractData*)));
333  this->setWidget(tool);
334 
335  }
336 
337  if (this->widget() && this->widget()->layout()) {
338  this->widget()->layout()->setAlignment(Qt::AlignTop);
339  }
340 }
341 
343 {
344  d->controller = controller;
345 }
346 
348 {
349  d->view = view;
350 }
void modifiedProperty(dtkAbstractData *, int)
void setController(axlInspectorObjectController *controller)
void setImplementation(const QString &implementation)
void setController(axlInspectorObjectController *controller)
void dataChangedByControlPoints(dtkAbstractData *data)
void fieldsCreatedOnData(QList< axlAbstractData * > dataList, QString fieldName)
void setController(axlInspectorObjectController *controller)
void onProcessSelected(QString implementation, QString interface_name)
void setController(axlInspectorObjectController *controller)
axlInspectorToolInterface * create(const QString &type)
void setController(axlInspectorObjectController *controller)
void setImplementation(const QString &implementation)
void setController(axlInspectorObjectController *controller)
void update(void)
void setView(axlAbstractView *view)
void setView(axlAbstractView *view)
void dataChanged(dtkAbstractData *data)
void dataSetToRemove(QList< dtkAbstractData * > dataSet)
axlInspectorTool(QWidget *parent=0)
void setController(axlInspectorObjectController *controller)
Assigns a controller.
void setController(axlInspectorObjectController *controller)
void setController(axlInspectorObjectController *controller)
virtual void setController(axlInspectorObjectController *controller)
void setController(axlInspectorObjectController *controller)
Class axlInspectorToolCreatorDataDynamicDialog is the dialog used to create dynamic data...
static axlInspectorToolFactory * instance(void)
void setController(axlInspectorObjectController *controller)
void setController(axlInspectorObjectController *controller)
Class axlAbstractData defines an API for all type of axel data.
void dataInserted(axlAbstractData *data)
void onCloseProcessDialog(void)