| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487 | 
							- /*
 
- = StarPU-Top for StarPU =
 
- Copyright (C) 2011 
 
- William Braik
 
- Yann Courtois
 
- Jean-Marie Couteyen
 
- Anthony Roy
 
- This library is free software; you can redistribute it and/or
 
- modify it under the terms of the GNU Lesser General Public
 
- License as published by the Free Software Foundation; either
 
- version 2.1 of the License, or (at your option) any later version.
 
- This library is distributed in the hope that it will be useful,
 
- but WITHOUT ANY WARRANTY; without even the implied warranty of
 
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
- Lesser General Public License for more details.
 
- You should have received a copy of the GNU Lesser General Public
 
- License along with this library; if not, write to the Free Software
 
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
- */
 
- #include "preferencesdialog.h"
 
- #include "ui_preferencesdialog.h"
 
- #include "mainwindow.h"
 
- #include "configurationmanager.h"
 
- #include "sessionsetupmanager.h"
 
- #include <QCloseEvent>
 
- #include <QMessageBox>
 
- #include <QDir>
 
- const QString DEFAULT_SESSION_SETUP_NAME = "<default>";
 
- PreferencesDialog::PreferencesDialog(MainWindow *mainWindow,
 
-                                      ConfigurationManager *configurationManager,
 
-                                      SessionSetupManager *sessionSetupManger,
 
-                                      int activeTab) :
 
- QDialog(mainWindow), ui(new Ui::PreferencesDialog)
 
- {
 
-     ui->setupUi(this);
 
-     _mainWindow = mainWindow;
 
-     _configurationManager = configurationManager;
 
-     _sessionSetupManager = sessionSetupManger;
 
-     _dataWidgetNames = _mainWindow->dataWidgetNames();
 
-     _dataWidgetPossibilities = _mainWindow->dataWidgetPossibilities();
 
-     _interactiveWidgetNames = _mainWindow->interactiveWidgetNames();
 
-     _interactiveWidgetPossibilities
 
-             = _mainWindow->interactiveWidgetPossibilities();
 
-     ui->ipEdit->setText(_configurationManager->serverHost());
 
-     ui->portEdit->setValue(_configurationManager->serverPort());
 
-     ui->commandEdit->setText(_configurationManager->commandLine());
 
-     ui->connectionSSHGroupBox->setChecked(_configurationManager);
 
-     ui->antialiasingCheckBox->setChecked(_configurationManager->antialiasing());
 
-     ui->displayModeComboBox->addItem(tr("Flying windows"),
 
-                                      DISPLAY_FLYING_WINDOWS);
 
-     ui->displayModeComboBox->addItem(tr("MDI, normal"), DISPLAY_MDI_NORMAL);
 
-     ui->preferencesTab->setCurrentIndex(activeTab);
 
-     // Synchronize display mode indexes with the main window's toolbar
 
-     QObject::connect(_mainWindow, SIGNAL(preferencesDialogCreated(int)),
 
-                      this, SLOT(updateDisplayModeIndex(int)));
 
-     QObject::connect(ui->displayModeComboBox, SIGNAL(currentIndexChanged(int)),
 
-                      _mainWindow, SLOT(updateDisplayModeIndex(int)));
 
-     // Synchronize descriptions setup when session setup is loaded
 
-     QObject::connect(
 
-             _mainWindow->sessionSetupManager(),
 
-             SIGNAL(
 
-                     descriptionsSetupLoaded(QList<DataDescriptionSetup> ,
 
-                                             QList<ParamDescriptionSetup> )),
 
-             this,
 
-             SLOT(
 
-                     sessionDescriptionsSetupLoaded(
 
-                             QList<DataDescriptionSetup> ,
 
-                             QList<ParamDescriptionSetup> )));
 
-     // Synchronize main window setup when session setup is loaded
 
-     QObject::connect(_mainWindow->sessionSetupManager(),
 
-                      SIGNAL(mainWindowSetupLoaded(MainWindowSetup)), this,
 
-                      SLOT(sessionMainWindowSetupLoaded(MainWindowSetup)));
 
-     if (_mainWindow->isConnected())
 
-     {
 
-         ui->connectionServerGroupBox->setEnabled(false);
 
-     }
 
-     if (_mainWindow->isReady() == false)
 
-     {
 
-         ui->displayWidgetsGroupBox->setEnabled(false);
 
-     }
 
-     displayWidgetPreferences();
 
-     displaySessionSetupsList();
 
- }
 
