diff options
author | Florian Jung <flo@windfisch.org> | 2011-09-13 13:35:43 +0000 |
---|---|---|
committer | Florian Jung <flo@windfisch.org> | 2011-09-13 13:35:43 +0000 |
commit | fb0fbe8f65cca18487567fd1e2db63c99c024bd8 (patch) | |
tree | c4bb5ca77253af44bd00c4c2912773c42818478c /muse2/muse/midieditor.cpp | |
parent | 253b9d9f1a17b98f3f6696f456e9d83f1ac9aee3 (diff) |
when splitting or pasting into new parts, the new newly created parts
are automatically added to all editors which also display the "origin" parts
Diffstat (limited to 'muse2/muse/midieditor.cpp')
-rw-r--r-- | muse2/muse/midieditor.cpp | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/muse2/muse/midieditor.cpp b/muse2/muse/midieditor.cpp index 218c0615..d4a16eda 100644 --- a/muse2/muse/midieditor.cpp +++ b/muse2/muse/midieditor.cpp @@ -45,7 +45,7 @@ MidiEditor::MidiEditor(ToplevelType t, int r, PartList* pl, _pl = pl; if (_pl) for (iPart i = _pl->begin(); i != _pl->end(); ++i) - _parts.push_back(i->second->sn()); + _parts.insert(i->second->sn()); _raster = r; canvas = 0; wview = 0; @@ -59,6 +59,8 @@ MidiEditor::MidiEditor(ToplevelType t, int r, PartList* pl, mainGrid->setContentsMargins(0, 0, 0, 0); mainGrid->setSpacing(0); setCentralWidget(mainw); + + connect(song, SIGNAL(newPartsCreated(const std::map< Part*, std::set<Part*> >&)), SLOT(addNewParts(const std::map< Part*, std::set<Part*> >&))); } //--------------------------------------------------------- @@ -68,7 +70,7 @@ MidiEditor::MidiEditor(ToplevelType t, int r, PartList* pl, void MidiEditor::genPartlist() { _pl->clear(); - for (std::list<int>::iterator i = _parts.begin(); i != _parts.end(); ++i) { + for (std::set<int>::iterator i = _parts.begin(); i != _parts.end(); ++i) { TrackList* tl = song->tracks(); for (iTrack it = tl->begin(); it != tl->end(); ++it) { PartList* pl = (*it)->parts(); @@ -86,6 +88,17 @@ void MidiEditor::genPartlist() } //--------------------------------------------------------- +// addPart +//--------------------------------------------------------- + +void MidiEditor::addPart(Part* p) +{ + _pl->add(p); + _parts.insert(p->sn()); +} + + +//--------------------------------------------------------- // MidiEditor //--------------------------------------------------------- @@ -266,3 +279,14 @@ void MidiEditor::horizontalZoomOut() hscroll->setMag(newmag); } + +void MidiEditor::addNewParts(const std::map< Part*, std::set<Part*> >& param) +{ + using std::map; + using std::set; + + for (map< Part*, set<Part*> >::const_iterator it = param.begin(); it!=param.end(); it++) + if (_pl->index(it->first) != -1) + for (set<Part*>::const_iterator it2=it->second.begin(); it2!=it->second.end(); it2++) + addPart(*it2); +} |