From e17242071618b559d01acdc97e064f65a329aa20 Mon Sep 17 00:00:00 2001
From: Walter Van Herck <w.van.herck@fz-juelich.de>
Date: Wed, 20 Feb 2013 14:52:26 +0100
Subject: [PATCH] First layout of instrument and simulation tabs

---
 GUI/coregui/coregui.pro                       | 10 +-
 .../experimentmanager/experimentmanager.cpp   | 54 -----------
 .../experimentmanager/experimentmanager.h     | 13 ---
 .../instrumentmanager/instrumentmanager.cpp   | 91 +++++++++++++++++++
 .../instrumentmanager/instrumentmanager.h     | 13 +++
 GUI/coregui/mainwindow/mainwindow.cpp         | 13 +--
 GUI/coregui/mainwindow/mainwindow.h           |  4 +-
 .../simulationmanager/simulationmanager.cpp   | 87 +++++++++++-------
 8 files changed, 173 insertions(+), 112 deletions(-)
 delete mode 100644 GUI/coregui/experimentmanager/experimentmanager.cpp
 delete mode 100644 GUI/coregui/experimentmanager/experimentmanager.h
 create mode 100644 GUI/coregui/instrumentmanager/instrumentmanager.cpp
 create mode 100644 GUI/coregui/instrumentmanager/instrumentmanager.h

diff --git a/GUI/coregui/coregui.pro b/GUI/coregui/coregui.pro
index d87b177d268..df861f29611 100644
--- a/GUI/coregui/coregui.pro
+++ b/GUI/coregui/coregui.pro
@@ -25,7 +25,6 @@ SOURCES += \
     mainwindow/main.cpp \
     mainwindow/mainwindow.cpp \
     mainwindow/welcomemode.cpp \
-    experimentmanager/experimentmanager.cpp \
     fitmanager/fitmanager.cpp \
     samplemanager/samplemanager.cpp \
     simulationmanager/simulationmanager.cpp \
@@ -34,13 +33,13 @@ SOURCES += \
     mainwindow/taskselectorwidget.cpp \
     utils/ba_fancytabbar.cpp \
     utils/ba_stylehelper.cpp \
-    utils/rootcanvas.cpp
+    utils/rootcanvas.cpp \
+    instrumentmanager/instrumentmanager.cpp
 
 HEADERS  += \
     mainwindow/imode.h \
     mainwindow/mainwindow.h \
     mainwindow/welcomemode.h \
-    experimentmanager/experimentmanager.h \
     fitmanager/fitmanager.h \
     samplemanager/samplemanager.h \
     simulationmanager/simulationmanager.h \
@@ -49,10 +48,11 @@ HEADERS  += \
     mainwindow/taskselectorwidget.h \
     utils/ba_fancytabbar.h \
     utils/ba_stylehelper.h \
-    utils/rootcanvas.h
+    utils/rootcanvas.h \
+    instrumentmanager/instrumentmanager.h
 
 
-INCLUDEPATH += $$PWD/mainwindow $$PWD/utils $$PWD/welcomemanager $$PWD/samplemanager $$PWD/experimentmanager $$PWD/simulationmanager $$PWD/fitmanager
+INCLUDEPATH += $$PWD/mainwindow $$PWD/utils $$PWD/welcomemanager $$PWD/samplemanager $$PWD/instrumentmanager $$PWD/simulationmanager $$PWD/fitmanager
 LIBS += $$PWD/../../lib/libqt-manhattan-style.so
 INCLUDEPATH += $$PWD/../externals/qt-manhattan-style
 LIBS += $$PWD/../../lib/libQtRoot.so $$PWD/../../lib/libGQt.so