- PreferencesDialog::~PreferencesDialog()
 
- {
 
-     delete ui;
 
- }
 
- void PreferencesDialog::changeEvent(QEvent *e)
 
- {
 
-     QDialog::changeEvent(e);
 
-     switch (e->type())
 
-     {
 
-     case QEvent::LanguageChange:
 
-         ui->retranslateUi(this);
 
-         break;
 
-     default:
 
-         break;
 
-     }
 
- }
 
- void PreferencesDialog::closeEvent(QCloseEvent *ce)
 
- {
 
-     _configurationManager->setServerHost(ui->ipEdit->text());
 
-     _configurationManager->setServerPort(ui->portEdit->value());
 
-     _configurationManager->setCommandLine(ui->commandEdit->text());
 
-     _configurationManager->setAntialiasing(
 
-             ui->antialiasingCheckBox->isChecked());
 
-     _configurationManager->setSSH(ui->connectionSSHGroupBox->isChecked());
 
-     ce->accept();
 
- }
 
- void PreferencesDialog::displayWidgetPreferences()
 
- {
 
-     // Read data descriptions
 
-     for (int i = 0; i < _mainWindow->dataDescriptions()->count(); i++)
 
-     {
 
-         DataDescription *dataDescription = _mainWindow->dataDescriptions()->at(
 
-                 i);
 
-         // Init UI
 
-         QGridLayout *layout = (QGridLayout*) ui->dataWidgetsGroupBox->layout();
 
-         layout->addWidget(new QLabel(dataDescription->descriptionString), i, 0,
 
-                           Qt::AlignHCenter);
 
-         QComboBox *dataWidgetList = new QComboBox();
 
-         dataWidgetList->setMinimumWidth(100);
 
-         // Init list
 
-         int dataId = dataDescription->id;
 
-         DataType dataType = dataDescription->type;
 
-         DataWidgetListItemData dataStruct;
 
-         dataStruct.id = dataId;
 
-         QVariant data;
 
-         QList < DataWidgetType > dataWidgetPossibilities
 
-                 = _dataWidgetPossibilities->value(dataType).values();
 
-         int currentDataWidgetIndex;
 
-         for (int j = 0; j < dataWidgetPossibilities.count(); j++)
 
-         {
 
-             DataWidgetType widget = dataWidgetPossibilities.at(j);
 
-             if (widget == dataDescription->widget)
 
-             {
 
-                 currentDataWidgetIndex = j;
 
-             }
 
-             dataStruct.widget = widget;
 
-             data.setValue(dataStruct);
 
-             dataWidgetList->addItem(_dataWidgetNames->value(widget), data);
 
-         }
 
-         // Last item : MUST be DATA_WIDGET_NONE
 
-         dataStruct.widget = DATA_WIDGET_NONE;
 
-         data.setValue(dataStruct);
 
-         dataWidgetList->addItem(
 
-                 _dataWidgetNames->value(DATA_WIDGET_NONE), data);
 
-         // Init index
 
-         if (dataDescription->widget == DATA_WIDGET_NONE)
 
-         { // NONE is the last item
 
-             dataWidgetList->setCurrentIndex(dataWidgetList->count() - 1);
 
-         }
 
-         else
 
-         {
 
-             dataWidgetList->setCurrentIndex(currentDataWidgetIndex);
 
-         }
 
-         QObject::connect(dataWidgetList, SIGNAL(currentIndexChanged(int)),
 
-                          this, SLOT(updateDataWidgetType(int)));
 
-         _dataWidgetListComboBoxes.append(dataWidgetList);
 
-         layout->addWidget(dataWidgetList, i, 1, Qt::AlignHCenter);
 
-     }
 
-     // Param descriptions
 
-     for (int i = 0; i < _mainWindow->paramDescriptions()->count(); i++)
 
-     {
 
-         ParamDescription *paramDescription =
 
-                 _mainWindow->paramDescriptions()->at(i);
 
-         QGridLayout *layout =
 
-                 (QGridLayout*) ui->interactiveWidgetsGroupBox->layout();
 
-         layout->addWidget(new QLabel(paramDescription->descriptionString), i,
 
-                           0, Qt::AlignHCenter);
 
-         QComboBox *interactiveWidgetList = new QComboBox();
 
-         interactiveWidgetList->setMinimumWidth(100);
 
-         // Init list
 
-         int paramId = paramDescription->id;
 
-         ParamType paramType = paramDescription->type;
 
-         InteractiveWidgetListItemData dataStruct;
 
-         dataStruct.id = paramId;
 
-         QVariant data;
 
-         QList < InteractiveWidgetType > interactiveWidgetPossibilities
 
-                 = _interactiveWidgetPossibilities->value(paramType).values();
 
-         int currentInteractiveWidgetIndex;
 
-         for (int j = 0; j < interactiveWidgetPossibilities.count(); j++)
 
-         {
 
-             InteractiveWidgetType widget = interactiveWidgetPossibilities.at(j);
 
-             if (widget == paramDescription->widget)
 
-             {
 
-                 currentInteractiveWidgetIndex = j;
 
-             }
 
-             dataStruct.widget = widget;
 
-             data.setValue(dataStruct);
 
-             interactiveWidgetList->addItem(
 
-                     _interactiveWidgetNames->value(widget), data);
 
-         }
 
-         // Init index
 
-         interactiveWidgetList->setCurrentIndex(currentInteractiveWidgetIndex);
 
-         QObject::connect(interactiveWidgetList,
 
-                          SIGNAL(currentIndexChanged(int)),
 
-                          this, SLOT(updateInteractiveWidgetType(int)));
 
-         _interactiveWidgetListComboBoxes.append(interactiveWidgetList);
 
-         layout->addWidget(interactiveWidgetList, i, 1, Qt::AlignHCenter);
 
-     }
 
- }
 
