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:
Paul Giblock
2008-08-26 05:36:26 +00:00
parent 2c0c602b48
commit acd176eda2
11 changed files with 95 additions and 36 deletions

View File

@@ -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;

View File

@@ -74,7 +74,7 @@ controller::~controller()
engine::getSong()->removeController( this );
}
// TODO: Remove connections
// Remove connections by destroyed signal
}

View File

@@ -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
{

View File

@@ -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();

View File

@@ -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