Commit graph

119 commits

Author SHA1 Message Date
Arthur Milchior
ec00777d63 BUTTON_ONE 2020-02-03 02:24:37 -08:00
Arthur Milchior
e47af22e4a Adding constants for buttons
The point being that, when we read BUTTON_ONE, we know that the type
of the element is: a button
2020-02-03 02:24:37 -08:00
Arthur Milchior
a1255c32ba LEECH_TAGONLY 2020-02-03 02:24:37 -08:00
Arthur Milchior
2bf69ea0c1 LEECH_SUSPEND 2020-02-03 02:24:37 -08:00
Arthur Milchior
3c45190255 Add leech constants 2020-02-03 02:24:37 -08:00
Arthur Milchior
d284b01619 ADD_MODE 2020-02-03 02:24:37 -08:00
Arthur Milchior
224a38e931 IGNORE_MODE 2020-02-03 02:24:37 -08:00
Arthur Milchior
a29824e088 UPDATE_MODE 2020-02-03 02:24:37 -08:00
Arthur Milchior
409f512e55 DECK_DYN 2020-02-03 02:24:37 -08:00
Arthur Milchior
fa82692b87 use DECK_STD 2020-02-03 02:24:37 -08:00
Arthur Milchior
38e924db7f Adding constants for decks' type 2020-02-03 02:24:37 -08:00
Damien Elmes
a8c3c796e1 ugly fix for suspended cards being unsuspended when filtered deck emptied
https://anki.tenderapp.com/discussions/ankidesktop/38247-bug-suspended-cards-automatically-included-in-the-filtered-decks
2020-02-03 08:10:20 +10:00
Damien Elmes
dc565082cf add schedv2_did_answer_review_card hook 2020-01-31 07:30:13 +10:00
Damien Elmes
90e619dcae better help link for blank cards 2020-01-28 07:53:55 +10:00
Damien Elmes
86a580d820 reuse reveal_cloze_text() for LaTeX cloze expansion 2020-01-28 07:40:44 +10:00
Damien Elmes
47bcb3845c support speed control in tts tags 2020-01-26 14:31:07 +10:00
Damien Elmes
6bbab6e9f9 move strip_av_refs() into anki.sound 2020-01-24 15:48:40 +10:00
Damien Elmes
8cfb4d47ab more changes to the template code
- _renderQA() has moved to template.py:render_card()
- dropped QAData in favour of a properly typed dict
- render_card() returns a TemplateRenderOutput struct instead of a dict
- card_did_render now takes that output as the first arg, and can
mutate it
- TemplateRenderContext now stores the original card, so it can return
a card even in the add screen case

The old mungeFields and mungeQA hook have been removed as part of this
change. mungeQA can be replaced with the card_did_render hook.
In the mungeFields case, please switch to using field_filter instead.
2020-01-24 13:44:13 +10:00
Damien Elmes
766155665b renderQA() wasn't used in the codebase 2020-01-24 11:09:38 +10:00
Damien Elmes
46c6a7f7e4 extract and flag AV tags as part of the render process
We can now show replay buttons for the audio contained in {{FrontSide}}
without having to play it again when the answer is shown.

The template code now always defers FrontSide rendering, as it wasn't
a big saving, and meant the logic had to be implemented twice.
2020-01-24 11:06:11 +10:00
Damien Elmes
58cbca9a8c inject legacy funcs referencing aqt in GUI load 2020-01-23 18:20:19 +10:00
Damien Elmes
00a0c539a3 fix lint 2020-01-23 18:12:57 +10:00
Damien Elmes
6c0e2ff57a update reqs test to reflect new behaviour 2020-01-23 17:32:17 +10:00
Damien Elmes
35435a130e basic night mode support
Forces the Fusion theme when running night mode, so we don't need
to work around platform themes that don't respond to the defined
palette.