- void PreferencesDialog::displaySessionSetupsList()
 
- {
 
-     // Default session setup must be the first index
 
-     ui->loadSessionSetupComboBox->addItem(DEFAULT_SESSION_SETUP_NAME);
 
-     QDir sessionSetupsDir = QDir(SESSION_SETUPS_DIR);
 
-     QStringList filter;
 
-     filter << "*" + SESSION_SETUPS_FILEEXT;
 
-     sessionSetupsDir.setNameFilters(filter);
 
-     sessionSetupsDir.setSorting(QDir::Time);
 
-     QStringList sessionSetupFiles = sessionSetupsDir.entryList();
 
-     QStringList sessionSetupNames;
 
-     for (int i = 0; i < sessionSetupFiles.count(); i++)
 
-     {
 
-         QString sessionSetupFile = sessionSetupFiles.at(i);
 
-         QString sessionSetupName = sessionSetupFile;
 
-         sessionSetupName.chop(SESSION_SETUPS_FILEEXT.size());
 
-         sessionSetupNames.append(sessionSetupName);
 
-     }
 
-     ui->loadSessionSetupComboBox->addItems(sessionSetupNames);
 
-     ui->loadSessionSetupComboBox->setCurrentIndex(0);
 
-     QObject::connect(ui->loadSessionSetupComboBox,
 
-                      SIGNAL(currentIndexChanged(QString)), this,
 
-                      SLOT(loadSessionSetup(QString)));
 
- }
 
- void PreferencesDialog::updateDisplayModeIndex(int index)
 
- {
 
-     ui->displayModeComboBox->setCurrentIndex(index);
 
- }
 
- void PreferencesDialog::updateDataWidgetType(int index)
 
- {
 
-     QComboBox *dataWidgetList = (QComboBox*) QObject::sender();
 
-     QVariant data = dataWidgetList->itemData(index, Qt::UserRole);
 
-     DataWidgetListItemData dataStruct;
 
-     Q_ASSERT_X(data.canConvert<DataWidgetListItemData> () == true,
 
-                "PreferencesDialog::updateDataWidgetType()",
 
-                "Data extraction from QVariant failed !");
 
-     dataStruct = data.value<DataWidgetListItemData> ();
 
-     int dataId = dataStruct.id;
 
-     DataWidgetType newWidget = dataStruct.widget;
 
-     _mainWindow->updateDataWidgetType(dataId, newWidget);
 
- }
 
- void PreferencesDialog::updateInteractiveWidgetType(int index)
 
