QXRD  0.11.16
qcepdatagroup.cpp
Go to the documentation of this file.
1 #include "qcepdatagroup.h"
2 #include <QScriptEngine>
3 #include "qcepdataarray.h"
4 #include "qcepdatagroup.h"
5 #include "qcepdatacolumn.h"
6 #include "qcepdatacolumnscan.h"
7 #include "qcepimagedata.h"
8 #include "qcepintegrateddata.h"
9 
10 #include <QFileInfo>
11 #include <QDir>
12 
14  QcepDataObject(saver, name, 0, parent)
15 {
16  set_Type("Data Group");
17 }
18 
20 {
21  return tr("%1 Items").arg(childCount());
22 }
23 
25 {
26  QcepDataGroupPtr res(new QcepDataGroup(saver, name, parent));
27 
28  return res;
29 }
30 
32 {
33  return m_Objects.value(n);
34 }
35 
37 {
38  QFileInfo info(nm);
39 
40  if (info.isRoot()) {
41  return rootItem();
42  } else if (nm == ".") {
43  return sharedFromThis();
44  } else if (info.fileName() == nm) {
45  foreach(QcepDataObjectPtr p, m_Objects) {
46  if (p && (p->get_Name() == nm)) {
47  return p;
48  }
49  }
50  } else {
51  QDir dir = info.dir();
52 
53  QcepDataObjectPtr obj = item(dir.path());
54 
55  if (obj) {
56  QcepDataGroupPtr grp = qSharedPointerDynamicCast<QcepDataGroup>(obj);
57 
58  if (grp) {
59  return grp->item(info.fileName());
60  }
61  }
62  }
63  return QcepDataObjectPtr();
64 }
65 
67 {
68  return m_Objects.count();
69 }
70 
72 {
73  QcepDataObjectPtr obj = item(path);
74 
75  return qSharedPointerDynamicCast<QcepDataGroup>(obj);
76 }
77 
79 {
80  QcepDataObjectPtr obj = item(n);
81 
82  return qSharedPointerDynamicCast<QcepDataGroup>(obj);
83 }
84 
86 {
87  QcepDataObjectPtr obj = item(path);
88 
89  return qSharedPointerDynamicCast<QcepDataArray>(obj);
90 }
91 
93 {
94  QcepDataObjectPtr obj = item(n);
95 
96  return qSharedPointerDynamicCast<QcepDataArray>(obj);
97 }
98 
100 {
101  QcepDataObjectPtr obj = item(path);
102 
103  return qSharedPointerDynamicCast<QcepDataColumn>(obj);
104 }
105 
107 {
108  QcepDataObjectPtr obj = item(n);
109 
110  return qSharedPointerDynamicCast<QcepDataColumn>(obj);
111 }
112 
114 {
115  QcepDataObjectPtr obj = item(path);
116 
117  return qSharedPointerDynamicCast<QcepDataColumnScan>(obj);
118 }
119 
121 {
122  QcepDataObjectPtr obj = item(n);
123 
124  return qSharedPointerDynamicCast<QcepDataColumnScan>(obj);
125 }
126 
128 {
129  QcepDataObjectPtr obj = item(path);
130 
131  return qSharedPointerDynamicCast<QcepDoubleImageData>(obj);
132 }
133 
135 {
136  QcepDataObjectPtr obj = item(n);
137 
138  return qSharedPointerDynamicCast<QcepDoubleImageData>(obj);
139 }
140 
142 {
143  QcepDataObjectPtr obj = item(path);
144 
145  return qSharedPointerDynamicCast<QcepIntegratedData>(obj);
146 }
147 
149 {
150  QcepDataObjectPtr obj = item(n);
151 
152  return qSharedPointerDynamicCast<QcepIntegratedData>(obj);
153 }
154 
155 QString QcepDataGroup::directoryName(QString path)
156 {
157  QFileInfo info(path);
158 
159  if (info.isAbsolute()) {
160  return info.dir().absolutePath();
161  } else {
162  return info.dir().path();
163  }
164 }
165 
166 QString QcepDataGroup::object(QString path)
167 {
168  QFileInfo info(path);
169 
170  return info.fileName();
171 }
172 
174 {
175  QFileInfo info(path);
176 
177  if (info.isAbsolute()) {
178  if (parentItem()) {
179  return rootItem()->containingGroup(path);
180  } else {
182 
183  return qSharedPointerDynamicCast<QcepDataGroup>(obj);
184  }
185  } else {
186  QcepDataObjectPtr obj = item(path);
187 
188  return qSharedPointerDynamicCast<QcepDataGroup>(obj);
189  }
190 }
191 
193 {
194  QFileInfo info(path);
195 
196  if (info.isAbsolute()) {
197  return rootItem()->item(path);
198  } else {
199  return item(path);
200  }
201 }
202 
204 {
205  m_Objects.clear();
206 
207  emit dataObjectChanged();
208 }
209 
211 {
212  if (obj) {
213  if (atRow <= 0) {
214  m_Objects.prepend(obj);
215  } else if (atRow >= m_Objects.count()) {
216  m_Objects.append(obj);
217  } else {
218  m_Objects.insert(atRow, obj);
219  }
220  }
221 }
222 
224 {
225  if (obj) {
226  m_Objects.append(obj);
227 
228  QcepDataGroupPtr me = qSharedPointerDynamicCast<QcepDataGroup>(sharedFromThis());
229 
230  if (me) {
231  obj -> setParentItem(me);
232  } else {
233  printf("Can't cast to QcepDataGroupPtr");
234  }
235 
236  connect(obj.data(), SIGNAL(dataObjectChanged()), this, SIGNAL(dataObjectChanged()));
237 
238  emit dataObjectChanged();
239  }
240 }
241 
243 {
245 
246  if (group) {
247  group->append(obj);
248  }
249 }
250 
252 {
253  if (n >= 0 && n < m_Objects.count()) {
254  m_Objects.remove(n);
255 
256  emit dataObjectChanged();
257  }
258 }
259 
261 {
262  int n = m_Objects.indexOf(obj);
263 
264  remove(n);
265 }
266 
267 void QcepDataGroup::remove(QString path)
268 {
270 
271  if (obj) {
272  QcepDataGroupPtr parent = obj->parentItem();
273 
274  if (parent) {
275  parent->remove(obj);
276  }
277  }
278 }
279 
281 {
282  QcepDataGroupPtr gr = group(path);
283 
284  if (gr) {
285  return gr;
286  } else {
287  QcepDataObjectPtr obj = item(path);
288 
289  if (obj) {
290  printMessage(tr("Item %1 exists and is not a data group").arg(path));
291  } else {
293 
294  if (sgr) {
295  QcepDataGroupPtr ng =
296  QcepDataGroupPtr(new QcepDataGroup(saver(), object(path), sgr.data()));
297 
298  if (ng) {
299  sgr->append(ng);
300 
301  return group(path);
302  }
303  }
304  }
305  }
306 
307  return QcepDataGroupPtr();
308 }
309 
311 {
313 
314  if (group) {
315  QcepDataGroupPtr ng =
316  QcepDataGroupPtr(new QcepDataGroup(saver(), object(path), group.data()));
317 
318  if (ng) {
319  group->append(ng);
320 
321  emit dataObjectChanged();
322 
323  return ng;
324  }
325  }
326 
327  return QcepDataGroupPtr();
328 }
329 
330 QcepDataArrayPtr QcepDataGroup::newArray(QString path, QVector<int> dims)
331 {
333 
334  if (group) {
335  QcepDataArrayPtr array(new QcepDataArray(saver(), object(path), dims, group.data()));
336 
337  if (array) {
338  group->append(array);
339 
340  emit dataObjectChanged();
341 
342  return array;
343  }
344  }
345 
346  return QcepDataArrayPtr();
347 }
348 
350 {
352 
353  if (group) {
354  QcepDataColumnPtr column(new QcepDataColumn(saver(), object(path), nrows, group.data()));
355 
356  if (column) {
357  group->append(column);
358 
359  emit dataObjectChanged();
360 
361  return column;
362  }
363  }
364 
365  return QcepDataColumnPtr();
366 }
367 
368 QcepDataColumnScanPtr QcepDataGroup::newColumnScan(QString path, int nrow, QStringList cols)
369 {
371 
372  if (group) {
373  QcepDataColumnScanPtr scan(QcepDataColumnScan::newDataColumnScan(saver(), object(path), cols, nrow, group.data()));
374 
375  if (scan) {
376  group->append(scan);
377 
378  emit dataObjectChanged();
379 
380  return scan;
381  }
382  }
383 
384  return QcepDataColumnScanPtr();
385 }
386 
387 QcepDoubleImageDataPtr QcepDataGroup::newImage(QString path, int width, int height)
388 {
390 
391  if (group) {
392  QcepDoubleImageDataPtr image(QcepDoubleImageData::newImage(saver(), object(path), width, height, group.data()));
393 
394  if (image) {
395  group->append(image);
396 
397  emit dataObjectChanged();
398 
399  return image;
400  }
401  }
402 
403  return QcepDoubleImageDataPtr();
404 }
405 
407 {
409 
410  if (group) {
411  QcepIntegratedDataPtr data(QcepIntegratedData::newIntegratedData(saver(), object(path), sz, group.data()));
412 
413  if (data) {
414  group->append(data);
415 
416  emit dataObjectChanged();
417 
418  return data;
419  }
420  }
421 
422  return QcepIntegratedDataPtr();
423 }
424 
425 QScriptValue QcepDataGroup::toGroupScriptValue(QScriptEngine *engine, const QcepDataGroupPtr &data)
426 {
427  return engine->newQObject(data.data());
428 }
429 
430 void QcepDataGroup::fromGroupScriptValue(const QScriptValue &obj, QcepDataGroupPtr &data)
431 {
432  QObject *qobj = obj.toQObject();
433 
434  if (qobj) {
435  QcepDataGroup *qdobj = qobject_cast<QcepDataGroup*>(qobj);
436 
437  if (qdobj) {
438  QcepDataObjectPtr p = qdobj->sharedFromThis();
439 
440  if (p) {
441  QcepDataGroupPtr cs = qSharedPointerDynamicCast<QcepDataGroup>(p);
442 
443  if (cs) {
444  data = cs;
445  }
446  }
447  }
448  }
449 }
450 
QcepDataObjectPtr item(QString nm)
QSharedPointer< QcepDataArray > QcepDataArrayPtr
QcepDataColumnScanPtr columnScan(QString path)
QcepDataGroup(QcepSettingsSaverWPtr saver, QString name, QcepObject *parent)
void append(QcepDataObjectPtr obj)
static void fromGroupScriptValue(const QScriptValue &obj, QcepDataGroupPtr &data)
QSharedPointer< QcepDataGroup > QcepDataGroupPtr
QcepIntegratedDataPtr integratedData(QString path)
static QSharedPointer< QcepImageData< T > > newImage(QcepSettingsSaverWPtr saver, QString name, int width, int height, QcepObject *parent)
QSharedPointer< QcepDataColumnScan > QcepDataColumnScanPtr
void remove(int n)
QSharedPointer< QcepDataColumn > QcepDataColumnPtr
virtual QcepDataGroupPtr parentItem() const
QSharedPointer< QcepIntegratedData > QcepIntegratedDataPtr
int childCount() const
QcepDataColumnScanPtr newColumnScan(QString path, int nrow, QStringList cols)
QcepDataColumnPtr column(QString path)
QcepIntegratedDataPtr newIntegratedData(QString path, int sz)
QString object(QString path)
QcepDataColumnPtr newColumn(QString path, int nrow)
QcepDataGroupPtr group(QString path)
virtual void setParentItem(QcepDataGroupWPtr parent)
QcepDataObjectPtr referencedObject(QString path)
QString directoryName(QString path)
void insert(int atRow, QcepDataObjectPtr obj)
QcepDataGroupPtr newGroup(QString path)
QcepDataArrayPtr newArray(QString path, QVector< int > dims)
virtual void printMessage(QString msg, QDateTime dt=QDateTime::currentDateTime()) const
Definition: qcepobject.cpp:84
static QcepDataColumnScanPtr newDataColumnScan(QcepSettingsSaverWPtr sav, QString name, QStringList cols, int npts, QcepObject *parent)
QcepDataGroupPtr rootItem()
static QcepIntegratedDataPtr newIntegratedData(QcepSettingsSaverWPtr saver, QString name, int sz, QcepObject *parent)
QcepDoubleImageDataPtr image(QString path)
QSharedPointer< QcepDataObject > QcepDataObjectPtr
static QScriptValue toGroupScriptValue(QScriptEngine *engine, const QcepDataGroupPtr &data)
QVector< QcepDataObjectPtr > m_Objects
Definition: qcepdatagroup.h:78
QString name
Definition: qcepobject.h:49
void dataObjectChanged()
QcepDoubleImageDataPtr newImage(QString path, int width=0, int height=0)
static QcepDataGroupPtr newDataGroup(QcepSettingsSaverWPtr saver, QString name, QcepObject *parent)
QcepDataGroupPtr createGroup(QString path)
QcepDataArrayPtr array(QString path)
virtual QString description() const
QcepDataGroupPtr containingGroup(QString path)
QWeakPointer< QcepSettingsSaver > QcepSettingsSaverWPtr
QcepSettingsSaverWPtr saver()
QSharedPointer< QcepDoubleImageData > QcepDoubleImageDataPtr