Authors belong to:
- University of LYON http://www.universite-lyon.fr/
- - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+ - Léon Bérard cancer center http://www.centreleonberard.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
This software is distributed WITHOUT ANY WARRANTY; without even
- BSD See included LICENSE.txt file
- CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
// vv
#include "vvToolWidgetBase.h"
#include <QMessageBox>
#include <QKeyEvent>
#include <QDockWidget>
+#include <QTabWidget>
//------------------------------------------------------------------------------
// Static initialisation
vvToolWidgetBase::vvToolWidgetBase(vvMainWindowBase * parent, Qt::WindowFlags f, bool initialize):
QWidget(parent, f),
Ui::vvToolWidgetBase()
-{
+{
mMainWindow = parent;
setAttribute(Qt::WA_DeleteOnClose);
if (initialize) Initialization();
- // DD(isWindow());
if (isWindow()) { // In this case, the tool is a floating windows
// this->grabKeyboard(); // for the ESC key to close the dialog
mPreventToUseTwoToolsOnSameInput = false;
mToolWidget->setEnabled(true);
}
parent->GetTab()->setCurrentIndex(mTabNumber);
- buttonBox->hide(); // No OK/Cancel by default in this case
+ mMainButtonBox->hide(); // No OK/Cancel by default in this case
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolWidgetBase::Initialization()
-{
+{
mCurrentSlicerManager = 0;
mIsInitialized = false;
mFilter = 0;
connect(mMainWindow, SIGNAL(SelectedImageHasChanged(vvSlicerManager*)), this, SLOT(SelectedImageHasChanged(vvSlicerManager*)));
connect(mToolInputSelectionWidget, SIGNAL(accepted()), this, SLOT(InputIsSelected()));
connect(mToolInputSelectionWidget, SIGNAL(rejected()), this, SLOT(close()));
- connect(buttonBox, SIGNAL(accepted()), this, SLOT(apply()));
- connect(buttonBox, SIGNAL(rejected()), this, SLOT(close()));
+ connect(mMainButtonBox, SIGNAL(accepted()), this, SLOT(apply()));
+ connect(mMainButtonBox, SIGNAL(rejected()), this, SLOT(close()));
// Disable main widget while input image is not selected
mToolWidget->setEnabled(false);
//------------------------------------------------------------------------------
vvToolWidgetBase::~vvToolWidgetBase()
-{
+{
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolWidgetBase::keyPressEvent(QKeyEvent *event)
-{
- // DD("KEYPRESSEVENT");
+{
if (event->key() == Qt::Key_Escape) {
reject();
event->accept();
//------------------------------------------------------------------------------
void vvToolWidgetBase::accept()
-{
+{
apply();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolWidgetBase::reject()
-{
+{
close();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolWidgetBase::AddInputSelector(QString s, clitk::ImageToImageGenericFilterBase * f, bool allowSkip)
-{
+{
int j=0;
mFilter = f;
mSlicerManagersCompatible.clear();
mToolInputSelectionWidget->setToolTip(QString("%1").arg(mFilter->GetAvailableImageTypes().c_str()));
+ mCurrentCompatibleIndex = 0;
for(unsigned int i=0; i<mMainWindow->GetSlicerManagers().size(); i++) {
vvImage * s = mMainWindow->GetSlicerManagers()[i]->GetImage();
if (mFilter->CheckImageType(s->GetNumberOfDimensions(),
s->GetNumberOfScalarComponents(),
- s->GetScalarTypeAsString())) {
+ s->GetScalarTypeAsITKString())) {
mSlicerManagersCompatible.push_back(mMainWindow->GetSlicerManagers()[i]);
if ((int)i == mMainWindow->GetSlicerManagerCurrentIndex()) mCurrentCompatibleIndex = j;
j++;
}
}
if (mSlicerManagersCompatible.size() == 0) {
- QMessageBox::information(this, "No image","Sorry, could not perform operation. No (compatible) image.");
+ std::ostringstream osstream;
+ osstream << "Sorry, could not perform operation. No (compatible) image. "
+ << mFilter->GetAvailableImageTypes();
+ QMessageBox::information(this, "No image", osstream.str().c_str());
reject();
return;
}
//------------------------------------------------------------------------------
void vvToolWidgetBase::AddInputSelector(QString s, bool allowSkip)
-{
+{
mSlicerManagersCompatible.clear();
for(unsigned int i=0; i<mMainWindow->GetSlicerManagers().size(); i++) {
mSlicerManagersCompatible.push_back(mMainWindow->GetSlicerManagers()[i]);
//------------------------------------------------------------------------------
void vvToolWidgetBase::HideInputSelector()
-{
- QList<int> s;
- s.push_back(0);
- s.push_back(1);
- splitter->setSizes(s);
+{
+ mToolInputSelectionWidget->hide();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolWidgetBase::show()
-{
+{
if (!mIsInitialized) {
mToolInputSelectionWidget->Initialize();
mIsInitialized = true;
//------------------------------------------------------------------------------
void vvToolWidgetBase::closeEvent(QCloseEvent *event)
-{
- // DD("closeEvent");
+{
mIsAnotherToolWaitInput = false;
if (isWindow()) {
event->accept();//return QWidget::close();
//------------------------------------------------------------------------------
bool vvToolWidgetBase::close()
-{
- // DD("vvToolWidgetBase::close()");
+{
+ QApplication::restoreOverrideCursor();
return QWidget::close();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolWidgetBase::AnImageIsBeingClosed(vvSlicerManager * m)
-{
+{
mToolInputSelectionWidget->AnImageIsBeingClosed(m);
if (m == mCurrentSlicerManager) {
close();
//------------------------------------------------------------------------------
void vvToolWidgetBase::SwapCurrentWidget()
-{
+{
mStaticWidgetForTab->setUpdatesEnabled(false);
QList<QObject*> l =mStaticWidgetForTab->children();
for(int i=1; i<l.size(); i++) {
//------------------------------------------------------------------------------
void vvToolWidgetBase::SelectedImageHasChanged(vvSlicerManager * m)
-{
+{
if (!isWindow()) { // When the tool is not in a window, it is in a tab : we only display if needed
if (mCurrentSlicerManager == NULL) return;
if (mToolWidget == NULL) return;
//------------------------------------------------------------------------------
void vvToolWidgetBase::InitializeInputs()
-{
+{
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolWidgetBase::InputIsSelected()
-{
- // DD("vvToolWidgetBase::InputIsSelected()");
- //DD(mWidgetForTab->isVisible());
- //DD(mToolWidget->isVisible());
- //DD(mStaticWidgetForTab->isVisible());
-
- buttonBox->setEnabled(true);
+{
+ mMainButtonBox->setEnabled(true);
std::vector<vvSlicerManager*> & l = mToolInputSelectionWidget->GetSelectedInputs();
mCurrentSlicerManager = l[0];
mCurrentImage = mCurrentSlicerManager->GetImage();
//------------------------------------------------------------------------------
void vvToolWidgetBase::InputIsSelected(vvSlicerManager * m)
-{
+{
std::cerr << "You MUST overwrite this method vvToolWidgetBase::InputIsSelected(vvSlicerManager * m) if you use one single input" << std::endl;
exit(0);
}
//------------------------------------------------------------------------------
void vvToolWidgetBase::InputIsSelected(std::vector<vvSlicerManager*> & l)
-{
- buttonBox->setEnabled(true);
+{
+ mMainButtonBox->setEnabled(true);
if (l.size() == 1) InputIsSelected(l[0]);
else {
std::cerr << "You MUST overwrite this method vvToolWidgetBase::InputIsSelected(vector<vvSlicerManager *> m) if you use several input" << std::endl;