From 0b3e41f1bc7140de590d57f40df52412855c9099 Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Mon, 10 Oct 2011 13:29:37 +0000 Subject: small drum-map-hide-menu-entry additions --- muse2/muse/midiedit/drumedit.cpp | 56 +++++++++++++++++++++++++++++++++++++++ muse2/muse/midiedit/drumedit.h | 2 ++ muse2/muse/midiedit/scoreedit.cpp | 9 ------- 3 files changed, 58 insertions(+), 9 deletions(-) (limited to 'muse2') diff --git a/muse2/muse/midiedit/drumedit.cpp b/muse2/muse/midiedit/drumedit.cpp index e46e2504..5c8f2c23 100644 --- a/muse2/muse/midiedit/drumedit.cpp +++ b/muse2/muse/midiedit/drumedit.cpp @@ -293,7 +293,9 @@ DrumEdit::DrumEdit(MusECore::PartList* pl, QWidget* parent, const char* name, un QAction* ignoreHideAction = menuShowHide->addAction(tr("Also show hidden instruments")); menuShowHide->addSeparator(); QAction* showAllAction = menuShowHide->addAction(tr("Show all instruments")); + QAction* hideAllAction = menuShowHide->addAction(tr("Hide all instruments")); QAction* hideUnusedAction = menuShowHide->addAction(tr("Only show used instruments")); + QAction* hideEmptyAction = menuShowHide->addAction(tr("Only show instruments with non-empty name or used instruments")); settingsMenu->addSeparator(); groupNoneAction->setCheckable(true); @@ -307,7 +309,9 @@ DrumEdit::DrumEdit(MusECore::PartList* pl, QWidget* parent, const char* name, un connect(groupMaxAction, SIGNAL(triggered()), signalMapper, SLOT(map())); connect(ignoreHideAction, SIGNAL(toggled(bool)), SLOT(set_ignore_hide(bool))); connect(showAllAction, SIGNAL(triggered()), this, SLOT(showAllInstruments())); + connect(hideAllAction, SIGNAL(triggered()), this, SLOT(hideAllInstruments())); connect(hideUnusedAction, SIGNAL(triggered()), this, SLOT(hideUnusedInstruments())); + connect(hideEmptyAction, SIGNAL(triggered()), this, SLOT(hideEmptyInstruments())); signalMapper->setMapping(groupNoneAction, DrumCanvas::CMD_GROUP_NONE); signalMapper->setMapping(groupChanAction, DrumCanvas::CMD_GROUP_CHAN); @@ -1452,6 +1456,25 @@ void DrumEdit::showAllInstruments() ((DrumCanvas*)(canvas))->rebuildOurDrumMap(); } +void DrumEdit::hideAllInstruments() +{ + using MusECore::MidiTrack; + + QSet tracks; + for (MusECore::ciPart p = parts()->begin(); p != parts()->end(); ++p) + tracks.insert((MidiTrack*)p->second->track()); + + for (QSet::iterator it=tracks.begin(); it!=tracks.end(); it++) + { + MidiTrack* track=*it; + + for (int i=0;i<128;i++) + track->drummap_hidden()[i]=true; + } + + ((DrumCanvas*)(canvas))->rebuildOurDrumMap(); +} + void DrumEdit::hideUnusedInstruments() { using MusECore::MidiTrack; @@ -1485,5 +1508,38 @@ void DrumEdit::hideUnusedInstruments() ((DrumCanvas*)(canvas))->rebuildOurDrumMap(); } +void DrumEdit::hideEmptyInstruments() +{ + using MusECore::MidiTrack; + using MusECore::ciEvent; + using MusECore::EventList; + using MusECore::ciPart; + + QSet tracks; + for (MusECore::ciPart p = parts()->begin(); p != parts()->end(); ++p) + tracks.insert((MidiTrack*)p->second->track()); + + for (QSet::iterator it=tracks.begin(); it!=tracks.end(); it++) + { + MidiTrack* track=*it; + + bool hide[128]; + for (int i=0;i<128;i++) hide[i]=track->drummap()[i].name.isEmpty(); + + for (MusECore::ciPart p = parts()->begin(); p != parts()->end(); ++p) + if (p->second->track() == track) + { + const EventList* el = p->second->cevents(); + for (ciEvent ev=el->begin(); ev!=el->end(); ev++) + hide[ev->second.pitch()]=false; + } + + for (int i=0;i<128;i++) + track->drummap_hidden()[i]=hide[i]; + } + + ((DrumCanvas*)(canvas))->rebuildOurDrumMap(); +} + } // namespace MusEGui diff --git a/muse2/muse/midiedit/drumedit.h b/muse2/muse/midiedit/drumedit.h index b08812f3..2c1f3060 100644 --- a/muse2/muse/midiedit/drumedit.h +++ b/muse2/muse/midiedit/drumedit.h @@ -155,7 +155,9 @@ class DrumEdit : public MidiEditor { void updateGroupingActions(); void set_ignore_hide(bool); void showAllInstruments(); + void hideAllInstruments(); void hideUnusedInstruments(); + void hideEmptyInstruments(); public slots: void setSelection(int, MusECore::Event&, MusECore::Part*); diff --git a/muse2/muse/midiedit/scoreedit.cpp b/muse2/muse/midiedit/scoreedit.cpp index 93a24129..9965fd99 100644 --- a/muse2/muse/midiedit/scoreedit.cpp +++ b/muse2/muse/midiedit/scoreedit.cpp @@ -4594,9 +4594,7 @@ void ScoreCanvas::add_new_parts(const std::map< MusECore::Part*, std::set