diff --git a/proto/anki/frontend.proto b/proto/anki/frontend.proto index 75c46940b..3058c2b1c 100644 --- a/proto/anki/frontend.proto +++ b/proto/anki/frontend.proto @@ -54,6 +54,15 @@ message PlayAVTagsRequest { } message OpenReviewerMenuRequest { - string name = 1; + enum ReviewerMenu { + EditCurrent = 0; + SetDueDate = 1; + CardInfo = 2; + CreateCopy = 3; + Forget = 4; + Options = 5; + }; + + ReviewerMenu menu = 1; optional int64 current_card_id = 2; } \ No newline at end of file diff --git a/qt/aqt/mediasrv.py b/qt/aqt/mediasrv.py index 91afb7a83..d0ad4685a 100644 --- a/qt/aqt/mediasrv.py +++ b/qt/aqt/mediasrv.py @@ -708,24 +708,25 @@ def play_avtags(): def open_reviewer_menu(): reviewer = aqt.mw.reviewer + MENU_ENUM = OpenReviewerMenuRequest.ReviewerMenu def on_card_info(): reviewer._card_info.set_card(reviewer.card) reviewer.on_card_info() REVIEWER_MENUS = { - "EditCurrent": aqt.mw.onEditCurrent, - "SetDueDate": reviewer.on_set_due, - "CardInfo": on_card_info, - "CreateCopy": reviewer.on_create_copy, - "Forget": reviewer.forget_current_card, - "Options": reviewer.onOptions, + MENU_ENUM.EditCurrent: aqt.mw.onEditCurrent, + MENU_ENUM.SetDueDate: reviewer.on_set_due, + MENU_ENUM.CardInfo: on_card_info, + MENU_ENUM.CreateCopy: reviewer.on_create_copy, + MENU_ENUM.Forget: reviewer.forget_current_card, + MENU_ENUM.Options: reviewer.onOptions, } req = OpenReviewerMenuRequest.FromString(request.data) if req.HasField("current_card_id"): reviewer.card = aqt.mw.col.get_card(CardId(req.current_card_id)) - aqt.mw.taskman.run_on_main(REVIEWER_MENUS[req.name]) + aqt.mw.taskman.run_on_main(REVIEWER_MENUS[req.menu]) post_handler_list = [ diff --git a/ts/routes/reviewer/reviewer.ts b/ts/routes/reviewer/reviewer.ts index decfbc8eb..3442da0c3 100644 --- a/ts/routes/reviewer/reviewer.ts +++ b/ts/routes/reviewer/reviewer.ts @@ -1,6 +1,7 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import type { UndoStatus } from "@generated/anki/collection_pb"; +import { OpenReviewerMenuRequest_ReviewerMenu } from "@generated/anki/frontend_pb"; import { BuryOrSuspendCardsRequest_Mode, CardAnswer, @@ -106,32 +107,32 @@ export class ReviewerState { this.showQuestion(null); } - displayMenu(name: string) { - openReviewerMenu({ name, currentCardId: this.currentCard?.card?.id }); + displayMenu(menu: OpenReviewerMenuRequest_ReviewerMenu) { + openReviewerMenu({ menu, currentCardId: this.currentCard?.card?.id }); } public displayEditMenu() { - this.displayMenu("EditCurrent"); + this.displayMenu(OpenReviewerMenuRequest_ReviewerMenu.EditCurrent); } public displaySetDueDateMenu() { - this.displayMenu("SetDueDate"); + this.displayMenu(OpenReviewerMenuRequest_ReviewerMenu.SetDueDate); } public displayCardInfoMenu() { - this.displayMenu("CardInfo"); + this.displayMenu(OpenReviewerMenuRequest_ReviewerMenu.CardInfo); } public displayCreateCopyMenu() { - this.displayMenu("CreateCopy"); + this.displayMenu(OpenReviewerMenuRequest_ReviewerMenu.CreateCopy); } public displayForgetMenu() { - this.displayMenu("Forget"); + this.displayMenu(OpenReviewerMenuRequest_ReviewerMenu.Forget); } public displayOptionsMenu() { - this.displayMenu("Options"); + this.displayMenu(OpenReviewerMenuRequest_ReviewerMenu.Options); } public toggleMarked() {