Skip to content

Commit 3e6bfd6

Browse files
authored
Merge pull request #143 from igorkorsukov/w/rcmd/fix_nav
fixed nav shorcuts (added compat map)
2 parents 5e85c39 + 16fdb3c commit 3e6bfd6

7 files changed

Lines changed: 43 additions & 13 deletions

File tree

framework/actions/internal/actionsdispatcher.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ void ActionsDispatcher::dispatch(const ActionCode& actionCode, const ActionData&
7878

7979
void ActionsDispatcher::dispatch(const ActionQuery& actionQuery)
8080
{
81-
if (actionQuery.uri().scheme() == rcommand::COMMAND_SCHEME) {
81+
if (muse::strings::startsWith(actionQuery.uri().scheme(), rcommand::COMMAND_SCHEME)) {
8282
commandDispatcher()->dispatch(actionQuery);
8383
return;
8484
}

framework/diagnostics/qml/Muse/Diagnostics/DiagnosticActionsPanel.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Rectangle {
6969

7070
FlatButton {
7171
anchors.verticalCenter: parent.verticalCenter
72-
text: "Print"
72+
text: "Print this"
7373
onClicked: actionsModel.print()
7474
}
7575
}

framework/rcommand/commandtypes.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#include "ui/uitypes.h"
3434

3535
namespace muse::rcommand {
36-
constexpr std::string_view COMMAND_SCHEME = "command://";
36+
constexpr std::string_view COMMAND_SCHEME = "command";
3737
using Command = Uri;
3838
using CommandQuery = UriQuery;
3939

framework/shortcuts/internal/shortcutscontroller.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*/
2222
#include "shortcutscontroller.h"
2323

24+
#include "actions/actiontypes.h"
2425
#include "log.h"
2526

2627
#define SHORTCUTS_DEBUG 1
@@ -34,6 +35,7 @@
3435
using namespace muse::shortcuts;
3536
using namespace muse::actions;
3637
using namespace muse::rcommand;
38+
using namespace muse::ui;
3739

3840
void ShortcutsController::init()
3941
{

framework/shortcuts/internal/shortcutsregister.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,17 @@
2828
#include "global/io/file.h"
2929
#include "global/serialization/xmlstreamreader.h"
3030
#include "global/serialization/xmlstreamwriter.h"
31+
#include "global/containers.h"
3132

3233
#include "multiwindows/resourcelockguard.h"
34+
#include "ui/navigationcommands.h"
3335

3436
#include "log.h"
3537

3638
using namespace muse;
3739
using namespace muse::shortcuts;
3840
using namespace muse::async;
41+
using namespace muse::ui;
3942

4043
static constexpr std::string_view SHORTCUTS_TAG("Shortcuts");
4144
static constexpr std::string_view SHORTCUT_TAG("SC");
@@ -46,6 +49,25 @@ static constexpr std::string_view AUTOREPEAT_TAG("autorepeat");
4649

4750
static const std::string SHORTCUTS_RESOURCE_NAME("SHORTCUTS");
4851

52+
static const std::map<std::string, rcommand::Command> compatActionToCommand = {
53+
{ "nav-next-section", NEXT_SECTION_COMMAND },
54+
{ "nav-prev-section", PREV_SECTION_COMMAND },
55+
{ "nav-next-panel", NEXT_PANEL_COMMAND },
56+
{ "nav-prev-panel", PREV_PANEL_COMMAND },
57+
{ "nav-next-tab", NEXT_PANEL_COMMAND },
58+
{ "nav-prev-tab", PREV_PANEL_COMMAND },
59+
{ "nav-trigger-control", TRIGGER_CONTROL_COMMAND },
60+
{ "nav-right", RIGHT_COMMAND },
61+
{ "nav-left", LEFT_COMMAND },
62+
{ "nav-up", UP_COMMAND },
63+
{ "nav-down", DOWN_COMMAND },
64+
{ "nav-escape", ESCAPE_COMMAND },
65+
{ "nav-first-control", FIRST_CONTROL_COMMAND },
66+
{ "nav-last-control", LAST_CONTROL_COMMAND },
67+
{ "nav-nextrow-control", NEXTROW_CONTROL_COMMAND },
68+
{ "nav-prevrow-control", PREVROW_CONTROL_COMMAND },
69+
};
70+
4971
static const std::map<QKeySequence::StandardKey, QKeyCombination> SHORTCUTS_EXPAND_IGNORE_MAP = {
5072
{ QKeySequence::StandardKey::HelpContents, Qt::Key_Help },
5173
{ QKeySequence::StandardKey::Open, Qt::Key_Open },
@@ -324,6 +346,10 @@ Shortcut ShortcutsRegister::readShortcut(XmlStreamReader& reader) const
324346

325347
if (tag == ACTION_CODE_TAG) {
326348
shortcut.action = reader.readAsciiText();
349+
const rcommand::Command& command = muse::value(compatActionToCommand, shortcut.action);
350+
if (command.isValid()) {
351+
shortcut.action = command.toString();
352+
}
327353
} else if (tag == STANDARD_KEY_TAG) {
328354
shortcut.standardKey = QKeySequence::StandardKey(reader.readInt());
329355
} else if (tag == SEQUENCE_TAG) {

framework/ui/api/navigationapi.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
*/
2222
#include "navigationapi.h"
2323

24+
#include "navigationcommands.h"
25+
2426
#include "log.h"
2527

2628
using namespace muse::api;
@@ -37,37 +39,37 @@ NavigationApi::~NavigationApi()
3739

3840
void NavigationApi::nextPanel()
3941
{
40-
dispatcher()->dispatch("nav-next-panel");
42+
dispatcher()->dispatch(NEXT_PANEL_COMMAND);
4143
}
4244

4345
void NavigationApi::prevPanel()
4446
{
45-
dispatcher()->dispatch("nav-prev-panel");
47+
dispatcher()->dispatch(PREV_PANEL_COMMAND);
4648
}
4749

4850
void NavigationApi::right()
4951
{
50-
dispatcher()->dispatch("nav-right");
52+
dispatcher()->dispatch(RIGHT_COMMAND);
5153
}
5254

5355
void NavigationApi::left()
5456
{
55-
dispatcher()->dispatch("nav-left");
57+
dispatcher()->dispatch(LEFT_COMMAND);
5658
}
5759

5860
void NavigationApi::up()
5961
{
60-
dispatcher()->dispatch("nav-up");
62+
dispatcher()->dispatch(UP_COMMAND);
6163
}
6264

6365
void NavigationApi::down()
6466
{
65-
dispatcher()->dispatch("nav-down");
67+
dispatcher()->dispatch(DOWN_COMMAND);
6668
}
6769

6870
void NavigationApi::escape()
6971
{
70-
dispatcher()->dispatch("nav-escape");
72+
dispatcher()->dispatch(ESCAPE_COMMAND);
7173
}
7274

7375
bool NavigationApi::goToControl(const QString& section, const QString& panel, const QJSValue& controlNameOrIndex)
@@ -95,7 +97,7 @@ bool NavigationApi::goToControl(const QString& section, const QString& panel, co
9597

9698
void NavigationApi::trigger()
9799
{
98-
dispatcher()->dispatch("nav-trigger-control");
100+
dispatcher()->dispatch(TRIGGER_CONTROL_COMMAND);
99101
}
100102

101103
bool NavigationApi::triggerControl(const QString& section, const QString& panel, const QJSValue& controlNameOrIndex)

framework/ui/api/navigationapi.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@
2727

2828
#include "api/apiobject.h"
2929
#include "modularity/ioc.h"
30-
#include "actions/iactionsdispatcher.h"
30+
#include "rcommand/icommanddispatcher.h"
3131
#include "ui/inavigationcontroller.h"
3232

3333
namespace muse::api {
3434
class NavigationApi : public api::ApiObject
3535
{
3636
Q_OBJECT
3737

38-
ContextInject<actions::IActionsDispatcher> dispatcher = { this };
38+
ContextInject<rcommand::ICommandDispatcher> dispatcher = { this };
3939
ContextInject<ui::INavigationController> navigation = { this };
4040

4141
public:

0 commit comments

Comments
 (0)