- {
 
-     QComboBox *interactiveWidgetList = (QComboBox*) QObject::sender();
 
-     QVariant data = interactiveWidgetList->itemData(index, Qt::UserRole);
 
-     InteractiveWidgetListItemData dataStruct;
 
-     Q_ASSERT_X(data.canConvert<InteractiveWidgetListItemData> () == true,
 
-                "PreferencesDialog::updateInteractiveWidgetType()",
 
-                "Data extraction from QVariant failed !");
 
-     dataStruct = data.value<InteractiveWidgetListItemData> ();
 
-     int paramId = dataStruct.id;
 
-     InteractiveWidgetType newWidget = dataStruct.widget;
 
-     _mainWindow->updateInteractiveWidgetType(paramId, newWidget);
 
- }
 
- void PreferencesDialog::loadSessionSetup(QString sessionSetupName)
 
- {
 
-     if (sessionSetupName.compare(DEFAULT_SESSION_SETUP_NAME) == 0)
 
-     {
 
-         qDebug() << "PreferencesDialog : loading default session setup";
 
-         // Load default data widgets
 
-         loadDefaultDataWidgets();
 
-         // Load default interactive widgets
 
-         loadDefaultInteractiveWidgets();
 
-     }
 
-     else
 
-     {
 
-         qDebug() << "PreferencesDialog : loading session setup"
 
-                 << sessionSetupName;
 
-         if (_sessionSetupManager->loadSessionSetup(sessionSetupName) == true)
 
-         {
 
-             qDebug() << "PreferencesDialog : loaded session setup successfully";
 
-         }
 
-         else
 
-         {
 
-             QMessageBox::warning(this, tr("StarPU-Top"),
 
-                                  tr("Couldn't load the session setup !"),
 
-                                  QMessageBox::Ok);
 
-             QComboBox *comboBox = (QComboBox*) QObject::sender();
 
-             int indexToRemove = comboBox->currentIndex();
 
-             comboBox->setCurrentIndex(0);
 
-             comboBox->removeItem(indexToRemove);
 
-         }
 
-     }
 
- }
 
- void PreferencesDialog::loadDefaultDataWidgets()
 
- {
 
-     for (int i = 0; i < _dataWidgetListComboBoxes.count(); i++)
 
-     {
 
-         for (int j = 0; _dataWidgetListComboBoxes.at(i)->count(); j++)
 
-         {
 
-             Q_ASSERT_X(
 
-                     _dataWidgetListComboBoxes.at(i)->itemData(j). canConvert<
 
-                     DataWidgetListItemData> () == true,
 
-                     "PreferencesDialog::loadSessionSetup()",
 
-                     "Data extraction from QVariant failed !");
 
-             DataWidgetListItemData dataStruct =
 
-                     _dataWidgetListComboBoxes.at(i)->itemData(j).value<
 
-                     DataWidgetListItemData> ();
 
-             if (dataStruct.widget == DEFAULT_DATA_WIDGET_BOOL
 
-                 || dataStruct.widget == DEFAULT_DATA_WIDGET_INT
 
-                 || dataStruct.widget == DEFAULT_DATA_WIDGET_FLOAT)
 
-             {
 
-                 _dataWidgetListComboBoxes.at(i)->setCurrentIndex(j);
 
-                 break;
 
-             }
 
-         }
 
-     }
 
- }
 
- void PreferencesDialog::loadDefaultInteractiveWidgets()
 
- {
 
-     for (int i = 0; i < _interactiveWidgetListComboBoxes.count(); i++)
 
-     {
 
-         for (int j = 0; _interactiveWidgetListComboBoxes.at(i)->count(); j++)
 
-         {
 
-             Q_ASSERT_X(
 
-                     _interactiveWidgetListComboBoxes.
 
-                     at(i)->itemData(j). canConvert<
 
-                     InteractiveWidgetListItemData> () == true,
 
-                     "PreferencesDialog::loadSessionSetup()",
 
-                     "Data extraction from QVariant failed !");
 
-             InteractiveWidgetListItemData dataStruct =
 
-                     _interactiveWidgetListComboBoxes.at(i) ->itemData(j).value<
 
-                     InteractiveWidgetListItemData> ();
 
-             if (dataStruct.widget == DEFAULT_INTERACTIVE_WIDGET_BOOL
 
-                 || dataStruct.widget == DEFAULT_INTERACTIVE_WIDGET_INT
 
-                 || dataStruct.widget == DEFAULT_INTERACTIVE_WIDGET_FLOAT
 
-                 || dataStruct.widget == DEFAULT_INTERACTIVE_WIDGET_ENUM)
 
-             {
 
-                 _interactiveWidgetListComboBoxes.at(i)->setCurrentIndex(j);
 
-                 break;
 
-             }
 
-         }
 
-     }
 
- }
 
