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) 2025 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 :
23 : #pragma once
24 :
25 : #include "transaction/undoablecommand.h"
26 :
27 : #include "../dom/key.h"
28 : #include "../dom/keysig.h"
29 :
30 : namespace mu::engraving {
31 : class Score;
32 : class Staff;
33 : class Transaction;
34 :
35 : class ChangeKeySig : public UndoableCommand
36 : {
37 90 : OBJECT_ALLOCATOR(engraving, ChangeKeySig)
38 :
39 : KeySig* keysig = nullptr;
40 : KeySigEvent ks;
41 : bool showCourtesy = false;
42 : bool evtInStaff = false;
43 :
44 : void flip() override;
45 :
46 : public:
47 : ChangeKeySig(KeySig* k, KeySigEvent newKeySig, bool sc, bool addEvtToStaff = true);
48 :
49 61 : UNDO_TYPE(CommandType::ChangeKeySig)
50 0 : UNDO_NAME("ChangeKeySig")
51 183 : UNDO_CHANGED_OBJECTS({ keysig })
52 : };
53 :
54 : class EditKeySig
55 : {
56 : public:
57 : static void undoChangeKeySig(Transaction& tx, Score* score, Staff* ostaff, const Fraction& tick, KeySigEvent key);
58 : };
59 : }
|