123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #include <cmath>
- #include <QGroupBox>
- #include <QLayout>
- #include "LadspaEffect.h"
- #include "LadspaControlDialog.h"
- #include "LadspaControlView.h"
- #include "LedCheckbox.h"
- LadspaControlDialog::LadspaControlDialog( LadspaControls * _ctl ) :
- EffectControlDialog( _ctl ),
- m_effectLayout( NULL ),
- m_stereoLink( NULL )
- {
- QVBoxLayout * mainLay = new QVBoxLayout( this );
- m_effectLayout = new QHBoxLayout();
- mainLay->addLayout( m_effectLayout );
- updateEffectView( _ctl );
- if( _ctl->m_processors > 1 )
- {
- mainLay->addSpacing( 3 );
- QHBoxLayout * center = new QHBoxLayout();
- mainLay->addLayout( center );
- m_stereoLink = new LedCheckBox( tr( "Link Channels" ), this );
- m_stereoLink->setModel( &_ctl->m_stereoLinkModel );
- center->addWidget( m_stereoLink );
- }
- }
- LadspaControlDialog::~LadspaControlDialog()
- {
- }
- void LadspaControlDialog::updateEffectView( LadspaControls * _ctl )
- {
- QList<QGroupBox *> list = findChildren<QGroupBox *>();
- for( QList<QGroupBox *>::iterator it = list.begin(); it != list.end();
- ++it )
- {
- delete *it;
- }
- m_effectControls = _ctl;
- const int cols = static_cast<int>( sqrt(
- static_cast<double>( _ctl->m_controlCount /
- _ctl->m_processors ) ) );
- for( ch_cnt_t proc = 0; proc < _ctl->m_processors; proc++ )
- {
- control_list_t & controls = _ctl->m_controls[proc];
- int row = 0;
- int col = 0;
- buffer_data_t last_port = NONE;
- QGroupBox * grouper;
- if( _ctl->m_processors > 1 )
- {
- grouper = new QGroupBox( tr( "Channel " ) +
- QString::number( proc + 1 ),
- this );
- }
- else
- {
- grouper = new QGroupBox( this );
- }
- QGridLayout * gl = new QGridLayout( grouper );
- grouper->setLayout( gl );
- grouper->setAlignment( Qt::Vertical );
- for( control_list_t::iterator it = controls.begin();
- it != controls.end(); ++it )
- {
- if( (*it)->port()->proc == proc )
- {
- if( last_port != NONE &&
- (*it)->port()->data_type == TOGGLED &&
- !( (*it)->port()->data_type == TOGGLED &&
- last_port == TOGGLED ) )
- {
- ++row;
- col = 0;
- }
- gl->addWidget( new LadspaControlView( grouper, *it ), row, col );
- if( ++col == cols )
- {
- ++row;
- col = 0;
- }
- last_port = (*it)->port()->data_type;
- }
- }
- m_effectLayout->addWidget( grouper );
- }
- if( _ctl->m_processors > 1 && m_stereoLink != NULL )
- {
- m_stereoLink->setModel( &_ctl->m_stereoLinkModel );
- }
- connect( _ctl, SIGNAL( effectModelChanged( LadspaControls * ) ),
- this, SLOT( updateEffectView( LadspaControls * ) ),
- Qt::DirectConnection );
- }
|