summaryrefslogtreecommitdiff
path: root/muse2/muse/midieditor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/midieditor.cpp')
-rw-r--r--muse2/muse/midieditor.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/muse2/muse/midieditor.cpp b/muse2/muse/midieditor.cpp
index 71d8e97f..d4a16eda 100644
--- a/muse2/muse/midieditor.cpp
+++ b/muse2/muse/midieditor.cpp
@@ -38,14 +38,14 @@
// MidiEditor
//---------------------------------------------------------
-MidiEditor::MidiEditor(int r, PartList* pl,
- QWidget* parent, const char* name) : TopWin(parent, name)
+MidiEditor::MidiEditor(ToplevelType t, int r, PartList* pl,
+ QWidget* parent, const char* name) : TopWin(t, parent, name)
{
setAttribute(Qt::WA_DeleteOnClose);
_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(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(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);
+}