lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: /* lbajardsilogic@0: Sonic Visualiser lbajardsilogic@0: An audio file viewer and annotation editor. lbajardsilogic@0: Centre for Digital Music, Queen Mary, University of London. lbajardsilogic@0: This file copyright 2006 Chris Cannam and QMUL. lbajardsilogic@0: lbajardsilogic@0: This program is free software; you can redistribute it and/or lbajardsilogic@0: modify it under the terms of the GNU General Public License as lbajardsilogic@0: published by the Free Software Foundation; either version 2 of the lbajardsilogic@0: License, or (at your option) any later version. See the file lbajardsilogic@0: COPYING included with this distribution for more information. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: #include "PluginParameterDialog.h" lbajardsilogic@0: lbajardsilogic@0: #include "PluginParameterBox.h" lbajardsilogic@0: #include "WindowTypeSelector.h" lbajardsilogic@0: lbajardsilogic@0: #include "vamp-sdk/Plugin.h" lbajardsilogic@0: #include "vamp-sdk/PluginHostAdapter.h" lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: PluginParameterDialog::PluginParameterDialog(Vamp::PluginBase *plugin, lbajardsilogic@0: QWidget *parent) : lbajardsilogic@0: QDialog(parent), lbajardsilogic@0: m_plugin(plugin), lbajardsilogic@0: m_channel(-1), lbajardsilogic@0: m_stepSize(0), lbajardsilogic@0: m_blockSize(0), lbajardsilogic@0: m_windowType(HanningWindow), lbajardsilogic@0: m_parameterBox(0) lbajardsilogic@0: { lbajardsilogic@0: setWindowTitle(tr("Plugin Parameters")); lbajardsilogic@0: lbajardsilogic@0: QGridLayout *grid = new QGridLayout; lbajardsilogic@0: setLayout(grid); lbajardsilogic@0: lbajardsilogic@0: QGroupBox *pluginBox = new QGroupBox; lbajardsilogic@0: pluginBox->setTitle(plugin->getType().c_str()); lbajardsilogic@0: grid->addWidget(pluginBox, 0, 0); lbajardsilogic@0: lbajardsilogic@0: QGridLayout *subgrid = new QGridLayout; lbajardsilogic@0: pluginBox->setLayout(subgrid); lbajardsilogic@0: lbajardsilogic@0: subgrid->setSpacing(0); lbajardsilogic@0: subgrid->setMargin(10); lbajardsilogic@0: lbajardsilogic@0: QFont boldFont(pluginBox->font()); lbajardsilogic@0: boldFont.setBold(true); lbajardsilogic@0: lbajardsilogic@0: QFont italicFont(pluginBox->font()); lbajardsilogic@0: italicFont.setItalic(true); lbajardsilogic@0: lbajardsilogic@0: QLabel *nameLabel = new QLabel(plugin->getName().c_str()); lbajardsilogic@0: nameLabel->setWordWrap(true); lbajardsilogic@0: nameLabel->setFont(boldFont); lbajardsilogic@0: lbajardsilogic@0: QLabel *makerLabel = new QLabel(plugin->getMaker().c_str()); lbajardsilogic@0: makerLabel->setWordWrap(true); lbajardsilogic@0: lbajardsilogic@0: QLabel *versionLabel = new QLabel(QString("%1") lbajardsilogic@0: .arg(plugin->getPluginVersion())); lbajardsilogic@0: versionLabel->setWordWrap(true); lbajardsilogic@0: lbajardsilogic@0: QLabel *copyrightLabel = new QLabel(plugin->getCopyright().c_str()); lbajardsilogic@0: copyrightLabel->setWordWrap(true); lbajardsilogic@0: lbajardsilogic@0: // QLabel *typeLabel = new QLabel(plugin->getType().c_str()); lbajardsilogic@0: // typeLabel->setWordWrap(true); lbajardsilogic@0: // typeLabel->setFont(boldFont); lbajardsilogic@0: lbajardsilogic@0: QLabel *descriptionLabel = 0; lbajardsilogic@0: if (plugin->getDescription() != "") { lbajardsilogic@0: descriptionLabel = new QLabel(plugin->getDescription().c_str()); lbajardsilogic@0: descriptionLabel->setWordWrap(true); lbajardsilogic@0: descriptionLabel->setFont(italicFont); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: int row = 0; lbajardsilogic@0: lbajardsilogic@0: QLabel *label = new QLabel(tr("Name:")); lbajardsilogic@0: label->setAlignment(Qt::AlignTop | Qt::AlignLeft); lbajardsilogic@0: subgrid->addWidget(label, row, 0); lbajardsilogic@0: subgrid->addWidget(nameLabel, row, 1); lbajardsilogic@0: row++; lbajardsilogic@0: lbajardsilogic@0: if (descriptionLabel) { lbajardsilogic@0: // label = new QLabel(tr("Description:")); lbajardsilogic@0: // label->setAlignment(Qt::AlignTop | Qt::AlignLeft); lbajardsilogic@0: // subgrid->addWidget(label, row, 0); lbajardsilogic@0: subgrid->addWidget(descriptionLabel, row, 1); lbajardsilogic@0: row++; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: Vamp::PluginHostAdapter *fePlugin = lbajardsilogic@0: dynamic_cast(m_plugin); lbajardsilogic@0: lbajardsilogic@0: if (fePlugin) { lbajardsilogic@0: label = new QLabel(tr("Version:")); lbajardsilogic@0: label->setAlignment(Qt::AlignTop | Qt::AlignLeft); lbajardsilogic@0: subgrid->addWidget(label, row, 0); lbajardsilogic@0: subgrid->addWidget(versionLabel, row, 1); lbajardsilogic@0: row++; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: // label = new QLabel(tr("Type:")); lbajardsilogic@0: // label->setAlignment(Qt::AlignTop | Qt::AlignLeft); lbajardsilogic@0: // subgrid->addWidget(label, row, 0); lbajardsilogic@0: // subgrid->addWidget(typeLabel, row, 1); lbajardsilogic@0: // row++; lbajardsilogic@0: lbajardsilogic@0: label = new QLabel(tr("Maker:")); lbajardsilogic@0: label->setAlignment(Qt::AlignTop | Qt::AlignLeft); lbajardsilogic@0: subgrid->addWidget(label, row, 0); lbajardsilogic@0: subgrid->addWidget(makerLabel, row, 1); lbajardsilogic@0: row++; lbajardsilogic@0: lbajardsilogic@0: label = new QLabel(tr("Copyright: ")); lbajardsilogic@0: label->setAlignment(Qt::AlignTop | Qt::AlignLeft); lbajardsilogic@0: subgrid->addWidget(label, row, 0); lbajardsilogic@0: subgrid->addWidget(copyrightLabel, row, 1); lbajardsilogic@0: row++; lbajardsilogic@0: lbajardsilogic@0: m_outputSpacer = new QLabel; lbajardsilogic@0: subgrid->addWidget(m_outputSpacer, row, 0); lbajardsilogic@0: m_outputSpacer->setFixedHeight(7); lbajardsilogic@0: m_outputSpacer->hide(); lbajardsilogic@0: row++; lbajardsilogic@0: lbajardsilogic@0: m_outputLabel = new QLabel(tr("Output:")); lbajardsilogic@0: m_outputLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft); lbajardsilogic@0: subgrid->addWidget(m_outputLabel, row, 0); lbajardsilogic@0: m_outputValue = new QLabel; lbajardsilogic@0: m_outputValue->setFont(boldFont); lbajardsilogic@0: subgrid->addWidget(m_outputValue, row, 1); lbajardsilogic@0: m_outputLabel->hide(); lbajardsilogic@0: m_outputValue->hide(); lbajardsilogic@0: row++; lbajardsilogic@0: lbajardsilogic@0: m_outputDescription = new QLabel; lbajardsilogic@0: m_outputDescription->setFont(italicFont); lbajardsilogic@0: subgrid->addWidget(m_outputDescription, row, 1); lbajardsilogic@0: m_outputDescription->hide(); lbajardsilogic@0: row++; lbajardsilogic@0: lbajardsilogic@0: subgrid->setColumnStretch(1, 2); lbajardsilogic@0: lbajardsilogic@0: m_inputModelBox = new QGroupBox; lbajardsilogic@0: m_inputModelBox->setTitle(tr("Input Source")); lbajardsilogic@0: grid->addWidget(m_inputModelBox, 1, 0); lbajardsilogic@0: lbajardsilogic@0: m_inputModels = new QComboBox; lbajardsilogic@0: QHBoxLayout *inputLayout = new QHBoxLayout; lbajardsilogic@0: m_inputModelBox->setLayout(inputLayout); lbajardsilogic@0: inputLayout->addWidget(m_inputModels); lbajardsilogic@0: m_inputModelBox->hide(); lbajardsilogic@0: lbajardsilogic@0: QGroupBox *paramBox = new QGroupBox; lbajardsilogic@0: paramBox->setTitle(tr("Plugin Parameters")); lbajardsilogic@0: grid->addWidget(paramBox, 2, 0); lbajardsilogic@0: grid->setRowStretch(2, 10); lbajardsilogic@0: lbajardsilogic@0: QHBoxLayout *paramLayout = new QHBoxLayout; lbajardsilogic@0: paramLayout->setMargin(0); lbajardsilogic@0: paramBox->setLayout(paramLayout); lbajardsilogic@0: lbajardsilogic@0: QScrollArea *scroll = new QScrollArea; lbajardsilogic@0: scroll->setWidgetResizable(true); lbajardsilogic@0: scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); lbajardsilogic@0: scroll->setFrameShape(QFrame::NoFrame); lbajardsilogic@0: paramLayout->addWidget(scroll); lbajardsilogic@0: lbajardsilogic@0: m_parameterBox = new PluginParameterBox(m_plugin); lbajardsilogic@0: connect(m_parameterBox, SIGNAL(pluginConfigurationChanged(QString)), lbajardsilogic@0: this, SIGNAL(pluginConfigurationChanged(QString))); lbajardsilogic@0: scroll->setWidget(m_parameterBox); lbajardsilogic@0: lbajardsilogic@0: m_advanced = new QFrame; lbajardsilogic@0: QVBoxLayout *advancedLayout = new QVBoxLayout; lbajardsilogic@0: advancedLayout->setMargin(0); lbajardsilogic@0: m_advanced->setLayout(advancedLayout); lbajardsilogic@0: grid->addWidget(m_advanced, 3, 0); lbajardsilogic@0: lbajardsilogic@0: m_channelBox = new QGroupBox; lbajardsilogic@0: m_channelBox->setTitle(tr("Channels")); lbajardsilogic@0: advancedLayout->addWidget(m_channelBox); lbajardsilogic@0: m_channelBox->setVisible(false); lbajardsilogic@0: m_haveChannelBoxData = false; lbajardsilogic@0: lbajardsilogic@0: m_windowBox = new QGroupBox; lbajardsilogic@0: m_windowBox->setTitle(tr("Processing")); lbajardsilogic@0: advancedLayout->addWidget(m_windowBox); lbajardsilogic@0: m_windowBox->setVisible(false); lbajardsilogic@0: m_haveWindowBoxData = false; lbajardsilogic@0: lbajardsilogic@0: QHBoxLayout *hbox = new QHBoxLayout; lbajardsilogic@0: grid->addLayout(hbox, 4, 0); lbajardsilogic@0: lbajardsilogic@0: m_advancedVisible = false; lbajardsilogic@0: lbajardsilogic@0: m_advancedButton = new QPushButton(tr("Advanced >>")); lbajardsilogic@0: m_advancedButton->setCheckable(true); lbajardsilogic@0: connect(m_advancedButton, SIGNAL(clicked()), this, SLOT(advancedToggled())); lbajardsilogic@0: lbajardsilogic@0: QSettings settings; lbajardsilogic@0: settings.beginGroup("PluginParameterDialog"); lbajardsilogic@0: m_advancedVisible = settings.value("advancedvisible", false).toBool(); lbajardsilogic@0: settings.endGroup(); lbajardsilogic@0: lbajardsilogic@0: m_advanced->setVisible(false); lbajardsilogic@0: lbajardsilogic@0: hbox->addWidget(m_advancedButton); lbajardsilogic@0: m_advancedButton->hide(); lbajardsilogic@0: lbajardsilogic@0: QPushButton *ok = new QPushButton(tr("OK")); lbajardsilogic@0: QPushButton *cancel = new QPushButton(tr("Cancel")); lbajardsilogic@0: hbox->addStretch(10); lbajardsilogic@0: hbox->addWidget(ok); lbajardsilogic@0: hbox->addWidget(cancel); lbajardsilogic@0: connect(ok, SIGNAL(clicked()), this, SLOT(accept())); lbajardsilogic@0: connect(cancel, SIGNAL(clicked()), this, SLOT(reject())); lbajardsilogic@0: lbajardsilogic@0: setAdvancedVisible(m_advancedVisible); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: PluginParameterDialog::~PluginParameterDialog() lbajardsilogic@0: { lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::setOutputLabel(QString text, lbajardsilogic@0: QString description) lbajardsilogic@0: { lbajardsilogic@0: if (text == "") { lbajardsilogic@0: m_outputSpacer->hide(); lbajardsilogic@0: m_outputLabel->hide(); lbajardsilogic@0: m_outputValue->hide(); lbajardsilogic@0: m_outputDescription->hide(); lbajardsilogic@0: } else { lbajardsilogic@0: m_outputSpacer->show(); lbajardsilogic@0: m_outputValue->setText(text); lbajardsilogic@0: m_outputValue->setWordWrap(true); lbajardsilogic@0: m_outputDescription->setText(description); lbajardsilogic@0: m_outputLabel->show(); lbajardsilogic@0: m_outputValue->show(); lbajardsilogic@0: if (description != "") { lbajardsilogic@0: m_outputDescription->show(); lbajardsilogic@0: } else { lbajardsilogic@0: m_outputDescription->hide(); lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::setChannelArrangement(int sourceChannels, lbajardsilogic@0: int targetChannels, lbajardsilogic@0: int defaultChannel) lbajardsilogic@0: { lbajardsilogic@0: m_channel = defaultChannel; lbajardsilogic@0: lbajardsilogic@0: if (sourceChannels != targetChannels) { lbajardsilogic@0: lbajardsilogic@0: // At the moment we can only cope with the case where lbajardsilogic@0: // sourceChannels > targetChannels and targetChannels == 1 lbajardsilogic@0: lbajardsilogic@0: if (sourceChannels < targetChannels) { lbajardsilogic@0: lbajardsilogic@0: QMessageBox::warning lbajardsilogic@0: (parentWidget(), lbajardsilogic@0: tr("Channel mismatch"), lbajardsilogic@0: tr("This plugin requires at least %1 input channels, but only %2 %3 available. The plugin probably will not work correctly.").arg(targetChannels).arg(sourceChannels).arg(sourceChannels != 1 ? tr("are") : tr("is")), lbajardsilogic@0: QMessageBox::Ok, lbajardsilogic@0: QMessageBox::NoButton); lbajardsilogic@0: lbajardsilogic@0: } else { lbajardsilogic@0: lbajardsilogic@0: if (m_haveChannelBoxData) { lbajardsilogic@0: std::cerr << "WARNING: PluginParameterDialog::setChannelArrangement: Calling more than once on same dialog is not currently implemented" << std::endl; lbajardsilogic@0: return; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: QVBoxLayout *channelLayout = new QVBoxLayout; lbajardsilogic@0: m_channelBox->setLayout(channelLayout); lbajardsilogic@0: lbajardsilogic@0: if (targetChannels != 1) { lbajardsilogic@0: lbajardsilogic@0: channelLayout->addWidget lbajardsilogic@0: (new QLabel(tr("This plugin accepts no more than %1 input channels,\nbut %2 are available. Only the first %3 will be used.\n") lbajardsilogic@0: .arg(targetChannels) lbajardsilogic@0: .arg(sourceChannels) lbajardsilogic@0: .arg(targetChannels))); lbajardsilogic@0: lbajardsilogic@0: } else { lbajardsilogic@0: lbajardsilogic@0: channelLayout->addWidget(new QLabel(tr("This plugin only has a single channel input,\nbut the source has %1 channels.").arg(sourceChannels))); lbajardsilogic@0: lbajardsilogic@0: QComboBox *channelCombo = new QComboBox; lbajardsilogic@0: channelCombo->addItem(tr("Use mean of source channels")); lbajardsilogic@0: for (int i = 0; i < sourceChannels; ++i) { lbajardsilogic@0: channelCombo->addItem(tr("Use channel %1 only").arg(i + 1)); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: connect(channelCombo, SIGNAL(activated(int)), lbajardsilogic@0: this, SLOT(channelComboChanged(int))); lbajardsilogic@0: lbajardsilogic@0: channelLayout->addWidget(channelCombo); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: m_channelBox->setVisible(true); lbajardsilogic@0: m_haveChannelBoxData = true; lbajardsilogic@0: m_advancedButton->show(); lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: setAdvancedVisible(m_advancedVisible); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::setShowProcessingOptions(bool showWindowSize, lbajardsilogic@0: bool showFrequencyDomainOptions) lbajardsilogic@0: { lbajardsilogic@0: if (m_haveWindowBoxData) { lbajardsilogic@0: std::cerr << "WARNING: PluginParameterDialog::setShowProcessingOptions: Calling more than once on same dialog is not currently implemented" << std::endl; lbajardsilogic@0: return; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: if (showWindowSize) { lbajardsilogic@0: lbajardsilogic@0: Vamp::PluginHostAdapter *fePlugin = dynamic_cast(m_plugin); lbajardsilogic@0: int size = 1024; lbajardsilogic@0: int increment = 1024; lbajardsilogic@0: if (fePlugin) { lbajardsilogic@0: size = fePlugin->getPreferredBlockSize(); lbajardsilogic@0: std::cerr << "Feature extraction plugin \"" << fePlugin->getName() << "\" reports preferred block size as " << size << std::endl; lbajardsilogic@0: if (size == 0) size = 1024; lbajardsilogic@0: increment = fePlugin->getPreferredStepSize(); lbajardsilogic@0: if (increment == 0) { lbajardsilogic@0: if (fePlugin->getInputDomain() == Vamp::Plugin::TimeDomain) { lbajardsilogic@0: increment = size; lbajardsilogic@0: } else { lbajardsilogic@0: increment = size/2; lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: QGridLayout *windowLayout = new QGridLayout; lbajardsilogic@0: m_windowBox->setLayout(windowLayout); lbajardsilogic@0: lbajardsilogic@0: if (showFrequencyDomainOptions) { lbajardsilogic@0: windowLayout->addWidget(new QLabel(tr("Window size:")), 0, 0); lbajardsilogic@0: } else { lbajardsilogic@0: windowLayout->addWidget(new QLabel(tr("Audio frames per block:")), 0, 0); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: std::cerr << "size: " << size << ", increment: " << increment << std::endl; lbajardsilogic@0: lbajardsilogic@0: QComboBox *blockSizeCombo = new QComboBox; lbajardsilogic@0: blockSizeCombo->setEditable(true); lbajardsilogic@0: bool found = false; lbajardsilogic@0: for (int i = 0; i < 14; ++i) { lbajardsilogic@0: int val = 1 << (i + 3); lbajardsilogic@0: blockSizeCombo->addItem(QString("%1").arg(val)); lbajardsilogic@0: if (val == size) { lbajardsilogic@0: blockSizeCombo->setCurrentIndex(i); lbajardsilogic@0: found = true; lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: if (!found) { lbajardsilogic@0: blockSizeCombo->addItem(QString("%1").arg(size)); lbajardsilogic@0: blockSizeCombo->setCurrentIndex(blockSizeCombo->count() - 1); lbajardsilogic@0: } lbajardsilogic@0: blockSizeCombo->setValidator(new QIntValidator(1, pow(2.0, 18), this)); lbajardsilogic@0: connect(blockSizeCombo, SIGNAL(editTextChanged(const QString &)), lbajardsilogic@0: this, SLOT(blockSizeComboChanged(const QString &))); lbajardsilogic@0: windowLayout->addWidget(blockSizeCombo, 0, 1); lbajardsilogic@0: lbajardsilogic@0: windowLayout->addWidget(new QLabel(tr("Window increment:")), 1, 0); lbajardsilogic@0: lbajardsilogic@0: QComboBox *incrementCombo = new QComboBox; lbajardsilogic@0: incrementCombo->setEditable(true); lbajardsilogic@0: found = false; lbajardsilogic@0: for (int i = 0; i < 14; ++i) { lbajardsilogic@0: int val = 1 << (i + 3); lbajardsilogic@0: incrementCombo->addItem(QString("%1").arg(val)); lbajardsilogic@0: if (val == increment) { lbajardsilogic@0: incrementCombo->setCurrentIndex(i); lbajardsilogic@0: found = true; lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: if (!found) { lbajardsilogic@0: incrementCombo->addItem(QString("%1").arg(increment)); lbajardsilogic@0: incrementCombo->setCurrentIndex(incrementCombo->count() - 1); lbajardsilogic@0: } lbajardsilogic@0: incrementCombo->setValidator(new QIntValidator(1, pow(2.0, 18), this)); lbajardsilogic@0: connect(incrementCombo, SIGNAL(editTextChanged(const QString &)), lbajardsilogic@0: this, SLOT(incrementComboChanged(const QString &))); lbajardsilogic@0: windowLayout->addWidget(incrementCombo, 1, 1); lbajardsilogic@0: lbajardsilogic@0: if (showFrequencyDomainOptions) { lbajardsilogic@0: lbajardsilogic@0: windowLayout->addWidget(new QLabel(tr("Window shape:")), 2, 0); lbajardsilogic@0: WindowTypeSelector *windowTypeSelector = new WindowTypeSelector; lbajardsilogic@0: connect(windowTypeSelector, SIGNAL(windowTypeChanged(WindowType)), lbajardsilogic@0: this, SLOT(windowTypeChanged(WindowType))); lbajardsilogic@0: windowLayout->addWidget(windowTypeSelector, 2, 1); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: m_windowBox->setVisible(true); lbajardsilogic@0: m_haveWindowBoxData = true; lbajardsilogic@0: m_advancedButton->show(); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: setAdvancedVisible(m_advancedVisible); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::setCandidateInputModels(const QStringList &models) lbajardsilogic@0: { lbajardsilogic@0: m_inputModels->clear(); lbajardsilogic@0: m_inputModels->insertItems(0, models); lbajardsilogic@0: connect(m_inputModels, SIGNAL(activated(const QString &)), lbajardsilogic@0: this, SIGNAL(inputModelChanged(QString))); lbajardsilogic@0: m_inputModelBox->show(); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: QString lbajardsilogic@0: PluginParameterDialog::getInputModel() const lbajardsilogic@0: { lbajardsilogic@0: return m_inputModels->currentText(); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::getProcessingParameters(size_t &blockSize) const lbajardsilogic@0: { lbajardsilogic@0: blockSize = m_blockSize; lbajardsilogic@0: return; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::getProcessingParameters(size_t &stepSize, lbajardsilogic@0: size_t &blockSize, lbajardsilogic@0: WindowType &windowType) const lbajardsilogic@0: { lbajardsilogic@0: stepSize = m_stepSize; lbajardsilogic@0: blockSize = m_blockSize; lbajardsilogic@0: windowType = m_windowType; lbajardsilogic@0: return; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::blockSizeComboChanged(const QString &text) lbajardsilogic@0: { lbajardsilogic@0: m_blockSize = text.toInt(); lbajardsilogic@0: std::cerr << "Block size changed to " << m_blockSize << std::endl; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::incrementComboChanged(const QString &text) lbajardsilogic@0: { lbajardsilogic@0: m_stepSize = text.toInt(); lbajardsilogic@0: //!!! rename increment to step size throughout lbajardsilogic@0: std::cerr << "Increment changed to " << m_stepSize << std::endl; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::windowTypeChanged(WindowType type) lbajardsilogic@0: { lbajardsilogic@0: m_windowType = type; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::advancedToggled() lbajardsilogic@0: { lbajardsilogic@0: setAdvancedVisible(!m_advancedVisible); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::setAdvancedVisible(bool visible) lbajardsilogic@0: { lbajardsilogic@0: m_advanced->setVisible(visible); lbajardsilogic@0: lbajardsilogic@0: if (visible) { lbajardsilogic@0: m_advancedButton->setText(tr("Advanced <<")); lbajardsilogic@0: m_advancedButton->setChecked(true); lbajardsilogic@0: } else { lbajardsilogic@0: m_advancedButton->setText(tr("Advanced >>")); lbajardsilogic@0: m_advancedButton->setChecked(false); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: QSettings settings; lbajardsilogic@0: settings.beginGroup("PluginParameterDialog"); lbajardsilogic@0: settings.setValue("advancedvisible", visible); lbajardsilogic@0: settings.endGroup(); lbajardsilogic@0: lbajardsilogic@0: // std::cerr << "resize to " << sizeHint().width() << " x " << sizeHint().height() << std::endl; lbajardsilogic@0: lbajardsilogic@0: setMinimumHeight(sizeHint().height()); lbajardsilogic@0: adjustSize(); lbajardsilogic@0: lbajardsilogic@0: m_advancedVisible = visible; lbajardsilogic@0: lbajardsilogic@0: // if (visible) setMaximumHeight(sizeHint().height()); lbajardsilogic@0: // adjustSize(); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: PluginParameterDialog::channelComboChanged(int index) lbajardsilogic@0: { lbajardsilogic@0: m_channel = index - 1; lbajardsilogic@0: } lbajardsilogic@0: