summaryrefslogtreecommitdiff
path: root/muse2/muse/midieditor.cpp
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2011-09-13 13:35:43 +0000
committerFlorian Jung <flo@windfisch.org>2011-09-13 13:35:43 +0000
commitfb0fbe8f65cca18487567fd1e2db63c99c024bd8 (patch)
treec4bb5ca77253af44bd00c4c2912773c42818478c /muse2/muse/midieditor.cpp
parent253b9d9f1a17b98f3f6696f456e9d83f1ac9aee3 (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.cpp28
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);
+}