Line data Source code
1 : /*
2 : * SPDX-License-Identifier: GPL-3.0-only
3 : * MuseScore-Studio-CLA-applies
4 : *
5 : * MuseScore Studio
6 : * Music Composition & Notation
7 : *
8 : * Copyright (C) 2024 MuseScore Limited and others
9 : *
10 : * This program is free software: you can redistribute it and/or modify
11 : * it under the terms of the GNU General Public License version 3 as
12 : * published by the Free Software Foundation.
13 : *
14 : * This program is distributed in the hope that it will be useful,
15 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 : * GNU General Public License for more details.
18 : *
19 : * You should have received a copy of the GNU General Public License
20 : * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 : */
22 : #pragma once
23 :
24 : #include <QJSValue>
25 :
26 : #include "global/api/apiobject.h"
27 : #include "global/api/apiutils.h"
28 :
29 : #include "extensions/api/v1/iapiv1object.h"
30 :
31 : #include "qmlpluginapi.h"
32 :
33 : #undef ENUM_PROPERTY
34 : #define ENUM_PROPERTY(qmlName, enumType) \
35 : Q_PROPERTY(QJSValue qmlName READ get##qmlName CONSTANT) \
36 : QJSValue get##qmlName() const { return makeEnum<enumType>(); }
37 :
38 : namespace mu::engraving::apiv1 {
39 : //! NOTE This API is used in `js` scripts of macros
40 : //! It repeats the API of the qml plugin.
41 : //! It is also available as `api.engraving.`
42 : class EngravingApiV1 : public muse::api::ApiObject, public muse::extensions::apiv1::IApiV1Object
43 : {
44 : Q_OBJECT
45 :
46 : Q_PROPERTY(int division READ division CONSTANT)
47 : Q_PROPERTY(int mscoreVersion READ mscoreVersion CONSTANT)
48 : Q_PROPERTY(int mscoreMajorVersion READ mscoreMajorVersion CONSTANT)
49 : Q_PROPERTY(int mscoreMinorVersion READ mscoreMinorVersion CONSTANT)
50 : Q_PROPERTY(int mscoreUpdateVersion READ mscoreUpdateVersion CONSTANT)
51 : Q_PROPERTY(qreal mscoreDPI READ mscoreDPI CONSTANT)
52 :
53 : Q_PROPERTY(apiv1::Score * curScore READ curScore CONSTANT)
54 :
55 : // Enums
56 0 : ENUM_PROPERTY(Element, enums::ElementType);
57 0 : ENUM_PROPERTY(TextStyleType, enums::TextStyleType);
58 :
59 : Q_PROPERTY(apiv1::Enum * Accidental READ accidentalTypeEnum CONSTANT)
60 : Q_PROPERTY(apiv1::Enum * AccidentalBracket READ accidentalBracketEnum CONSTANT)
61 : Q_PROPERTY(apiv1::Enum * OrnamentStyle READ ornamentStyleEnum CONSTANT)
62 : Q_PROPERTY(apiv1::Enum * Align READ alignEnum CONSTANT)
63 : Q_PROPERTY(apiv1::Enum * Placement READ placementEnum CONSTANT)
64 : Q_PROPERTY(apiv1::Enum * PlacementH READ placementHEnum CONSTANT)
65 : Q_PROPERTY(apiv1::Enum * TextPlace READ textPlaceEnum CONSTANT)
66 : Q_PROPERTY(apiv1::Enum * Direction READ directionEnum CONSTANT)
67 : Q_PROPERTY(apiv1::Enum * DirectionH READ directionHEnum CONSTANT)
68 : Q_PROPERTY(apiv1::Enum * Orientation READ orientationEnum CONSTANT)
69 : Q_PROPERTY(apiv1::Enum * AutoOnOff READ autoOnOffEnum CONSTANT)
70 : Q_PROPERTY(apiv1::Enum * AutoCustomHide READ autoCustomHideEnum CONSTANT)
71 : Q_PROPERTY(apiv1::Enum * VoiceAssignment READ voiceAssignmentEnum CONSTANT)
72 : Q_PROPERTY(apiv1::Enum * SpacerType READ spacerTypeEnum CONSTANT)
73 : Q_PROPERTY(apiv1::Enum * LayoutBreak READ layoutBreakTypeEnum CONSTANT)
74 : Q_PROPERTY(apiv1::Enum * DurationType READ durationTypeEnum CONSTANT)
75 : Q_PROPERTY(apiv1::Enum * NoteValueType READ noteValueTypeEnum CONSTANT)
76 : Q_PROPERTY(apiv1::Enum * Beam READ beamModeEnum CONSTANT)
77 : Q_PROPERTY(apiv1::Enum * Glissando READ glissandoTypeEnum CONSTANT) // was probably absent in 2.X
78 : Q_PROPERTY(apiv1::Enum * GlissandoStyle READ glissandoStyleEnum CONSTANT)
79 : Q_PROPERTY(apiv1::Enum * HarmonyType READ harmonyTypeEnum CONSTANT)
80 : Q_PROPERTY(apiv1::Enum * HarmonyVoicing READ harmonyVoicingEnum CONSTANT)
81 : Q_PROPERTY(apiv1::Enum * HDuration READ hDurationEnum CONSTANT)
82 : Q_PROPERTY(apiv1::Enum * FrameType READ frameTypeEnum CONSTANT)
83 : Q_PROPERTY(apiv1::Enum * VerticalAlignment READ verticalAlignmentEnum CONSTANT)
84 : Q_PROPERTY(apiv1::Enum * TremoloBarType READ tremoloBarTypeEnum CONSTANT)
85 : Q_PROPERTY(apiv1::Enum * PreferSharpFlat READ preferSharpFlatEnum CONSTANT)
86 : Q_PROPERTY(apiv1::Enum * NoteHeadType READ noteHeadTypeEnum CONSTANT)
87 : Q_PROPERTY(apiv1::Enum * NoteHeadScheme READ noteHeadSchemeEnum CONSTANT)
88 : Q_PROPERTY(apiv1::Enum * NoteHeadGroup READ noteHeadGroupEnum CONSTANT)
89 : Q_PROPERTY(apiv1::Enum * NoteType READ noteTypeEnum CONSTANT)
90 : Q_PROPERTY(apiv1::Enum * PlayEventType READ playEventTypeEnum CONSTANT)
91 : Q_PROPERTY(apiv1::Enum * Segment READ segmentTypeEnum CONSTANT)
92 : Q_PROPERTY(apiv1::Enum * BarLineType READ barLineTypeEnum CONSTANT)
93 : Q_PROPERTY(apiv1::Enum * Tid READ tidEnum CONSTANT)
94 : Q_PROPERTY(apiv1::Enum * Lyrics READ lyricsSyllabicEnum CONSTANT)
95 : Q_PROPERTY(apiv1::Enum * Spanner READ spannerAnchorEnum CONSTANT) // probably unavailable in 2.X
96 : Q_PROPERTY(apiv1::Enum * MMRestRangeBracketType READ mMRestRangeBracketTypeEnum CONSTANT)
97 : Q_PROPERTY(apiv1::Enum * TupletNumberType READ tupletNumberTypeEnum CONSTANT)
98 : Q_PROPERTY(apiv1::Enum * TupletBracketType READ tupletBracketTypeEnum CONSTANT)
99 : Q_PROPERTY(apiv1::Enum * TripletFeelType READ tripletFeelTypeEnum CONSTANT)
100 : Q_PROPERTY(apiv1::Enum * GuitarBendType READ guitarBendTypeEnum CONSTANT)
101 : Q_PROPERTY(apiv1::Enum * GuitarBendShowHoldLine READ guitarBendShowHoldLineEnum CONSTANT)
102 : Q_PROPERTY(apiv1::Enum * ClefType READ clefTypeEnum CONSTANT)
103 : Q_PROPERTY(apiv1::Enum * ClefToBarlinePosition READ clefToBarlinePositionEnum CONSTANT)
104 : Q_PROPERTY(apiv1::Enum * DynamicType READ dynamicTypeEnum CONSTANT)
105 : Q_PROPERTY(apiv1::Enum * DynamicSpeed READ dynamicSpeedEnum CONSTANT)
106 : Q_PROPERTY(apiv1::Enum * LineType READ lineTypeEnum CONSTANT)
107 : Q_PROPERTY(apiv1::Enum * HookType READ hookTypeEnum CONSTANT)
108 : Q_PROPERTY(apiv1::Enum * KeyMode READ keyModeEnum CONSTANT)
109 : Q_PROPERTY(apiv1::Enum * ArpeggioType READ arpeggioTypeEnum CONSTANT)
110 : Q_PROPERTY(apiv1::Enum * IntervalStep READ intervalStepEnum CONSTANT)
111 : Q_PROPERTY(apiv1::Enum * IntervalType READ intervalTypeEnum CONSTANT)
112 : Q_PROPERTY(apiv1::Enum * InstrumentLabelVisibility READ instrumentLabelVisibilityEnum CONSTANT)
113 : Q_PROPERTY(apiv1::Enum * OrnamentShowAccidental READ ornamentShowAccidentalEnum CONSTANT)
114 : Q_PROPERTY(apiv1::Enum * PartialSpannerDirection READ partialSpannerDirectionEnum CONSTANT)
115 : Q_PROPERTY(apiv1::Enum * ChordStylePreset READ chordStylePresetEnum CONSTANT)
116 : Q_PROPERTY(apiv1::Enum * PlayingTechniqueType READ playingTechniqueTypeEnum CONSTANT)
117 : Q_PROPERTY(apiv1::Enum * GradualTempoChangeType READ gradualTempoChangeTypeEnum CONSTANT)
118 : Q_PROPERTY(apiv1::Enum * ChangeMethod READ changeMethodEnum CONSTANT)
119 : Q_PROPERTY(apiv1::Enum * ChangeDirection READ changeDirectionEnum CONSTANT)
120 : Q_PROPERTY(apiv1::Enum * AccidentalRole READ accidentalRoleEnum CONSTANT)
121 : Q_PROPERTY(apiv1::Enum * AccidentalVal READ accidentalValEnum CONSTANT)
122 : Q_PROPERTY(apiv1::Enum * FermataType READ fermataTypeEnum CONSTANT)
123 : Q_PROPERTY(apiv1::Enum * ChordLineType READ chordLineTypeEnum CONSTANT)
124 : Q_PROPERTY(apiv1::Enum * SlurStyleType READ slurStyleTypeEnum CONSTANT)
125 : Q_PROPERTY(apiv1::Enum * TremoloType READ tremoloTypeEnum CONSTANT)
126 : Q_PROPERTY(apiv1::Enum * TremoloChordType READ tremoloChordTypeEnum CONSTANT)
127 : Q_PROPERTY(apiv1::Enum * BracketType READ bracketTypeEnum CONSTANT)
128 : Q_PROPERTY(apiv1::Enum * JumpType READ jumpTypeEnum CONSTANT)
129 : Q_PROPERTY(apiv1::Enum * MarkerType READ markerTypeEnum CONSTANT)
130 : Q_PROPERTY(apiv1::Enum * MeasureNumberMode READ measureNumberModeEnum CONSTANT)
131 : Q_PROPERTY(apiv1::Enum * StaffGroup READ staffGroupEnum CONSTANT)
132 : Q_PROPERTY(apiv1::Enum * OttavaType READ ottavaTypeEnum CONSTANT)
133 : Q_PROPERTY(apiv1::Enum * HairpinType READ hairpinTypeEnum CONSTANT)
134 : Q_PROPERTY(apiv1::Enum * TrillType READ trillTypeEnum CONSTANT)
135 : Q_PROPERTY(apiv1::Enum * VibratoType READ vibratoTypeEnum CONSTANT)
136 : Q_PROPERTY(apiv1::Enum * ArticulationTextType READ articulationTextTypeEnum CONSTANT)
137 : Q_PROPERTY(apiv1::Enum * LyricsDashSystemStart READ lyricsDashSystemStartEnum CONSTANT)
138 : Q_PROPERTY(apiv1::Enum * NoteLineEndPlacement READ noteLineEndPlacementEnum CONSTANT)
139 : Q_PROPERTY(apiv1::Enum * SpannerSegmentType READ spannerSegmentTypeEnum CONSTANT)
140 : Q_PROPERTY(apiv1::Enum * TiePlacement READ tiePlacementEnum CONSTANT)
141 : Q_PROPERTY(apiv1::Enum * TieDotsPlacement READ tieDotsPlacementEnum CONSTANT)
142 : Q_PROPERTY(apiv1::Enum * TimeSigType READ timeSigTypeEnum CONSTANT)
143 : Q_PROPERTY(apiv1::Enum * TimeSigPlacement READ timeSigPlacementEnum CONSTANT)
144 : Q_PROPERTY(apiv1::Enum * TimeSigStyle READ timeSigStyleEnum CONSTANT)
145 : Q_PROPERTY(apiv1::Enum * TimeSigVSMargin READ timeSigVSMarginEnum CONSTANT)
146 : Q_PROPERTY(apiv1::Enum * NoteSpellingType READ noteSpellingTypeEnum CONSTANT)
147 : Q_PROPERTY(apiv1::Enum * Key READ keyEnum CONSTANT)
148 : Q_PROPERTY(apiv1::Enum * UpdateMode READ updateModeEnum CONSTANT)
149 : Q_PROPERTY(apiv1::Enum * LayoutFlag READ layoutFlagEnum CONSTANT)
150 : Q_PROPERTY(apiv1::Enum * LayoutMode READ layoutModeEnum CONSTANT)
151 : Q_PROPERTY(apiv1::Enum * TappingHand READ tappingHandEnum CONSTANT)
152 : Q_PROPERTY(apiv1::Enum * LHTappingSymbol READ lHTappingSymbolEnum CONSTANT)
153 : Q_PROPERTY(apiv1::Enum * RHTappingSymbol READ rHTappingSymbolEnum CONSTANT)
154 : Q_PROPERTY(apiv1::Enum * LHTappingShowItems READ lHTappingShowItemsEnum CONSTANT)
155 : Q_PROPERTY(apiv1::Enum * ParenthesesMode READ parenthesesModeEnum CONSTANT)
156 : Q_PROPERTY(apiv1::Enum * RepeatPlayCountPreset READ repeatPlayCountPresetEnum CONSTANT)
157 : Q_PROPERTY(apiv1::Enum * MeasureNumberPlacement READ measureNumberPlacementEnum CONSTANT)
158 : Q_PROPERTY(apiv1::Enum * SymId READ symIdEnum CONSTANT)
159 : Q_PROPERTY(apiv1::Enum * Cursor READ cursorEnum CONSTANT)
160 :
161 : public:
162 : EngravingApiV1(muse::api::IApiEngine* e);
163 : ~EngravingApiV1();
164 :
165 : void setup(QJSValue globalObject) override;
166 :
167 : void setApi(PluginAPI* api);
168 : PluginAPI* api() const;
169 :
170 : //! Api V1 (qml plugin api)
171 0 : int division() const { return api()->division(); }
172 0 : int mscoreVersion() const { return api()->mscoreVersion(); }
173 0 : int mscoreMajorVersion() const { return api()->mscoreMajorVersion(); }
174 0 : int mscoreMinorVersion() const { return api()->mscoreMinorVersion(); }
175 0 : int mscoreUpdateVersion() const { return api()->mscoreUpdateVersion(); }
176 0 : qreal mscoreDPI() const { return api()->mscoreDPI(); }
177 :
178 0 : apiv1::Score* curScore() const { return api()->curScore(); }
179 :
180 0 : apiv1::Enum* accidentalTypeEnum() const { return api()->get_accidentalTypeEnum(); }
181 0 : apiv1::Enum* accidentalBracketEnum() const { return api()->get_accidentalBracketEnum(); }
182 0 : apiv1::Enum* ornamentStyleEnum() const { return api()->get_ornamentStyleEnum(); }
183 0 : apiv1::Enum* alignEnum() const { return api()->get_alignEnum(); }
184 0 : apiv1::Enum* placementEnum() const { return api()->get_placementEnum(); }
185 0 : apiv1::Enum* placementHEnum() const { return api()->get_placementHEnum(); }
186 0 : apiv1::Enum* textPlaceEnum() const { return api()->get_textPlaceEnum(); }
187 0 : apiv1::Enum* directionEnum() const { return api()->get_directionEnum(); }
188 0 : apiv1::Enum* directionHEnum() const { return api()->get_directionHEnum(); }
189 0 : apiv1::Enum* orientationEnum() const { return api()->get_orientationEnum(); }
190 0 : apiv1::Enum* autoOnOffEnum() const { return api()->get_autoOnOffEnum(); }
191 0 : apiv1::Enum* autoCustomHideEnum() const { return api()->get_autoCustomHideEnum(); }
192 0 : apiv1::Enum* voiceAssignmentEnum() const { return api()->get_voiceAssignmentEnum(); }
193 0 : apiv1::Enum* spacerTypeEnum() const { return api()->get_spacerTypeEnum(); }
194 0 : apiv1::Enum* layoutBreakTypeEnum() const { return api()->get_layoutBreakTypeEnum(); }
195 0 : apiv1::Enum* durationTypeEnum() const { return api()->get_durationTypeEnum(); }
196 0 : apiv1::Enum* noteValueTypeEnum() const { return api()->get_noteValueTypeEnum(); }
197 0 : apiv1::Enum* beamModeEnum() const { return api()->get_beamModeEnum(); }
198 0 : apiv1::Enum* glissandoTypeEnum() const { return api()->get_glissandoTypeEnum(); }
199 0 : apiv1::Enum* glissandoStyleEnum() const { return api()->get_glissandoStyleEnum(); }
200 0 : apiv1::Enum* harmonyTypeEnum() const { return api()->get_harmonyTypeEnum(); }
201 0 : apiv1::Enum* harmonyVoicingEnum() const { return api()->get_harmonyVoicingEnum(); }
202 0 : apiv1::Enum* hDurationEnum() const { return api()->get_hDurationEnum(); }
203 0 : apiv1::Enum* frameTypeEnum() const { return api()->get_frameTypeEnum(); }
204 0 : apiv1::Enum* verticalAlignmentEnum() const { return api()->get_verticalAlignmentEnum(); }
205 0 : apiv1::Enum* tremoloBarTypeEnum() const { return api()->get_tremoloBarTypeEnum(); }
206 0 : apiv1::Enum* preferSharpFlatEnum() const { return api()->get_preferSharpFlatEnum(); }
207 0 : apiv1::Enum* noteHeadTypeEnum() const { return api()->get_noteHeadTypeEnum(); }
208 0 : apiv1::Enum* noteHeadSchemeEnum() const { return api()->get_noteHeadSchemeEnum(); }
209 0 : apiv1::Enum* noteHeadGroupEnum() const { return api()->get_noteHeadGroupEnum(); }
210 0 : apiv1::Enum* noteTypeEnum() const { return api()->get_noteTypeEnum(); }
211 0 : apiv1::Enum* playEventTypeEnum() const { return api()->get_playEventTypeEnum(); }
212 0 : apiv1::Enum* segmentTypeEnum() const { return api()->get_segmentTypeEnum(); }
213 0 : apiv1::Enum* barLineTypeEnum() const { return api()->get_barLineTypeEnum(); }
214 0 : apiv1::Enum* tidEnum() const { return api()->get_tidEnum(); }
215 0 : apiv1::Enum* lyricsSyllabicEnum() const { return api()->get_lyricsSyllabicEnum(); }
216 0 : apiv1::Enum* spannerAnchorEnum() const { return api()->get_spannerAnchorEnum(); }
217 0 : apiv1::Enum* mMRestRangeBracketTypeEnum() const { return api()->get_mMRestRangeBracketTypeEnum(); }
218 0 : apiv1::Enum* tupletNumberTypeEnum() const { return api()->get_tupletNumberTypeEnum(); }
219 0 : apiv1::Enum* tupletBracketTypeEnum() const { return api()->get_tupletBracketTypeEnum(); }
220 0 : apiv1::Enum* tripletFeelTypeEnum() const { return api()->get_tripletFeelTypeEnum(); }
221 0 : apiv1::Enum* guitarBendTypeEnum() const { return api()->get_guitarBendTypeEnum(); }
222 0 : apiv1::Enum* guitarBendShowHoldLineEnum() const { return api()->get_guitarBendShowHoldLineEnum(); }
223 0 : apiv1::Enum* clefTypeEnum() const { return api()->get_clefTypeEnum(); }
224 0 : apiv1::Enum* clefToBarlinePositionEnum() const { return api()->get_clefToBarlinePositionEnum(); }
225 0 : apiv1::Enum* dynamicTypeEnum() const { return api()->get_dynamicTypeEnum(); }
226 0 : apiv1::Enum* dynamicSpeedEnum() const { return api()->get_dynamicSpeedEnum(); }
227 0 : apiv1::Enum* lineTypeEnum() const { return api()->get_lineTypeEnum(); }
228 0 : apiv1::Enum* hookTypeEnum() const { return api()->get_hookTypeEnum(); }
229 0 : apiv1::Enum* keyModeEnum() const { return api()->get_keyModeEnum(); }
230 0 : apiv1::Enum* arpeggioTypeEnum() const { return api()->get_arpeggioTypeEnum(); }
231 0 : apiv1::Enum* intervalStepEnum() const { return api()->get_intervalStepEnum(); }
232 0 : apiv1::Enum* intervalTypeEnum() const { return api()->get_intervalTypeEnum(); }
233 0 : apiv1::Enum* instrumentLabelVisibilityEnum() const { return api()->get_instrumentLabelVisibilityEnum(); }
234 0 : apiv1::Enum* ornamentShowAccidentalEnum() const { return api()->get_ornamentShowAccidentalEnum(); }
235 0 : apiv1::Enum* partialSpannerDirectionEnum() const { return api()->get_partialSpannerDirectionEnum(); }
236 0 : apiv1::Enum* chordStylePresetEnum() const { return api()->get_chordStylePresetEnum(); }
237 0 : apiv1::Enum* playingTechniqueTypeEnum() const { return api()->get_playingTechniqueTypeEnum(); }
238 0 : apiv1::Enum* gradualTempoChangeTypeEnum() const { return api()->get_gradualTempoChangeTypeEnum(); }
239 0 : apiv1::Enum* changeMethodEnum() const { return api()->get_changeMethodEnum(); }
240 0 : apiv1::Enum* changeDirectionEnum() const { return api()->get_changeDirectionEnum(); }
241 0 : apiv1::Enum* accidentalRoleEnum() const { return api()->get_accidentalRoleEnum(); }
242 0 : apiv1::Enum* accidentalValEnum() const { return api()->get_accidentalValEnum(); }
243 0 : apiv1::Enum* fermataTypeEnum() const { return api()->get_fermataTypeEnum(); }
244 0 : apiv1::Enum* chordLineTypeEnum() const { return api()->get_chordLineTypeEnum(); }
245 0 : apiv1::Enum* slurStyleTypeEnum() const { return api()->get_slurStyleTypeEnum(); }
246 0 : apiv1::Enum* tremoloTypeEnum() const { return api()->get_tremoloTypeEnum(); }
247 0 : apiv1::Enum* tremoloChordTypeEnum() const { return api()->get_tremoloChordTypeEnum(); }
248 0 : apiv1::Enum* bracketTypeEnum() const { return api()->get_bracketTypeEnum(); }
249 0 : apiv1::Enum* jumpTypeEnum() const { return api()->get_jumpTypeEnum(); }
250 0 : apiv1::Enum* markerTypeEnum() const { return api()->get_markerTypeEnum(); }
251 0 : apiv1::Enum* measureNumberModeEnum() const { return api()->get_measureNumberModeEnum(); }
252 0 : apiv1::Enum* staffGroupEnum() const { return api()->get_staffGroupEnum(); }
253 0 : apiv1::Enum* ottavaTypeEnum() const { return api()->get_ottavaTypeEnum(); }
254 0 : apiv1::Enum* hairpinTypeEnum() const { return api()->get_hairpinTypeEnum(); }
255 0 : apiv1::Enum* trillTypeEnum() const { return api()->get_trillTypeEnum(); }
256 0 : apiv1::Enum* vibratoTypeEnum() const { return api()->get_vibratoTypeEnum(); }
257 0 : apiv1::Enum* articulationTextTypeEnum() const { return api()->get_articulationTextTypeEnum(); }
258 0 : apiv1::Enum* lyricsDashSystemStartEnum() const { return api()->get_lyricsDashSystemStartEnum(); }
259 0 : apiv1::Enum* noteLineEndPlacementEnum() const { return api()->get_noteLineEndPlacementEnum(); }
260 0 : apiv1::Enum* spannerSegmentTypeEnum() const { return api()->get_spannerSegmentTypeEnum(); }
261 0 : apiv1::Enum* tiePlacementEnum() const { return api()->get_tiePlacementEnum(); }
262 0 : apiv1::Enum* tieDotsPlacementEnum() const { return api()->get_tieDotsPlacementEnum(); }
263 0 : apiv1::Enum* timeSigTypeEnum() const { return api()->get_timeSigTypeEnum(); }
264 0 : apiv1::Enum* timeSigPlacementEnum() const { return api()->get_timeSigPlacementEnum(); }
265 0 : apiv1::Enum* timeSigStyleEnum() const { return api()->get_timeSigStyleEnum(); }
266 0 : apiv1::Enum* timeSigVSMarginEnum() const { return api()->get_timeSigVSMarginEnum(); }
267 0 : apiv1::Enum* noteSpellingTypeEnum() const { return api()->get_noteSpellingTypeEnum(); }
268 0 : apiv1::Enum* keyEnum() const { return api()->get_keyEnum(); }
269 0 : apiv1::Enum* updateModeEnum() const { return api()->get_updateModeEnum(); }
270 0 : apiv1::Enum* layoutFlagEnum() const { return api()->get_layoutFlagEnum(); }
271 0 : apiv1::Enum* layoutModeEnum() const { return api()->get_layoutModeEnum(); }
272 0 : apiv1::Enum* tappingHandEnum() const { return api()->get_tappingHandEnum(); }
273 0 : apiv1::Enum* lHTappingSymbolEnum() const { return api()->get_lHTappingSymbolEnum(); }
274 0 : apiv1::Enum* rHTappingSymbolEnum() const { return api()->get_rHTappingSymbolEnum(); }
275 0 : apiv1::Enum* lHTappingShowItemsEnum() const { return api()->get_lHTappingShowItemsEnum(); }
276 0 : apiv1::Enum* parenthesesModeEnum() const { return api()->get_parenthesesModeEnum(); }
277 0 : apiv1::Enum* repeatPlayCountPresetEnum() const { return api()->get_repeatPlayCountPresetEnum(); }
278 0 : apiv1::Enum* measureNumberPlacementEnum() const { return api()->get_measureNumberPlacementEnum(); }
279 0 : apiv1::Enum* symIdEnum() const { return api()->get_symIdEnum(); }
280 0 : apiv1::Enum* cursorEnum() const { return api()->get_cursorEnum(); }
281 :
282 0 : Q_INVOKABLE apiv1::Score* newScore(const QString& name, const QString& part, int measures)
283 : {
284 0 : return api()->newScore(name, part, measures);
285 : }
286 :
287 0 : Q_INVOKABLE apiv1::EngravingItem* newElement(int type) { return api()->newElement(type); }
288 0 : Q_INVOKABLE void removeElement(apiv1::EngravingItem* wrapped) { api()->removeElement(wrapped); }
289 0 : Q_INVOKABLE void cmd(const QString& code) { api()->cmd(code); }
290 0 : Q_INVOKABLE bool writeScore(apiv1::Score* s, const QString& name, const QString& ext)
291 : {
292 0 : return api()->writeScore(s, name, ext);
293 : }
294 :
295 0 : Q_INVOKABLE apiv1::Score* readScore(const QString& name, bool noninteractive = false)
296 : {
297 0 : return api()->readScore(name, noninteractive);
298 : }
299 :
300 0 : Q_INVOKABLE void closeScore(apiv1::Score* s) { api()->closeScore(s); }
301 :
302 0 : Q_INVOKABLE void log(const QString& m) { api()->log(m); }
303 0 : Q_INVOKABLE void logn(const QString& m) { api()->logn(m); }
304 0 : Q_INVOKABLE void log2(const QString& t, const QString& m) { api()->log2(t, m); }
305 0 : Q_INVOKABLE void openLog(const QString& f) { api()->openLog(f); }
306 0 : Q_INVOKABLE void closeLog() { api()->closeLog(); }
307 :
308 0 : Q_INVOKABLE apiv1::Fraction* fraction(int numerator, int denominator) const
309 : {
310 0 : return api()->fraction(numerator, denominator);
311 : }
312 :
313 0 : Q_INVOKABLE apiv1::Fraction* fractionFromTicks(int ticks) const
314 : {
315 0 : return api()->fractionFromTicks(ticks);
316 : }
317 :
318 0 : Q_INVOKABLE apiv1::OrnamentIntervalWrapper* defaultOrnamentInterval() const
319 : {
320 0 : return api()->defaultOrnamentInterval();
321 : }
322 :
323 0 : Q_INVOKABLE apiv1::OrnamentIntervalWrapper* ornamentInterval(int step, int type) const
324 : {
325 0 : return api()->ornamentInterval(step, type);
326 : }
327 :
328 0 : Q_INVOKABLE apiv1::IntervalWrapper* interval(int diatonic, int chromatic) const
329 : {
330 0 : return api()->interval(diatonic, chromatic);
331 : }
332 :
333 0 : Q_INVOKABLE apiv1::IntervalWrapper* intervalFromOrnamentInterval(apiv1::OrnamentIntervalWrapper* o) const
334 : {
335 0 : return api()->intervalFromOrnamentInterval(o);
336 : }
337 :
338 0 : Q_INVOKABLE void quit() { api()->quit(); }
339 :
340 : private:
341 :
342 : template<typename T>
343 0 : QJSValue makeEnum(muse::api::EnumType type = muse::api::EnumType::Undefined) const
344 : {
345 0 : if (type == muse::api::EnumType::Undefined) {
346 0 : type = engine()->apiversion() == 1 ? muse::api::EnumType::Int : muse::api::EnumType::String;
347 : }
348 : return muse::api::enumToJsValue(engine(),
349 0 : QMetaEnum::fromType<T>(),
350 0 : type);
351 : }
352 :
353 : mutable PluginAPI* m_api = nullptr;
354 : mutable bool m_selfApi = false;
355 : };
356 : }
|