Basic controller deletion support
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1491 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
@@ -413,6 +413,9 @@ void automatableModel::setControllerConnection( controllerConnection * _c )
|
||||
QObject::connect( m_controllerConnection,
|
||||
SIGNAL( valueChanged() ),
|
||||
this, SIGNAL( dataChanged() ) );
|
||||
QObject::connect( m_controllerConnection,
|
||||
SIGNAL( destroyed() ),
|
||||
this, SLOT( unlinkControllerConnection() ) );
|
||||
emit dataChanged();
|
||||
}
|
||||
}
|
||||
@@ -420,6 +423,19 @@ void automatableModel::setControllerConnection( controllerConnection * _c )
|
||||
|
||||
|
||||
|
||||
void automatableModel::unlinkControllerConnection( void )
|
||||
{
|
||||
if( m_controllerConnection )
|
||||
{
|
||||
m_controllerConnection->disconnect( this );
|
||||
}
|
||||
|
||||
m_controllerConnection = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void automatableModel::setInitValue( const float _value )
|
||||
{
|
||||
m_initValue = _value;
|
||||
|
||||
@@ -74,7 +74,7 @@ controller::~controller()
|
||||
engine::getSong()->removeController( this );
|
||||
}
|
||||
|
||||
// TODO: Remove connections
|
||||
// Remove connections by destroyed signal
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -97,22 +97,29 @@ void controllerConnection::setController( controller * _controller )
|
||||
|
||||
if( !_controller )
|
||||
{
|
||||
m_controller = controller::create( controller::DummyController, NULL );
|
||||
m_controller = controller::create( controller::DummyController, NULL );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_controller = _controller;
|
||||
}
|
||||
m_controllerId = -1;
|
||||
m_controllerId = -1;
|
||||
|
||||
if( _controller->type() != controller::DummyController )
|
||||
if( _controller->type() != controller::DummyController )
|
||||
{
|
||||
QObject::connect( _controller, SIGNAL( valueChanged() ),
|
||||
this, SIGNAL( valueChanged() ) );
|
||||
}
|
||||
QObject::connect( _controller, SIGNAL( valueChanged() ),
|
||||
this, SIGNAL( valueChanged() ) );
|
||||
}
|
||||
|
||||
m_ownsController =
|
||||
( _controller->type() == controller::MidiController );
|
||||
|
||||
// If we don't own the controller, allow deletion of controller
|
||||
// to delete the connection
|
||||
if( !m_ownsController ) {
|
||||
QObject::connect( _controller, SIGNAL( destroyed() ),
|
||||
this, SLOT( deleteConnection() ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -194,7 +201,10 @@ void controllerConnection::loadSettings( const QDomElement & _this )
|
||||
}
|
||||
|
||||
|
||||
|
||||
void controllerConnection::deleteConnection( void )
|
||||
{
|
||||
delete this;
|
||||
}
|
||||
|
||||
QString controllerConnection::nodeName( void ) const
|
||||
{
|
||||
|
||||
@@ -149,23 +149,16 @@ void controllerRackView::moveDown( effectView * _view )
|
||||
}*/
|
||||
|
||||
|
||||
/*
|
||||
|
||||
void controllerRackView::deletePlugin( effectView * _view )
|
||||
void controllerRackView::deleteController( controllerView * _view )
|
||||
{
|
||||
|
||||
effect * e = _view->getEffect();
|
||||
m_effectViews.erase( qFind( m_effectViews.begin(), m_effectViews.end(),
|
||||
_view ) );
|
||||
controller * c = _view->getController();
|
||||
m_controllerViews.erase( qFind( m_controllerViews.begin(),
|
||||
m_controllerViews.end(), _view ) );
|
||||
delete _view;
|
||||
fxChain()->m_effects.erase( qFind( fxChain()->m_effects.begin(),
|
||||
fxChain()->m_effects.end(),
|
||||
e ) );
|
||||
delete e;
|
||||
delete c;
|
||||
update();
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -188,6 +181,11 @@ void controllerRackView::update( void )
|
||||
for( i = 0; i < s->m_controllers.size(); ++i )
|
||||
{
|
||||
controllerView * v = new controllerView( s->m_controllers[i], w );
|
||||
|
||||
connect( v, SIGNAL( deleteController( controllerView * ) ),
|
||||
this, SLOT( deleteController( controllerView * ) ),
|
||||
Qt::QueuedConnection );
|
||||
|
||||
m_controllerViews.append( v );
|
||||
v->move( 0, i*32 );
|
||||
v->show();
|
||||
|
||||
@@ -124,15 +124,13 @@ void controllerView::closeControls( void )
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void controllerView::contextMenuEvent( QContextMenuEvent * )
|
||||
void controllerView::deleteController()
|
||||
{
|
||||
emit( deleteController( this ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void controllerView::paintEvent( QPaintEvent * )
|
||||
{
|
||||
QPainter p( this );
|
||||
@@ -178,6 +176,33 @@ void controllerView::modelChanged( void )
|
||||
}
|
||||
|
||||
|
||||
|
||||
void controllerView::contextMenuEvent( QContextMenuEvent * )
|
||||
{
|
||||
QPointer<captionMenu> contextMenu = new captionMenu(
|
||||
getModel()->displayName() );
|
||||
/*
|
||||
contextMenu->addAction( embed::getIconPixmap( "arp_up" ),
|
||||
tr( "Move &up" ),
|
||||
this, SLOT( moveUp() ) );
|
||||
contextMenu->addAction( embed::getIconPixmap( "arp_down" ),
|
||||
tr( "Move &down" ),
|
||||
this, SLOT( moveDown() ) );
|
||||
contextMenu->addSeparator();
|
||||
*/
|
||||
contextMenu->addAction( embed::getIconPixmap( "cancel" ),
|
||||
tr( "&Remove this plugin" ),
|
||||
this, SLOT( deleteController() ) );
|
||||
contextMenu->addSeparator();
|
||||
contextMenu->addAction( embed::getIconPixmap( "help" ),
|
||||
tr( "&Help" ),
|
||||
this, SLOT( displayHelp() ) );
|
||||
contextMenu->exec( QCursor::pos() );
|
||||
delete contextMenu;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#include "moc_controller_view.cxx"
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user