##// END OF EJS Templates
Adds the ability to force an acquisition pending for an operation (3)...
Adds the ability to force an acquisition pending for an operation (3) Forces to wait acquisition when creating a variable

File last commit:

r468:4682fc2670df
r1218:6cdc10030ad4
Show More
SqpSettingsDialog.cpp
66 lines | 1.9 KiB | text/x-c | CppLexer
/ gui / src / Settings / SqpSettingsDialog.cpp
#include "Settings/SqpSettingsDialog.h"
#include "ui_SqpSettingsDialog.h"
namespace {
/**
* Performs a bind operation on widgets that can be binded to SciQlop settings
* @param widgets
* @param bind the bind operation
* @sa ISqpSettingsBindable
*/
template <typename BindMethod>
void processBind(const QStackedWidget &widgets, BindMethod bind)
{
auto count = widgets.count();
for (auto i = 0; i < count; ++i) {
// Performs operation if widget is an ISqpSettingsBindable
if (auto sqpSettingsWidget = dynamic_cast<ISqpSettingsBindable *>(widgets.widget(i))) {
bind(*sqpSettingsWidget);
}
}
}
} // namespace
SqpSettingsDialog::SqpSettingsDialog(QWidget *parent)
: QDialog{parent}, ui{new Ui::SqpSettingsDialog}
{
ui->setupUi(this);
// Connection to change the current page to the selection of an entry in the list
connect(ui->listWidget, &QListWidget::currentRowChanged, ui->stackedWidget,
&QStackedWidget::setCurrentIndex);
}
SqpSettingsDialog::~SqpSettingsDialog() noexcept
{
delete ui;
}
void SqpSettingsDialog::loadSettings()
{
// Performs load on all widgets that can be binded to SciQlop settings
processBind(*ui->stackedWidget,
[](ISqpSettingsBindable &bindable) { bindable.loadSettings(); });
}
void SqpSettingsDialog::saveSettings() const
{
// Performs save on all widgets that can be binded to SciQlop settings
processBind(*ui->stackedWidget,
[](ISqpSettingsBindable &bindable) { bindable.saveSettings(); });
}
void SqpSettingsDialog::registerWidget(const QString &name, QWidget *widget) noexcept
{
auto newItem = new QListWidgetItem{ui->listWidget};
newItem->setText(name);
ui->stackedWidget->addWidget(widget);
// Selects widget if it's the first in the dialog
if (ui->listWidget->count() == 1) {
ui->listWidget->setCurrentItem(newItem);
}
}