- void PreferencesDialog::sessionDescriptionsSetupLoaded(
 
-         QList<DataDescriptionSetup> dataDescriptionsSetup,
 
-         QList<ParamDescriptionSetup> paramDescriptionsSetup)
 
- {
 
-     qDebug()
 
-             << "PreferencesDialog : "
 
-             "restoring descriptions setup from another session";
 
-     // Load data descriptions setup
 
-     for (int i = 0; i < dataDescriptionsSetup.count(); i++)
 
-     {
 
-         // The comboboxes are created following the order of the descriptions
 
-         int newIndex = indexOfDataWidget(_dataWidgetListComboBoxes.at(i),
 
-                                          dataDescriptionsSetup.at(i).widget);
 
-         Q_ASSERT_X(newIndex != -1, "PreferencesDialog::sessionSetupLoaded()",
 
-                    "Couldn't find loaded data widget index in the list !");
 
-         _dataWidgetListComboBoxes.at(i)->setCurrentIndex(newIndex);
 
-     }
 
-     // Load param descriptions setup
 
-     for (int i = 0; i < paramDescriptionsSetup.count(); i++)
 
-     {
 
-         // The comboboxes are created following the order of the descriptions
 
-         int newIndex = indexOfInteractiveWidget(
 
-                 _interactiveWidgetListComboBoxes.at(i),
 
-                 paramDescriptionsSetup.at(i).widget);
 
-         Q_ASSERT_X(newIndex != -1, "PreferencesDialog::sessionSetupLoaded()",
 
-                    "Couldn't find loaded interactive widget index in the list !");
 
-         _interactiveWidgetListComboBoxes.at(i)->setCurrentIndex(newIndex);
 
-     }
 
- }
 
- void PreferencesDialog::sessionMainWindowSetupLoaded(
 
-         MainWindowSetup mainWindowSetup)
 
- {
 
-     if (_mainWindow->displayMode() != mainWindowSetup.displayMode)
 
-     {
 
-         for (int i = 0; i < ui->displayModeComboBox->count(); i++)
 
-         {
 
-             DisplayMode displayMode =
 
-                     (DisplayMode) ui->displayModeComboBox ->itemData(i).toInt();
 
-             if (displayMode == mainWindowSetup.displayMode)
 
-             {
 
-                 ui->displayModeComboBox->setCurrentIndex(i);
 
-                 return;
 
-             }
 
-         }
 
-     }
 
- }
 
- // Util methods
 
- int PreferencesDialog::indexOfDataWidget(QComboBox* dataWidgetList,
 
-                                          DataWidgetType widget)
 
- {
 
-     for (int i = 0; dataWidgetList->count(); i++)
 
-     {
 
-         Q_ASSERT_X(
 
-                 dataWidgetList->itemData(i)
 
-                 . canConvert<DataWidgetListItemData> ()
 
-                 == true, "PreferencesDialog::indexOfDataWidget()",
 
-                 "Data extraction from QVariant failed !");
 
-         DataWidgetListItemData dataStruct = dataWidgetList->itemData(i).value<
 
-                                             DataWidgetListItemData> ();
 
-         if (dataStruct.widget == widget)
 
-         {
 
-             return i;
 
-         }
 
-     }
 
-     return -1;
 
- }
 
- int PreferencesDialog::indexOfInteractiveWidget(
 
-         QComboBox* interactiveWidgetList, InteractiveWidgetType widget)
 
- {
 
-     for (int i = 0; interactiveWidgetList->count(); i++)
 
-     {
 
-         Q_ASSERT_X(
 
-                 interactiveWidgetList->itemData(i). canConvert<
 
-                 InteractiveWidgetListItemData> () == true,
 
-                 "PreferencesDialog::indexOfInteractiveWidget()",
 
-                 "Data extraction from QVariant failed !");
 
-         InteractiveWidgetListItemData dataStruct =
 
-                 interactiveWidgetList->itemData(i).value<
 
-                 InteractiveWidgetListItemData> ();
 
-         if (dataStruct.widget == widget)
 
-         {
 
-             return i;
 
-         }
 
-     }
 
-     return -1;
 
- }
 
 
  |