diff --git a/mscore/mscore/excerptsdialog.cpp b/mscore/mscore/excerptsdialog.cpp
index f1378eb..465aef4 100644
--- a/mscore/mscore/excerptsdialog.cpp
+++ b/mscore/mscore/excerptsdialog.cpp
@@ -77,6 +77,7 @@ ExcerptsDialog::ExcerptsDialog(Score* s, QWidget* parent)
       createExcerpt->setEnabled(false);
 
       connect(newButton, SIGNAL(clicked()), SLOT(newClicked()));
+      connect(newAllButton, SIGNAL(clicked()), SLOT(newAllClicked()));
       connect(deleteButton, SIGNAL(clicked()), SLOT(deleteClicked()));
       connect(excerptList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
          SLOT(excerptChanged(QListWidgetItem*, QListWidgetItem*)));
@@ -85,6 +86,7 @@ ExcerptsDialog::ExcerptsDialog(Score* s, QWidget* parent)
       connect(partList, SIGNAL(itemDoubleClicked(QListWidgetItem*)),
          SLOT(partDoubleClicked(QListWidgetItem*)));
       connect(createExcerpt, SIGNAL(clicked()), SLOT(createExcerptClicked()));
+      connect(createAllExcerpts, SIGNAL(clicked()), SLOT(createAllExcerptsClicked()));
 
       if (!sel->isEmpty())
             excerptList->setCurrentRow(0);
@@ -181,6 +183,56 @@ void ExcerptsDialog::newClicked()
       }
 
 //---------------------------------------------------------
+//   newAllClicked
+//---------------------------------------------------------
+
+void ExcerptsDialog::newAllClicked()
+      {
+      int n = partList->count();
+      QHash<QString, Excerpt*>* partNames = new QHash<QString, Excerpt*>();
+      QList<Excerpt*>* excerpts = new QList<Excerpt*>();
+
+      for (int i = 0; i < n; ++i) {
+	      PartItem* pi = (PartItem*)partList->item(i);
+	      Excerpt* e = new Excerpt(score);
+	      e->parts()->append(pi->part());
+
+	      QString trackName = pi->part()->trackName();
+	      QString name = trackName;
+
+              if (partNames->contains(trackName)) {
+                      Excerpt* ee = partNames->value(trackName);
+		      name = trackName + tr(" %1").arg(1);
+		      if (ee->name() == trackName) {
+			      ee->setName(name);
+			      ee->setTitle(name);
+                              partNames->insert(name, ee);
+                      }
+
+                      int j = 2;
+                      while (partNames->contains(name)) {
+			      name = trackName + tr(" %1").arg(j);
+                              ++j;
+		      }
+              }
+
+	      e->setName(name);
+	      e->setTitle(name);
+
+              partNames->insert(name, e);
+              excerpts->append(e);
+      }
+
+      while (!excerpts->isEmpty()) {
+              Excerpt* e = excerpts->takeFirst();
+	      el.append(e);
+	      ExcerptItem* ei = new ExcerptItem(e);
+	      excerptList->addItem(ei);
+	      }
+      excerptList->setCurrentRow(el.size() - 1);
+      }
+
+//---------------------------------------------------------
 //   excerptChanged
 //---------------------------------------------------------
 
@@ -269,4 +321,18 @@ void ExcerptsDialog::createExcerptClicked(QListWidgetItem* cur)
             }
       }
 
+//---------------------------------------------------------
+//   createAllExcerptsClicked
+//---------------------------------------------------------
 
+void ExcerptsDialog::createAllExcerptsClicked()
+      {
+      int n = excerptList->count();
+      for (int i = 0; i < n; ++i) {
+            excerptList->setCurrentRow(i);
+	    QListWidgetItem* cur = excerptList->currentItem();
+	    if (cur == 0)
+                  continue;
+	    createExcerptClicked(cur);
+            }
+      }
diff --git a/mscore/mscore/excerptsdialog.h b/mscore/mscore/excerptsdialog.h
index 31bc668..dea0cff 100644
--- a/mscore/mscore/excerptsdialog.h
+++ b/mscore/mscore/excerptsdialog.h
@@ -61,9 +61,11 @@ class ExcerptsDialog : public QDialog, private Ui::ExcerptsDialog {
    private slots:
       void deleteClicked();
       void newClicked();
+      void newAllClicked();
       void excerptChanged(QListWidgetItem* cur, QListWidgetItem* prev);
       void partDoubleClicked(QListWidgetItem*);
       void createExcerptClicked();
+      void createAllExcerptsClicked();
       void createExcerptClicked(QListWidgetItem*);
 
    public slots:
diff --git a/mscore/mscore/excerptsdialog.ui b/mscore/mscore/excerptsdialog.ui
index e93d6f6..b6ceb23 100644
--- a/mscore/mscore/excerptsdialog.ui
+++ b/mscore/mscore/excerptsdialog.ui
@@ -52,6 +52,13 @@
          </spacer>
         </item>
         <item>
+         <widget class="QPushButton" name="newAllButton" >
+          <property name="text" >
+           <string>New All</string>
+          </property>
+         </widget>
+        </item>
+        <item>
          <widget class="QPushButton" name="newButton" >
           <property name="text" >
            <string>New</string>
@@ -115,6 +122,13 @@
       </widget>
      </item>
      <item>
+      <widget class="QPushButton" name="createAllExcerpts" >
+       <property name="text" >
+        <string>Create All Parts</string>
+       </property>
+      </widget>
+     </item>
+     <item>
       <spacer>
        <property name="orientation" >
         <enum>Qt::Horizontal</enum>
