Esempio n. 1
0
QSplitter* ScoreTab::viewSplitter(int n) const
{
    TabScoreView* tsv = static_cast<TabScoreView*>(tab->tabData(n).value<void*>());
    if (tsv == 0) {
        // qDebug("ScoreTab::viewSplitter %d is zero", n);
        return 0;
    }
    Score* score = tsv->score;
    if (tsv->part) {
        QList<Excerpt*>& excerpts = score->excerpts();
        if (!excerpts.isEmpty() && ((tsv->part - 1) < excerpts.size()))
            score = excerpts.at(tsv->part - 1)->partScore();
    }

    int nn = stack->count();
    for (int i = 0; i < nn; ++i) {
        QSplitter* sp = static_cast<QSplitter*>(stack->widget(i));
        if (sp->count() == 0)
            return 0;
        ScoreView* v = static_cast<ScoreView*>(sp->widget(0));
        if (v->score() == score)
            return sp;
    }
    return 0;
}
Esempio n. 2
0
void TestMeasure::insertMeasureEnd()
      {
      Score* score = readScore(DIR + "measure01.mscx");
      score->doLayout();
      foreach(Excerpt* e, score->excerpts())
            e->score()->doLayout();

      score->startCmd();
      score->insertMeasure(Element::MEASURE, 0);
      score->endCmd();
      QVERIFY(saveCompareScore(score, "measure01-3.mscx", DIR + "measure01-3-ref.mscx"));
      delete score;
      }
Esempio n. 3
0
void TestMeasure::insertMeasureBegin()
      {
      Score* score = readScore(DIR + "measure1.mscx");
      score->doLayout();
      foreach(Excerpt* e, score->excerpts())
            e->score()->doLayout();

      Measure* m = score->firstMeasure();
      score->startCmd();
      score->insertMeasure(Element::MEASURE, m);
      score->endCmd();
      QVERIFY(saveCompareScore(score, "measure1-2.mscx", DIR + "measure1-2o.mscx"));
      delete score;
      }
Esempio n. 4
0
void TestMeasure::spanner_a()
      {
      Score* score = readScore(DIR + "measure-3.mscx");
      score->doLayout();
      foreach(Excerpt* e, score->excerpts())
            e->score()->doLayout();

      Measure* m = score->firstMeasure()->nextMeasure();
      score->startCmd();
      score->insertMeasure(Element::MEASURE, m);
      score->endCmd();
      QVERIFY(saveCompareScore(score, "measure-4.mscx", DIR + "measure-4-ref.mscx"));
      delete score;
      }
Esempio n. 5
0
void TestMeasure::spanner_D()
      {
      Score* score = readScore(DIR + "measure-9.mscx");
      score->doLayout();
      foreach(Excerpt* e, score->excerpts())
            e->score()->doLayout();

      Measure* m = score->firstMeasure()->nextMeasure();
      score->startCmd();
      score->select(m);
      score->cmdDeleteSelectedMeasures();
      score->endCmd();
      QVERIFY(saveCompareScore(score, "measure-9.mscx", DIR + "measure-9-ref.mscx"));
      delete score;
      }
Esempio n. 6
0
Score* MTest::readCreatedScore(const QString& name)
      {
      Score* score = new Score(mscore->baseStyle());
      score->setName(name);
//      MScore::testMode = true;
      QString csl  = score->fileInfo()->suffix().toLower();

      Score::FileError rv;
      if (csl == "cap")
            rv = importCapella(score, name);
      else if (csl == "capx")
            rv = importCapXml(score, name);
      else if (csl == "sgu")
            rv = importBB(score, name);
      else if (csl == "mscz" || csl == "mscx")
            rv = score->loadMsc(name, false);
      else if (csl == "mxl")
            rv = importCompressedMusicXml(score, name);
#ifdef OMR
      else if (csl == "pdf")
            rv = importPdf(score, name);
#endif
      else if (csl == "xml")
            rv = importMusicXml(score, name);
      else if (csl == "gp3" || csl == "gp4" || csl == "gp5")
            rv = importGTP(score, name);
      else
            rv = Score::FileError::FILE_UNKNOWN_TYPE;

      if (rv != Score::FileError::FILE_NO_ERROR) {
            QWARN(qPrintable(QString("readScore: cannot load <%1> type <%2>\n").arg(name).arg(csl)));
            delete score;
            return 0;
            }
      score->updateNotes();
      for (Excerpt* e : score->excerpts())
            e->score()->updateNotes();
      return score;
      }
