From c201a41c050ab31e9751154adf4820b87305acaf Mon Sep 17 00:00:00 2001 From: Dave French Date: Fri, 23 Jan 2015 02:16:30 +0000 Subject: [PATCH 1/4] Proposed fix 1416 Drag-and-drop of automatables to Automation Editor --- include/AutomationEditor.h | 4 ++++ include/AutomationTrack.h | 1 + src/gui/editors/AutomationEditor.cpp | 33 ++++++++++++++++++++++++++++ src/tracks/AutomationTrack.cpp | 1 + 4 files changed, 39 insertions(+) diff --git a/include/AutomationEditor.h b/include/AutomationEditor.h index 64cfeb718..45abfd932 100644 --- a/include/AutomationEditor.h +++ b/include/AutomationEditor.h @@ -70,6 +70,7 @@ public: virtual void saveSettings(QDomDocument & doc, QDomElement & parent); virtual void loadSettings(const QDomElement & parent); + QString nodeName() const { return "automationeditor"; @@ -262,6 +263,9 @@ public: void setCurrentPattern(AutomationPattern* pattern); const AutomationPattern* currentPattern(); + virtual void dropEvent( QDropEvent * _de ); + virtual void dragEnterEvent( QDragEnterEvent * _dee ); + void open(AutomationPattern* pattern); AutomationEditor* m_editor; diff --git a/include/AutomationTrack.h b/include/AutomationTrack.h index b8d3da38d..f805f1344 100644 --- a/include/AutomationTrack.h +++ b/include/AutomationTrack.h @@ -52,6 +52,7 @@ public: QDomElement & _parent ); virtual void loadTrackSpecificSettings( const QDomElement & _this ); + private: friend class AutomationTrackView; diff --git a/src/gui/editors/AutomationEditor.cpp b/src/gui/editors/AutomationEditor.cpp index f839eb5a6..4558ff7f0 100644 --- a/src/gui/editors/AutomationEditor.cpp +++ b/src/gui/editors/AutomationEditor.cpp @@ -64,6 +64,8 @@ #include "PianoRoll.h" #include "debug.h" #include "MeterModel.h" +#include "StringPairDrag.h" +#include "ProjectJournal.h" QPixmap * AutomationEditor::s_toolDraw = NULL; @@ -239,6 +241,7 @@ void AutomationEditor::loadSettings( const QDomElement & dom_parent) + // qproperty access methods QColor AutomationEditor::gridColor() const @@ -2220,6 +2223,7 @@ AutomationEditorWindow::AutomationEditorWindow() : setFocusPolicy( Qt::StrongFocus ); setFocus(); setWindowIcon( embed::getIconPixmap( "automation" ) ); + setAcceptDrops( true ); } @@ -2282,6 +2286,35 @@ const AutomationPattern* AutomationEditorWindow::currentPattern() return m_editor->currentPattern(); } +void AutomationEditorWindow::dropEvent(QDropEvent *_de) +{ + QString type = StringPairDrag::decodeKey( _de ); + QString val = StringPairDrag::decodeValue( _de ); + if( type == "automatable_model" ) + { + AutomatableModel * mod = dynamic_cast( + Engine::projectJournal()-> + journallingObject( val.toInt() ) ); + if( mod != NULL ) + { + if( m_editor->m_pattern->firstObject() ) + { + m_editor->m_pattern->objectDestroyed( m_editor->m_pattern->firstObject()->id() ); + } + m_editor->m_pattern->addObject( mod ); + setCurrentPattern( m_editor->m_pattern ); + + } + } + + update(); +} + +void AutomationEditorWindow::dragEnterEvent(QDragEnterEvent *_dee) +{ + StringPairDrag::processDragEnterEvent( _dee, "automatable_model" ); +} + void AutomationEditorWindow::open(AutomationPattern* pattern) { setCurrentPattern(pattern); diff --git a/src/tracks/AutomationTrack.cpp b/src/tracks/AutomationTrack.cpp index 2b397862d..1b552aba3 100644 --- a/src/tracks/AutomationTrack.cpp +++ b/src/tracks/AutomationTrack.cpp @@ -127,6 +127,7 @@ void AutomationTrack::loadTrackSpecificSettings( const QDomElement & _this ) + AutomationTrackView::AutomationTrackView( AutomationTrack * _at, TrackContainerView* tcv ) : TrackView( _at, tcv ) { From dfbbcfd38bb03cf279017cf2b213d7fc7e3462ca Mon Sep 17 00:00:00 2001 From: Dave French Date: Fri, 23 Jan 2015 02:38:17 +0000 Subject: [PATCH 2/4] 1416 tidy up --- include/AutomationEditor.h | 1 - include/AutomationTrack.h | 1 - src/gui/editors/AutomationEditor.cpp | 3 +-- src/tracks/AutomationTrack.cpp | 1 - 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/include/AutomationEditor.h b/include/AutomationEditor.h index 45abfd932..eca52d2c6 100644 --- a/include/AutomationEditor.h +++ b/include/AutomationEditor.h @@ -70,7 +70,6 @@ public: virtual void saveSettings(QDomDocument & doc, QDomElement & parent); virtual void loadSettings(const QDomElement & parent); - QString nodeName() const { return "automationeditor"; diff --git a/include/AutomationTrack.h b/include/AutomationTrack.h index f805f1344..b8d3da38d 100644 --- a/include/AutomationTrack.h +++ b/include/AutomationTrack.h @@ -52,7 +52,6 @@ public: QDomElement & _parent ); virtual void loadTrackSpecificSettings( const QDomElement & _this ); - private: friend class AutomationTrackView; diff --git a/src/gui/editors/AutomationEditor.cpp b/src/gui/editors/AutomationEditor.cpp index 4558ff7f0..9cfb70b12 100644 --- a/src/gui/editors/AutomationEditor.cpp +++ b/src/gui/editors/AutomationEditor.cpp @@ -241,7 +241,6 @@ void AutomationEditor::loadSettings( const QDomElement & dom_parent) - // qproperty access methods QColor AutomationEditor::gridColor() const @@ -2301,9 +2300,9 @@ void AutomationEditorWindow::dropEvent(QDropEvent *_de) { m_editor->m_pattern->objectDestroyed( m_editor->m_pattern->firstObject()->id() ); } + m_editor->m_pattern->clear(); m_editor->m_pattern->addObject( mod ); setCurrentPattern( m_editor->m_pattern ); - } } diff --git a/src/tracks/AutomationTrack.cpp b/src/tracks/AutomationTrack.cpp index 1b552aba3..2b397862d 100644 --- a/src/tracks/AutomationTrack.cpp +++ b/src/tracks/AutomationTrack.cpp @@ -127,7 +127,6 @@ void AutomationTrack::loadTrackSpecificSettings( const QDomElement & _this ) - AutomationTrackView::AutomationTrackView( AutomationTrack * _at, TrackContainerView* tcv ) : TrackView( _at, tcv ) { From f8120cd2fe4805cae35e88c94a3d4b1dd4e98be1 Mon Sep 17 00:00:00 2001 From: Dave French Date: Fri, 23 Jan 2015 18:15:03 +0000 Subject: [PATCH 3/4] Tidy up and remove clearing 1416 --- src/gui/editors/AutomationEditor.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/gui/editors/AutomationEditor.cpp b/src/gui/editors/AutomationEditor.cpp index 9cfb70b12..0c8033cb6 100644 --- a/src/gui/editors/AutomationEditor.cpp +++ b/src/gui/editors/AutomationEditor.cpp @@ -2223,6 +2223,7 @@ AutomationEditorWindow::AutomationEditorWindow() : setFocus(); setWindowIcon( embed::getIconPixmap( "automation" ) ); setAcceptDrops( true ); + m_toolBar->setAcceptDrops( true ); } @@ -2285,7 +2286,7 @@ const AutomationPattern* AutomationEditorWindow::currentPattern() return m_editor->currentPattern(); } -void AutomationEditorWindow::dropEvent(QDropEvent *_de) +void AutomationEditorWindow::dropEvent( QDropEvent *_de ) { QString type = StringPairDrag::decodeKey( _de ); QString val = StringPairDrag::decodeValue( _de ); @@ -2296,20 +2297,14 @@ void AutomationEditorWindow::dropEvent(QDropEvent *_de) journallingObject( val.toInt() ) ); if( mod != NULL ) { - if( m_editor->m_pattern->firstObject() ) - { - m_editor->m_pattern->objectDestroyed( m_editor->m_pattern->firstObject()->id() ); - } - m_editor->m_pattern->clear(); - m_editor->m_pattern->addObject( mod ); - setCurrentPattern( m_editor->m_pattern ); + m_editor->m_pattern->addObject( mod ); } } update(); } -void AutomationEditorWindow::dragEnterEvent(QDragEnterEvent *_dee) +void AutomationEditorWindow::dragEnterEvent( QDragEnterEvent *_dee ) { StringPairDrag::processDragEnterEvent( _dee, "automatable_model" ); } From f6792d991c51e1957d93ed7ed1591ada807179c4 Mon Sep 17 00:00:00 2001 From: Dave French Date: Fri, 23 Jan 2015 19:46:09 +0000 Subject: [PATCH 4/4] 1416 refresh window --- src/gui/editors/AutomationEditor.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/editors/AutomationEditor.cpp b/src/gui/editors/AutomationEditor.cpp index 0c8033cb6..bde69e950 100644 --- a/src/gui/editors/AutomationEditor.cpp +++ b/src/gui/editors/AutomationEditor.cpp @@ -2298,6 +2298,7 @@ void AutomationEditorWindow::dropEvent( QDropEvent *_de ) if( mod != NULL ) { m_editor->m_pattern->addObject( mod ); + setCurrentPattern( m_editor->m_pattern ); } }