summaryrefslogtreecommitdiff
path: root/muse2/muse/helper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/helper.cpp')
-rw-r--r--muse2/muse/helper.cpp97
1 files changed, 89 insertions, 8 deletions
diff --git a/muse2/muse/helper.cpp b/muse2/muse/helper.cpp
index b1f37e36..05cecc08 100644
--- a/muse2/muse/helper.cpp
+++ b/muse2/muse/helper.cpp
@@ -116,6 +116,55 @@ bool any_event_selected(const set<Part*>& parts, bool in_range)
return !get_events(parts, in_range ? 3 : 1).empty();
}
+bool drummaps_almost_equal(DrumMap* one, DrumMap* two, int len)
+{
+ for (int i=0; i<len; i++)
+ {
+ DrumMap tmp = one[i];
+ tmp.mute=two[i].mute;
+ if (tmp!=two[i])
+ return false;
+ }
+ return true;
+}
+
+
+QSet<Part*> parts_at_tick(unsigned tick)
+{
+ using MusEGlobal::song;
+
+ QSet<Track*> tmp;
+ for (iTrack it=song->tracks()->begin(); it!=song->tracks()->end(); it++)
+ tmp.insert(*it);
+
+ return parts_at_tick(tick, tmp);
+}
+
+QSet<Part*> parts_at_tick(unsigned tick, Track* track)
+{
+ QSet<Track*> tmp;
+ tmp.insert(track);
+
+ return parts_at_tick(tick, tmp);
+}
+
+QSet<Part*> parts_at_tick(unsigned tick, const QSet<Track*>& tracks)
+{
+ QSet<Part*> result;
+
+ for (QSet<Track*>::const_iterator it=tracks.begin(); it!=tracks.end(); it++)
+ {
+ Track* track=*it;
+
+ for (iPart p_it=track->parts()->begin(); p_it!=track->parts()->end(); p_it++)
+ if (tick >= p_it->second->tick() && tick <= p_it->second->endTick())
+ result.insert(p_it->second);
+ }
+
+ return result;
+}
+
+
} // namespace MusECore
namespace MusEGui {
@@ -189,7 +238,7 @@ QMenu* populateAddSynth(QWidget* parent)
// this is also used in "mixer"
//---------------------------------------------------------
-QActionGroup* populateAddTrack(QMenu* addTrack, bool populateAll)
+QActionGroup* populateAddTrack(QMenu* addTrack, bool populateAll, bool evenIgnoreDrumPreference)
{
QActionGroup* grp = new QActionGroup(addTrack);
if (MusEGlobal::config.addHiddenTracks)
@@ -200,12 +249,38 @@ QActionGroup* populateAddTrack(QMenu* addTrack, bool populateAll)
qApp->translate("@default", QT_TRANSLATE_NOOP("@default", "Add Midi Track")));
midi->setData(MusECore::Track::MIDI);
grp->addAction(midi);
- }
- if (populateAll || MusECore::MidiTrack::visible()) {
- QAction* drum = addTrack->addAction(QIcon(*addtrack_drumtrackIcon),
- qApp->translate("@default", QT_TRANSLATE_NOOP("@default", "Add Drum Track")));
- drum->setData(MusECore::Track::DRUM);
- grp->addAction(drum);
+
+
+ if (!evenIgnoreDrumPreference && (MusEGlobal::config.drumTrackPreference==MusEGlobal::PREFER_OLD || MusEGlobal::config.drumTrackPreference==MusEGlobal::ONLY_OLD))
+ {
+ QAction* drum = addTrack->addAction(QIcon(*addtrack_drumtrackIcon),
+ qApp->translate("@default", QT_TRANSLATE_NOOP("@default", "Add Drum Track")));
+ drum->setData(MusECore::Track::DRUM);
+ grp->addAction(drum);
+ }
+
+ if (!evenIgnoreDrumPreference && (MusEGlobal::config.drumTrackPreference==MusEGlobal::PREFER_NEW || MusEGlobal::config.drumTrackPreference==MusEGlobal::ONLY_NEW))
+ {
+ QAction* newdrum = addTrack->addAction(QIcon(*addtrack_drumtrackIcon),
+ qApp->translate("@default", QT_TRANSLATE_NOOP("@default", "Add Drum Track")));
+ newdrum->setData(MusECore::Track::NEW_DRUM);
+ grp->addAction(newdrum);
+ }
+
+ if (evenIgnoreDrumPreference || MusEGlobal::config.drumTrackPreference==MusEGlobal::PREFER_NEW)
+ {
+ QAction* drum = addTrack->addAction(QIcon(*addtrack_drumtrackIcon),
+ qApp->translate("@default", QT_TRANSLATE_NOOP("@default", "Add Old Style Drum Track")));
+ drum->setData(MusECore::Track::DRUM);
+ grp->addAction(drum);
+ }
+ if (evenIgnoreDrumPreference || MusEGlobal::config.drumTrackPreference==MusEGlobal::PREFER_OLD)
+ {
+ QAction* newdrum = addTrack->addAction(QIcon(*addtrack_drumtrackIcon),
+ qApp->translate("@default", QT_TRANSLATE_NOOP("@default", "Add New Style Drum Track")));
+ newdrum->setData(MusECore::Track::NEW_DRUM);
+ grp->addAction(newdrum);
+ }
}
if (populateAll || MusECore::WaveTrack::visible()) {
QAction* wave = addTrack->addAction(QIcon(*addtrack_wavetrackIcon),
@@ -498,7 +573,13 @@ void populateMidiPorts()
}
-#else
+#else // this code is disabled
+
+DISABLED AND MAYBE OUT-OF-DATE CODE!
+the code below is disabled for a longer period of time,
+there were certain changes and merges. dunno if that code
+works at all. before activating it again, intensively
+verify whether its still okay!
// -------------------------------------------------------------------------------------------------------
// populateMidiPorts()