diff --git a/libmscore/xml.cpp b/libmscore/xml.cpp index ef46135a26..97e3cb828a 100644 --- a/libmscore/xml.cpp +++ b/libmscore/xml.cpp @@ -33,21 +33,21 @@ XmlReader::XmlReader(QFile* d) _track = 0; } -XmlReader::XmlReader(const QByteArray& d) - : QXmlStreamReader(d) +XmlReader::XmlReader(const QByteArray& d, const QString& s) + : QXmlStreamReader(d), docName(s) { _tick = 0; _track = 0; } -XmlReader::XmlReader(QIODevice* d) - : QXmlStreamReader(d) +XmlReader::XmlReader(QIODevice* d, const QString& s) + : QXmlStreamReader(d), docName(s) { _tick = 0; _track = 0; } -XmlReader::XmlReader(const QString& d) +XmlReader::XmlReader(const QString& d, const QString& s) : QXmlStreamReader(d) { _tick = 0; diff --git a/libmscore/xml.h b/libmscore/xml.h index 49b8b9a8eb..b762fcf01a 100644 --- a/libmscore/xml.h +++ b/libmscore/xml.h @@ -40,9 +40,9 @@ class XmlReader : public QXmlStreamReader { public: XmlReader(QFile*); - XmlReader(const QByteArray& d); - XmlReader(QIODevice* d); - XmlReader(const QString& d); + XmlReader(const QByteArray& d, const QString& s = QString()); + XmlReader(QIODevice* d, const QString& s = QString()); + XmlReader(const QString& d, const QString& s = QString()); void unknown() const; diff --git a/mscore/masterpalette.cpp b/mscore/masterpalette.cpp index 82ba1ced0b..3c70b1f812 100644 --- a/mscore/masterpalette.cpp +++ b/mscore/masterpalette.cpp @@ -138,6 +138,7 @@ MasterPalette::MasterPalette(QWidget* parent) addPalette(MuseScore::newNoteHeadsPalette()); addPalette(MuseScore::newTremoloPalette()); addPalette(MuseScore::newRepeatsPalette()); + addPalette(MuseScore::newTempoPalette()); addPalette(MuseScore::newTextPalette()); addPalette(MuseScore::newBreaksPalette()); addPalette(MuseScore::newBagpipeEmbellishmentPalette()); diff --git a/mscore/masterpalette.ui b/mscore/masterpalette.ui index 050b27b725..24d1e158a8 100644 --- a/mscore/masterpalette.ui +++ b/mscore/masterpalette.ui @@ -105,6 +105,11 @@ Repeats + + + Tempo + + Text diff --git a/mscore/menus.cpp b/mscore/menus.cpp index b37eb8c177..4f12a0c17a 100644 --- a/mscore/menus.cpp +++ b/mscore/menus.cpp @@ -873,6 +873,37 @@ struct TempoPattern { // newTempoPalette //--------------------------------------------------------- +Palette* MuseScore::newTempoPalette() + { + Palette* sp = new Palette; + sp->setName(QT_TRANSLATE_NOOP("Palette", "Tempo")); + sp->setMag(0.65); + sp->setGrid(60, 30); + sp->setDrawGrid(true); + + static const TempoPattern tp[] = { + TempoPattern(QString("%1%2 = 80"). arg(QChar(0xd834)).arg(QChar(0xdd5f)), 80.0/60.0), // 1/4 + TempoPattern(QString("%1%2 = 80"). arg(QChar(0xd834)).arg(QChar(0xdd5e)), 80.0/30.0), // 1/2 + TempoPattern(QString("%1%2 = 80"). arg(QChar(0xd834)).arg(QChar(0xdd60)), 80.0/120.0), // 1/8 + TempoPattern(QString("%1%2%3%4 = 80").arg(QChar(0xd834)).arg(QChar(0xdd5f)).arg(QChar(0xd834)).arg(QChar(0xdd6d)), 120.0/60.0), // dotted 1/4 + TempoPattern(QString("%1%2%3%4 = 80").arg(QChar(0xd834)).arg(QChar(0xdd5e)).arg(QChar(0xd834)).arg(QChar(0xdd6d)), 120/30.0), // dotted 1/2 + TempoPattern(QString("%1%2%3%4 = 80").arg(QChar(0xd834)).arg(QChar(0xdd60)).arg(QChar(0xd834)).arg(QChar(0xdd6d)), 120/120.0) // dotted 1/8 + }; + for (unsigned i = 0; i < sizeof(tp)/sizeof(*tp); ++i) { + TempoText* tt = new TempoText(gscore); + tt->setFollowText(true); + tt->setTrack(0); + tt->setTempo(tp[i].f); + tt->setText(tp[i].pattern); + sp->append(tt, tr("Tempo Text"), QString(), 1.5); + } + return sp; + } + +//--------------------------------------------------------- +// newTextPalette +//--------------------------------------------------------- + Palette* MuseScore::newTextPalette() { Palette* sp = new Palette; @@ -906,23 +937,6 @@ Palette* MuseScore::newTextPalette() text->setText(tr("1.")); sp->append(text, tr("Lyrics Verse Number")); - static const TempoPattern tp[] = { - TempoPattern(QString("%1%2 = 80"). arg(QChar(0xd834)).arg(QChar(0xdd5f)), 80.0/60.0), // 1/4 - TempoPattern(QString("%1%2 = 80"). arg(QChar(0xd834)).arg(QChar(0xdd5e)), 80.0/30.0), // 1/2 - TempoPattern(QString("%1%2 = 80"). arg(QChar(0xd834)).arg(QChar(0xdd60)), 80.0/120.0), // 1/8 - TempoPattern(QString("%1%2%3%4 = 80").arg(QChar(0xd834)).arg(QChar(0xdd5f)).arg(QChar(0xd834)).arg(QChar(0xdd6d)), 120.0/60.0), // dotted 1/4 - TempoPattern(QString("%1%2%3%4 = 80").arg(QChar(0xd834)).arg(QChar(0xdd5e)).arg(QChar(0xd834)).arg(QChar(0xdd6d)), 120/30.0), // dotted 1/2 - TempoPattern(QString("%1%2%3%4 = 80").arg(QChar(0xd834)).arg(QChar(0xdd60)).arg(QChar(0xd834)).arg(QChar(0xdd6d)), 120/120.0) // dotted 1/8 - }; - for (unsigned i = 0; i < sizeof(tp)/sizeof(*tp); ++i) { - TempoText* tt = new TempoText(gscore); - tt->setFollowText(true); - tt->setTrack(0); - tt->setTempo(tp[i].f); - tt->setText(tp[i].pattern); - sp->append(tt, tr("Tempo Text"), QString(), 1.5); - } - Harmony* harmony = new Harmony(gscore); harmony->setText("C7"); sp->append(harmony, tr("Chord Name")); diff --git a/mscore/musescore.h b/mscore/musescore.h index 322b932630..5836878280 100644 --- a/mscore/musescore.h +++ b/mscore/musescore.h @@ -615,6 +615,7 @@ class MuseScore : public QMainWindow, public MuseScoreCore { void allowShowMidiPanel(const QString &file); void setMidiPrefOperations(const QString &file); + static Palette* newTempoPalette(); static Palette* newTextPalette(); static Palette* newTimePalette(); static Palette* newRepeatsPalette(); diff --git a/mscore/palettebox.cpp b/mscore/palettebox.cpp index 1fcf63c3fa..15a7401a5d 100644 --- a/mscore/palettebox.cpp +++ b/mscore/palettebox.cpp @@ -17,6 +17,7 @@ #include "preferences.h" #include "libmscore/xml.h" #include "paletteBoxButton.h" +#include "workspace.h" namespace Ms { @@ -93,11 +94,11 @@ Palette* PaletteBox::newPalette(const QString& name, int slot) Palette* p = new Palette; p->setReadOnly(false); p->setName(name); - PaletteBoxButton* b = new PaletteBoxButton(p); + PaletteBoxButton* b = new PaletteBoxButton(p); vbox->insertWidget(slot, b); vbox->insertWidget(slot+1, p, 1000); connect(b, SIGNAL(paletteCmd(int,int)), SLOT(paletteCmd(int,int))); - connect(p, SIGNAL(changed()), SLOT(setDirty())); + connect(p, SIGNAL(changed()), Workspace::currentWorkspace, SLOT(setDirty())); for (int i = 0; i < (vbox->count() - 1) / 2; ++i) static_cast(vbox->itemAt(i * 2)->widget())->setId(i*2); return p; diff --git a/mscore/workspace.cpp b/mscore/workspace.cpp index 6c936045ba..3f39a5a85b 100644 --- a/mscore/workspace.cpp +++ b/mscore/workspace.cpp @@ -263,8 +263,6 @@ void Workspace::write() xml.etag(); xml.etag(); cbuf.seek(0); - //f.addDirectory("META-INF"); - //f.addDirectory("Pictures"); f.addFile("META-INF/container.xml", cbuf.data()); // save images @@ -282,7 +280,7 @@ void Workspace::write() xml.header(); xml.stag("museScore version=\"" MSC_VERSION "\""); xml.stag("Workspace"); - xml.tag("name", _name); + // xml.tag("name", _name); PaletteBox* pb = mscore->getPaletteBox(); pb->write(xml); xml.etag(); @@ -313,7 +311,7 @@ void Workspace::read() MQZipReader f(_path); QByteArray ba = f.fileData("META-INF/container.xml"); - XmlReader e(ba); + XmlReader e(ba, _path); // extract first rootfile QString rootfile = ""; @@ -373,7 +371,7 @@ void Workspace::read(XmlReader& e) while (e.readNextStartElement()) { const QStringRef& tag(e.name()); if (tag == "name") - _name = e.readElementText(); + e.readElementText(); else if (tag == "PaletteBox") { PaletteBox* paletteBox = mscore->getPaletteBox(); paletteBox->clear(); diff --git a/share/workspaces/advanced.workspace b/share/workspaces/advanced.workspace index 523bbd126f..753601fbb8 100644 Binary files a/share/workspaces/advanced.workspace and b/share/workspaces/advanced.workspace differ diff --git a/share/workspaces/basic.workspace b/share/workspaces/basic.workspace index b70b3beaf0..564f8426d1 100644 Binary files a/share/workspaces/basic.workspace and b/share/workspaces/basic.workspace differ