Esempio n. 7
0
void ScoreTab::setCurrent(int n)
{
    if (n == -1) {
        clearTab2();
        tab2->setVisible(false);
        // clearTab2();      //??
        emit currentScoreViewChanged(0);
        return;
    }
    TabScoreView* tsv = static_cast<TabScoreView*>(tab->tabData(n).value<void*>());
    QSplitter* vs = viewSplitter(n);

    ScoreView* v;
    if (!vs) {
        vs = new QSplitter;
        v  = new ScoreView;
        tab2->blockSignals(true);
        tab2->setCurrentIndex(0);
        tab2->blockSignals(false);
        vs->addWidget(v);
        v->setScore(scoreList->value(n));
        stack->addWidget(vs);
    }
    else {
        v = static_cast<ScoreView*>(vs->widget(0));
    }
#ifdef OMR
    if (v) {
        Score* score = v->score();
        if (score->showOmr() && score->omr()) {
            if (vs->count() < 2) {
                Omr* omr    = score->omr();
                OmrView* sv = omr->newOmrView(v);
                v->setOmrView(sv);
                vs->addWidget(sv);
                connect(v, SIGNAL(scaleChanged(double)), sv, SLOT(setScale(double)));
                connect(v, SIGNAL(offsetChanged(double,double)), sv, SLOT(setOffset(double,double)));
                const QTransform _matrix = v->matrix();
                double _spatium = score->spatium();
                double scale = _matrix.m11() * _spatium;
                sv->setScale(scale);
                sv->setOffset(_matrix.dx(), _matrix.dy());
                QList<int> sizes;
                sizes << 100 << 100;
                vs->setSizes(sizes);
            }
        }
        else {
            if (vs->count() > 1) {
                QWidget* w = vs->widget(1);
                delete w;
            }
        }
    }
#endif
    stack->setCurrentWidget(vs);
    clearTab2();
    if (v) {
        Score* score = v->score();
        if (score->parentScore())
            score = score->parentScore();
        QList<Excerpt*>& excerpts = score->excerpts();
        if (!excerpts.isEmpty()) {
            tab2->blockSignals(true);
            tab2->addTab(score->name().replace("&","&&"));
            foreach(const Excerpt* excerpt, excerpts) {
                tab2->addTab(excerpt->partScore()->name().replace("&","&&"));
            }
            tab2->setCurrentIndex(tsv->part);
            tab2->blockSignals(false);
            tab2->setVisible(true);
        }
Esempio n. 8
0
bool Album::createScore(const QString& fn)
      {
      loadScores();

      Score* firstScore = _scores[0]->score;
      if (!firstScore) {
            qDebug("First score is NULL. Will not attempt to join scores.");
            return false;
            }

      // do layout for first score's root and excerpt scores
      firstScore->doLayout();
      for (int i = 0; i < firstScore->excerpts().count(); i++) {
            if (firstScore->excerpts().at(i)->partScore()) {
                  firstScore->excerpts().at(i)->partScore()->doLayout();
                  }
            else {
                  qDebug("First score has excerpts, but excerpt %d is NULL.  Will not attempt to join scores.", i);
                  return false;
                  }
            }

      Score* score = firstScore->clone();

      int excerptCount = firstScore->excerpts().count();
      bool joinExcerpt = true;
	for (AlbumItem* item : _scores) {
            if (item->score == 0 || item->score == firstScore)
                  continue;
            if (item->score->excerpts().count() != excerptCount) {
                  joinExcerpt = false;
                  qDebug("Will not join parts. Album item \"%s\".  Mismatch between number of excerpts with first album item \"%s\"", qPrintable(item->name), qPrintable(_scores[0]->name));
                  break;
                  }
            }
      if (!joinExcerpt) {
            for (Excerpt* ex : score->excerpts())
                  score->removeExcerpt(ex->partScore());
            }

      for (AlbumItem* item : _scores) {

            if (item->score == 0 || item->score == firstScore)
                  continue;

            // try to append root score
            item->score->doLayout();
            if (!score->appendScore(item->score)) {
                  qDebug("Cannot append root score of album item \"%s\".", qPrintable(item->name));
                  delete score;
                  return false;
                  }

            // try to append each excerpt
            if (joinExcerpt) {
                  for (int i = 0; i < score->excerpts().count(); i++) {
                        Score* currentScoreExcerpt = item->score->excerpts().at(i)->partScore();
                        if (currentScoreExcerpt) {
                              currentScoreExcerpt->doLayout();
                              if (!score->excerpts().at(i)->partScore()->appendScore(currentScoreExcerpt)) {
                                    qDebug("Cannot append excerpt %d of album item \"%s\".", i, qPrintable(item->name));
                                    delete score;
                                    return false;
                                    }
                              }
                        else {
                              qDebug("First score has excerpts, but excerpt %d of album item \"%s\" is NULL.  Will not attempt to join scores.",
                                          i, qPrintable(item->name));
                              delete score;
                              return false;
                              }
                        }
                  }
            }

      score->fileInfo()->setFile(fn);
      qDebug("Album::createScore: save file");
      try {
            QString suffix  = score->fileInfo()->suffix().toLower();
            if (suffix == "mscz")
                  score->saveCompressedFile(*score->fileInfo(), false);
            else if (suffix == "mscx")
                  score->saveFile(*score->fileInfo());
            }
      catch (QString s) {
            delete score;
            return false;
            }
      delete score;
      return true;
      }