diff --git a/GUI/coregui/experimentmanager/experimentmanager.cpp b/GUI/coregui/experimentmanager/experimentmanager.cpp
deleted file mode 100644
index 684ec8dcefa..00000000000
--- a/GUI/coregui/experimentmanager/experimentmanager.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "experimentmanager.h"
-//#include <QtWidgets>
-#include <QGroupBox>
-#include <QLabel>
-#include <QDateTime>
-#include <QLineEdit>
-#include <QCheckBox>
-#include <QSpinBox>
-#include <QPushButton>
-#include <QGridLayout>
-#include <QDateTimeEdit>
-
-ExperimentManager::ExperimentManager(QWidget *parent)
-    : QWidget(parent)
-{
-    QGroupBox *packagesGroup = new QGroupBox(tr("Look for packages"));
-
-    QLabel *nameLabel = new QLabel(tr("Name:"));
-    QLineEdit *nameEdit = new QLineEdit;
-
-    QLabel *dateLabel = new QLabel(tr("Released after:"));
-    QDateTimeEdit *dateEdit = new QDateTimeEdit(QDate::currentDate());
-
-    QCheckBox *releasesCheckBox = new QCheckBox(tr("Releases"));
-    QCheckBox *upgradesCheckBox = new QCheckBox(tr("Upgrades"));
-
-    QSpinBox *hitsSpinBox = new QSpinBox;
-    hitsSpinBox->setPrefix(tr("Return up to "));
-    hitsSpinBox->setSuffix(tr(" results"));
-    hitsSpinBox->setSpecialValueText(tr("Return only the first result"));
-    hitsSpinBox->setMinimum(1);
-    hitsSpinBox->setMaximum(100);
-    hitsSpinBox->setSingleStep(10);
-
-    QPushButton *startQueryButton = new QPushButton(tr("Start query"));
-
-    QGridLayout *packagesLayout = new QGridLayout;
-    packagesLayout->addWidget(nameLabel, 0, 0);
-    packagesLayout->addWidget(nameEdit, 0, 1);
-    packagesLayout->addWidget(dateLabel, 1, 0);
-    packagesLayout->addWidget(dateEdit, 1, 1);
-    packagesLayout->addWidget(releasesCheckBox, 2, 0);
-    packagesLayout->addWidget(upgradesCheckBox, 3, 0);
-    packagesLayout->addWidget(hitsSpinBox, 4, 0, 1, 2);
-    packagesGroup->setLayout(packagesLayout);
-
-    QVBoxLayout *mainLayout = new QVBoxLayout;
-    mainLayout->addWidget(packagesGroup);
-    mainLayout->addSpacing(12);
-    mainLayout->addWidget(startQueryButton);
-    mainLayout->addStretch(1);
-    setLayout(mainLayout);
-}
-
diff --git a/GUI/coregui/experimentmanager/experimentmanager.h b/GUI/coregui/experimentmanager/experimentmanager.h
deleted file mode 100644
index e5ee9b329bd..00000000000
--- a/GUI/coregui/experimentmanager/experimentmanager.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef EXPMANAGER_H
-#define EXPMANAGER_H
-
-#include <QWidget>
-
-
-class ExperimentManager : public QWidget
-{
-public:
-    ExperimentManager(QWidget *parent = 0);
-};
-
-#endif // EXPMANAGER_H
diff --git a/GUI/coregui/instrumentmanager/instrumentmanager.cpp b/GUI/coregui/instrumentmanager/instrumentmanager.cpp
new file mode 100644
index 00000000000..8fbb865625e
--- /dev/null
+++ b/GUI/coregui/instrumentmanager/instrumentmanager.cpp
@@ -0,0 +1,91 @@
+#include "instrumentmanager.h"
+
+#include <QGroupBox>
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <QComboBox>
+#include <QLabel>
+#include <QGridLayout>
+#include <QLineEdit>
+#include <QCheckBox>
+#include <QDoubleSpinBox>
+
+InstrumentManager::InstrumentManager(QWidget *parent)
+    : QWidget(parent)
+{
+    // selection of instrument by name
+    QGroupBox *instrumentListGroup = new QGroupBox(tr("Instrument List"));
+      // instrument combo box
+    QLabel *nameLabel = new QLabel(tr("Select Instrument:"));
+    QComboBox *instrumentBox = new QComboBox;
+    instrumentBox->addItem(tr("Default GISAXS"));
+      // layout
+    QHBoxLayout *instrumentListLayout = new QHBoxLayout;
+    instrumentListLayout->addWidget(nameLabel);
+    instrumentListLayout->addWidget(instrumentBox);
+    instrumentListGroup->setLayout(instrumentListLayout);
+
+    // beam parameters
+    QGroupBox *beamParamsGroup = new QGroupBox(tr("Beam Parameters"));
+      // intensity
+    QLabel *beamIntensityLabel = new QLabel(tr("Intensity (1/s):"));
+    QDoubleSpinBox *beamIntensityEdit = new QDoubleSpinBox;
+      // incoming angles
+    QLabel *beamAlphaInLabel = new QLabel(tr("Inclination angle (degrees):"));
+    QDoubleSpinBox *beamAlphaInEdit = new QDoubleSpinBox;
+    QLabel *beamPhiInLabel = new QLabel(tr("Azimuthal angle (degrees):"));
+    QDoubleSpinBox *beamPhiInEdit = new QDoubleSpinBox;
+      // layout
+    QGridLayout *beamParamsLayout = new QGridLayout;
+    beamParamsLayout->addWidget(beamIntensityLabel, 0, 0);
+    beamParamsLayout->addWidget(beamIntensityEdit, 0, 1);
+    beamParamsLayout->addWidget(beamAlphaInLabel, 1, 0);
+    beamParamsLayout->addWidget(beamAlphaInEdit, 1, 1);
+    beamParamsLayout->addWidget(beamPhiInLabel, 2, 0);
+    beamParamsLayout->addWidget(beamPhiInEdit, 2, 1);
+    beamParamsGroup->setLayout(beamParamsLayout);
+
+    // detector parameters
+    QGroupBox *detectorParamsGroup = new QGroupBox(tr("Detector Parameters"));
+      // range labels
+    QLabel *startRangeLabel = new QLabel(tr("Start"));
+    QLabel *endRangeLabel = new QLabel(tr("End"));
+    QLabel *nbrValuesRangeLabel = new QLabel(tr("# values"));
+      // angle labels
+    QLabel *detectorAlphaRangeLabel = new QLabel(tr("Inclination range (degrees):"));
+    QLabel *detectorPhiRangeLabel = new QLabel(tr("Azimuthal range (degrees):"));
+      // range input edits
+    QDoubleSpinBox *detectorAlphaStartEdit = new QDoubleSpinBox;
+    QDoubleSpinBox *detectorAlphaEndEdit = new QDoubleSpinBox;
+    QSpinBox *detectorAlphaValuesEdit = new QSpinBox;
+    QDoubleSpinBox *detectorPhiStartEdit = new QDoubleSpinBox;
+    QDoubleSpinBox *detectorPhiEndEdit = new QDoubleSpinBox;
+    QSpinBox *detectorPhiValuesEdit = new QSpinBox;
+      // checkbox for IsGISAXS angle initialization
+    QCheckBox *detectorAnglesIsGISAXSBox = new QCheckBox(tr("IsGISAXS Angle Initialization:"));
+      // layout
+    QGridLayout *detectorParamsLayout = new QGridLayout;
+    detectorParamsLayout->addWidget(startRangeLabel, 0, 1);
+    detectorParamsLayout->addWidget(endRangeLabel, 0, 2);
+    detectorParamsLayout->addWidget(nbrValuesRangeLabel, 0, 3);
+    detectorParamsLayout->addWidget(detectorAlphaRangeLabel, 1, 0);
+    detectorParamsLayout->addWidget(detectorAlphaStartEdit, 1, 1);
+    detectorParamsLayout->addWidget(detectorAlphaEndEdit, 1, 2);
+    detectorParamsLayout->addWidget(detectorAlphaValuesEdit, 1, 3);
+    detectorParamsLayout->addWidget(detectorPhiRangeLabel, 2, 0);
+    detectorParamsLayout->addWidget(detectorPhiStartEdit, 2, 1);
+    detectorParamsLayout->addWidget(detectorPhiEndEdit, 2, 2);
+    detectorParamsLayout->addWidget(detectorPhiValuesEdit, 2, 3);
+    detectorParamsLayout->addWidget(detectorAnglesIsGISAXSBox, 3, 0);
+    detectorParamsGroup->setLayout(detectorParamsLayout);
+
+    // main layout
+    QVBoxLayout *mainLayout = new QVBoxLayout;
+    mainLayout->addWidget(instrumentListGroup);
+   // mainLayout->addSpacing(12);
+    mainLayout->addWidget(beamParamsGroup);
+    mainLayout->addWidget(detectorParamsGroup);
+    mainLayout->addStretch();
+    setLayout(mainLayout);
+}
+
diff --git a/GUI/coregui/instrumentmanager/instrumentmanager.h b/GUI/coregui/instrumentmanager/instrumentmanager.h
new file mode 100644
index 00000000000..ead45b95204
--- /dev/null
+++ b/GUI/coregui/instrumentmanager/instrumentmanager.h
@@ -0,0 +1,13 @@
+#ifndef INSTRMANAGER_H
+#define INSTRMANAGER_H
+
+#include <QWidget>
+
+
+class InstrumentManager : public QWidget
+{
+public:
+    InstrumentManager(QWidget *parent = 0);
+};
+
+#endif // INSTRMANAGER_H
diff --git a/GUI/coregui/mainwindow/mainwindow.cpp b/GUI/coregui/mainwindow/mainwindow.cpp
index c8894fde88d..74e8b96b6d0 100644
--- a/GUI/coregui/mainwindow/mainwindow.cpp
+++ b/GUI/coregui/mainwindow/mainwindow.cpp
@@ -4,7 +4,7 @@
 #include "taskselectorwidget.h"
 #include "welcomemanager.h"
 #include "samplemanager.h"
