From d8d69a381002078403d66a99781de365b135bc77 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Thu, 22 Jul 2021 10:07:13 +0200 Subject: [PATCH] Switch frontend to use backend links --- pylib/.pylintrc | 1 + pylib/anki/_backend/genbackend.py | 3 +++ pylib/anki/collection.py | 2 ++ pylib/anki/links_pb2.pyi | 1 + qt/aqt/utils.py | 41 ++++++------------------------- 5 files changed, 14 insertions(+), 34 deletions(-) create mode 100644 pylib/anki/links_pb2.pyi diff --git a/pylib/.pylintrc b/pylib/.pylintrc index 1fc1205de..0bb5dd5b5 100644 --- a/pylib/.pylintrc +++ b/pylib/.pylintrc @@ -6,6 +6,7 @@ persistent = no ignored-classes= BrowserColumns, BrowserRow, + HelpPage, FormatTimespanRequest, CardAnswer, QueuedCards, diff --git a/pylib/anki/_backend/genbackend.py b/pylib/anki/_backend/genbackend.py index b5cb0964a..e8ed939d8 100755 --- a/pylib/anki/_backend/genbackend.py +++ b/pylib/anki/_backend/genbackend.py @@ -14,6 +14,7 @@ import anki.cards_pb2 import anki.collection_pb2 import anki.decks_pb2 import anki.deckconfig_pb2 +import anki.links_pb2 import anki.notes_pb2 import anki.notetypes_pb2 import anki.scheduler_pb2 @@ -195,6 +196,7 @@ service_modules = dict( CARD_RENDERING=anki.card_rendering_pb2, TAGS=anki.tags_pb2, MEDIA=anki.media_pb2, + LINKS=anki.links_pb2, ) for service in anki.backend_pb2.ServiceIndex.DESCRIPTOR.values: @@ -236,6 +238,7 @@ import anki.cards_pb2 import anki.collection_pb2 import anki.decks_pb2 import anki.deckconfig_pb2 +import anki.links_pb2 import anki.notes_pb2 import anki.notetypes_pb2 import anki.scheduler_pb2 diff --git a/pylib/anki/collection.py b/pylib/anki/collection.py index 757170257..7b4555417 100644 --- a/pylib/anki/collection.py +++ b/pylib/anki/collection.py @@ -12,12 +12,14 @@ from anki import ( collection_pb2, config_pb2, generic_pb2, + links_pb2, search_pb2, stats_pb2, ) from anki._legacy import DeprecatedNamesMixin, deprecated # protobuf we publicly export - listed first to avoid circular imports +HelpPage = links_pb2.HelpPageLinkRequest SearchNode = search_pb2.SearchNode Progress = collection_pb2.Progress EmptyCardsReport = card_rendering_pb2.EmptyCardsReport diff --git a/pylib/anki/links_pb2.pyi b/pylib/anki/links_pb2.pyi new file mode 100644 index 000000000..240954913 --- /dev/null +++ b/pylib/anki/links_pb2.pyi @@ -0,0 +1 @@ +../../bazel-bin/pylib/anki/links_pb2.pyi \ No newline at end of file diff --git a/qt/aqt/utils.py b/qt/aqt/utils.py index c6a983408..a6b5052bd 100644 --- a/qt/aqt/utils.py +++ b/qt/aqt/utils.py @@ -34,7 +34,7 @@ from PyQt5.QtWidgets import ( ) import aqt -from anki.collection import Collection +from anki.collection import Collection, HelpPage from anki.lang import TR, tr_legacyglobal # pylint: disable=unused-import from anki.utils import invalidFilename, isMac, isWin, noBundledLibs, versionWithBuild from aqt.qt import * @@ -69,42 +69,15 @@ def locale_dir() -> str: # shortcut to access Fluent translations; set as tr = tr_legacyglobal - -class HelpPage(Enum): - NOTE_TYPE = "getting-started#note-types" - BROWSING = "browsing" - BROWSING_FIND_AND_REPLACE = "browsing#find-and-replace" - BROWSING_NOTES_MENU = "browsing#notes" - KEYBOARD_SHORTCUTS = "studying#keyboard-shortcuts" - EDITING = "editing" - ADDING_CARD_AND_NOTE = "editing#adding-cards-and-notes" - ADDING_A_NOTE_TYPE = "editing#adding-a-note-type" - LATEX = "math#latex" - PREFERENCES = "preferences" - INDEX = "" - TEMPLATES = "templates/intro" - FILTERED_DECK = "filtered-decks" - IMPORTING = "importing" - CUSTOMIZING_FIELDS = "editing#customizing-fields" - DECK_OPTIONS = "deck-options" - EDITING_FEATURES = "editing#features" - - -HelpPageArgument = Optional[Union[HelpPage, str]] -"""This type represents what can be used as argument expecting a specific help page. Anki code should use HelpPage as -argument. However, add-on may use string, and we want to accept this. - -""" +HelpPageArgument = Union["HelpPage.HelpPage.V", str] def openHelp(section: HelpPageArgument) -> None: - link = aqt.appHelpSite - if section: - if isinstance(section, HelpPage): - link += section.value - else: - link += section - openLink(link) + if isinstance(section, str): + page = HelpPage(literal=section) + else: + page = HelpPage(variant=section) + openLink(tr.backend().help_page_link(page)) def openLink(link: Union[str, QUrl]) -> None: