QXRD  0.11.16
qcepdatasetbrowserdialog.cpp
Go to the documentation of this file.
2 #include "ui_qcepdatasetbrowserdialog.h"
3 #include "qcepdataset.h"
4 #include "qcepdatasetmodel.h"
5 #include <QMenu>
6 #include <stdio.h>
7 #include "qcepexperiment.h"
11 #include "qcepdatacolumnscan.h"
12 #include <QMessageBox>
13 #include "qcepnewdatagroupdialog.h"
15 #include "qcepnewdataarraydialog.h"
17 #include "qcepnewimagedialog.h"
18 #include <QFileDialog>
19 
21  QDockWidget(parent),
22  m_Experiment(expt),
23  m_DatasetModel(ds)
24 {
25  setupUi(this);
26 
27  if (m_DatasetModel) {
28  m_DatasetBrowserView -> setModel(m_DatasetModel.data());
29 
30  connect(m_DatasetBrowserView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onCustomContextMenuRequested(QPoint)));
31  connect(m_DatasetBrowserView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(onDoubleClicked(QModelIndex)));
32 
33  m_DatasetBrowserView -> setContextMenuPolicy(Qt::CustomContextMenu);
34  m_DatasetBrowserView -> header() -> setSectionResizeMode(QHeaderView::Stretch);
35  }
36 }
37 
39 {
40 }
41 
43 {
44 // m_Dataset->printMessage(tr("QcepDatasetBrowserDialog::onCustomContextMenuRequested([%1,%2])").arg(pt.x()).arg(pt.y()));
45 
46  QModelIndex index = m_DatasetBrowserView->indexAt(pt);
47 
48  QcepDataObject *obj = static_cast<QcepDataObject*>(index.internalPointer());
49  QcepDataGroup *grp = qobject_cast<QcepDataGroup*>(obj);
50  QcepDataColumnScan *scn = qobject_cast<QcepDataColumnScan*>(obj);
51  QcepDataObject *prn = (obj ? obj->parentItem().data() : NULL);
52  QcepDataColumnScan *psc = qobject_cast<QcepDataColumnScan*>(prn);
53 
54  QMenu menu(NULL, NULL);
55 
56  QString name = (obj ? obj->pathName() : "");
57 
58  QAction *tt = menu.addAction("Data operations...");
59 
60  tt->setDisabled(true);
61 
62  QMenu *nm = menu.addMenu("Create New");
63  QAction *ng = nm->addAction(tr("New Group in %1").arg(name));
64 
65  QAction *nc = NULL;
66 
67  if (psc == NULL) {
68  nc = nm->addAction(tr("New Data Column in %1").arg(name));
69  } else {
70  nc = nm->addAction(tr("Insert Data Column after %1").arg(name));
71  }
72 
73  QAction *ns = nm->addAction(tr("New Column Scan in %1").arg(name));
74  QAction *ni = nm->addAction(tr("New Image in %1").arg(name));
75  QAction *na = nm->addAction(tr("New Array in %1").arg(name));
76  QAction *rd = menu.addAction(tr("Read Data into %1 ...").arg(name));
77  QAction *sv = menu.addAction(tr("Save %1 as ...").arg(name));
78  QAction *og = menu.addAction(tr("Open %1 in graph window").arg(name));
79  QAction *os = menu.addAction(tr("Open %1 in spreadsheet window").arg(name));
80  QAction *op = menu.addAction(tr("Open %1 in properties window").arg(name));
81  QAction *dl = menu.addAction(tr("Delete %1").arg(name));
82 
83  ng->setEnabled(grp != NULL && scn == NULL);
84  nc->setEnabled(grp != NULL || psc != NULL);
85  ns->setEnabled(grp != NULL && scn == NULL);
86  ni->setEnabled(grp != NULL && scn == NULL);
87  na->setEnabled(grp != NULL && scn == NULL);
88 
89  nm->setEnabled(ng->isEnabled()
90  || nc->isEnabled()
91  || ns->isEnabled()
92  || ni->isEnabled()
93  || na->isEnabled());
94 
95  rd->setEnabled(grp != NULL);
96 
97 
98  QAction *action = menu.exec(QCursor::pos(), tt);
99 
100  if (action == ng) {
101  newGroup(index);
102  } else if (action == nc) {
103  newDataColumn(index);
104  } else if (action == ns) {
105  newColumnScan(index);
106  } else if (action == ni) {
107  newImage(index);
108  } else if (action == na) {
109  newArray(index);
110  } else if (action == rd) {
111  readData(index);
112  } else if (action == sv) {
113  saveData(index);
114  } else if (action == og) {
115  openGraph(index);
116  } else if (action == os) {
117  openSpreadsheet(index);
118  } else if (action == op) {
119  openProperties(index);
120  } else if (action == dl) {
121  deleteData(index);
122  }
123 }
124 
126 {
128 
129  if (expt) {
130  expt->printMessage(tr("QcepDatasetBrowserDialog::onDoubleClicked([%1,%2])").arg(idx.row()).arg(idx.column()));
131  }
132 }
133 
134 void QcepDatasetBrowserDialog::openGraph(const QModelIndex &idx)
135 {
136  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
137 
139 
140  if (obj && expt) {
141  QcepDataObjectGraphWindow *gw = new QcepDataObjectGraphWindow(expt, obj->sharedFromThis());
142 
143  gw->show();
144  }
145 }
146 
147 void QcepDatasetBrowserDialog::openSpreadsheet(const QModelIndex &idx)
148 {
149  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
150 
152 
153  if (obj && expt) {
154  QcepDataObjectSpreadsheetWindow *sw = new QcepDataObjectSpreadsheetWindow(expt, obj->sharedFromThis());
155 
156  sw->show();
157  }
158 }
159 
160 void QcepDatasetBrowserDialog::openProperties(const QModelIndex &idx)
161 {
162  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
163 
165 
166  if (obj && expt) {
167  QcepDataObjectPropertiesWindow *pw = new QcepDataObjectPropertiesWindow(expt, obj->sharedFromThis());
168 
169  pw->show();
170  }
171 }
172 
173 void QcepDatasetBrowserDialog::newGroup(const QModelIndex &idx)
174 {
175  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
176 
178 
179  if (dlog->exec()) {
180  }
181 
182  delete dlog;
183 }
184 
185 void QcepDatasetBrowserDialog::newDataColumn(const QModelIndex &idx)
186 {
187  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
188 
190 
191  if (dlog->exec()) {
192  }
193 
194  delete dlog;
195 }
196 
197 void QcepDatasetBrowserDialog::newColumnScan(const QModelIndex &idx)
198 {
199  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
200 
202 
203  if (dlog->exec()) {
204  }
205 
206  delete dlog;
207 }
208 
209 void QcepDatasetBrowserDialog::newImage(const QModelIndex &idx)
210 {
211  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
212 
213  QcepNewImageDialog *dlog = new QcepNewImageDialog(obj);
214 
215  if (dlog->exec()) {
216  }
217 
218  delete dlog;
219 }
220 
221 void QcepDatasetBrowserDialog::newArray(const QModelIndex &idx)
222 {
223  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
224 
226 
227  if (dlog->exec()) {
228  }
229 
230  delete dlog;
231 }
232 
233 void QcepDatasetBrowserDialog::readData(const QModelIndex &idx)
234 {
235  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
236 }
237 
238 void QcepDatasetBrowserDialog::saveData(const QModelIndex &idx)
239 {
240  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
241 
242  if (obj) {
243  static QString selectedFilter;
244  QString theFile = QFileDialog::getSaveFileName(this,
245  "Save data in", obj->get_FileName(),
246  obj->fileFormatFilterString(), &selectedFilter);
247 
248  if (theFile.length()) {
249  obj -> saveData(theFile, selectedFilter, QcepDataObject::CanOverwrite);
250  }
251  }
252 }
253 
254 void QcepDatasetBrowserDialog::deleteData(const QModelIndex &idx)
255 {
256  QcepDataObject *obj = static_cast<QcepDataObject*>(idx.internalPointer());
257 
258  if (obj) {
259  if (QMessageBox::question(NULL, "Delete Object?",
260  tr("Do you really want to delete %1").arg(obj->get_Name()),
261  QMessageBox::Ok | QMessageBox::No, QMessageBox::No) == QMessageBox::Ok) {
262  m_DatasetModel->remove(idx);
263  }
264  }
265 }
void saveData(const QModelIndex &idx)
QcepDatasetBrowserDialog(QcepExperimentWPtr expt, QcepDatasetModelPtr ds, QWidget *parent=0)
void openGraph(const QModelIndex &idx)
void newGroup(const QModelIndex &idx)
virtual QcepDataGroupPtr parentItem() const
QWeakPointer< QcepExperiment > QcepExperimentWPtr
void newColumnScan(const QModelIndex &idx)
QString get_Name() const
Definition: qcepobject.cpp:72
void openProperties(const QModelIndex &idx)
virtual QString fileFormatFilterString()
void newImage(const QModelIndex &idx)
QcepDatasetModelPtr m_DatasetModel
void newArray(const QModelIndex &idx)
void newDataColumn(const QModelIndex &idx)
void readData(const QModelIndex &idx)
void openSpreadsheet(const QModelIndex &idx)
QString pathName() const
void onDoubleClicked(QModelIndex idx)
void deleteData(const QModelIndex &idx)
QSharedPointer< QcepExperiment > QcepExperimentPtr
QSharedPointer< QcepDatasetModel > QcepDatasetModelPtr