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: #ifndef _PLUGIN_PARAMETER_DIALOG_H_ lbajardsilogic@0: #define _PLUGIN_PARAMETER_DIALOG_H_ lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: #include "base/Window.h" lbajardsilogic@0: lbajardsilogic@0: namespace Vamp { class PluginBase; } lbajardsilogic@0: class PluginParameterBox; lbajardsilogic@0: class QWidget; lbajardsilogic@0: class QPushButton; lbajardsilogic@0: class QLabel; lbajardsilogic@0: class QGroupBox; lbajardsilogic@0: class QComboBox; lbajardsilogic@0: lbajardsilogic@0: /** lbajardsilogic@0: * A dialog for editing the parameters of a given plugin, using a lbajardsilogic@0: * PluginParameterBox. This dialog does not contain any mechanism for lbajardsilogic@0: * selecting the plugin in the first place. Note that the dialog lbajardsilogic@0: * directly modifies the parameters of the plugin, so they will remain lbajardsilogic@0: * modified even if the dialog is then cancelled. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: class PluginParameterDialog : public QDialog lbajardsilogic@0: { lbajardsilogic@0: Q_OBJECT lbajardsilogic@0: lbajardsilogic@0: public: lbajardsilogic@0: PluginParameterDialog(Vamp::PluginBase *, QWidget *parent = 0); lbajardsilogic@0: ~PluginParameterDialog(); lbajardsilogic@0: lbajardsilogic@0: void setChannelArrangement(int sourceChannels, lbajardsilogic@0: int targetChannels, lbajardsilogic@0: int defaultChannel); lbajardsilogic@0: lbajardsilogic@0: void setOutputLabel(QString output, QString description); lbajardsilogic@0: lbajardsilogic@0: void setShowProcessingOptions(bool showWindowSize, lbajardsilogic@0: bool showFrequencyDomainOptions); lbajardsilogic@0: lbajardsilogic@0: void setCandidateInputModels(const QStringList &names); lbajardsilogic@0: lbajardsilogic@0: Vamp::PluginBase *getPlugin() { return m_plugin; } lbajardsilogic@0: lbajardsilogic@0: int getChannel() const { return m_channel; } lbajardsilogic@0: lbajardsilogic@0: QString getInputModel() const; lbajardsilogic@0: lbajardsilogic@0: //!!! merge with PluginTransform::ExecutionContext lbajardsilogic@0: lbajardsilogic@0: void getProcessingParameters(size_t &blockSize) const; lbajardsilogic@0: void getProcessingParameters(size_t &stepSize, size_t &blockSize, lbajardsilogic@0: WindowType &windowType) const; lbajardsilogic@0: lbajardsilogic@0: signals: lbajardsilogic@0: void pluginConfigurationChanged(QString); lbajardsilogic@0: void inputModelChanged(QString); lbajardsilogic@0: lbajardsilogic@0: protected slots: lbajardsilogic@0: void channelComboChanged(int); lbajardsilogic@0: void blockSizeComboChanged(const QString &); lbajardsilogic@0: void incrementComboChanged(const QString &); lbajardsilogic@0: void windowTypeChanged(WindowType type); lbajardsilogic@0: void advancedToggled(); lbajardsilogic@0: void setAdvancedVisible(bool); lbajardsilogic@0: lbajardsilogic@0: protected: lbajardsilogic@0: Vamp::PluginBase *m_plugin; lbajardsilogic@0: lbajardsilogic@0: int m_channel; lbajardsilogic@0: size_t m_stepSize; lbajardsilogic@0: size_t m_blockSize; lbajardsilogic@0: lbajardsilogic@0: WindowType m_windowType; lbajardsilogic@0: PluginParameterBox *m_parameterBox; lbajardsilogic@0: lbajardsilogic@0: QLabel *m_outputLabel; lbajardsilogic@0: QLabel *m_outputValue; lbajardsilogic@0: QLabel *m_outputDescription; lbajardsilogic@0: QLabel *m_outputSpacer; lbajardsilogic@0: lbajardsilogic@0: QGroupBox *m_channelBox; lbajardsilogic@0: bool m_haveChannelBoxData; lbajardsilogic@0: lbajardsilogic@0: QGroupBox *m_windowBox; lbajardsilogic@0: bool m_haveWindowBoxData; lbajardsilogic@0: lbajardsilogic@0: QGroupBox *m_inputModelBox; lbajardsilogic@0: QComboBox *m_inputModels; lbajardsilogic@0: lbajardsilogic@0: QPushButton *m_advancedButton; lbajardsilogic@0: QWidget *m_advanced; lbajardsilogic@0: bool m_advancedVisible; lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: #endif lbajardsilogic@0: