|
@@ -22,19 +22,26 @@
|
|
|
#include "ctkXnatTreeBrowserMainWindow.h"
|
|
|
#include "ui_ctkXnatTreeBrowserMainWindow.h"
|
|
|
|
|
|
-#include "ctkXnatLoginDialog.h"
|
|
|
-#include "ctkXnatTreeModel.h"
|
|
|
-#include "ctkXnatSession.h"
|
|
|
+#include "ctkXnatAssessor.h"
|
|
|
+#include "ctkXnatAssessorFolder.h"
|
|
|
#include "ctkXnatDataModel.h"
|
|
|
-#include "ctkXnatProject.h"
|
|
|
+#include "ctkXnatException.h"
|
|
|
+#include "ctkXnatExperiment.h"
|
|
|
#include "ctkXnatFile.h"
|
|
|
+#include "ctkXnatLoginDialog.h"
|
|
|
+#include "ctkXnatProject.h"
|
|
|
+#include "ctkXnatReconstruction.h"
|
|
|
+#include "ctkXnatReconstructionFolder.h"
|
|
|
#include "ctkXnatResource.h"
|
|
|
+#include "ctkXnatResourceFolder.h"
|
|
|
#include "ctkXnatScan.h"
|
|
|
#include "ctkXnatScanFolder.h"
|
|
|
-#include "ctkXnatAssessor.h"
|
|
|
-#include "ctkXnatAssessorFolder.h"
|
|
|
-#include "ctkXnatReconstruction.h"
|
|
|
-#include "ctkXnatReconstructionFolder.h"
|
|
|
+#include "ctkXnatSession.h"
|
|
|
+#include "ctkXnatSubject.h"
|
|
|
+#include "ctkXnatTreeModel.h"
|
|
|
+
|
|
|
+#include <QMessageBox>
|
|
|
+#include <QFileDialog>
|
|
|
|
|
|
ctkXnatTreeBrowserMainWindow::ctkXnatTreeBrowserMainWindow(QWidget *parent) :
|
|
|
QMainWindow(parent),
|
|
@@ -50,6 +57,8 @@ ctkXnatTreeBrowserMainWindow::ctkXnatTreeBrowserMainWindow(QWidget *parent) :
|
|
|
this->connect(ui->loginButton, SIGNAL(clicked()), SLOT(loginButtonPushed()));
|
|
|
this->connect(ui->treeView, SIGNAL(clicked(const QModelIndex&)), SLOT(itemSelected(const QModelIndex&)));
|
|
|
this->connect(ui->downloadButton, SIGNAL(clicked()), SLOT(downloadButtonClicked()));
|
|
|
+ this->connect(ui->addResourceButton, SIGNAL(clicked()), SLOT(addResourceClicked()));
|
|
|
+ this->connect(ui->uploadFileButton, SIGNAL(clicked()), SLOT(uploadFileClicked()));
|
|
|
}
|
|
|
|
|
|
ctkXnatTreeBrowserMainWindow::~ctkXnatTreeBrowserMainWindow()
|
|
@@ -110,6 +119,16 @@ void ctkXnatTreeBrowserMainWindow::itemSelected(const QModelIndex &index)
|
|
|
downloadable |= dynamic_cast<ctkXnatReconstructionFolder*>(xnatObject)!=NULL;
|
|
|
ui->downloadButton->setEnabled(downloadable);
|
|
|
ui->downloadLabel->setVisible(!downloadable);
|
|
|
+ bool canHaveFolder = false;
|
|
|
+ canHaveFolder |= dynamic_cast<ctkXnatProject*>(xnatObject) != NULL;
|
|
|
+ canHaveFolder |= dynamic_cast<ctkXnatSubject*>(xnatObject) != NULL;
|
|
|
+ canHaveFolder |= dynamic_cast<ctkXnatExperiment*>(xnatObject) != NULL;
|
|
|
+ ui->addResourceButton->setEnabled(canHaveFolder);
|
|
|
+ bool uploadFilePossible = false;
|
|
|
+ uploadFilePossible |= dynamic_cast<ctkXnatResource*>(xnatObject) != NULL;
|
|
|
+ uploadFilePossible |= dynamic_cast<ctkXnatScan*>(xnatObject) != NULL;
|
|
|
+ uploadFilePossible |= dynamic_cast<ctkXnatAssessor*>(xnatObject) != NULL;
|
|
|
+ ui->uploadFileButton->setEnabled(uploadFilePossible);
|
|
|
}
|
|
|
|
|
|
void ctkXnatTreeBrowserMainWindow::downloadButtonClicked()
|
|
@@ -122,3 +141,40 @@ void ctkXnatTreeBrowserMainWindow::downloadButtonClicked()
|
|
|
m_TreeModel->downloadFile(index, fileName);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+void ctkXnatTreeBrowserMainWindow::addResourceClicked()
|
|
|
+{
|
|
|
+ const QModelIndex index = ui->treeView->selectionModel()->currentIndex();
|
|
|
+ ctkXnatObject* parentObject = m_TreeModel->xnatObject(index);
|
|
|
+ parentObject->addResource("data", "xml", "clinical parameters", "heart, liver");
|
|
|
+}
|
|
|
+
|
|
|
+void ctkXnatTreeBrowserMainWindow::uploadFileClicked()
|
|
|
+{
|
|
|
+ QString filename = QFileDialog::getOpenFileName(this, tr("Open File"), QDir::homePath());
|
|
|
+ const QModelIndex index = ui->treeView->selectionModel()->currentIndex();
|
|
|
+ ctkXnatResource* resource = dynamic_cast<ctkXnatResource*>(m_TreeModel->xnatObject(index));
|
|
|
+ if (resource)
|
|
|
+ {
|
|
|
+ ctkXnatFile* file = new ctkXnatFile();
|
|
|
+ file->setLocalFilePath(/*filename*/"");
|
|
|
+ file->setName("lset.nrrd");
|
|
|
+ file->setFileFormat("xml");
|
|
|
+ file->setFileContent("clinical parameters");
|
|
|
+ file->setFileTags("testproj, onto");
|
|
|
+ resource->add(file);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ file->save();
|
|
|
+ }
|
|
|
+ catch (ctkXnatException &e)
|
|
|
+ {
|
|
|
+ QMessageBox msgbox;
|
|
|
+ msgbox.setText(e.what());
|
|
|
+ msgbox.setIcon(QMessageBox::Critical);
|
|
|
+ msgbox.exec();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|