summaryrefslogtreecommitdiff
path: root/muse2/muse/synth.cpp
diff options
context:
space:
mode:
authorTim E. Real <termtech@rogers.com>2011-09-13 23:59:23 +0000
committerTim E. Real <termtech@rogers.com>2011-09-13 23:59:23 +0000
commita8c8fa89d916bded2905e0a5a8c05ac30e159902 (patch)
treea921aa8311d8542a77f6cbfc952561691cb7bd8d /muse2/muse/synth.cpp
parent56d4a94c40bbcae6a2862fba3e2923542511779f (diff)
Added: You can now insert new tracks instead of always at the track list end.
If main menu 'Add track': Inserts before currently selected track, else adds at end. If Track List right-click existing Track Name: New 'Insert track' menu inserts before clicked track. If Track List right-click on empty space, or Mixer 'Create': Adds at end, as usual. Fixed track selection bug: Track info panel not clearing when clicking empty area.
Diffstat (limited to 'muse2/muse/synth.cpp')
-rw-r--r--muse2/muse/synth.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/muse2/muse/synth.cpp b/muse2/muse/synth.cpp
index ae54cd15..62da5e1d 100644
--- a/muse2/muse/synth.cpp
+++ b/muse2/muse/synth.cpp
@@ -35,13 +35,13 @@
//#include <QMenu>
#include "app.h"
+#include "arranger.h"
#include "synth.h"
#include "xml.h"
#include "midi.h"
#include "midiport.h"
#include "mididev.h"
-//#include "libsynti/mess.h"
-#include "synti/libsynti/mess.h" // p4.0.2
+#include "synti/libsynti/mess.h"
#include "song.h"
#include "audio.h"
#include "event.h"
@@ -162,7 +162,6 @@ static Synth* findSynth(const QString& sclass, const QString& label)
// create a synthesizer instance of class "label"
//---------------------------------------------------------
-//static SynthI* createSynthI(const QString& sclass)
static SynthI* createSynthInstance(const QString& sclass, const QString& label)
{
//Synth* s = findSynth(sclass);
@@ -648,10 +647,10 @@ void initMidiSynth()
//---------------------------------------------------------
// createSynthI
// create a synthesizer instance of class "label"
+// If insertAt is valid, inserts before insertAt. Else at the end after all tracks.
//---------------------------------------------------------
-//SynthI* Song::createSynthI(const QString& sclass)
-SynthI* Song::createSynthI(const QString& sclass, const QString& label)
+SynthI* Song::createSynthI(const QString& sclass, const QString& label, Track* insertAt)
{
//printf("Song::createSynthI calling ::createSynthI class:%s\n", sclass.toLatin1().constData());
@@ -662,13 +661,15 @@ SynthI* Song::createSynthI(const QString& sclass, const QString& label)
return 0;
//printf("Song::createSynthI created SynthI. Before insertTrack1...\n");
- insertTrack1(si, -1);
+ int idx = insertAt ? _tracks.index(insertAt) : -1;
+
+ insertTrack1(si, idx);
//printf("Song::createSynthI after insertTrack1. Before msgInsertTrack...\n");
- msgInsertTrack(si, -1, true); // add to instance list
+ msgInsertTrack(si, idx, true); // add to instance list
//printf("Song::createSynthI after msgInsertTrack. Before insertTrack3...\n");
- insertTrack3(si, -1);
+ insertTrack3(si, idx);
//printf("Song::createSynthI after insertTrack3. Adding default routes...\n");