+// Qt
+#include <QMessageBox>
+#include <QKeyEvent>
+#include <QDockWidget>
+#include <QTabWidget>
+
+//------------------------------------------------------------------------------
+// Static initialisation
+int vvToolWidgetBase::mTabNumber = -1;
+QWidget * vvToolWidgetBase::mStaticWidgetForTab = NULL;
+QVBoxLayout * vvToolWidgetBase::mStaticVerticalLayout = NULL;
+bool vvToolWidgetBase::mIsAnotherToolWaitInput = false;
+
+//------------------------------------------------------------------------------
+vvToolWidgetBase::vvToolWidgetBase(vvMainWindowBase * parent, Qt::WindowFlags f, bool initialize):
+ QWidget(parent, f),
+ Ui::vvToolWidgetBase()
+{
+ mMainWindow = parent;
+ setAttribute(Qt::WA_DeleteOnClose);
+ if (initialize) Initialization();
+ if (isWindow()) { // In this case, the tool is a floating windows
+ // this->grabKeyboard(); // for the ESC key to close the dialog
+ mPreventToUseTwoToolsOnSameInput = false;
+ }
+ else { // In this case it is inserted into a tab
+ DD("Not implemented yet TODO !!");
+ exit(0);
+ // Prevent to load two tools at the same time
+ DD(mIsAnotherToolWaitInput);
+ if (mIsAnotherToolWaitInput) {
+ // setVisible(false);
+ QWidget::close();
+ DD("before return");
+ return;
+ }
+ else mIsAnotherToolWaitInput = true;
+ mPreventToUseTwoToolsOnSameInput = true;
+ // Setup the UI in a new widget
+
+ mWidgetForTab = new QWidget(this);
+ // <-- try to set mToolWidget instead of this ? NO (loop)
+ // <-- try to set parent instead of this ? NO, change nothing
+
+ QVBoxLayout * verticalLayout = new QVBoxLayout;//(mWidgetForTab);
+ verticalLayout->addWidget(mToolInputSelectionWidget);
+ verticalLayout->addWidget(mToolWidget);
+ verticalLayout->setContentsMargins(1, 1, 1, 1);
+ mWidgetForTab->setLayout(verticalLayout);
+ DD(mWidgetForTab->isVisible());
+ mWidgetForTab->setVisible(true);
+ DD(mWidgetForTab->isVisible());
+
+ // Is this the first time we add a tab ?
+ if (parent->GetTab()->widget(mTabNumber) == NULL) { // Yes, create main widget
+ DD("Create main widget");
+ mStaticWidgetForTab = new QWidget(parent->GetTab());//parent, f);
+ // <-- try to set mToolWidget instead of nothing ? NO loop
+ // <-- try to set parent->GetTab() instead of nothing ?
+ mStaticVerticalLayout = new QVBoxLayout;//(mStaticWidgetForTab);
+ mStaticWidgetForTab->setLayout(mStaticVerticalLayout);
+
+ /*mWidgetForTab = new QWidget(mStaticWidgetForTab);
+ QVBoxLayout * verticalLayout = new QVBoxLayout;//(mWidgetForTab);
+ verticalLayout->addWidget(mToolInputSelectionWidget);
+ verticalLayout->addWidget(mToolWidget);
+ verticalLayout->setContentsMargins(1, 1, 1, 1);
+ mWidgetForTab->setLayout(verticalLayout);
+ DD(mWidgetForTab->isVisible());
+ mWidgetForTab->setVisible(true);
+ DD(mWidgetForTab->isVisible());*/
+
+ //<---------- mStaticVerticalLayout->addWidget(mWidgetForTab);
+
+ mTabNumber = parent->GetTab()->addTab(mStaticWidgetForTab, "");
+ DD(mStaticWidgetForTab->isVisible());
+ mStaticWidgetForTab->setVisible(true);
+ DD(mStaticWidgetForTab->isVisible());
+ // mWidgetForTab->setParent(mStaticWidgetForTab);
+ }
+ else {
+ DD("insert into widget");
+ mStaticVerticalLayout->addWidget(mWidgetForTab);
+ SwapCurrentWidget();
+ mToolWidget->setEnabled(true);
+ }
+ parent->GetTab()->setCurrentIndex(mTabNumber);
+ mMainButtonBox->hide(); // No OK/Cancel by default in this case
+ }
+}