diff --git a/proto/backend.proto b/proto/backend.proto index 623c944b6..9af2a3e6f 100644 --- a/proto/backend.proto +++ b/proto/backend.proto @@ -69,6 +69,7 @@ message BackendInput { bytes set_all_notetypes = 57; Empty get_all_decks = 58; bytes set_all_decks = 59; + Empty all_stock_notetypes = 60; } } @@ -85,6 +86,7 @@ message BackendOutput { string studied_today = 32; string congrats_learn_msg = 33; Empty abort_media_sync = 46; + AllStockNotetypesOut all_stock_notetypes = 60; // fallible commands TemplateRequirementsOut template_requirements = 16; @@ -560,3 +562,7 @@ enum StockNoteType { StockNoteTypeBasicTyping = 3; StockNoteTypeCloze = 4; } + +message AllStockNotetypesOut { + repeated NoteType notetypes = 1; +} diff --git a/pylib/anki/rsbackend.py b/pylib/anki/rsbackend.py index 8e1bec29c..692fed2a5 100644 --- a/pylib/anki/rsbackend.py +++ b/pylib/anki/rsbackend.py @@ -48,6 +48,7 @@ SchedTimingToday = pb.SchedTimingTodayOut BuiltinSortKind = pb.BuiltinSearchOrder.BuiltinSortKind BackendCard = pb.Card TagUsnTuple = pb.TagUsnTuple +NoteType = pb.NoteType try: import orjson @@ -626,6 +627,13 @@ class RustBackend: def set_all_decks(self, nts: Dict[str, Dict[str, Any]]): self._run_command(pb.BackendInput(set_all_decks=orjson.dumps(nts))) + def all_stock_notetypes(self) -> List[NoteType]: + return list( + self._run_command( + pb.BackendInput(all_stock_notetypes=pb.Empty()) + ).all_stock_notetypes.notetypes + ) + def translate_string_in( key: TR, **kwargs: Union[str, int, float] diff --git a/rslib/src/backend/mod.rs b/rslib/src/backend/mod.rs index 33336b5ed..eebcad327 100644 --- a/rslib/src/backend/mod.rs +++ b/rslib/src/backend/mod.rs @@ -21,7 +21,7 @@ use crate::{ media::sync::MediaSyncProgress, media::MediaManager, notes::NoteID, - notetype::{NoteTypeID, NoteTypeSchema11}, + notetype::{all_stock_notetypes, NoteTypeID, NoteTypeSchema11}, sched::cutoff::{local_minutes_west_for_stamp, sched_timing_today}, sched::timespan::{answer_button_time, learning_congrats, studied_today, time_span}, search::{search_cards, search_notes, SortMode}, @@ -318,6 +318,9 @@ impl Backend { self.set_all_decks(&bytes)?; OValue::SetAllDecks(pb::Empty {}) } + Value::AllStockNotetypes(_) => OValue::AllStockNotetypes(pb::AllStockNotetypesOut { + notetypes: all_stock_notetypes(&self.i18n), + }), }) } diff --git a/rslib/src/notetype/mod.rs b/rslib/src/notetype/mod.rs index df1b0bf00..a932b92fd 100644 --- a/rslib/src/notetype/mod.rs +++ b/rslib/src/notetype/mod.rs @@ -9,6 +9,7 @@ pub use crate::backend_proto::{ NoteField, NoteFieldConfig, NoteType, NoteTypeConfig, NoteTypeKind, }; pub use schema11::{CardTemplateSchema11, NoteFieldSchema11, NoteTypeSchema11}; +pub use stock::all_stock_notetypes; use crate::{ define_newtype,