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