From 939fd8ef441e2c9ff4675051c5f1b6987e3a0d37 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Wed, 25 Jun 2008 11:57:40 +0000 Subject: [PATCH] * added submenu for removing connections * made automation-pattern rename working git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1172 0778d3d1-df1d-0410-868b-ea421aaaa00d --- include/automation_pattern.h | 3 +- src/core/automation_pattern.cpp | 52 ++++++++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/include/automation_pattern.h b/include/automation_pattern.h index f1051627a..433ba0176 100644 --- a/include/automation_pattern.h +++ b/include/automation_pattern.h @@ -66,7 +66,7 @@ public: float valueAt( const midiTime & _time ); - const QString name( void ); + const QString name( void ) const; // settings-management virtual void saveSettings( QDomDocument & _doc, QDomElement & _parent ); @@ -138,6 +138,7 @@ public slots: protected slots: void resetName( void ); void changeName( void ); + void disconnectObject( QAction * _a ); protected: diff --git a/src/core/automation_pattern.cpp b/src/core/automation_pattern.cpp index dc1cac9d5..77b48251e 100644 --- a/src/core/automation_pattern.cpp +++ b/src/core/automation_pattern.cpp @@ -279,8 +279,12 @@ void automationPattern::loadSettings( const QDomElement & _this ) -const QString automationPattern::name( void ) +const QString automationPattern::name( void ) const { + if( !trackContentObject::name().isEmpty() ) + { + return( trackContentObject::name() ); + } if( !m_objects.isEmpty() ) { return( m_objects.first()->fullDisplayName() ); @@ -475,7 +479,7 @@ void automationPatternView::update( void ) void automationPatternView::resetName( void ) { - //m_pat->setName( m_pat->m_autoTrack->name() ); + m_pat->setName( QString::null ); } @@ -486,12 +490,28 @@ void automationPatternView::changeName( void ) QString s = m_pat->name(); renameDialog rename_dlg( s ); rename_dlg.exec(); -// m_pat->setName( s ); + m_pat->setName( s ); + update(); } +void automationPatternView::disconnectObject( QAction * _a ) +{ + journallingObject * j = engine::getProjectJournal()-> + getJournallingObject( _a->data().toInt() ); + if( j && dynamic_cast( j ) ) + { + m_pat->m_objects.erase( qFind( m_pat->m_objects.begin(), + m_pat->m_objects.end(), + dynamic_cast( j ) ) ); + update(); + } +} + + + void automationPatternView::constructContextMenu( QMenu * _cm ) { @@ -512,6 +532,27 @@ void automationPatternView::constructContextMenu( QMenu * _cm ) this, SLOT( resetName() ) ); _cm->addAction( embed::getIconPixmap( "rename" ), tr( "Change name" ), this, SLOT( changeName() ) ); + if( !m_pat->m_objects.isEmpty() ) + { + _cm->addSeparator(); + QMenu * m = new QMenu( tr( "Connections" ), _cm ); + for( automationPattern::objectVector::iterator it = + m_pat->m_objects.begin(); + it != m_pat->m_objects.end(); ++it ) + { + if( *it ) + { + a = new QAction( tr( "Disconnect \"%1\"" ). + arg( ( *it )->fullDisplayName() ), m ); + a->setData( ( *it )->id() ); + m->addAction( a ); + } + } + connect( m, SIGNAL( triggered( QAction * ) ), + this, SLOT( disconnectObject( QAction * ) ) ); + _cm->addMenu( m ); + } + _cm->addSeparator(); } @@ -611,10 +652,7 @@ void automationPatternView::paintEvent( QPaintEvent * ) p.setPen( QColor( 32, 240, 32 ) ); } - if( m_pat->name() != m_pat->m_autoTrack->name() ) - { - p.drawText( 2, p.fontMetrics().height() - 1, m_pat->name() ); - } + p.drawText( 2, p.fontMetrics().height() - 1, m_pat->name() ); if( m_pat->isMuted() ) {