VST GUI fixes, improvements

Various fixes improvements:

+ Added support for VST parameters control for windows.
+ New `Close` button for VST parameter controls.
+ Faster GUI for all instruments, effects-loading, not only VSTs,
  and both one-instrument track window mode and normal window
  mode should be supported.
+ Better integration for VST GUIs on Linux, e.g. plugin window
  should not stay always on top of other windows.
+ VST GUI overlook should remain same with different wine setups
  ( except for whole virtual desktops emulations ).
+ VST effect control window merged with VST effect editor window
  should be more easier to control.
+ Little corections at effectviews model updates of instrument
  tracks effect chains.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
This commit is contained in:
Mike Choi
2013-01-15 00:13:21 +01:00
committed by Tobias Doerffel
parent a184bc039e
commit 1c9c76f399
12 changed files with 190 additions and 70 deletions

View File

@@ -175,29 +175,36 @@ void EffectRackView::update()
Qt::QueuedConnection );
view->show();
m_effectViews.append( view );
view_map[i] = true;
if( i < view_map.size() )
{
view_map[i] = true;
}
else
{
view_map.append( true );
}
}
}
int i = m_lastY = 0;
int i = m_lastY = 0, nView = 0;
for( QVector<EffectView *>::Iterator it = m_effectViews.begin();
it != m_effectViews.end(); )
it != m_effectViews.end(); i++ )
{
if( i < view_map.size() && i < m_effectViews.size() &&
view_map[i] == false )
if( i < view_map.size() && view_map[i] == false )
{
delete m_effectViews[i];
delete m_effectViews[nView];
it = m_effectViews.erase( it );
}
else
{
( *it )->move( 0, m_lastY );
m_lastY += ( *it )->height();
++nView;
++it;
++i;
}
}
w->setFixedSize( 210, m_lastY );
QWidget::update();
@@ -242,7 +249,7 @@ void EffectRackView::addEffect()
void EffectRackView::modelChanged()
{
clearViews();
//clearViews();
m_effectsGroupBox->setModel( &fxChain()->m_enabledModel );
connect( fxChain(), SIGNAL( aboutToClear() ),
this, SLOT( clearViews() ) );

View File

@@ -85,6 +85,8 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) :
"while deciding when to stop processing signals." ) );
setModel( _model );
if( effect()->controls()->controlCount() > 0 )
{
QPushButton * ctls_btn = new QPushButton( tr( "Controls" ),
@@ -94,6 +96,7 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) :
ctls_btn->setGeometry( 140, 14, 50, 20 );
connect( ctls_btn, SIGNAL( clicked() ),
this, SLOT( editControls() ) );
m_controlView = effect()->controls()->createView();
if( m_controlView )
{
@@ -141,7 +144,8 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) :
"Right clicking will bring up a context menu where you can change the order "
"in which the effects are processed or delete an effect altogether." ) );
setModel( _model );
//move above vst effect view creation
//setModel( _model );
}
@@ -149,7 +153,15 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) :
EffectView::~EffectView()
{
#ifdef LMMS_BUILD_LINUX
delete m_subWindow;
#else
// otherwise on win32 build VST GUI can get lost
m_subWindow->hide();
#endif
}
@@ -159,7 +171,7 @@ void EffectView::editControls()
{
if( m_subWindow )
{
if( !effect()->controls()->isViewVisible() )
if( !m_subWindow->isVisible() )
{
m_subWindow->show();
m_subWindow->raise();

View File

@@ -1047,9 +1047,9 @@ void InstrumentTrackView::freeInstrumentTrackWindow()
model()->setHook( NULL );
m_window->setInstrumentTrackView( NULL );
m_window->parentWidget()->hide();
m_window->setModel(
engine::dummyTrackContainer()->
dummyInstrumentTrack() );
//m_window->setModel(
// engine::dummyTrackContainer()->
// dummyInstrumentTrack() );
m_window->updateInstrumentView();
s_windowCache << m_window;
}