Feedback/suggestions on the chosen colours welcome - _vars.scss is the
file to change if you want to experiment with adjustments.
2020-01-23 17:27:07 +10:00
Yngve Høiseth
4f5537f358 Type hint RemoteServer._run 2020-01-22 23:33:37 +01:00
Damien Elmes
7fefe7ec43 fix pylib checks failing when aqt unavailable 2020-01-22 16:11:40 +10:00
Damien Elmes
2ee8902bd9 added flag_av_tags() for replay button support 2020-01-21 14:44:27 +10:00
Damien Elmes
b0d2958721 add rank handling to TTS; parse TTS args in get_av_tags() 2020-01-21 12:41:37 +10:00
Damien Elmes
b5758c2cff rework the audio player API and add a simpler player implementation
- the new API operates on AVTags so it can support TTS as well as
audio files
- added a simple "run for each file" implementation for mpv and mplayer.
- will need to test handling of unicode filenames on Windows
- the old mpv and mplayer code is currently not active
2020-01-20 20:07:11 +10:00
Damien Elmes
548ed31ef7 add a simple TTS field filter
This simply wraps the field in extra text that the frontend will
deal with. Also added some helpers for extracting and stripping
audio and TTS tags from the rendered text.
2020-01-20 19:16:24 +10:00
Damien Elmes
4a19600465 hasSound not used by anki code or add-ons 2020-01-20 09:31:28 +10:00
Damien Elmes
99d596fa96 fix incorrectly logged repeat step
https://anki.tenderapp.com/discussions/ankidesktop/38130-anki-21-scheduler-misleads-on-hard-button-for-learning-cards
2020-01-19 15:41:58 +10:00
Damien Elmes
5646ee642a automatically disable add-ons that have been marked as incompatible 2020-01-19 13:37:55 +10:00
Damien Elmes
0a57969a44 AnkiRequestsClient -> HttpClient 2020-01-19 11:33:27 +10:00
Damien Elmes
369d38ff7c add type alias for httpclient callback 2020-01-19 10:06:54 +10:00
Damien Elmes
d86b231c2b pass in a progress callback instead of http_data_did_[send|receive]
If a request is happening on a background thread, the GUI code
receiving requests on that thread can lead to a crash

Add-on downloading still to do.
2020-01-18 17:49:59 +10:00
Damien Elmes
705ab55fef move AnkiRequestsClient into its own file
It should still be accessible via anki.sync as well.
2020-01-18 15:45:14 +10:00
Damien Elmes
c525a75fa3 drop plus_one test 2020-01-17 18:54:38 -07:00
Damien Elmes
a9378b1e99 _localOffsetForDate() was broken
It was including the elapsed time of day when calculating
the offset, leading to incorrect results
2020-01-17 18:52:36 -07:00
Damien Elmes
70061e6bfe comment out the unused legacy code 2020-01-17 10:51:36 +10:00
Damien Elmes
5d29ad51da move types.py into the files responsible for each type 2020-01-17 10:17:33 +10:00
Damien Elmes
8041ee5c52 remove unused legacy requirements code 2020-01-17 09:33:33 +10:00
Damien Elmes
55314d6d30 add context to card rendering, and rework related hooks
- the context exists for the lifecycle of one card's render,
and caches calls to things like .card() to avoid add-ons needing to
do their own cache management.
- add-ons can optionally add extra data to the context if they need
it across multiple filters
- removed card_will_render. the legacy hook is still available for
now
- card_did_render is now called only once, with both front and back
text
2020-01-17 09:30:42 +10:00
Damien Elmes
d778f9b0af i18n 2020-01-16 21:05:29 +10:00
Damien Elmes
d81d20855e need to strip sounds when FrontSide rendering deferred 2020-01-16 19:49:43 +10:00
Damien Elmes
a254b140a7 fix empty cloze message not appearing 2020-01-16 18:47:21 +10:00
Damien Elmes
52bd10063e more useful template error message 2020-01-16 18:47:21 +10:00
Damien Elmes
4ed6508e19 Merge pull request #423 from Arthur-Milchior/fixReorder
Order by creation of note
2020-01-16 18:47:12 +10:00
Arthur Milchior
c4fecd9260 Order by creation of note
This commit solve a problem I actually have for some strange
reason. Here is how to reproduce the problem

1. Create a note of type Basic (and reversed card) in a deck D with front "First"
and no back
2. Wait a day (or install an add-on which show hour and minutes of
creation time in browser)
3. create a second note, with front "Last" and no back
4. In first note, add in back field "First" and delete the front field
5. Use "Empty card".
6. In the setting of the deck D, set in random order, and then back in
the "order added"
7. Review deck D. You'll see card 1 of the second note. (Don't review
it)
8. Open the browser. Show the column "due" and created. You'll see
that the first card (first) have due value 2, while it was created
before according to the created date. The card "last" have due value
1.

This is due to the fact that the value "created" is linked to note
creation, while the order is linked to the card creation time, and
card may be created after other note
2020-01-15 23:42:54 -08:00
Damien Elmes
64fc9ff854 type hints 2020-01-16 09:19:53 +10:00