-#include "experimentmanager.h"
+#include "instrumentmanager.h"
 #include "simulationmanager.h"
 #include "fitmanager.h"
 #include "stylehelper.h"
@@ -19,8 +19,8 @@ MainWindow::MainWindow(QWidget *parent)
     : Manhattan::FancyMainWindow(parent)
     , m_tabWidget(0)
     , m_welcomeManager(0)
+    , m_instrumentManager(0)
     , m_sampleManager(0)
-    , m_expManager(0)
     , m_simulManager(0)
     , m_fitManager(0)
 {
@@ -28,7 +28,8 @@ MainWindow::MainWindow(QWidget *parent)
     qApp->setStyle(new ManhattanStyle(baseName));
 
 //    Manhattan::Utils::StyleHelper::setBaseColor(QColor(Manhattan::Utils::StyleHelper::DEFAULT_BASE_COLOR));
-    Manhattan::Utils::StyleHelper::setBaseColor(QColor(0xCC6600));
+//    Manhattan::Utils::StyleHelper::setBaseColor(QColor(0xCC6600));
+    Manhattan::Utils::StyleHelper::setBaseColor(QColor(0x086FA1));
 
 //    BornAgain::Utils::StyleHelper::setBaseColor(QColor(0xCC6600));
 
@@ -41,14 +42,14 @@ MainWindow::MainWindow(QWidget *parent)
     //m_tabWidget = new TaskSelectorWidget(this);
     m_tabWidget = new Manhattan::FancyTabWidget(this);
     m_welcomeManager = new WelcomeManager();
+    m_instrumentManager = new InstrumentManager();
     m_sampleManager = new SampleManager();
-    m_expManager = new ExperimentManager();
     m_simulManager = new SimulationManager();
     m_fitManager = new FitManager();
 
     m_tabWidget->insertTab(0, m_welcomeManager, QIcon("./images/mode_welcome.png"), "Welcome");
-    m_tabWidget->insertTab(1, m_sampleManager, QIcon("./images/mode_sample.png"), "Sample");
-    m_tabWidget->insertTab(2, m_expManager, QIcon("./images/mode_exp.png"), "Experiment");
+    m_tabWidget->insertTab(1, m_instrumentManager, QIcon("./images/mode_exp.png"), "Instrument");
+    m_tabWidget->insertTab(2, m_sampleManager, QIcon("./images/mode_sample.png"), "Sample");
     m_tabWidget->insertTab(3, m_simulManager, QIcon("./images/mode_simul.png"), "Simulation");
     m_tabWidget->insertTab(4, m_fitManager, QIcon("./images/mode_fit.png"), "Fit");
 
diff --git a/GUI/coregui/mainwindow/mainwindow.h b/GUI/coregui/mainwindow/mainwindow.h
index ec3d53eba28..22b84193d33 100644
--- a/GUI/coregui/mainwindow/mainwindow.h
+++ b/GUI/coregui/mainwindow/mainwindow.h
@@ -10,8 +10,8 @@ namespace Manhattan {
 
 class TaskSelectorWidget;
 class WelcomeManager;
+class InstrumentManager;
 class SampleManager;
-class ExperimentManager;
 class SimulationManager;
 class FitManager;
 
@@ -28,8 +28,8 @@ private:
     //TaskSelectorWidget *m_tabWidget;
     Manhattan::FancyTabWidget  *m_tabWidget;
     WelcomeManager *m_welcomeManager;
+    InstrumentManager *m_instrumentManager;
     SampleManager *m_sampleManager;
-    ExperimentManager *m_expManager;
     SimulationManager *m_simulManager;
     FitManager * m_fitManager;
 };
diff --git a/GUI/coregui/simulationmanager/simulationmanager.cpp b/GUI/coregui/simulationmanager/simulationmanager.cpp
index e4efcbcb1db..241e71a4b48 100644
--- a/GUI/coregui/simulationmanager/simulationmanager.cpp
+++ b/GUI/coregui/simulationmanager/simulationmanager.cpp
@@ -1,46 +1,69 @@
 #include "simulationmanager.h"
-//#include <QtWidgets>
+
 #include <QGroupBox>
-#include <QCheckBox>
-#include <QListWidget>
 #include <QPushButton>
 #include <QVBoxLayout>
+#include <QComboBox>
+#include <QLabel>
+#include <QGridLayout>
 
 SimulationManager::SimulationManager(QWidget *parent)
     : QWidget(parent)
 {
-    QGroupBox *updateGroup = new QGroupBox(tr("Package selection"));
-    QCheckBox *systemCheckBox = new QCheckBox(tr("Update system"));
-    QCheckBox *appsCheckBox = new QCheckBox(tr("Update applications"));
-    QCheckBox *docsCheckBox = new QCheckBox(tr("Update documentation"));
-
-    QGroupBox *packageGroup = new QGroupBox(tr("Existing packages"));
-
-    QListWidget *packageList = new QListWidget;
-    QListWidgetItem *qtItem = new QListWidgetItem(packageList);
-    qtItem->setText(tr("Qt"));
-    QListWidgetItem *qsaItem = new QListWidgetItem(packageList);
-    qsaItem->setText(tr("QSA"));
-    QListWidgetItem *teamBuilderItem = new QListWidgetItem(packageList);
-    teamBuilderItem->setText(tr("Teambuilder"));
-
-    QPushButton *startUpdateButton = new QPushButton(tr("Start update"));
+    // selection of input parameters
+    QGroupBox *inputDataGroup = new QGroupBox(tr("Data selection"));
+      // instrument selection
+    QLabel *instrumentSelectionLabel = new QLabel(tr("Select Instrument:"));
+    QComboBox *instrumentSelectionBox = new QComboBox;
+      // sample selection
+    QLabel *sampleSelectionLabel = new QLabel(tr("Select Sample:"));
+    QComboBox *sampleSelectionBox = new QComboBox;
+      // layout
+    QGridLayout *dataSelectionLayout = new QGridLayout;
+    dataSelectionLayout->addWidget(instrumentSelectionLabel, 0, 0);
+    dataSelectionLayout->addWidget(instrumentSelectionBox, 0, 1);
+    dataSelectionLayout->addWidget(sampleSelectionLabel, 1, 0);
+    dataSelectionLayout->addWidget(sampleSelectionBox, 1, 1);
+    inputDataGroup->setLayout(dataSelectionLayout);
 
-    QVBoxLayout *updateLayout = new QVBoxLayout;
-    updateLayout->addWidget(systemCheckBox);
-    updateLayout->addWidget(appsCheckBox);
-    updateLayout->addWidget(docsCheckBox);
-    updateGroup->setLayout(updateLayout);
+    // selection of simulation parameters
+    QGroupBox *simulationParametersGroup = new QGroupBox(tr("Simulation Parameters"));
+       // framework (DWBA - BA)
+    QLabel *frameworkLabel = new QLabel(tr("Select Framework:"));
+    QComboBox *frameworkSelectionBox = new QComboBox;
+    frameworkSelectionBox->addItem(tr("DWBA"));
+    frameworkSelectionBox->addItem(tr("BA"));
+      // interference function (DA - LMA - SSCA - ISGISAXSMOR)
+    QLabel *interferenceLabel = new QLabel(tr("Select Interference Function Approximation:"));
+    QComboBox *interferenceFunctionSelectionBox = new QComboBox;
+    interferenceFunctionSelectionBox->addItem(tr("DA"));
+    interferenceFunctionSelectionBox->addItem(tr("LMA"));
+    interferenceFunctionSelectionBox->addItem(tr("SSCA"));
+      // lattice type (None - Lattice - Para1D - Para1DFinite)
+    QLabel *latticeTypeLabel = new QLabel(tr("Select Lattice Type:"));
+    QComboBox *latticeTypeSelectionBox = new QComboBox;
+    latticeTypeSelectionBox->addItem(tr("None"));
+    latticeTypeSelectionBox->addItem(tr("Lattice"));
+    latticeTypeSelectionBox->addItem(tr("Para1D"));
+    latticeTypeSelectionBox->addItem(tr("Para1DFinite"));
+      // layout
+    QGridLayout *simulationParametersLayout = new QGridLayout;
+    simulationParametersLayout->addWidget(frameworkLabel, 0, 0);
+    simulationParametersLayout->addWidget(frameworkSelectionBox, 0, 1);
+    simulationParametersLayout->addWidget(interferenceLabel, 1, 0);
+    simulationParametersLayout->addWidget(interferenceFunctionSelectionBox, 1, 1);
+    simulationParametersLayout->addWidget(latticeTypeLabel, 2, 0);
+    simulationParametersLayout->addWidget(latticeTypeSelectionBox, 2, 1);
+    simulationParametersGroup->setLayout(simulationParametersLayout);
 
-    QVBoxLayout *packageLayout = new QVBoxLayout;
-    packageLayout->addWidget(packageList);
-    packageGroup->setLayout(packageLayout);
+    // run simulation button
+    QPushButton *runSimulationButton = new QPushButton(tr("Run Simulation"));
 
+    // main layout
     QVBoxLayout *mainLayout = new QVBoxLayout;
-    mainLayout->addWidget(updateGroup);
-    mainLayout->addWidget(packageGroup);
-    mainLayout->addSpacing(12);
-    mainLayout->addWidget(startUpdateButton);
-    mainLayout->addStretch(1);
+    mainLayout->addWidget(inputDataGroup);
+    mainLayout->addWidget(simulationParametersGroup);
+    mainLayout->addWidget(runSimulationButton);
+    mainLayout->addStretch();
     setLayout(mainLayout);
 }
-- 
GitLab