MuseScore Plugins 3.2.3
Plugins API for MuseScore
score.h
1//=============================================================================
2// MuseScore
3// Music Composition & Notation
4//
5// Copyright (C) 2019 Werner Schweer and others
6//
7// This program is free software; you can redistribute it and/or modify
8// it under the terms of the GNU General Public License version 2
9// as published by the Free Software Foundation and appearing in
10// the file LICENCE.GPL
11//=============================================================================
12
13#ifndef __PLUGIN_API_SCORE_H__
14#define __PLUGIN_API_SCORE_H__
15
16#include "scoreelement.h"
17#include "part.h"
18#include "excerpt.h"
19#include "libmscore/score.h"
20
21namespace Ms {
22namespace PluginAPI {
23
24class Cursor;
25class Segment;
26class Measure;
27class Selection;
28class Score;
29
30extern Selection* selectionWrap(Ms::Selection* select);
31
32//---------------------------------------------------------
33// Score
34//---------------------------------------------------------
35
37 Q_OBJECT
39 Q_PROPERTY(QString composer READ composer)
41 Q_PROPERTY(int duration READ duration)
43 Q_PROPERTY(QQmlListProperty<Ms::PluginAPI::Excerpt> excerpts READ excerpts)
49 Q_PROPERTY(int harmonyCount READ harmonyCount)
51 Q_PROPERTY(bool hasHarmonies READ hasHarmonies)
53 Q_PROPERTY(bool hasLyrics READ hasLyrics)
56 Q_PROPERTY(int keysig READ keysig)
62 Q_PROPERTY(Ms::PluginAPI::Segment* lastSegment READ lastSegment) // TODO: make it function? Was property in 2.X, but firstSegment is a function...
64 Q_PROPERTY(int lyricCount READ lyricCount)
66 Q_PROPERTY(QString scoreName READ name WRITE setName)
68 Q_PROPERTY(int nmeasures READ nmeasures)
70 Q_PROPERTY(int npages READ npages)
72 Q_PROPERTY(int nstaves READ nstaves)
74 Q_PROPERTY(int ntracks READ ntracks)
75// Q_PROPERTY(Ms::PageFormat* pageFormat READ pageFormat WRITE undoChangePageFormat)
77 Q_PROPERTY(QQmlListProperty<Ms::PluginAPI::Part> parts READ parts)
79 Q_PROPERTY(QString lyricist READ lyricist)
80// Q_PROPERTY(QString subtitle READ subtitle)
82 Q_PROPERTY(QString title READ title)
84 Q_PROPERTY(QString mscoreVersion READ mscoreVersion)
86 Q_PROPERTY(QString mscoreRevision READ mscoreRevision)
89
90 public:
92 Score(Ms::Score* s = nullptr, Ownership o = Ownership::SCORE)
93 : ScoreElement(s, o) {}
94
95 Ms::Score* score() { return toScore(e); }
96 const Ms::Score* score() const { return toScore(e); }
97
98 QString composer() { return score()->metaTag("composer"); }
99 int duration() { return score()->duration(); }
100 int harmonyCount() { return score()->harmonyCount(); }
101 bool hasHarmonies() { return score()->hasHarmonies(); }
102 bool hasLyrics() { return score()->hasLyrics(); }
103 int keysig() { return score()->keysig(); }
104 int lyricCount() { return score()->lyricCount(); }
105 QString lyricist() { return score()->metaTag("lyricist"); } // not the meanwhile obsolete "poet"
106 QString title() { return score()->metaTag("workTitle"); }
107 Ms::PluginAPI::Selection* selection() { return selectionWrap(&score()->selection()); }
108
110
112 Q_INVOKABLE QString metaTag(const QString& tag) const { return score()->metaTag(tag); }
114 Q_INVOKABLE void setMetaTag(const QString& tag, const QString& val) { score()->setMetaTag(tag, val); }
115
116// //@ appends to the score a named part as last part
117// Q_INVOKABLE void appendPart(const QString&);
119 Q_INVOKABLE void appendMeasures(int n) { score()->appendMeasures(n); }
120 Q_INVOKABLE void addText(const QString& type, const QString& text);
122 Q_INVOKABLE Ms::PluginAPI::Cursor* newCursor();
123
124 Q_INVOKABLE Ms::PluginAPI::Segment* firstSegment(); // TODO: segment type
127
132
133 QString name() const { return score()->masterScore()->title(); }
134 void setName(const QString& name) { score()->masterScore()->setName(name); }
136
137 Q_INVOKABLE QString extractLyrics() { return score()->extractLyrics(); }
138
139// //@ ??
140// Q_INVOKABLE void updateRepeatList(bool expandRepeats) { score()->updateRepeatList(); } // TODO: needed?
141
143 int nmeasures() const { return score()->nmeasures(); }
144 int npages() const { return score()->npages(); }
145 int nstaves() const { return score()->nstaves(); }
146 int ntracks() const { return score()->ntracks(); }
148
157 Q_INVOKABLE void startCmd() { score()->startCmd(); }
167 Q_INVOKABLE void endCmd(bool rollback = false) { score()->endCmd(rollback); }
168
170 QString mscoreVersion() { return score()->mscoreVersion(); }
171 QString mscoreRevision() { return QString::number(score()->mscoreRevision(), /* base */ 16); }
172
173 QQmlListProperty<Part> parts() { return wrapContainerProperty<Part>(this, score()->parts()); }
174 QQmlListProperty<Excerpt> excerpts() { return wrapExcerptsContainerProperty<Excerpt>(this, score()->excerpts()); }
176 };
177} // namespace PluginAPI
178} // namespace Ms
179#endif
Cursor can be used by plugins to manipulate the score.
Definition: cursor.h:43
Definition: elements.h:534
Base class for most of object wrappers exposed to QML.
Definition: scoreelement.h:42
QString name
Name of this element's type, not localized.
Definition: scoreelement.h:54
int type
Type of this element.
Definition: scoreelement.h:48
Definition: score.h:36
Ms::PluginAPI::Measure * firstMeasureMM
First multimeasure rest measure of the score (read only).
Definition: score.h:47
QString scoreName
Name of the score, without path leading to it and extension.
Definition: score.h:66
Ms::PluginAPI::Measure * lastMeasureMM
Last multimeasure rest measure of the score (read only).
Definition: score.h:60
Q_INVOKABLE Ms::PluginAPI::Cursor * newCursor()
Creates and returns a cursor to be used to navigate in the score.
Definition: score.cpp:28
bool hasHarmonies
Whether score has harmonies (chord symbols) (read only).
Definition: score.h:51
int lyricCount
Number of lyrics items (syllables) in the score (read only).
Definition: score.h:64
int npages
Number of pages (read only)
Definition: score.h:70
QQmlListProperty< Ms::PluginAPI::Excerpt > excerpts
List of the excerpts (linked parts) (read only)
Definition: score.h:43
QString composer
Composer of the score, as taken from the score properties (read only).
Definition: score.h:39
Q_INVOKABLE void addText(const QString &type, const QString &text)
Adds a header text to the score.
Definition: score.cpp:45
Ms::PluginAPI::Segment * lastSegment
Last score segment (read only)
Definition: score.h:62
int ntracks
Number of tracks (nstaves * 4) (read only)
Definition: score.h:74
Q_INVOKABLE void setMetaTag(const QString &tag, const QString &val)
Sets the metatag named tag to val.
Definition: score.h:114
Q_INVOKABLE void appendMeasures(int n)
Appends a number of measures to this score.
Definition: score.h:119
Ms::PluginAPI::Selection * selection
Current selections for the score.
Definition: score.h:88
int nmeasures
Number of measures (read only)
Definition: score.h:68
QString lyricist
Lyricist of score, as taken from the score properties.
Definition: score.h:79
Q_INVOKABLE void endCmd(bool rollback=false)
For "dock" type plugins: to be used after score modifications to make them undoable.
Definition: score.h:167
Q_INVOKABLE QString metaTag(const QString &tag) const
Returns as a string the metatag named tag.
Definition: score.h:112
QString title
Title of score, as taken from the score properties' workTitle (read only).
Definition: score.h:82
Ms::PluginAPI::Measure * firstMeasure
First measure of the score (read only)
Definition: score.h:45
Ms::PluginAPI::Measure * lastMeasure
Last measure of the score (read only)
Definition: score.h:58
QQmlListProperty< Ms::PluginAPI::Part > parts
The list of parts.
Definition: score.h:77
Q_INVOKABLE void startCmd()
For "dock" type plugins: to be used before score modifications to make them undoable.
Definition: score.h:157
int nstaves
Number of staves (read only)
Definition: score.h:72
int duration
Duration of score in seconds (read only).
Definition: score.h:41
int harmonyCount
Number of harmony items (chord symbols) in the score (read only).
Definition: score.h:49
QString mscoreRevision
MuseScore revision the score has been last saved with (includes autosave) (read only)
Definition: score.h:86
int keysig
Key signature at the start of the score, in number of accidentals, negative for flats,...
Definition: score.h:56
QString mscoreVersion
MuseScore version the score has been last saved with (includes autosave) (read only)
Definition: score.h:84
bool hasLyrics
Whether score has lyrics (read only).
Definition: score.h:53
Definition: elements.h:474
Definition: selection.h:28
Definition: cursor.cpp:29