Glutanimate
8ff1a2e770
Bundle individual section hooks together into one
...
Uses new dataclass 'DeckBrowserContent'
2020-02-17 16:26:21 +01:00
Arthur Milchior
8ecd606ada
Current card get selected in browser
...
I'm pretty sure it was the way it worked before. I'm surprised that
it's not the case anymore.
If you open the browser from the reviewer, the current card get
selected if it exists. The current note is still entirely displayed.
Personally, I want to know easily which is the current card. Opening
the browser is the easiest way to do it; assuming I can see the
current card selected
2020-02-17 04:10:47 -08:00
Damien Elmes
ca0df4929d
add fallback for tr if collection not open
...
When syncing media on close, the collection may be closed before
media syncing completes.
A better solution in the future will be decouple translations from
the collection object.
2020-02-17 17:39:01 +10:00
Damien Elmes
f940c326c2
fix initial build failing
2020-02-17 15:48:27 +10:00
Damien Elmes
1524e7dcac
split "Due" into three different contexts for translators
2020-02-17 14:41:01 +10:00
Damien Elmes
a2481b18ef
add helper script to extract previous translated string
2020-02-17 13:41:21 +10:00
Damien Elmes
2f199750c0
make sure ftl files get updated
2020-02-17 12:35:55 +10:00
Damien Elmes
e6c8794eb1
fix sync-git
2020-02-17 11:45:56 +10:00
Damien Elmes
d612aa0945
localize some error messages
2020-02-17 11:38:22 +10:00
Damien Elmes
67a741958c
use new i18n infrastructure for more media check / media sync strings
2020-02-17 10:18:20 +10:00
Damien Elmes
f6a881f950
pass progress back as translated string(s)
2020-02-17 08:40:17 +10:00
Damien Elmes
d1e587fca9
add ftl to the build process, and a sync-git script
...
also
- ensure po files are checked when updated
- add start of sync.ftl
2020-02-17 08:40:17 +10:00
Damien Elmes
6c9e9eb330
drop unused threadLocal and noHint i18n code
2020-02-17 08:40:17 +10:00
Damien Elmes
97b9b94fc7
use new file locations for translations
...
- translation files are now stored in a separate repo, and
use a layout compatible with Pontoon
- normalize the language code in aqt, so that old config settings
and command line arguments are correctly handled
- store Qt and gettext translations in separate subfolders
- remove Crowdin scripts
2020-02-17 08:40:17 +10:00
Damien Elmes
1efe9e525c
move Gettext translations into separate repo for Pontoon
2020-02-17 08:40:17 +10:00
Damien Elmes
64445f17df
update translations
2020-02-17 08:40:17 +10:00
Damien Elmes
f6ddcd81df
fix sync deauth
2020-02-17 08:40:17 +10:00
Damien Elmes
5c8e3df612
include report in MediaCheckOutput
2020-02-17 08:40:17 +10:00
Damien Elmes
4c0f216df2
use media.trash for unused media deletion as well
2020-02-17 08:40:17 +10:00
Damien Elmes
4fc898ec1e
accept clicks on the progress dialog close button when updating
2020-02-17 08:40:17 +10:00
Damien Elmes
0c27126817
fix latex render progress; display more frequently
2020-02-17 08:40:17 +10:00
Damien Elmes
49cda5ffbb
rename aqt/media.py to mediacheck.py
2020-02-17 08:40:17 +10:00
Damien Elmes
2d0499580f
if latex fails to render in bulk, show the user the problem
2020-02-17 08:40:17 +10:00
Damien Elmes
9df2a08cb0
new render_all_latex() + gui button; remove some old code
2020-02-17 08:40:17 +10:00
Damien Elmes
c347c9aee8
sort media list
2020-02-17 08:40:17 +10:00
Damien Elmes
6f158c8555
plug new media check in
2020-02-17 08:40:17 +10:00
Damien Elmes
aa832e9117
backend stores media folder/db locations; don't need to pass them in
2020-02-17 08:40:17 +10:00
Damien Elmes
7ae6244f6a
log media DB change registration progress, and allow aborting it
2020-02-17 08:40:17 +10:00
Damien Elmes
5fe1bfc5b4
simplify code by accumulating stats at the source
2020-02-17 08:40:17 +10:00
Damien Elmes
98279add15
defer errors on upload to media check
2020-02-17 08:40:17 +10:00
Damien Elmes
d38c2c12d5
autosync media every ~15 minutes
2020-02-17 08:40:17 +10:00
Damien Elmes
12d009e503
autosync media on close
2020-02-17 08:40:17 +10:00
Damien Elmes
59a7993011
autosync media on startup
2020-02-17 08:40:17 +10:00
Damien Elmes
fdd850c0f0
add extra hook for media sync start/stop
2020-02-17 08:40:17 +10:00
Damien Elmes
de27cf2a63
if toolbar refreshed, make sure not to clear syncing
2020-02-17 08:40:16 +10:00
Damien Elmes
6a64c8dfcc
use enums for some common errors
2020-02-17 08:40:16 +10:00
Damien Elmes
c329759a88
catch DB errors in sync
2020-02-17 08:40:16 +10:00
Damien Elmes
d7e4d10184
constant sync spin speed
2020-02-17 08:40:16 +10:00
Damien Elmes
ec9abf1ce5
pass in endpoint
2020-02-17 08:40:16 +10:00
Damien Elmes
0c124188cd
catch network errors
2020-02-17 08:40:16 +10:00
Damien Elmes
93c768cab9
move more logic into mediasync.py, handle auth errors
2020-02-17 08:40:16 +10:00
Damien Elmes
347ac80086
remove unused code
2020-02-17 08:40:16 +10:00
Damien Elmes
cb0ce4146f
show spinner when media sync active, click to reveal dialog
2020-02-17 08:40:16 +10:00
Damien Elmes
ea4de9a6de
connect media sync progress to Python, add a progress dialog
2020-02-17 08:40:16 +10:00
Damien Elmes
4096d21c07
add add_file() and write_data()
2020-02-17 08:40:16 +10:00
Damien Elmes
57b678a939
put head text after css/js imports so it can override them
...
as discussed in PR #438
2020-02-17 08:38:59 +10:00
Glutanimate
d02de28f21
Add deck_browser_will_render_section hook
...
Allows add-on authors to specifcally target and modify individual
sections of the deck browser HTML body at string composition time.
2020-02-16 19:29:01 +01:00
Damien Elmes
0ec3bbe1af
Merge pull request #447 from glutanimate/browser-sidebar-tree-hooks
...
Add browser_will_build_tree filter
2020-02-16 08:36:28 +10:00
Damien Elmes
990a6c394b
Merge pull request #445 from glutanimate/new-html-view-hooks-2
...
Allow add-on authors to easily inject their own content into Anki's web views – take 3
2020-02-16 08:32:34 +10:00
Glutanimate
621e634bb2
Add a convenience function for creating toolbar links
...
Similar to aqt.editor.Editor.addButton
2020-02-15 23:22:41 +01:00
Glutanimate
18ae9e612e
Add top_toolbar_did_init_links hook
...
Allows extending the links in the top toolbar, in a similar
fashion to editor_did_init_shortcuts
2020-02-15 23:21:23 +01:00
Glutanimate
a8aac761f1
Add browser_will_build_tree filter
...
Allows add-ons to populate the browser sidebar tree with their own
items, and/or take over specific construction stages in their
entirety
2020-02-15 21:03:15 +01:00
Glutanimate
3637f466b4
Update documentation for webview_will_set_content and WebContent
2020-02-15 15:03:58 +01:00
Glutanimate
0e5dea4c9f
Assume that web assets without a specified subpath are under /_anki
...
Maintains compatibility with existing add-ons
2020-02-15 15:03:43 +01:00
Damien Elmes
f7ebb8c28f
Merge pull request #433 from Arthur-Milchior/ints
...
Constants
2020-02-14 08:37:31 +10:00
ijgnd
d0ea2ad749
small fix: store return value for hook in preview
2020-02-13 18:51:11 +01:00
Glutanimate
c86e55d451
Fix "js" parameter type
2020-02-12 22:20:30 +01:00
Glutanimate
c839cda19f
Fix missing "Optional" import and lint
2020-02-12 22:15:44 +01:00
Glutanimate
5bd38ce0a5
Pass CardInfoDialog context to stdHtml
2020-02-12 22:12:45 +01:00
Glutanimate
bbd667b0ff
Add webview_will_set_content hook & update supporting code accordingly
2020-02-12 22:00:13 +01:00
Glutanimate
df2a7b06ef
Refactor web view title setting and add titles to all web views
...
Simplifies debugging web views
2020-02-12 21:03:11 +01:00
Damien Elmes
d0284f759d
fix odd outline in replay button, and center align
...
https://anki.tenderapp.com/discussions/beta-testing/1708-anki-2120-beta#comment_48079637
2020-02-12 09:18:32 +10:00
Damien Elmes
bd9de51e82
study screen -> overview screen wording
...
This is a test change to see how Crowdin handles wording tweaks
2020-02-12 09:02:48 +10:00
Damien Elmes
a029ad9d45
update translations
2020-02-12 08:59:14 +10:00
Damien Elmes
4b0873cc9a
constrain editor and reviewer image width to container width
...
view height still makes more sense in the reviewing screen so images
are relative to the window instead of the document
2020-02-12 08:33:55 +10:00
Damien Elmes
1c677bb9d4
night mode fix for find dupes screen
2020-02-12 08:28:33 +10:00
Damien Elmes
3425bee968
provide easy access to browser from preview/dupes handlers
2020-02-12 08:28:21 +10:00
Damien Elmes
2c4c8d4ab0
tweak wording
2020-02-12 08:14:16 +10:00
Damien Elmes
62c86b2cbe
move export notes action to the notes menu
2020-02-12 08:09:12 +10:00
Arthur Milchior
a087d0e4c4
Adding export option in Browser
2020-02-11 10:50:59 -08:00
Arthur Milchior
617043f632
browser._exporting
2020-02-11 10:50:59 -08:00
Arthur Milchior
272db65f0a
Replace list of deck by "Browser Selection"
2020-02-11 10:50:59 -08:00
Arthur Milchior
a6567da259
if cards are selected, default is apkg
2020-02-11 10:50:59 -08:00
Arthur Milchior
d8669835d8
aqt.exporter takes extra argument cid
2020-02-11 10:49:13 -08:00
Damien Elmes
af26922493
fix error when double-clicking open profile button
...
https://anki.tenderapp.com/discussions/ankidesktop/38670-bug-when-auto-sync-is-enabled-and-open-profile-button-is-double-clicked
2020-02-10 09:32:56 +10:00
Damien Elmes
072b64c819
work around HTML editor race condition on macOS
...
https://anki.tenderapp.com/discussions/beta-testing/1785-cant-see-html-boxes
2020-02-10 09:25:11 +10:00
Damien Elmes
ddebf5741d
ensure the inverted images don't appear over toolbar
2020-02-09 09:30:37 +10:00
Damien Elmes
20c51555a1
support AnkiMobile's drawings in night mode
2020-02-09 09:20:08 +10:00
Damien Elmes
7fcb6b5672
pass instance to webview_did_receive_js_message instead of string
2020-02-09 08:59:29 +10:00
Damien Elmes
5bd67509ae
Merge pull request #441 from Arthur-Milchior/hookRefreshOverview
...
Allow to change main window when overview/deckbrowser is shown
2020-02-09 08:02:41 +10:00
Arthur Milchior
75a8ef832b
Allow to change main window when overview/deckbrowser is shown
2020-02-08 08:09:12 -08:00
Damien Elmes
c8b794e6cc
formatting
2020-02-07 17:55:26 +10:00
Damien Elmes
be6b8cd131
don't filter strong/em; sort list of tags
2020-02-07 17:55:17 +10:00
Damien Elmes
1fbd925f4c
update translations
2020-02-07 13:26:15 +10:00
Damien Elmes
5b01f0dad1
more legible graph colours in night mode
2020-02-07 13:21:46 +10:00
Arthur Milchior
fc5c1fd16a
correct missing french translation
2020-02-05 20:48:30 -08:00
Arthur Milchior
35c8f21eb6
Reformatting through black
2020-02-04 08:47:36 -08:00
Arthur Milchior
957f0c8e8b
QUEUE and TYPE day learn, relearn
2020-02-04 08:47:36 -08:00
Arthur Milchior
45bf763238
QUEUE_TYPE_REV and CARD_TYPE_REV
2020-02-04 08:47:36 -08:00
Arthur Milchior
69436643fe
CARD_TYPE_LRN and QUEUE_TYPE_LRN
2020-02-04 08:47:35 -08:00
Damien Elmes
3f3c1255bf
clearer variable names
2020-02-04 17:10:20 +10:00
Damien Elmes
2ccece86a7
minor wording tweak
2020-02-04 17:06:41 +10:00
Damien Elmes
8dd75edaa9
default human_version to None
2020-02-04 17:03:21 +10:00
Damien Elmes
d200d33aa5
Merge pull request #435 from ijgnd/debug2
...
Extend Copy Debug Info and add human_version to manifest.json
2020-02-04 17:01:50 +10:00
ijgnd
62527f0b54
about.py - some type hints
2020-02-04 04:16:51 +01:00
ijgnd
6e1996f701
Extend Copy Debug Info
2020-02-04 04:16:51 +01:00
ijgnd
de9331a03e
add human_version to manifest.json
...
edit 7586c67 add human_version to manifest.json
2020-02-04 04:16:12 +01:00
Arthur Milchior
a1cc0787d2
QUEUE_TYPE_NEW and CARD_TYPE_NEW
2020-02-03 02:24:37 -08:00
Arthur Milchior
25c579926b
radioCram
2020-02-03 02:24:37 -08:00
Arthur Milchior
fc7636c194
radioPreview
2020-02-03 02:24:37 -08:00
Arthur Milchior
7e0b4522fb
radioAhead
2020-02-03 02:24:37 -08:00
Arthur Milchior
20bb24a641
radioForgot
2020-02-03 02:24:37 -08:00
Arthur Milchior
c3bd167958
radiorRev
2020-02-03 02:24:37 -08:00
Arthur Milchior
da39ef378c
radioNew
2020-02-03 02:24:37 -08:00
Damien Elmes
5d91580ce2
add option to disable audio interrupting
2020-02-03 08:55:14 +10:00
Damien Elmes
ab1f2429a7
formatting
2020-02-02 13:09:02 +10:00
Damien Elmes
91326ec6d9
only apply padding fix to stats screen
...
It was breaking the display of dialogs like the filtered deck screen
2020-02-02 13:07:24 +10:00
Damien Elmes
3c48cbff6f
more contrast on buttons and scrollbars
2020-02-02 12:53:35 +10:00
Damien Elmes
dd9812c7ed
match fusion bars to webview bars, bump size again
2020-02-02 12:25:07 +10:00
Damien Elmes
92888345fb
fix gridline color in macOS dark mode
...
https://anki.tenderapp.com/discussions/beta-testing/1752-beta7-nightmode-issues-on-mac
2020-02-02 12:01:27 +10:00
Damien Elmes
05be20f834
make pylint happy
2020-01-31 14:30:41 +10:00
Damien Elmes
c70badcd5a
only import darkdetect on a Mac
2020-01-31 14:14:54 +10:00
Damien Elmes
77912aa225
mypy+darkdetect fix
2020-01-31 13:45:25 +10:00
Damien Elmes
a4764e2acd
update translations
2020-01-31 13:44:46 +10:00
Damien Elmes
8b68512e0e
when dark mode not active, match fusion buttons
2020-01-31 13:39:52 +10:00
Damien Elmes
b8ad45c4e4
redraw top toolbar when deck list refreshed
...
Just a hack that allows users to click on Decks to adjust the colour
after a macOS theme change.
2020-01-31 13:31:31 +10:00
Damien Elmes
70d085f475
ignore dark mode when running from source, as it doesn't work
2020-01-31 13:30:35 +10:00
Damien Elmes
598ffbd340
maintain separate icon cache for light and dark themes
2020-01-31 13:30:12 +10:00
Damien Elmes
c42e118339
use night mode when dark mode active, using standard macOS theme
2020-01-31 13:15:08 +10:00
Damien Elmes
1552c34bea
put % in spinners
...
fixes the lone % shown for users of the v1 scheduler
2020-01-31 12:19:51 +10:00
Damien Elmes
d48038cc29
ignore immediate=True in progress dialog
...
Instead, set the busy cursor immediately to give the user feedback,
but defer popup for at least 500ms. This will hopefully address the
white flash in night mode on Windows, and prevent progress dialogs
from rapidly appearing and disappearing for short operations.
2020-01-31 08:47:05 +10:00
Damien Elmes
eb6b64f4b1
ignore foreground/background colour in spans when night mode active
...
This prevents pasted text from a standard webpage appearing as
black on white. It could theoretically be made smarter in the future,
but handling all the situations where the background or foreground
colour is not exactly #000/#fff might be tricky.
2020-01-31 08:03:09 +10:00
Damien Elmes
32b279f750
make link/filtered deck colour in night mode more blue
2020-01-31 07:38:14 +10:00
Damien Elmes
083e4a0b66
drop the extraneous svg group
2020-01-31 07:23:35 +10:00
Damien Elmes
396f583e2a
disable elastic scrolling to work around Qt's buggy behaviour on macOS
2020-01-31 07:12:27 +10:00
Damien Elmes
23c6cafb94
add compat soundLink selector back
2020-01-31 07:01:22 +10:00
Damien Elmes
2d5cab6758
add .night_mode as well
...
Please report if this causes any regressions.
2020-01-31 07:00:01 +10:00
Damien Elmes
fb696f3e3b
use SVG for the play icon, and reduce the default size to 40px
2020-01-28 10:11:29 +10:00
Damien Elmes
23f13a312b
update translations
2020-01-27 18:17:59 +10:00
Damien Elmes
7f2109cf04
tolerate branch idx out of range
...
Branches can't be deleted at the moment, but this may change in the
future.
2020-01-27 17:59:40 +10:00
Damien Elmes
cb7a483d32
mac top toolbar looks better with a slightly whiter border
2020-01-27 17:02:40 +10:00
Damien Elmes
b76f153ffd
rework update checks to match latest AnkiWeb API
2020-01-27 17:01:09 +10:00
Damien Elmes
45e8a9a364
fix +ve max versions being marked as disabled
2020-01-27 16:58:12 +10:00
Damien Elmes
9933720994
don't do HTML filtering when pasting urls/text/images
...
fixes
https://anki.tenderapp.com/discussions/ankidesktop/37752-anki-21-wont-play-audio-files-with-a-blank-in-the-title
2020-01-26 19:13:31 +10:00
Damien Elmes
bfb1d5c5f5
fix pylint
2020-01-26 18:57:32 +10:00
Damien Elmes
09e59d7148
style tags area like fields
2020-01-26 18:47:28 +10:00
Damien Elmes
46733e8cd7
remove the extra margin in the editing area so everything lines up
2020-01-26 18:26:03 +10:00
Damien Elmes
41bbc189f6
remove the line at the top of the editor
2020-01-26 18:25:44 +10:00
Damien Elmes
d7d4fcb178
use a darker rather than lighter border in night mode
2020-01-26 18:16:21 +10:00
Damien Elmes
91c2825551
add a (perhaps temporary) tts-voices: filter to show all available engines
2020-01-26 17:35:07 +10:00
Damien Elmes
21cbb5a766
support speed control in tts tags
2020-01-26 14:31:07 +10:00
Damien Elmes
0480879c11
slightly lighter, larger night mode scrollbar
2020-01-26 10:39:53 +10:00
Damien Elmes
e4bbba4ec1
fix webview button alignment on Linux
...
caused by the height: specification inside webview.py
2020-01-26 10:18:24 +10:00
Damien Elmes
e2e7128385
fix tags area and stats buttons in night mode
2020-01-26 09:13:38 +10:00
Damien Elmes
3b8f851854
fix autoplaying of audio in preview screen, and drop extend_and_play()
2020-01-25 16:02:34 +10:00
Damien Elmes
218c033104
respond to play button clicks in preview screen + card layout screen
2020-01-25 16:02:21 +10:00
Glutanimate
44c09db450
Fix formatting error
2020-01-24 15:48:05 +01:00
Glutanimate
68c5fd50f9
Equip Reviewer._showAnswer with hooks covering common add-on usages
2020-01-24 15:36:05 +01:00
Damien Elmes
d428b3b4c0
Merge pull request #429 from zjosua/latex-nightmode
...
Invert LaTeX in night mode
2020-01-24 17:37:12 +10:00
Damien Elmes
f260cfa07e
Merge pull request #428 from Arthur-Milchior/unusedOptional
...
"unused" variable become optional.
2020-01-24 17:28:47 +10:00
Damien Elmes
b4c8eaf4bb
support min/max add-on versions in download and ankiaddon manifest
2020-01-24 17:25:52 +10:00
zjosua
1450d1ca07
Invert LaTeX in night mode
2020-01-24 08:23:27 +01:00
Damien Elmes
f6ef553ba5
move strip_av_refs() into anki.sound
2020-01-24 15:48:40 +10:00
Arthur Milchior
66e1f876d7
"unused" variable become optional.
...
Adding this parameter broke one of my add-on, see
https://github.com/Arthur-Milchior/anki-keep-model-in-add-cards/issues/1
Since those parameters are not used, setting them to None by default,
as was done in some other method, seems acceptable
2020-01-23 21:46:42 -08:00
Damien Elmes
17ebdfc099
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
e3fb184a84
fix night mode tooltips
2020-01-24 07:55:14 +10:00
Damien Elmes
cc648195e4
night mode scrollbars in webviews
2020-01-24 07:41:39 +10:00
Damien Elmes
73a5233f92
fix link colour
2020-01-24 07:17:24 +10:00
Damien Elmes
3ecc572103
fix filtered deck colour
2020-01-24 07:17:20 +10:00
Damien Elmes
03a8f0e73b
fix mpv failing to load
2020-01-24 07:06:59 +10:00
Damien Elmes
9804105928
fix white background in day mode
2020-01-23 18:36:42 +10:00
Damien Elmes
406c58a109
inject legacy funcs referencing aqt in GUI load
2020-01-23 18:20:19 +10:00
Damien Elmes
4a25853c57
fix inconsistently sized buttons and add platform classes
2020-01-23 18:05:55 +10:00
Damien Elmes
3acf926fb0
better dupe color
2020-01-23 18:01:29 +10:00
Damien Elmes
b9ee7f49d8
don't wait as long for player to stop
2020-01-23 17:27:07 +10:00
Damien Elmes
d2336f3829
iconFromRef() compat
2020-01-23 17:27:07 +10:00
Damien Elmes
5a79bc69b8
fix audio displaying console window on Windows
2020-01-23 17:27:07 +10:00
Damien Elmes
982aca0c99
fix white flash on webview load
2020-01-23 17:27:07 +10:00
Damien Elmes
7dcbc7efec
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
Damien Elmes
44f2f16546
move css files to scss
2020-01-23 17:27:07 +10:00
Damien Elmes
95b497ccf0
handle spaces in voices, add platform prefix
2020-01-22 17:50:08 +10:00
Damien Elmes
3f3a8fc4ab
move ignore statements for python 3.7
...
sigh :-(
https://github.com/python/mypy/issues/3251#issuecomment-490298556
2020-01-22 16:54:18 +10:00
Damien Elmes
0ad6e8b58e
make pylint happy
2020-01-22 15:37:58 +10:00
Damien Elmes
cfa0f65311
add a hook for when playback begins
2020-01-22 14:41:32 +10:00
Damien Elmes
6af7933084
make .command() behave the same way for mplayer and mpv
2020-01-22 14:11:25 +10:00
Damien Elmes
be3393fcb4
simplify taskman, and add .run_on_main()
2020-01-22 14:09:51 +10:00
Damien Elmes
8236f800ae
add pause and seek forward/back shortcuts to review screen
2020-01-22 12:50:33 +10:00
Damien Elmes
d54f719558
add a webview_did_receive_js_message hook
2020-01-22 11:06:12 +10:00
Damien Elmes
a5db36e208
add optional result_callback arg to pycmd() definition
2020-01-22 10:28:45 +10:00
Damien Elmes
b870abd2d4
include card ordinal in clayout
2020-01-22 10:28:10 +10:00
Damien Elmes
f92bb55c25
add option in prefs to hide replay audio buttons
2020-01-21 21:00:17 +10:00
Damien Elmes
fd95336933
mypy fixes
2020-01-21 20:42:06 +10:00
Damien Elmes
19b3a15146
formatting fixes
2020-01-21 20:39:25 +10:00
Damien Elmes
37d2a4d43c
add a helper for caching generated files
2020-01-21 20:35:23 +10:00
Damien Elmes
b00a9010be
when matching voices, need to check language matches too
2020-01-21 20:35:00 +10:00
Damien Elmes
ccd7150136
fix mpv args
...
https://anki.tenderapp.com/discussions/ankidesktop/38186-mpvprocesserror-unable-to-start-process
2020-01-21 19:29:50 +10:00
Damien Elmes
5351a5f396
compare only on rank, as voices may be subclassed
2020-01-21 18:33:14 +10:00
Damien Elmes
84711f8fe2
add Windows TTS support
2020-01-21 17:34:47 +10:00
Damien Elmes
7b3d701ad5
add replay buttons to reviewing screen
2020-01-21 14:47:03 +10:00
Damien Elmes
7504ef6857
make sure we don't mutate list passed to play_from_tags()
2020-01-21 14:43:33 +10:00
Damien Elmes
98802c9c9a
deal with spaces in macOS voices like "Bad News"
2020-01-21 13:38:37 +10:00
Damien Elmes
2ac86ac400
add file-based TTS say implementation as well
2020-01-21 13:21:43 +10:00
Damien Elmes
c713683f63
add rank handling to TTS; parse TTS args in get_av_tags()
2020-01-21 12:41:37 +10:00
Damien Elmes
66e277e44b
more TTS and sound work
...
- use provided language and voices when playing on Mac
- fix hang in waiting for termination
- allow players to return a rank for a given tag,
which will allow for the best matching player to be chosen
depending on the context (eg, prioritize one player for videos,
one tts player for certain voices, etc)
2020-01-21 11:34:25 +10:00
Damien Elmes
d4d16d35a8
spawn a new slave mode mplayer for each file
...
This solves a few problems:
- We no longer need to write temporary files to disk, as files
passed on the command line with non-Latin text can be read by mplayer.
- We no longer need to deal with mplayer processes left around in
the background that have failed to terminate.
- We don't need to deal with the added complexity that comes with
polling mplayer's status output to determine when the file has finished
playing.
Also add seek_relative(), toggle_pause() and shutdown() as optional
methods on AVPlayer.
2020-01-21 08:55:15 +10:00
Damien Elmes
01f3fd06d6
support interrupting say; fix race in simple player
2020-01-21 07:28:19 +10:00
Damien Elmes
1beae4f858
pass task manager in instead of creating a new one
2020-01-21 06:49:09 +10:00
Damien Elmes
0b5e22253b
add .stop() to mpv
2020-01-21 06:45:32 +10:00
Damien Elmes
a6e6ffae06
get mpv slave mode working with new API
...
Also move the mpv-specific hooks into AVPlayer
2020-01-20 22:01:38 +10:00
Damien Elmes
d9c240afa2
minor tidyup to sound.py
2020-01-20 21:03:22 +10:00
Damien Elmes
7900f68051
don't need allSounds/stripSounds in qt's sound.py
2020-01-20 20:13:01 +10:00
Damien Elmes
02ec3f149c
update qt/ to use the new API
2020-01-20 20:10:38 +10:00
Damien Elmes
caac4527e9
add a proof of concept TTS implementation on Mac
2020-01-20 20:08:19 +10:00
Damien Elmes
707ac587ec
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
5084438a0b
we can depend on pyaudio being available now that the code is in qt/
2020-01-20 19:21:24 +10:00
Damien Elmes
c9a4626807
update translations
2020-01-19 16:58:34 +10:00
Damien Elmes
b6ed84998d
fix download log newlines
2020-01-19 16:46:24 +10:00
Damien Elmes
02145c7078
fix <br> remaining when image attached to empty field
2020-01-19 16:41:39 +10:00
Damien Elmes
5260e10f8f
leave percent-escaped text from the editor alone
...
Originally added in d7339d9a27b8abd65fbcf85f809fb0089046986f;
unfortunately the change message does not describe why. Images
are handled separately, so it should theoretically not be required,
and keeping it in leads to garbled text when people include %
on their cards.
Latest report at https://anki.tenderapp.com/discussions/ankidesktop/38138-errors-in-conversion-of-latex-and-ea
2020-01-19 16:29:46 +10:00
Damien Elmes
766321d746
avoid setting provided_name if not in the json
2020-01-19 14:10:48 +10:00
Damien Elmes
5d9661cee5
update add-ons even if they're disabled
...
If a user enables an old add-on and restarts immediately, it won't have
had a chance to update, and may raise errors that could have been
prevented if the user was running the latest version.
2020-01-19 14:04:57 +10:00
Damien Elmes
6fe6a9e597
send point version when downloading
...
AnkiWeb will return a 404 if add-on does not support that version
2020-01-19 13:43:16 +10:00
Damien Elmes
66714260a3
automatically disable add-ons that have been marked as incompatible
2020-01-19 13:37:55 +10:00
Damien Elmes
a619130e5e
add write_addon_meta(); use methods for derived values
2020-01-19 13:06:53 +10:00
Damien Elmes
54ca4efb8e
use an object for add-on metadata instead of reading the dict directly
...
also, sort disabled add-ons to the end
2020-01-19 12:44:53 +10:00
Damien Elmes
ef8bb61fc3
AnkiRequestsClient -> HttpClient
2020-01-19 11:33:27 +10:00
Damien Elmes
09e47fbc36
check for add-on updates once a day
2020-01-19 11:31:09 +10:00
Damien Elmes
6134ae9ec6
refactor add-on downloading/installing/updating
...
- web requests done on a background thread
- easier to use outside of the addon dialog
- gets max point version info from AnkiWeb, which we can use in
the future
2020-01-19 10:37:15 +10:00
Damien Elmes
49bba16f24
fix display errors on macOS after updating add-ons
2020-01-19 10:33:51 +10:00
Damien Elmes
a47db0d609
add helper for background execution
2020-01-19 10:06:01 +10:00
Damien Elmes
3287e8c057
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
0d1a25eb5b
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
fa56477205
remove template/ from i18n
2020-01-17 11:14:54 +10:00
Damien Elmes
7c1dc475b5
update translations
2020-01-17 11:09:24 +10:00
Damien Elmes
d3cc63efb0
move types.py into the files responsible for each type
2020-01-17 10:17:33 +10:00
Damien Elmes
af5e60dffa
fix formatting
2020-01-16 12:45:48 +10:00
Damien Elmes
4c0b7d37c9
option to invert paste handling in prefs
2020-01-16 12:36:04 +10:00
Damien Elmes
6906b366c0
fix preview button shortcut
...
Qt 'helpfully' erases any existing shortcuts when .setText() is called,
and as PyQt's generated forms set the text after the shortcut is set,
it gets lost.
https://anki.tenderapp.com/discussions/ankidesktop/38038-does-ctrlshiftp-doesnt-trigger-preview-in-browse
2020-01-16 12:31:02 +10:00
Damien Elmes
d5707a6388
don't change current deck if custom study fails to create
...
just a quick fix for now
https://anki.tenderapp.com/discussions/ankidesktop/37834-bug-custom-study-session-created-even-when-there-are-no-cards-that-match-selected-criteria
2020-01-16 11:26:22 +10:00
Damien Elmes
bf93731e49
revert to the old wrap() behaviour
...
wrap2() was introduced recently to try and resolve an issue where
styling outside of the wrapped section was getting lost. eg,
<b>some [text] etc</b>
When the user created a cloze deletion or added math tags to the [text]
part, the text ended up not being bold - the inner portion is displayed
without styling.
wrap2() used setFormat("inserttext", ...), which did fix that issue
- but it also introduced multiple new issues:
- any HTML inside the selected area, including newlines and images,
was lost
- the unicode entities inserted when creating a cloze deletion in
RTL mode end up inserted as plain text
For now, I'm just going to revert to the old behaviour. If anyone
has a suggestion for an approach that is able to preserve both the
inner formatting and the surrounding formatting, a pull request
or post on the forums would be appreciated!
2020-01-16 10:33:36 +10:00
Damien Elmes
391d849e51
fix invalid func name in unfocus hook
...
Don't know why mypy and pylint both failed to catch this :-(
2020-01-16 08:53:28 +10:00
Damien Elmes
886536d78f
fix cases where we used the wrong type sig to connect to gui hook
2020-01-16 07:53:12 +10:00
Damien Elmes
8310cb7a0e
add qconnect helper and some type hints
...
The type hints allow mypy to check the gui_hook calls, revealing a
bunch of places that are broken as they expect no arguments like the
legacy hooks.
To make mypy happy about PyQt's signal.connect(func), a qconnect()
helper has been added.
2020-01-16 07:41:23 +10:00
Damien Elmes
967b8a038d
Merge pull request #421 from ErezVolk/tag-changed-grooming
...
Tag modified grooming
2020-01-15 20:25:51 +10:00
Erez Volk
bd9aaa9296
Small fixes and tweaks to "Tag Modified":
...
- No need for the checkbox, as an unchecked box is equal to an empty
`QLineEdit`.
- The value was saved to the profile but not loaded.
- And the real pièce de résistance: I've figured out how to "Promote"
the `QLineEdit` to a `TagEdit`.
Hope you like it! :)
2020-01-15 10:46:05 +02:00
Damien Elmes
b09e7e8247
more tweaks for readability/consistency
2020-01-15 17:45:35 +10:00
Damien Elmes
237c0791f8
more hook tweaks, and merge the pre-render field and template hooks
2020-01-15 17:18:11 +10:00
Damien Elmes
cab572b63c
remove _hook/_filter suffix
2020-01-15 16:53:24 +10:00
Damien Elmes
b2f756f1b7
tweak the hook names in anki/
...
still a work in progress
2020-01-15 16:43:22 +10:00
Damien Elmes
c3775e572d
fix file path in comment
2020-01-15 15:29:23 +10:00
Damien Elmes
89fce1f6b7
migrate addHook/remHook calls
2020-01-15 13:49:26 +10:00
Damien Elmes
26cb9851b4
idempotent hook removal
...
This matches remHook()'s behaviour
2020-01-15 13:16:43 +10:00
Damien Elmes
97bd86e0ad
tidy hooks, add reviewCleanup
2020-01-15 13:03:11 +10:00
Damien Elmes
660685375f
migrate most of the remaining runHook() calls
2020-01-15 12:46:53 +10:00
Damien Elmes
67a3223623
remove unused function
2020-01-15 12:17:29 +10:00
Damien Elmes
84c17e1f02
add more hooks, tweak wording for consistency
2020-01-15 12:16:54 +10:00
Damien Elmes
dbca596b41
clean stale build folders before build
...
setuptools will bundle up files from that folder even if they're
no longer in the source tree.
2020-01-15 10:07:39 +10:00
Damien Elmes
c67aefa3ea
move hook gen code out of anki/
...
It's not needed at runtime, and this allows hooks to be updated
even when the code is broken.
2020-01-15 09:11:20 +10:00
Damien Elmes
cb14963066
add _ prefix to generated classes to improve code completion
2020-01-15 08:58:27 +10:00
Damien Elmes
2fa662f7ae
add some more hooks; stringify fully qualified types
...
To avoid circular imports, types that contain a '.' are automatically
converted to strings.
2020-01-15 08:56:56 +10:00
Damien Elmes
2921037c7b
remove some comments that are no longer relevant
2020-01-14 20:45:18 +10:00
Damien Elmes
d962c0d8cb
if profile is corrupt and is reset, need to set default lang again
...
Fixes https://anki.tenderapp.com/discussions/ankidesktop/37994-traceback-error-with-windows-64bit-standard-installation
2020-01-14 15:18:07 +10:00
Damien Elmes
1824ca1b5d
fix startup when prefs.db not readable
...
If we fail to open the Anki 2.0 prefs.db file, on the second try
we need to revert to a new file instead of trying the same broken
file again.
2020-01-14 14:59:46 +10:00
Damien Elmes
ba670c4be1
if pm.meta() fails, need to unset pm
...
This prevents a startup failure caused by trying to set
the UI scale when .meta() is not working. Startup still
fails, but the correct message is displayed now.
2020-01-14 14:57:24 +10:00
Damien Elmes
662eb53e6a
switch to classes for hooks
...
This allows us to add a docstring to .append() so users can see
the names of the arguments that are being passed, and means we
don't have to remember to prepend run_ when calling a hook.
2020-01-14 08:54:07 +10:00
Damien Elmes
8946ad5483
include py.typed for mypy
...
these builds are now available on
https://github.com/ankitects/anki-typecheck
The add-on docs will be updated shortly to provide info on
using the new hooks and type checking.
2020-01-13 21:18:03 +10:00
Damien Elmes
125d6f9d1d
add license to wheels and option to skip bundling extra files
2020-01-13 20:04:23 +10:00
Damien Elmes
d266dcd076
add a flag to handle the legacy hook missing args case
...
And update a few more hooks.
2020-01-13 18:37:08 +10:00
Damien Elmes
b86ae31907
update the rest of the anki/ hooks/filters
2020-01-13 17:59:52 +10:00
Damien Elmes
f379167648
run black on generated hooks
2020-01-13 17:55:58 +10:00
Damien Elmes
402a594c7b
buildinfo required to generate hooks
2020-01-13 14:55:32 +10:00
Damien Elmes
4bb3d7a958
add separate file for gui hooks
2020-01-13 14:38:05 +10:00
Damien Elmes
dd61389319
New type-safe approach to hooks/filters
...
Still todo:
- Add separate module for GUI hooks
- Update the remaining runHook/runFilter() calls
- Document the changes, including defensive registration
2020-01-13 13:57:51 +10:00
Damien Elmes
b42912e639
mark anki and aqt modules as having typing info
...
This means once they're installed via develop or a wheel, add-ons
will be able to more easily typecheck their code against the Anki
code.
2020-01-13 13:03:37 +10:00
Damien Elmes
1152db5998
update translations
...
update translations
2020-01-10 08:21:52 +10:00
Glutanimate
cda296748d
Add hook for AddCards.addNote
2020-01-08 21:29:28 +01:00
Damien Elmes
83f0e15213
show stdout/stderr when running tests
2020-01-08 15:52:51 +10:00
Damien Elmes
8b94d69abc
bump minimum python version from 3.6 to 3.7
2020-01-07 18:34:36 +10:00
Damien Elmes
26d581adf9
remove dupe line
2020-01-06 20:59:18 +10:00
Damien Elmes
844e90fc80
don't need to rerun checks each time buildhash changes
2020-01-06 19:30:54 +10:00
Damien Elmes
947d35dfca
add tests and setup.py to checks; fix warnings
2020-01-06 15:27:59 +10:00
Erez Volk
b4facdf650
BUGFIX: QLineEdit doesn't have .toPlainText()
2020-01-05 07:54:45 +02:00
Damien Elmes
1146e00bce
skip the automatic push
2020-01-05 08:52:46 +10:00
Damien Elmes
93bf0e40bd
update translations
2020-01-05 08:43:39 +10:00
Damien Elmes
eee21d347f
make file context relative to root
2020-01-05 08:35:46 +10:00
Damien Elmes
1c77ff57ef
clearer commit message
2020-01-05 08:35:08 +10:00
Damien Elmes
0b10d2c2cc
update
2020-01-05 08:15:47 +10:00
Damien Elmes
eecf4d4445
add missing pywin32
2020-01-05 07:34:36 +10:00
Damien Elmes
88e83ddae5
wheel deps should be checked at install time, not build time
2020-01-05 07:34:36 +10:00
Glutanimate
a2124e2ee8
Use add-on name rather than package name when reporting on conflicts
...
Brings _installationSuccessReport more in line with messaging in
AddonManager.toggleEnabled
2020-01-04 04:49:36 +01:00
Glutanimate
7348e9c69e
Further tweak messaging depending on Anki's state at installation time
2020-01-04 04:45:43 +01:00
Glutanimate
6a7f11b172
When possible, install add-on before add-ons are loaded
...
Removes the need to restart Anki if it is not running when
user launches .ankiaddon file
2020-01-04 04:34:16 +01:00
Glutanimate
d9e56e22f9
Fix type hints and remove obsolete argument
2020-01-04 04:31:33 +01:00
Glutanimate
54253e2108
Make sure to pass pending imports on to installAddon
...
also: refactor add-on check
2020-01-04 04:30:33 +01:00
Damien Elmes
f8df688648
don't reference missing readme in setup.py
2020-01-04 12:21:58 +10:00
Damien Elmes
1dd1acdffe
quieten wheel build
2020-01-04 12:21:58 +10:00
Damien Elmes
0bfc90f52f
update readme, remove submodule readmes
2020-01-04 12:21:58 +10:00
Damien Elmes
1c1fbde733
move top level scripts into makefile
2020-01-04 12:21:58 +10:00
Glutanimate
a46e9b6035
Merge branch 'ankiaddon-filetype-handling' of https://github.com/Glutanimate/anki into ankiaddon-filetype-handling
2020-01-04 02:36:28 +01:00
Glutanimate
392938f20c
Adjust type annotations, format string, and remove tooltip on cancel
...
Other areas of Anki don't confirm cancelling actions with tooltips,
so after further consideration, the tooltip felt out of the place and
might have actually confused users into thinking some action was
being performed.
2020-01-04 01:30:20 +01:00
Aristotelis
09e238876b
Merge pull request #1 from amboss-mededu/add-amboss-contrib
...
Add AMBOSS as a contributor
2020-01-03 18:45:20 +01:00
Yann Salimi
14e3c24e73
Add AMBOSS as a contributor
2020-01-03 18:37:50 +01:00
Glutanimate
1b236acb3d
Fix mypy and black checks
2020-01-03 18:23:28 +01:00
Glutanimate
57c48d7c85
Add .ankiaddon mime-type on Linux and register Anki as its handler
2020-01-03 17:58:11 +01:00
Glutanimate
e3b7096db5
Extend CLI with the ability to install .ankiaddon packages
...
Allows Anki to register a mime-type handler for .ankiaddon files
Other small collateral changes:
+ fix positioning issues with some prompts and progress dialog
+ add prompt titles where they were missing
+ add type annotations for AddonManager installation methods
+ explicitly import os in main (used to be imported via aqt.qt)
2020-01-03 17:57:33 +01:00
Glutanimate
00991e8e8e
Extend showInfo with the ability to add custom buttons
...
Grants more flexibility in user prompt design
2020-01-03 17:48:17 +01:00
Glutanimate
ce1853167b
Refactor add-on installation error handling
...
Allows extending the installation pathways more easily.
In preparation of .ankiaddon file type handling.
2020-01-03 16:32:20 +01:00
Erez Volk
46a24812ce
Enable Tag Modified iff importMode is Update
2020-01-03 08:32:44 +02:00
Erez Volk
e481cce816
Merge remote-tracking branch 'upstream/master' into add-tags-on-update
2020-01-03 08:13:04 +02:00
Damien Elmes
0aa01605d7
add buildhash to rspy and aqt, and check all three modules match
2020-01-03 15:15:18 +10:00
Damien Elmes
c25e106f88
use proper version number in build outputs
2020-01-03 14:36:14 +10:00
Damien Elmes
e2ede3af0e
output into dist/
2020-01-03 14:32:26 +10:00
Damien Elmes
03e93f8416
make sure isort preserves ordering if anki installed into python env
2020-01-03 13:34:51 +10:00
Damien Elmes
8007113d7c
move license info into one place
2020-01-03 09:41:30 +10:00
Damien Elmes
1070c866f3
switch from nose2 to pytest
...
pytest will show what differs in simple assert statements
concurrent mode is supported with a plugin, but like nose2, concurrent
mode hides the cause of import errors, so I've left it off for now.
2020-01-03 08:52:10 +10:00
Damien Elmes
e92ba88af1
integrate i18n into new structure
2020-01-03 08:24:59 +10:00
Damien Elmes
1165e95ad3
add translations from crowdin
2020-01-03 07:59:33 +10:00
Damien Elmes
5ba0198a98
merge i18n into qt/
2020-01-03 07:59:00 +10:00
Damien Elmes
5876866565
tweaking the folder names again
...
hopefully that's the last of it
2020-01-03 07:48:38 +10:00