Commit graph

1162 commits

Author SHA1 Message Date
Damien Elmes
016fdd30ef ensure collection doesn't get stuck open if loading fails 2020-05-12 21:13:33 +10:00
Damien Elmes
4aac9635fa catch template errors, and start on discarding changes to fields/cards
This is only a first step - all the current methods that implicitly
save need to be updated.
2020-05-12 21:13:33 +10:00
Damien Elmes
d1cc4684d2 hook the empty cards code up to the GUI 2020-05-12 21:13:33 +10:00
Damien Elmes
6350e18680 hook up new note and note type handling
- notetypes are fetched from the DB as needed, and cached in Python
- handle note type changes in the backend. Multiple operations can now
be performed in one go, but this is not currently exposed in the GUI.
- extra methods to grab sorted note type names quickly, and fetch by
name
- col.models.save() without a provided notetype is now a no-op
- note loading/saving handled in the backend
- notes with no valid cards can now be added
- templates can now be deleted even if they would previously
orphan notes

a number of fixmes have been left in notes.py and models.py
2020-05-12 21:13:33 +10:00
Damien Elmes
e1642c7277 use quick check instead of full integrity check on collection close 2020-05-12 21:13:33 +10:00
Damien Elmes
8b7c474642 avoid installing pyaudio on every run 2020-05-12 21:10:21 +10:00
Damien Elmes
9762132f10 Merge pull request #611 from evandroforks/automatically_install_pyaudio_on_make_check
Automatically install pyaudio when running make check
2020-05-12 20:44:25 +10:00
Damien Elmes
27d2fb148a bump version 2020-05-11 19:28:17 +10:00
Damien Elmes
76890191c5 Revert "use isolation characters instead of direction markers in cloze handling"
This reverts commit 79a50ffb91.

Caused a regression:

https://anki.tenderapp.com/discussions/ankidesktop/41384-cloze-deletions-in-2125-and-2126
2020-05-11 19:25:49 +10:00
evandrocoan
008e5b5370 Set to restart Anki application after profile directory migration
Ask user confirmation before moving the Anki directory
https://github.com/ankitects/anki/pull 610
2020-05-10 18:30:58 -03:00
evandrocoan
6d07ad653b Automatically install pyaudio when running make check 2020-05-09 13:26:42 -03:00
Damien Elmes
ece19da49a avoid renaming completer_, as add-ons depend on it 2020-05-08 18:17:57 +10:00
Damien Elmes
cad3d9e74d python formatting+lints 2020-05-08 17:30:27 +10:00
Damien Elmes
5557a13a85 stats area grouping box fix
https://anki.tenderapp.com/discussions/beta-testing/1928-cosmetic-issue
2020-05-08 16:03:29 +10:00
Damien Elmes
0cb4bb7a78 bundle socks
https://anki.tenderapp.com/discussions/ankidesktop/39801-sync-error
2020-05-08 15:26:19 +10:00
evandrocoan
cd15f96dcb Keep an window open showing the migration is in progress 2020-05-07 15:03:43 -03:00
evandrocoan
1c1ee7ab72 Ask user confirmation before moving the Anki directory
https://anki.tenderapp.com/discussions/ankidesktop/41245-unwanted-file-movingdeleting-behavior
2020-05-07 14:59:19 -03:00
Damien Elmes
9ab0f7e2c8 avoid mention of pip 2020-05-05 16:30:22 +10:00
Damien Elmes
9c05ceb357 benchmark->profile, and remove from error branches 2020-05-05 16:28:49 +10:00
Damien Elmes
d2448fd957 Merge pull request #605 from evandroforks/benchmark_option
Created the --benchmark command line option
2020-05-05 16:23:00 +10:00
Damien Elmes
c463f1d40b Merge pull request #608 from evandroforks/fix_missing_pyaudio_import
Fix missing pyaudio blocking Anki from running
2020-05-05 16:22:34 +10:00
evandrocoan
682da15862 Used showWarning asking the user to install pyaudio 2020-05-05 00:00:48 -03:00
evandrocoan
9ec62edb2f Created the ANKI_RUN_BENCHMARK environment variable replacing
the command line argument.
2020-05-04 23:46:13 -03:00
evandrocoan
3d737f3329 Fixed profiler word misspelling and stopped trimming the output 2020-05-04 23:15:23 -03:00
Damien Elmes
367a174100 Merge pull request #607 from Arthur-Milchior/remove_a_try
Simplify the copying of field contents when resetting
2020-05-05 11:36:17 +10:00
Damien Elmes
56db996b5c fix card layout screen on qt 5.9 regression (#592) 2020-05-05 11:26:13 +10:00
evandrocoan
73b2c5f45c Fix missing pyaudio blocking Anki from running
https://github.com/ankitects/anki/pull 606
Remove pyaudio as mandatory dependency
2020-05-04 13:44:12 -03:00
Damien Elmes
51331db281 Merge pull request #580 from Arthur-Milchior/debug_diag
mw.debug_diag is the dialog and not the window
2020-05-04 14:07:15 +10:00
Damien Elmes
a2d02697a4 Merge pull request #584 from Arthur-Milchior/onModelchangeUsed
On modelchange used
2020-05-04 14:06:35 +10:00
Damien Elmes
673fe71c7d Merge pull request #585 from Arthur-Milchior/addButtonSaveNewFunction
addButton always save function
2020-05-04 13:58:46 +10:00
Damien Elmes
519b581608 Merge pull request #606 from evandroforks/remove_pyaudio_as_dependency
Remove pyaudio as mandatory dependency
2020-05-04 13:37:19 +10:00
Damien Elmes
4d33b2d8f7 use qconnect everywhere, and fix some typing issues
a step towards check_untyped_defs in aqt, but there's still 100+
issues to resolve
2020-05-04 13:23:08 +10:00
Damien Elmes
5706cdfc2e fix saving searches in browser 2020-05-04 12:26:50 +10:00
evandrocoan
0fb64bcf20 Remove pyaudio as mandatory dependency
Pyaudio on Windows is difficult to install and complicates things
when someone is using the wheels just for autocomletion on IDEs as
PyCharm:
https://anki.tenderapp.com/discussions/add-ons/44009-problems-with-code-completion
2020-05-03 23:05:38 -03:00
evandrocoan
8a516d8541 Created the --benchmark command line option
https://anki.tenderapp.com/discussions/ankidesktop/41106-card-audio-playback-changes-bug-in-212x
Based on the snippet: https://gist.github.com/evandrocoan/961d46e10424e53ba8946fac66e0efac
2020-05-03 20:34:43 -03:00
Arthur Milchior
6309df01f6 onModelChange: replacing try by if 2020-05-03 01:53:00 +02:00
Arthur Milchior
33455fdb6d single try in onModelChange 2020-05-03 01:53:00 +02:00
Arthur Milchior
3b5f7f2dc5 onModelChange save note
I like the way onModelChange is done. Except that you forget to use
the note you computed.
2020-05-03 01:53:00 +02:00
Damien Elmes
c2223610f1 bump version 2020-05-02 10:22:00 +10:00
evandrocoan
3dfe228b3e Add missing aqt and anki modules dependency requirements 2020-04-30 17:30:22 -03:00
Damien Elmes
8cab261062 fix deck confs not deleting
https://anki.tenderapp.com/discussions/ankidesktop/41044-bug-report-anki-2124-macos-deleting-unused-option-groups
2020-04-30 08:10:29 +10:00
BlueGreenMagick
7944ce135f Set tab width to 4 spaces
setTabStopWidth is deprecated, and setTabStopDistance is preferred
It's not entirely accurate however, which you can see
when you compare 10 tabs and 40 spaces
2020-04-29 11:34:09 +09:00
Damien Elmes
91248aa8cf bump version 2020-04-28 08:57:56 +10:00
Arthur Milchior
2721f88438 remove an useless asignment
Because fields of new notes are empty by default
2020-04-28 00:31:30 +02:00
Arthur Milchior
635c4bd27b remove a try, for code clarity 2020-04-28 00:31:24 +02:00
Damien Elmes
6811a3dade Revert "Merge pull request #583 from Arthur-Milchior/remove_a_try"
This reverts commit a248a58f7a, reversing
changes made to 858d470cdb.
2020-04-28 07:38:23 +10:00
Arthur Milchior
94c284724f mw.debug_diag is the dialog and not the window
This will allow, for example, for add-ons to do self.debugDiag.text
and access the debugger text. I see very little reason to have a
direct access to the dialog window.

I should note that self.debugDiag is never used anywhere in the code,
so I think it should be deleted; unless you've heard of some add-on
using it.
2020-04-27 11:55:33 +02:00
Damien Elmes
a248a58f7a Merge pull request #583 from Arthur-Milchior/remove_a_try
Simplify the code slightly
2020-04-27 19:12:00 +10:00
Damien Elmes
858d470cdb Merge pull request #582 from evandroforks/fix_make_clean
Fixed make clean rule not working on Windows
2020-04-27 19:10:21 +10:00
Damien Elmes
8ca0b1581c Merge pull request #581 from BlueGreenMagick/use-var-name
use variable names
2020-04-27 19:10:04 +10:00
Arthur Milchior
62ce1efd49 addButton always save function 2020-04-26 17:01:47 +02:00
Arthur Milchior
054f37f2b2 remove an useless asignment
Because fields of new notes are empty by default
2020-04-26 14:49:16 +02:00
Arthur Milchior
b5906ccef9 remove a try, for code clarity 2020-04-26 14:49:11 +02:00
BlueGreenMagick
b63b4fece1 use variable names 2020-04-26 15:47:19 +09:00
evandrocoan
e85c48298c Fixed make clean rule not working on Windows 2020-04-26 03:02:02 -03:00
evandrocoan
be1904ba1d Fixed build-mo-files not failing the build when msgmerge
is not found:
https://github.com/ankitects/anki/runs/617116053?check_suite_focus=true#step:27:1244

The build was not falling because when you do `(commands)` in a
shell script, the `set -e` directive is not inherited. Then, either
do not start a new shell or just use an if to test the error condition.
2020-04-25 05:17:24 -03:00
Damien Elmes
7159f477a6 Merge pull request #573 from evandroforks/printWidth100
Set .prettierrc printWidth to 88 because the default is too short
2020-04-23 20:01:58 +10:00
evandrocoan
18763ec8db Set .prettierrc printWidth to 88 because the default is too short 2020-04-22 23:11:03 -03:00
Damien Elmes
14d067f56a add selectable flag while preserving link clicking
https://anki.tenderapp.com/discussions/beta-testing/1920-config-can-copy-paste-but-cant-click-links-now
2020-04-21 09:11:56 +10:00
Damien Elmes
0c1b10162f Revert "Merge pull request #562 from ijgnd/master"
This reverts commit 1163e418ee, reversing
changes made to 2bfff8dee4.

https://anki.tenderapp.com/discussions/beta-testing/1920-config-can-copy-paste-but-cant-click-links-now
2020-04-21 09:10:45 +10:00
Damien Elmes
c9f18ba3d2 fix deleting deck configs 2020-04-20 13:23:05 +10:00
Damien Elmes
6f0159e141 fix renaming not updating dropdown 2020-04-20 13:17:55 +10:00
Damien Elmes
3dfbd1a9ae fix adding deck configs 2020-04-20 13:15:23 +10:00
Damien Elmes
a90d75f5fd Merge pull request #569 from evandroforks/limit_error_message_size
Also limit the size of the error message
2020-04-20 11:14:53 +10:00
Damien Elmes
f9302d9993 split scheduling prefs into separate tab
https://anki.tenderapp.com/discussions/ankidesktop/40610-windows-anki-everything-was-enlarged-to-150
https://anki.tenderapp.com/discussions/beta-testing/1916-preferences-screen-partly-invisible
2020-04-20 11:11:00 +10:00
evandrocoan
bed75b3980 Also limit the size of the error message in case it is
build by a concatenation of stack traces, i.e.,
```js
throw new Error(err + err.stack)
```
2020-04-17 16:28:31 -03:00
evandrocoan
4b3c452b6e Limit the reviewer.ts stack size
https://anki.tenderapp.com/discussions/beta-testing/1918-reliably-reproduced-bug-in-2124beta6#comment_48247959
2020-04-17 03:53:15 -03:00
evandrocoan
8d9ba4377a Cache webview.py console regex expression and disable multiline 2020-04-17 03:43:16 -03:00
Damien Elmes
09ac540168 fix delays caused by console.log regression in PR #560
https://anki.tenderapp.com/discussions/beta-testing/1918-reliably-reproduced-bug-in-2124beta6
2020-04-17 10:51:03 +10:00
Damien Elmes
78c1ced06a Merge pull request #560 from evandroforks/fix_javascript_console_output
Fixed javaScriptConsoleMessage showing 'error on line'
2020-04-16 10:15:56 +10:00
Damien Elmes
1163e418ee Merge pull request #562 from ijgnd/master
make help text selectable
2020-04-16 10:14:02 +10:00
Damien Elmes
d9b8aba358 catch and report issues when downgrading 2020-04-16 10:11:16 +10:00
Damien Elmes
a2c6a3e170 show a clearer error if the schema is too new
will hold off on making it translatable for now
2020-04-16 09:47:34 +10:00
Damien Elmes
a0587b09d1 downgrade manually
- A regular collection open/close no longer goes through the
upgrade/downgrade steps each time. This avoids wasted cycles, and will
become more important in the future when decks and note types are
split into separate tables.
- Added a downgrade button to the profiles screen to downgrade all
profiles and close the app.
- Downgrading is still automatic when exporting/doing a full sync.
2020-04-16 09:00:49 +10:00
Damien Elmes
18ae22c842 work around full sync on start closing the app
This is just a temporary solution until the syncing code can be
reworked.

https://anki.tenderapp.com/discussions/ankidesktop/39761-anki-crashing-after-sync-and-download
2020-04-16 08:10:17 +10:00
evandrocoan
2d84e8feee Set to use a regular expression to remove the server name because
it is less prone to break in future updates.
2020-04-15 16:27:41 -03:00
evandrocoan
d5df05ae6b Set to javaScriptConsoleMessage output to stdout because it
may raise error messages on the anki GUI.
2020-04-15 16:06:45 -03:00
ijgnd
9d076d00e0 make help text selectable
This allows the user to copy e.g. values so that they don't have to retype them which might introduce typos.
2020-04-15 18:59:04 +02:00
Damien Elmes
dd20337a85 don't write log files when exporting 2020-04-15 21:45:32 +10:00
Damien Elmes
41f469459e pare back dark mode support
Anki now solely relies on the night mode setting in the preferences
to decide whether to show in light or dark mode. Some users wanted
to run Anki in light mode while keeping the rest of their system dark,
and there were various display problems when dark mode was changed
after Anki started that couldn't be easily worked around.

NSRequiresAquaAppearance is set again, which means we can rely on
the interface appearing properly and not changing as the macOS theme
is changed.

Users who only use dark mode, and preferred the native look of widgets
in dark mode, can achieve the previous appearance by running the
following command in the terminal:

defaults write net.ankiweb.dtop NSRequiresAquaSystemAppearance -bool no

And the following in the debug console:

mw.pm.meta["dark_mode_widgets"] = True

This is hidden behind a debug console command because it requires the
user ensure their system is always set to the same light/dark mode
as Anki.
2020-04-15 21:44:56 +10:00
Damien Elmes
b60aa9efb9 Merge pull request #559 from evandroforks/show_full_javascript_stacktrace
Set to show the JavaScript exception message and stacktrace
2020-04-15 18:51:16 +10:00
Damien Elmes
58ff377187 Merge pull request #557 from simgunz/fix-button-not-highlighted
Fix editor buttons not highlighted
2020-04-15 18:50:36 +10:00
Damien Elmes
a33a02f3de update if a compatible branch is found, even if mtime is wrong
https://anki.tenderapp.com/discussions/ankiweb/4668-addon-auto-update-problems
2020-04-15 18:47:04 +10:00
evandrocoan
7226c40cce Set to show the JavaScript exception message and stacktrace, when
a exception is throw, showing the function and lines from where
the exception/error is coming from.
https://stackoverflow.com/questions/591857/how-can-i-get-a-javascript-stack-trace-when-i-throw-an-exception

Exception example:
Invalid HTML on card: Error: The media element is missing its 'src' attribute.
at http://127.0.0.1:50233/_anki/reviewer.js:246:23
at http://127.0.0.1:50233/_anki/reviewer.js:112:9
at Array.forEach ()
at setAnkiMedia (http://127.0.0.1:50233/_anki/reviewer.js:111:11)
at AnkiMediaQueue.setup (http://127.0.0.1:50233/_anki/reviewer.js:244:9)
at eval (eval at (http://127.0.0.1:50233/_anki/jquery.js:2:2651), :2:11)
at eval ()
at http://127.0.0.1:50233/_anki/jquery.js:2:2651
at Function.globalEval (http://127.0.0.1:50233/_anki/jquery.js:2:2662)
at Ha (http://127.0.0.1:50233/_anki/jquery.js:3:21262)
2020-04-15 04:15:47 -03:00
evandrocoan
c0f5110843 Fixed javaScriptConsoleMessage showing 'error on line' for
all lines. The new output format is:
JS info /_anki/reviewer.js:166 autoadd
JS error /_anki/reviewer.js:240 Uncaught (in promise) NotAllowedError: play() can only be initiated by a user gesture.
2020-04-15 04:12:47 -03:00
Simone Gaiarin
1d4620ff74 Fix editor buttons not highlighted
The selector 'button.linkb' takes precedence on '.highlighted' because
it is more specific, so that '.highlighted' is never applied.
2020-04-14 19:04:03 +02:00
Damien Elmes
8dafa8bce5 move autoplay() into card 2020-04-13 09:04:30 +10:00
Damien Elmes
6bef493aa5 fix replay audio again, and decouple the code from the reviewer 2020-04-13 08:59:36 +10:00
Damien Elmes
79a50ffb91 use isolation characters instead of direction markers in cloze handling
https://anki.tenderapp.com/discussions/ankidesktop/40443-improper-location-of-c1foo-on-ltr-text-in-an-rtl-cloze-field
2020-04-13 08:34:17 +10:00
Damien Elmes
25789e14ef avoid adjusting position if selected row is visible
https://anki.tenderapp.com/discussions/beta-testing/1868-anki-2124-beta#comment_48227037
2020-04-11 15:54:52 +10:00
Damien Elmes
4509a8c494 Merge pull request #550 from BlueGreenMagick/debugDiag-contextMenu
add clear actions to context menu in debug console
2020-04-11 14:19:46 +10:00
Damien Elmes
e1a0646d56 Update main.py 2020-04-11 14:19:27 +10:00
Damien Elmes
23c02f0a85 fix error when replaying audio in preview screen 2020-04-10 20:33:48 +10:00
Damien Elmes
c3f149ab94 make sure preview window is closed when browser closed 2020-04-10 20:32:48 +10:00
Damien Elmes
4da189a48c grey out spinner if max=0
https://anki.tenderapp.com/discussions/ankidesktop/32710-custom-study
2020-04-10 20:32:48 +10:00
Damien Elmes
79bcba0e52 Merge pull request #549 from BlueGreenMagick/debug-resizable
Allow changing height of debug console text edit boxes
2020-04-10 19:46:13 +10:00
BlueGreenMagick
4b63d598af add clear actions to context menu in debug console 2020-04-10 15:45:25 +09:00
BlueGreenMagick
2e44724e23 put debug textedits in a splitter 2020-04-10 13:50:09 +09:00
Damien Elmes
2723a03294 make sure progress stops when collection corrupt message shown 2020-04-09 14:19:20 +10:00
Damien Elmes
a1b1b7e428 fix deck_browser_did_render hook 2020-04-09 13:40:19 +10:00
Damien Elmes
896b798f12 Merge pull request #542 from BlueGreenMagick/addcards-cloze-warning
detect cloze cards with other filters
2020-04-08 16:30:00 +10:00
Damien Elmes
6f7b4191a3 Merge pull request #545 from BlueGreenMagick/draggable-field-pos
allow dragging fields to change its position
2020-04-08 16:22:27 +10:00
Damien Elmes
6fa53fa734 fix preview closing
https://anki.tenderapp.com/discussions/beta-testing/1868-anki-2124-beta#comment_48228480
2020-04-08 16:21:20 +10:00
Damien Elmes
83e988ce94 print exception on close 2020-04-08 10:05:33 +10:00
BlueGreenMagick
e7dba3709b allow dragging fields to change its position 2020-04-07 16:42:33 +09:00
BlueGreenMagick
50ae0bed3f use model type to detect cloze notes 2020-04-07 14:02:53 +09:00
Damien Elmes
f8f00f9d21 Merge pull request #543 from Arthur-Milchior/sort_according_to_path
Sort according to path
2020-04-07 14:44:53 +10:00
Damien Elmes
668bd25568 Merge pull request #541 from BlueGreenMagick/tmpNote-cloze
detect renamed cloze fields in note type preview
2020-04-07 14:17:44 +10:00
Damien Elmes
12e9293f60 avoid unnecessary work in 'make build' 2020-04-07 10:59:14 +10:00
BlueGreenMagick
e9929f84af detect renamed cloze fields in note type preview
and cloze fields that is also other special field type
such as '{{cloze:hint:Text}}'
2020-04-07 08:56:54 +09:00
Arthur Milchior
d095b017e4 _basename to basename, since it's not private in use 2020-04-06 23:51:50 +02:00
Arthur Milchior
859178c113 _basename used where possible 2020-04-06 23:51:42 +02:00
Arthur Milchior
e6024d4d3d replace _path by path (because it's not private here) 2020-04-06 23:50:43 +02:00
Arthur Milchior
8962194dcb uses _path where possible 2020-04-06 23:50:37 +02:00
Arthur Milchior
7bef7ef8ec Sort decks according to their paths
Currently it's sorted alphabetically. Because of this, "A::B" appears
between "A9" and "AA" in list of decks.
2020-04-06 22:49:25 +02:00
Damien Elmes
b5022ad354 store config in separate DB table
- mtime is tracked on each key individually, which will allow
merging of config changes when syncing in the future
- added col.(get|set|remove)_config()
- in order to support existing code that was mutating returned
values (eg col.conf["something"]["another"] = 5), the returned list/dict
will be automatically wrapped so that when the value is dropped, it
will save the mutated item back to the DB if it's changed. Code that
is fetching lists/dicts from the config like so:

col.conf["foo"]["bar"] = baz
col.setMod()

will continue to work in most case, but should be gradually updated to:

conf = col.get_config("foo")
conf["bar"] = baz
col.set_config("foo", conf)
2020-04-06 15:39:47 +10:00
Damien Elmes
d5200974f8 omit period in steps when possible 2020-04-06 15:39:47 +10:00
Damien Elmes
3c7eabc51e add flag to skip downgrade on collection close
Disabled for now; when enabled it will allow faster collection
open and close in the normal case, while continuing to downgrade
when exporting or doing a full sync.

Also, when downgrading is disabled, the journal mode is no longer
changed back to delete.
2020-04-04 17:21:45 +10:00
Damien Elmes
ac54f85840 update tag handling
- tag list stored in a separate DB table
- non-wildcard searches now do full unicode case folding
(eg tag:masse matches 'Maße')
- wildcard matches do simple unicode case folding
- some functions haven't been updated yet, so ascii folding will
continue to be used in some operations
2020-04-03 19:34:46 +10:00
Damien Elmes
07c414692e preserve mtime/usn when syncing deck config, and add snake_case names 2020-04-03 19:34:46 +10:00
Damien Elmes
6a7a18126f Merge pull request #537 from Arthur-Milchior/add_card_did_init
hook add_card_did_init
2020-04-03 19:34:33 +10:00
Arthur Milchior
952d943440 hook add_card_did_init 2020-04-03 11:03:08 +02:00
evandrocoan
b879c4a951 Fixed double python version check for python_requires=">=3.7" 2020-04-02 22:56:53 -03:00
evandrocoan
2cc12313dd Deprecated sdist wheels and pyqtwebengine as dependency 2020-04-02 22:56:48 -03:00
evandrocoan
e613e0dcbd Set the minimum python version required by anki on qt/setup.py 2020-04-02 22:56:44 -03:00
evandrocoan
7d1c5140a8 Set to build a source distribution instead of build distribution
for aqt on qt/Makefile, because .whl files are just zip simple
zip files and do not support dynamic versioning. Also, there is no
restriction for aqt to be shipped as source tarball because it does
not ship any binaries.
2020-04-02 22:56:37 -03:00
evandrocoan
745371f510 Fixed setup.py installing pyqtwebengine on older versions of pyqt 2020-04-02 22:56:33 -03:00
evandrocoan
4f591235c7 Set to checks.yml install and import anki wheels
# Conflicts:
#	.github/workflows/checks.yml
2020-04-02 22:56:13 -03:00
Damien Elmes
1f64059897 add type checking to previewer 2020-04-03 09:13:33 +10:00
Damien Elmes
da55f82619 add missing license header 2020-04-03 09:05:32 +10:00
Damien Elmes
3f965f5534 use old name for preview dialog to avoid breaking add-ons 2020-04-03 09:00:18 +10:00
Damien Elmes
8eca40dab8 fix some errors in the previewing code 2020-04-03 09:00:08 +10:00
Damien Elmes
d7edbedac0 Merge pull request #535 from evandroforks/upload_wheels_to_pypi
Created the GitHub Actions step Upload to PyPi
2020-04-03 08:40:17 +10:00
Damien Elmes
3959f7dcb8 render() conflicts with Qt method 2020-04-03 08:29:35 +10:00
Damien Elmes
c74cf44e90 be explicit that the method is a no-op 2020-04-03 08:27:56 +10:00
Damien Elmes
62586f75d0 tweak wording 2020-04-03 08:27:26 +10:00
Arthur Milchior
ef0cbb3a79 snake case 2020-04-02 17:44:06 +02:00
Arthur Milchior
c9bd4b53a3 Previewer is a QDialog
As suggested by Glutanimate in https://github.com/ankitects/anki/pull/532#discussion_r401256921
2020-04-02 17:44:06 +02:00
Arthur Milchior
391fd69061 Previewer: parent become private
It seems parent is a method of QDialog, so it creates a typing problem
2020-04-02 17:44:06 +02:00
Arthur Milchior
2eed489792 Methods used by browser are not public
As suggested by Glutanimate on https://github.com/ankitects/anki/pull/532#discussion_r401254100
2020-04-02 17:44:06 +02:00
Arthur Milchior
d85c8288f6 remove the word preview from previewer variable
As suggested by glutanimate https://github.com/ankitects/anki/pull/532#discussion_r401255290
2020-04-02 17:44:06 +02:00
Arthur Milchior
be66a0f1cd removing PreviewDialog dataclass
It can be replaced by the previewer itself. As suggested by
Glutanimate https://github.com/ankitects/anki/pull/532#discussion_r401252970
2020-04-02 17:44:06 +02:00
Arthur Milchior
1ee6bcbdcb PreviewerListCards can take cids and class
This allow to avoid recomputing a card if it is known, while allowing
to compute it until it's actually displayed
2020-04-02 17:44:06 +02:00
Arthur Milchior
7bf2631ea8 ListCardsPreviewer 2020-04-02 17:44:06 +02:00
Arthur Milchior
09a4a5307f Split PreviewerBrowser into a hierarchy
A part in common to see multiple cards. And a part specific for the browser
2020-04-02 17:44:06 +02:00
Arthur Milchior
b5b6786f95 split onPreview Prev/Next 2020-04-02 17:44:06 +02:00
Arthur Milchior
8bb2b037ef split _updatePreviewButtons
This will allow to create a hierarchy in this class
2020-04-02 17:44:06 +02:00
Arthur Milchior
cad44bb899 add a class to preview a single card 2020-04-02 17:44:06 +02:00
Arthur Milchior
7ce77e071d Class PreviewerBrowser
This let a previewer class which can be used to display a single card,
and a previewer for the browser
2020-04-02 17:44:06 +02:00
Arthur Milchior
0b80b157e7 split = None 2020-04-02 17:44:06 +02:00
Arthur Milchior
1322cd8e11 vbox and bbox are attribute 2020-04-02 17:44:06 +02:00
Arthur Milchior
6e30edd79f use card method 2020-04-02 17:44:06 +02:00
Arthur Milchior
6767431633 previewer: create gui in a distinct function 2020-04-02 17:44:06 +02:00
Arthur Milchior
7ea1ff840f move previewer to a different class.
This uses exactly the same code, with one exception. In the previewer
`self` became `self.parent` in order to have action on the
browser. And in the browser, some `self` become `self.previewer` to
access the previewer. (Some function having an action on the previewer
starting from the browser now are separated in two. One version in the
previewer doing the same thing. One version in the browser, calling
the version in the previewer if it exists.)

Preview dialog now takes a QWidget in general, not necesarrily a
Browser. The parameter is called parent
2020-04-02 17:44:06 +02:00
Damien Elmes
91c2e89360 ignore row change events that arrive after browser closed
https://anki.tenderapp.com/discussions/ankidesktop/40148-bug-when-suspending-cards
2020-04-02 19:44:51 +10:00
evandrocoan
30107ab09d Created the GitHub Actions step Upload to PyPi to run only on
tagged releases of anki:
https://anki.tenderapp.com/discussions/ankidesktop/40025-anki-in-python-package-index
2020-04-02 02:57:34 -03:00
Damien Elmes
f195296106 fix push-i18n-ftl 2020-04-01 18:20:31 +10:00
Damien Elmes
526569693c fix extract-po-string.py 2020-04-01 17:49:31 +10:00
Damien Elmes
0359a6ae38 tweak hook name 2020-04-01 17:13:08 +10:00
Damien Elmes
525fae808d Merge pull request #534 from Arthur-Milchior/tags_hook
hook tag_editor_received_a_key
2020-04-01 17:10:31 +10:00
Damien Elmes
8d952570a8 left-align tags
https://anki.tenderapp.com/discussions/ankidesktop/40068-tags-column-in-browser-is-centered
2020-04-01 13:29:42 +10:00
Damien Elmes
78aad6b64b always position selection in center after search
https://anki.tenderapp.com/discussions/beta-testing/1888-retaining-position-when-searching
2020-04-01 11:01:20 +10:00
Damien Elmes
284ee0860b allow aborting a media sync while http req in flight
The progress handling code needs a rethink, as we now have two separate
ways to flag that the media sync should abort. In the future, it may
make sense to switch to polling the backend for progress, instead of
passing a callback in.
2020-04-01 09:49:25 +10:00
Arthur Milchior
102670a5a6 hook tag_editor_received_a_key
I expect it to be useful for add-ons such as
https://github.com/fonol/anki-search-inside-add-card which interact
with the tag line
2020-03-31 15:05:41 +02:00
zjosua
487d02fff2 Use double quotes in taglimit queries 2020-03-30 10:12:47 +02:00
Damien Elmes
2fdca03043 Merge pull request #531 from Arthur-Milchior/browser_will_show_context_menu
hook browser_header_will_show_context_menu
2020-03-28 14:50:02 +10:00
Damien Elmes
76dec75947 Revert "Merge pull request #527 from Arthur-Milchior/explode_on_bridge_cmd"
This reverts commit 9e6a2ba1e6, reversing
changes made to fc846ac4e4.

Causes a traceback when opening the add screen, clicking on Type,
and choosing a note type.

  File "/Users/dae/Work/code/dtop/qt/aqt/webview.py", line 31, in cmd
    return json.dumps(self.onCmd(str))
  File "/Users/dae/Work/code/dtop/qt/aqt/webview.py", line 97, in _onCmd
    return self._onBridgeCmd(str)
  File "/Users/dae/Work/code/dtop/qt/aqt/webview.py", line 500, in _onBridgeCmd
    return self.onBridgeCmd(cmd)
  File "/Users/dae/Work/code/dtop/qt/aqt/editor.py", line 374, in onBridgeCmd
    self._links[cmd](self, *args)  # type: ignore
  File "/Users/dae/Work/code/dtop/qt/aqt/editor.py", line 404, in onBlur
    if gui_hooks.editor_did_unfocus_field(False, self.note, int(ord)):
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
2020-03-28 13:35:05 +10:00
Arthur Milchior
015d07ec56 hook browser_header_will_show_context_menu 2020-03-27 23:06:22 +01:00
Damien Elmes
ccee3af22c Merge pull request #529 from Arthur-Milchior/load_note_once_on_note_type_change
Ensuring "setNote" is called only once during changing of note type
2020-03-27 15:28:49 +10:00
Damien Elmes
36314f3b6f Merge pull request #528 from evandroforks/create_actions_for_windows_macos
Create actions for Windows and Mac OS
2020-03-27 15:26:22 +10:00
Damien Elmes
9e6a2ba1e6 Merge pull request #527 from Arthur-Milchior/explode_on_bridge_cmd
Explode on bridge cmd
2020-03-27 15:22:14 +10:00
evandrocoan
f1fe0209f6 Merge remote-tracking branch 'danielelmes/master' into create_actions_for_windows_macos 2020-03-26 19:31:01 -03:00
Arthur Milchior
77e6e2eb69 Ensuring "setNote" is called only once during changing of note type
Initially, I wanted to solve the bug reported on
https://github.com/Arthur-Milchior/anki-html-src-in-field/issues/1

After some research, I finally discovered that the trouble was that,
when we change the note type in add card, the method
`aqt.editor.Editor.loadNote` is called twice. In itself, it would not
be a problem, but given the way callback works, its call back is
called twice on the last version of the webview. Which means that
`gui_hooks.editor_did_load_note` is called twice, which breaks this
add-on.

The reason why loadNote is called twice is because `setNote` is called
twice in `aqt.modelchooser.onModelChange`. The first time through
`gui_hooks.current_note_type_did_change` which calls
`addcards.AddCards.onModelChange` which calls `loadNote`, the second
time through `self.mw.reset()` which calls
`gui_hooks.state_did_reset()` which calls `addcards.AddCards.onReset`
which calls `setAndFocusNote` which calls `setNote`.

I should note furthermore that currently,
`gui_hooks.current_note_type_did_change` is called only when the model
chooser change a model. And `addCards.onModelChange` is never called,
only added to the hook `gui_hooks.current_note_type_did_change`. So
removing the line of code removed in this commit will have no side
effect in Anki itself. It will only affect the fact that this method
is called twice.

I do not know of any add-on calling `onModelChange` or
`gui_hooks.current_note_type_did_change`, but it means little, so of
course, it may always mean an add-on will break because of this
change. No way of being sure.
2020-03-26 21:26:13 +01:00
Arthur Milchior
504b89f7af Ensure that focus, key and blur are treated as other commands
The reason to do that is that I can then call blur/key from other
method in add-on.

More precisely, I expect to create a method which captures the blur
command, ask anki to execute the standard version of the command, and
then execute more code once the note contains the new field value.

I should note that the code executed during blur/key/focus itself
didn't change. It's only it's location which changed.
2020-03-26 15:42:27 +01:00
Damien Elmes
0f0b90d427 fix progress dialog preventing schema mod
https://anki.tenderapp.com/discussions/beta-testing/1868-anki-2124-beta#comment_48183062

This is an ugly hack - in the future the calling code should be updated
to perform the check prior to starting the operation instead.
2020-03-26 21:07:53 +10:00
Damien Elmes
3ca9f61733 reduce the chances of add-ons preventing collections from loading
https://anki.tenderapp.com/discussions/ankidesktop/39953-sync-fail-with-images#comment_48182205
2020-03-26 09:53:15 +10:00
Arthur Milchior
2f245791c7 Explode onBridgeCmd
This way, an add-on can catch a blur command, do its change and then
call self.blur
2020-03-25 08:17:48 +01:00
evandrocoan
964cc1a11a Merge remote-tracking branch 'danielelmes/master' into create_actions_for_windows_macos
# Conflicts:
#	.github/scripts/trailing-newlines.sh
#	.github/workflows/checks.yml
#	Makefile
#	pylib/Makefile
#	qt/Makefile
#	qt/tools/typecheck-setup.sh
#	rspy/Makefile
2020-03-24 22:49:49 -03:00
Damien Elmes
350d97b390 Merge pull request #523 from Arthur-Milchior/hook_note_will_load
Hook editor_note_will_load
2020-03-25 09:43:16 +10:00
Arthur Milchior
7dbe8ec21b remove space in fields 2020-03-24 12:26:48 +01:00
Arthur Milchior
e509532ff1 strip to test whether field is empty 2020-03-24 11:55:55 +01:00
Arthur Milchior
3ecf8352f5 Hook editor_note_will_load
A current problem I have is that there is nothing similar to hook
inside of javascript. It seems that it would be easier to be able to
add other methods in javascript and call them in loadNote. Currently I
simply redefined loadNote, which is far from perfect
2020-03-24 10:17:01 +01:00
Damien Elmes
83dae0eab4 Merge pull request #525 from Hk-tang/change-to-more-pythonic
Change not not to bool
2020-03-24 16:01:15 +10:00
Damien Elmes
ebb4d5567a Merge pull request #524 from Arthur-Milchior/indet_html
Ident html in editor
2020-03-24 16:00:57 +10:00
Damien Elmes
792dd69b98 Merge pull request #522 from Arthur-Milchior/editor_did_init
editor_did_init
2020-03-24 15:52:50 +10:00
evandrocoan
02d8728683 Created .github/workflows/mac_checks.yml 2020-03-24 00:31:46 -03:00
evandrocoan
4fcecaed9f Created the .github/workflows/windows.yml
# Conflicts:
#	.github/scripts/trailing-newlines.sh
#	Makefile
#	qt/tools/typecheck-setup.sh
#	react/Makefile
#	rspy/Makefile
#	svelte/Makefile
#	tslib/Makefile
2020-03-23 19:51:03 -03:00
evandrocoan
b376b78527 Deprecated eval usage on qt/tools/typecheck-setup.sh 2020-03-23 18:54:24 -03:00
evandrocoan
093af85c2e Merge remote-tracking branch 'danielelmes/master' into fix_tests_on_windows
# Conflicts:
#	.github/scripts/trailing-newlines.sh
2020-03-23 18:44:11 -03:00
Hk-tang
f6d2c95888 Change not not to bool 2020-03-23 11:16:39 -06:00
Arthur Milchior
bb25398ed8 add an id to name tab 2020-03-23 16:52:24 +01:00
Damien Elmes
8b3995c1fc formatting 2020-03-23 19:54:01 +10:00
Damien Elmes
c5fa0b130e reduce the chances of a race condition in mplayer code
Not perfect, it may still happen.

https://anki.tenderapp.com/discussions/ankidesktop/39832-an-error-occurred-audio
2020-03-23 19:15:32 +10:00
Damien Elmes
a34dcb709e don't pop up network errors for media sync
log them instead
2020-03-23 19:06:13 +10:00
Damien Elmes
6a9ed72269 fix collection_did_load() not being called, and remove dead code
https://anki.tenderapp.com/discussions/ankidesktop/39765-_colloadingstate-is-never-run-thus-collection_did_load-hook-is-never-triggered
2020-03-23 18:57:23 +10:00
Damien Elmes
0c4feaa800 cache dark mode value so UI doesn't break when it changes
https://anki.tenderapp.com/discussions/ankidesktop/39550-cant-deactivate-night-mode-on-2121-for-mac
2020-03-23 18:39:37 +10:00
Damien Elmes
1bd4d0db4e dump more info in card()/bcard() 2020-03-23 18:39:00 +10:00
Arthur Milchior
0b0888acd9 Ident html in editor
Sometime I like to print html to understand why it bugs. And I really
prefer to have html indented if it's okay with you. There is no change
appart from the identation and quotes
2020-03-23 08:15:48 +01:00
Damien Elmes
1e9197a4d3 fix English being shown in prefs for fully qualified langs like zh-CN
https://anki.tenderapp.com/discussions/ankidesktop/39845-a-new-bug-has-been-found
2020-03-23 16:08:06 +10:00
Damien Elmes
ac78699d13 add back new_timezone_enabled(), as it's used in the prefs screen 2020-03-23 07:40:50 +10:00
Arthur Milchior
77309d3034 editor_did_init
That would be useful to add elements in the editor, such as in multi
column editor
2020-03-22 17:15:47 +01:00
Damien Elmes
28b0281972 allow customizing search order 2020-03-21 17:38:09 +10:00
Damien Elmes
6d7bf16b5a fix reversing sort order 2020-03-21 16:57:33 +10:00
Damien Elmes
eab7686d2f remove old finder code; add search hooks to browser & remove old one 2020-03-21 16:38:46 +10:00
Damien Elmes
67d1842691 enable sorting on the extra browser columns 2020-03-21 07:55:53 +10:00
Damien Elmes
cdb85ef72e disable word wrap in browser rows 2020-03-20 21:15:23 +10:00
Damien Elmes
f3296382ea ensure endReset() is called even if an exception is raised 2020-03-20 21:15:23 +10:00
Damien Elmes
c13056773b flush config on sort order change 2020-03-20 21:15:23 +10:00
Damien Elmes
2ea17d272c wait for media sync to complete before unloading collection 2020-03-20 21:15:23 +10:00
Damien Elmes
e980d20a40 reuse the existing backend instead of creating a new one 2020-03-20 21:15:23 +10:00
Damien Elmes
5aba5c3ab9 drop the separate i18n backend 2020-03-20 21:15:23 +10:00
Damien Elmes
fa527bca4f import .colpkg in a background thread 2020-03-20 21:15:23 +10:00
Damien Elmes
8c6e2cdb82 import .apkg files in a background thread 2020-03-20 21:15:23 +10:00
Damien Elmes
128b45aa40 import mapped files like csv in a background thread 2020-03-20 21:15:23 +10:00
Damien Elmes
37b24bf782 export in a background thread 2020-03-20 21:15:23 +10:00
Damien Elmes
258a8282d4 move .reopen() to mw; fix exporting 2020-03-20 21:15:23 +10:00
Damien Elmes
07381f74e6 fix mypy warning 2020-03-20 21:15:23 +10:00
Damien Elmes
a02c4ed994 drop the DB progress handler code
This code was an awful hack to provide some semblance of UI
responsiveness while executing DB statements on the main thread.
Instead, we can just run DB statements in a background thread now,
keeping the UI responsive.
2020-03-20 21:15:23 +10:00
Damien Elmes
cd78da24d9 use a timer to automatically show progress window
We were previously relying on the DB progress hook to cause the
progress window to display.

Qt's progress dialogs do have built in support for automatically
showing, but it's easier to add a timer than change the existing
code to use it.
2020-03-20 21:15:23 +10:00
Damien Elmes
df33b04be8 run Check DB in a background thread
Since the DB is now stored behind a mutex, we're no longer limited
to accessing the database on the main thread.
2020-03-20 21:15:23 +10:00
Damien Elmes
3f3a45e2ba add Collection struct, and get media check working again
- media check no longer needs collection to be closed
- use savepoints for operations initiated by Rust, so they are
atomic without forcing a commit
2020-03-20 21:15:23 +10:00
Damien Elmes
0147d9e470 drop log= argument from Collection 2020-03-20 21:15:23 +10:00
Damien Elmes
9e67ea736a drop named sql arguments 2020-03-20 21:15:23 +10:00
Damien Elmes
6d0c84a1e9 drop progress handler and timeout arg 2020-03-20 21:15:23 +10:00
Damien Elmes
f6472f7430 tweak add-on wording 2020-03-20 21:00:21 +10:00
Damien Elmes
1accffbd34 Merge pull request #517 from Arthur-Milchior/backup_is_done
hook backup_is_done
2020-03-20 20:56:33 +10:00
Damien Elmes
9a36800ddb Merge pull request #470 from Arthur-Milchior/accept_card
Hook to decide whether a note should be added.
2020-03-20 20:56:04 +10:00
Damien Elmes
9ea9bab3fa Merge pull request #514 from evandroforks/box-sizing_border-box
Added box-sizing: border-box; to typeans by default
2020-03-20 20:50:40 +10:00
Damien Elmes
44a704b27b Merge pull request #516 from Arthur-Milchior/hook_models_advanced_will_show
Hook models_advanced_will_show
2020-03-20 20:42:14 +10:00
Arthur Milchior
1993c0af70 Browser introduce method time_format
I expect to use this in my add-on 1243668133 (by monkey patching in
this case) where it would allow to show hours/minutes/seconds... in browser
2020-03-19 22:59:59 +01:00
Arthur Milchior
7192ee96ac hook backup_is_done
I expect to use this hook in add-on 529955533. It'll serve me to
create long term backup at the same time than your backup
2020-03-19 13:21:00 +01:00
Arthur Milchior
6e85e8ccce Hook models_advanced_will_show
This will be useful for add-on 1863928230. I want to let users change
the LaTeX footer/header everywhere.
2020-03-19 12:03:09 +01:00
Arthur Milchior
339bbd88a8 Hook to decide whether a note should be added. 2020-03-19 03:39:53 +01:00
evandrocoan
00424fc404 Added box-sizing: border-box; to typeans by default
https://anki.tenderapp.com/discussions/beta-testing/1854-using-margin-auto-causes-horizontal-scrollbar-on-typesomething
2020-03-18 20:31:11 -03:00
evandrocoan
5d75a0c9f1 Fixed moved comment line on qt/aqt/main.py, long variables names on
pylib/Makefile and qt/Makefile, and rg --version not going to /dev/null
on .github/scripts/trailing-newlines.sh
2020-03-18 11:36:50 -03:00
evandrocoan
51477a4033 Fixed mypy and pylint not building on Windows
1. error: unused 'type: ignore' comment
2. Module 'pywintypes' has no 'error' member
3. Module 'win32pipe' has no 'SetNamedPipeHandleState' member,
   but source is unavailable. Consider adding this module to
   extension-pkg-whitelist if you want to perform analysis based on
   run-time introspection of living objects.
2020-03-17 19:48:16 -03:00
evandrocoan
1fe4860b56 Fixed error: Incompatible types in assignment on qt/aqt/main.py
aqt\main.py:1437: error: Incompatible types in assignment (expression has type Module, variable has type "LibraryLoader[WinDLL]")  [assignment]
                _dummy = wintypes
                         ^
2020-03-17 19:48:16 -03:00
evandrocoan
c4e94ddc20 Fixed typecheck-setup.sh: sudo: command not found on Windows 2020-03-17 19:48:16 -03:00
evandrocoan
105e2a2502 Fixed make check for pylint not working on Windows due
F:\Python\python.exe: can't open file '/cygdrive/f/anki/pyenv/Scripts/pylint': [Errno 2] No such file or directory
2020-03-17 19:48:16 -03:00
Damien Elmes
f3d718eba2 Merge pull request #509 from Arthur-Milchior/type_queue_in_browser
adding missing constants in browser file
2020-03-17 21:33:08 +10:00
Damien Elmes
77e6661517 Merge pull request #506 from Arthur-Milchior/editor_web_view_did_init
Hook editor_web_view_did_init
2020-03-17 20:53:20 +10:00
Damien Elmes
7399486668 Merge pull request #505 from evandroforks/add_typearrow_id
Give the 'typearrow' id to the type answer arrow
2020-03-17 20:52:20 +10:00
Arthur Milchior
552c0cd8a8 adding missing constants in browser file 2020-03-17 06:32:46 +01:00
evandrocoan
219fcb3d9f Give the 'typearrow' id to the type answer arrow 2020-03-16 00:42:08 -03:00
Arthur Milchior
19e7163c2f Hook editor_web_view_did_init
I hope to use this in oder to had features to the web view. In
particular, I expect the "spell checking" feature to use it
hopefully. Because currently it's incompatible with other add-on
dealing with the editor
2020-03-16 04:37:07 +01:00
Damien Elmes
fc34ba40d4 fix dupe colour in day mode 2020-03-15 12:20:29 +10:00
Damien Elmes
9c8e8c2216 fix audio getting stuck (2/2) 2020-03-15 09:34:04 +10:00
Damien Elmes
8cd64bad6a fix audio getting stuck (1/2)
The problem was caused by stop() doing a spin loop on the main
thread waiting for the completion signal. This prevented Qt's run
loop from executing, and so the completion signal was never delivered,
meaning longer files would time out.

Fixed by reworking the code so that stop() does not block at all -
instead it just sets the termination flag, and AVPlayer does not
unset current_player. Then when the completion callback fires, it
can advance to the next file.

TTS code still needs updating, and the lock should be safe to remove
as the start/stop logic is all on the main thread.
2020-03-15 09:26:31 +10:00
Damien Elmes
cf8be89330 imports 2020-03-14 22:10:27 +10:00
Damien Elmes
863e5f5e51 make sure audio queue is cleared when transitioning between cards
https://anki.tenderapp.com/discussions/beta-testing/1846-anki-2122-beta#comment_48150139
2020-03-14 20:04:40 +10:00
Damien Elmes
81e472fdd1 drop the deck count warning 2020-03-14 19:41:33 +10:00
Damien Elmes
1161ac1962 fix play icons not appearing in browser preview when autoplay off 2020-03-14 19:29:11 +10:00
Damien Elmes
61e8a0ed3c possible fix for invalid handle issue
https://anki.tenderapp.com/discussions/ankidesktop/39346-cant-add-audio-on-flash-drive
2020-03-14 18:53:43 +10:00
Damien Elmes
0298a0f09f must close progress before displaying error, or user can't click it away 2020-03-14 18:42:03 +10:00
evandrocoan
d6fecea4ff Fixed BeautifulSoup breaking string paths
https://anki.tenderapp.com/discussions/ankidesktop/39543-anki-is-replacing-the-character-by-when-i-exit-the-html-edit-mode-ctrlshiftx
2020-03-12 21:19:09 -03:00
Damien Elmes
ea3815b34b fix missing zero count styling, and tweak colours 2020-03-12 20:01:25 +10:00
Damien Elmes
7069123a76 copy ftl to source folder in extra-po-string as well 2020-03-12 19:53:52 +10:00
Damien Elmes
29f625b61e add helper to duplicate a fluent string 2020-03-12 19:53:44 +10:00
Damien Elmes
7f9a3dad7e no implicit {} in replacements 2020-03-12 18:02:40 +10:00
Damien Elmes
172cb966c5 add ability to use other path to translation json 2020-03-12 18:02:36 +10:00
Damien Elmes
0651aaa229 add media check window title, use consistent formatting in template 2020-03-12 18:02:22 +10:00
Damien Elmes
3939e800f2 Merge pull request #503 from Arthur-Milchior/error_msg_in_schema
Error msg in schema
2020-03-11 16:00:47 +10:00
Damien Elmes
133b3d9996 fix wrong language selected in prefs screen 2020-03-11 14:58:57 +10:00
Arthur Milchior
5bb0808994 Allow add-on dev to show personalized message.
The error should be in "error_msg"

They can show:
* the original error message with {problem}
* the path of the error with {path},
* the value which does not match against the subchema with {error}
* the subschema against which the error occurs with {schema}

Thanks to Glutanimate for the idea https://github.com/ankitects/anki/pull/495#issuecomment-596685227
2020-03-11 01:39:39 +01:00
Arthur Milchior
c4ee97d707 snake case for addon_schema 2020-03-11 00:56:14 +01:00
Damien Elmes
404a8ca3ec add switch in prefs for new timezone handling code; bump sync version
AD devs: before updating the sync version to 10, please make sure
the new timezone code has been ported over. The core change to the
scheduler is in _updateCutoff():

b198ba8073/pylib/anki/schedv2.py (L1357)

with the following supporting Python functions:

b198ba8073/pylib/anki/schedv2.py (L1410)

 _timing_today() is calculated in Rust (lines up to 92, the rest are
tests):

b198ba8073/rslib/src/sched/cutoff.rs (L20)

The change went through a few iterations before stabilising, so it's
probably easier to refer to the above code than the patches that got
us to that point.
2020-03-10 17:50:18 +10:00
Damien Elmes
e512199ace add restore media action 2020-03-10 13:35:09 +10:00
Damien Elmes
cac9ccfa0d add empty trash action in aqt 2020-03-10 12:49:40 +10:00
Arthur Milchior
7dd2c3ec43 hook single_addon_selected 2020-03-09 12:45:10 +01:00
Arthur Milchior
9f1415a811 hook addons_dialog_will_show 2020-03-09 12:45:10 +01:00
Damien Elmes
bd86e42b2c Merge branch 'master' into more_precise_config_error_message 2020-03-09 19:41:26 +10:00
Damien Elmes
757fc93117 Merge pull request #499 from glutanimate/add-custom-dialogs-to-dialogmanager
Allow add-on authors to register their dialogs with the dialog manager
2020-03-09 19:40:34 +10:00
Damien Elmes
21a7de2741 Merge pull request #494 from Arthur-Milchior/debug_hook
Debug hook
2020-03-09 19:07:36 +10:00
Damien Elmes
0a8fe2959c fix missing newline in ftl files
https://anki.tenderapp.com/discussions/beta-testing/1836-problem-with-new-translations
2020-03-09 18:58:41 +10:00
Arthur Milchior
0a8f339aa3 More precise schema failure message
While creating schema for the add-on I used, I realized that my error
message was not precise enough.

For a big configuration such as in "Enhance main window", the message
"None is not of type 'string'" is almost useless.
So I added a path in the json config, to indicate where the error
is. And also which subschema is currently being used.
2020-03-08 16:38:06 +01:00
Glutanimate
ef8a87446c Elaborate more on the use case and requirements for dialog registration 2020-03-07 17:43:21 +01:00
Glutanimate
5105d297ac Allow add-ons to register custom dialogs with the dialog manager 2020-03-07 17:35:09 +01:00
Glutanimate
49fa1cbc59 Add cursory type annotations for aqt.DialogManager
Typing DialogManager._dialogs properly would require more extensive
changes which could break a number of add-ons
2020-03-07 17:29:37 +01:00
Arthur Milchior
490441b9a7 hook debug_ran_hook 2020-03-06 15:01:22 +01:00
Arthur Milchior
932412993a hook debug_will_show_hook 2020-03-06 15:01:02 +01:00
Damien Elmes
fd69c57ec4 Merge pull request #496 from TooYoungTooSimp/patch-1
Use anki.consts.SYNC_BASE instead of hardcoded url
2020-03-06 21:22:18 +10:00
Damien Elmes
aeb73a6354 Merge pull request #495 from Arthur-Milchior/check_schema_before_accepting
add-on config check schema of user config
2020-03-06 21:14:47 +10:00
雷宇辰
680b98ea32 Use anki.consts.SYNC_BASE instead of hardcoded url
Use `anki.consts.SYNC_BASE` instead of hardcoded url in function `MediaSyncer._endpoint`
2020-03-06 18:55:07 +08:00
Damien Elmes
33e9550b9a fix invert() in packaged builds
invert() was working in the QT 5.14 test environment, but failing
in 5.13
2020-03-06 18:02:22 +10:00
Arthur Milchior
f914354d16 add-on config check schema of user config 2020-03-05 16:31:17 +01:00
Damien Elmes
02caf37f28 fix regression introduced by PR #492 2020-03-05 09:24:26 +10:00
Damien Elmes
42d1223498 Merge pull request #493 from glutanimate/type-annotate-editor-card
Type-annotate editor.card
2020-03-05 07:26:40 +10:00
Damien Elmes
a655dce629 Merge pull request #492 from Arthur-Milchior/print_json_decode_error
print json decode error message
2020-03-05 07:26:17 +10:00
Glutanimate
fce24c6eea Type-annotate editor.card 2020-03-04 17:41:26 +01:00
Arthur Milchior
0210521745 print json decode error message
The main point is to allow add-on dev' to debug their own json
2020-03-04 15:29:48 +01:00
Arthur Milchior
3cca0bb132 config_unprettify_json 2020-03-04 08:25:14 +01:00
Arthur Milchior
ea03fcc526 hook prettify_json 2020-03-04 08:25:14 +01:00
Damien Elmes
43d1c3b865 Merge pull request #454 from glutanimate/display-addon-name-in-config-window
Display add-on name in add-on configuration window title
2020-03-02 16:59:44 +10:00
Damien Elmes
53b2122461 Merge pull request #476 from Arthur-Milchior/hook_browser_init
Hook browser init
2020-03-02 15:40:10 +10:00
Damien Elmes
dabbd18ffa Merge pull request #472 from Arthur-Milchior/hook_init_clayout
Hook init clayout
2020-03-02 15:39:23 +10:00
Alan Du
63a0b36d91 Monkeytype qt/aqt/reviewer.py 2020-03-01 10:16:08 -05:00
Alan Du
c283013ccd Monkeytype qt/aqt/theme.py 2020-03-01 10:16:08 -05:00
Alan Du
9c4e616191 Monkeytype qt/aqt/sound.py 2020-03-01 10:16:08 -05:00
Alan Du
9568c4190a Monkeytype qt/aqt/toolbar.py 2020-03-01 10:16:08 -05:00
Alan Du
c6817d296b Monkeytype qt/aqt/webview.py 2020-03-01 10:16:08 -05:00
Arthur Milchior
e45878c2ee hook for initializing clayout 2020-03-01 11:42:41 +01:00
Arthur Milchior
57efc22d99 browser_did_init 2020-03-01 11:39:41 +01:00
Glutanimate
a36d37d041 Display add-on name in add-on configuration window title 2020-02-29 20:15:23 +01:00
Arthur Milchior
a1da483906 move deck_browser hooks apart 2020-02-29 17:01:38 +01:00
Damien Elmes
935133bed5 fix shared link 2020-02-29 21:43:37 +10:00
Damien Elmes
19ef578556 Merge pull request #473 from evandroforks/fix_docs_urllink
Fixed anki website docs link on pylib/anki/consts.py
2020-02-29 21:39:11 +10:00
Damien Elmes
b4f9b8109c Merge pull request #468 from BlueGreenMagick/fix-comment-setwebexports
allow either \ or / in web exports filter
2020-02-29 21:25:12 +10:00
Damien Elmes
e52ceaed9b restore mpv/mplayer missing warning that got lost in the av changes
and ensure the UI doesn't get temporarily stuck after the command fails
2020-02-29 21:20:08 +10:00
Damien Elmes
61230105fa point user to manual if they're trying to disable night mode in dark mode 2020-02-29 20:44:49 +10:00
BlueGreenMagick
ffb6ae2dc6 match both forward slash and os seperator 2020-02-29 12:36:10 +09:00
evandrocoan
bc5a9da396 Fixed anki website docs link on pylib/anki/consts.py 2020-02-28 22:18:19 -03:00
Arthur Milchior
f20b0e43cd indicate that card_will_show belong to multiple windows 2020-02-28 13:34:48 +01:00
Damien Elmes
749541226e fix _tidy_name() comment 2020-02-28 17:14:47 +10:00
Damien Elmes
80cd519d40 stop fetching qt translations as part of recompile step 2020-02-27 20:38:05 +10:00
Damien Elmes
6aafefbc0c fix echo statement 2020-02-27 20:37:44 +10:00
Damien Elmes
1e03223320 dump po data into json to speed up invocations 2020-02-27 20:37:24 +10:00
Damien Elmes
2de865d7f0 migrate strings with trailing newlines to fluent 2020-02-27 20:36:40 +10:00
Damien Elmes
5f7046e841 strip whitespace in extracted strings 2020-02-27 17:38:02 +10:00
Damien Elmes
56d902b669 fix extract-po-string path 2020-02-27 17:37:40 +10:00
Damien Elmes
f5f2063211 remove submodule that crept into Alan's patch 2020-02-27 14:33:15 +10:00
evandrocoan
59d45f309a Merge remote-tracking branch 'danielelmes/master' into fix_windows_build
# Conflicts:
#	CONTRIBUTORS
2020-02-27 00:54:16 -03:00
Alan Du
df55645ced Apply mypy improvements to aqt 2020-02-26 22:27:58 -05:00
evandrocoan
4a2456f62f Merge remote-tracking branch 'danielelmes/master' into fix_windows_build
# Conflicts:
#	Makefile
2020-02-27 00:20:34 -03:00
Damien Elmes
fcc965e81a Merge pull request #462 from Arthur-Milchior/filter_empty_card
Add a hook to change empty cards to delete
2020-02-27 12:53:52 +10:00
Damien Elmes
93c2e04267 FString -> TR 2020-02-27 12:25:19 +10:00
Damien Elmes
3dc0567f89 add string for media log title, and add button in prefs to access it 2020-02-27 12:22:24 +10:00
Damien Elmes
83d894ac87 return a localized error for all error kinds
some errors are not yet localized, but now the Python code
doesn't need to think about which property to use
2020-02-27 10:46:24 +10:00
Arthur Milchior
228db67c93 Add a hook to change empty cards to delete 2020-02-26 10:59:34 -08:00
Damien Elmes
946a2e6a3e add missing short argument to legacy fmtTimeSpan() 2020-02-26 20:36:59 +10:00
Damien Elmes
b276e6f9ac fix push-i18n 2020-02-26 18:09:06 +10:00
Damien Elmes
7d691d7571 don't abort build if mo file fails; rename files for consistency
Issues are now checked for in CI, so there's no need to break the
build for everyone each time there's a problem with the gettext
catalogs.
2020-02-26 17:47:02 +10:00
Damien Elmes
8b728b4a1e fix dark mode target Qt version 2020-02-26 16:53:35 +10:00
evandrocoan
0eee3061dc Removed the qt/Makefile INSTALL_PYAUDIO variable and
created the Makefile SYSTEM_PACKAGES updating README.development
2020-02-25 21:08:05 -03:00
Damien Elmes
94ba217c25 formatting fixes 2020-02-25 17:56:46 +10:00
Damien Elmes
5ca00fc92d interrupt current audio when autoplay off 2020-02-25 17:49:06 +10:00
Damien Elmes
c240690da7 ensure user doesn't try to export into data folder
https://anki.tenderapp.com/discussions/ankidesktop/39008-export-path-accidentally-set-to-collectionmedia-possible-damage
2020-02-25 17:38:49 +10:00
Damien Elmes
c172557e47 formatting fix 2020-02-25 17:29:10 +10:00
Damien Elmes
59328d9ade tweak rounding
- avoid rounding minutes
- round the seconds taken in the card info screen
- provide different precise and imprecise modes, since we need
to display seconds to multiple decimals in some areas
2020-02-25 17:29:06 +10:00
Damien Elmes
fa41f24bf6 fix display of 1+ day intervals in review history
https://anki.tenderapp.com/discussions/ankidesktop/39189-interval-field-of-card-info-display-wrong-unit
2020-02-25 17:00:02 +10:00
Damien Elmes
999aa74eb2 ensure Anki starts on Windows systems that don't have TTS installed 2020-02-25 16:25:17 +10:00
Damien Elmes
8efc23229c don't allow UI scale < 100%
Both Windows and Linux installs fail to render properly when the scale
is below 100%:

https://anki.tenderapp.com/discussions/ankidesktop/38909-user-interface-size

Retina Macs do render properly, but they tend to display at appropriate
size out of the box anyway.
2020-02-25 16:20:14 +10:00
evandrocoan
2d316748a7 Merge remote-tracking branch 'danielelmes/master' into fix_windows_build
# Conflicts:
#	Makefile
2020-02-25 03:16:57 -03:00
evandrocoan
9e690f80e7 Renamed FIND_EXEC to FIND, replaced IS_WINDOWS by specific commands
as PYTHON_BIN, ACTIVE_SCRIPT and INSTALL_PYAUDIO.
Fixed echo statements not using @ to suppress double message output.
Deprecated the usage of ECHOCMD := /bin/echo -e because it has no
effect: https://stackoverflow.com/questions/60387684/how-to-make-the-makefile-echos-to-use-bin-echo-e

# Conflicts:
#	Makefile
2020-02-25 03:15:11 -03:00
Damien Elmes
9aa23c4846 don't pick up system dark theme in -alternate Mac build
The older Qt doesn't support it properly
2020-02-25 15:46:39 +10:00
Damien Elmes
592741deaa change default night mode card background to dark grey 2020-02-25 15:43:56 +10:00
Damien Elmes
d8695b215f use -q instead of --for-msgfmt so older gettext versions don't break
I was mainly using it to keep the output tidy anyway
2020-02-25 13:52:40 +10:00
Damien Elmes
d26a68f20e Merge pull request #458 from glutanimate/add-deck-conf-hooks
Add deck options hooks
2020-02-25 13:38:04 +10:00
evandrocoan
5fab701431 Added -o pipefail to all set -e ensuring the build fails when some
operation with pipe exits error status.

# Conflicts:
#	Makefile
2020-02-24 20:18:56 -03:00
evandrocoan
6a70adf6f4 Fixed msgmerge not stopping the shell on error 2020-02-24 17:54:59 -03:00
evandrocoan
a3e2793e25 Fixed build-mo-files not stopping on build errors 2020-02-24 17:02:27 -03:00
evandrocoan
6d16298254 Fixed development compilation with Windows 10
1. Documented on README.development how to setup the environment
   for Windows.
2. Fixed qt/ts/package.json not working due usage of ; instead
   of &&
3. Fixed copy-qt-files rsync using Windows paths instead of Unix
   ones
4. Fixed Makefile's using Windows Linux Subsystem bash instead of
    the Cygwin one.
5. Ensured running the correct pip module by using python -m pip
    instead of just pip.
6. Fixed Makefiles using Windows `find` command, instead of the
    Cygwin's one (POSIX find).
7. Fixed pyenv sourcing/activate using /pyevn/bin/ instead of
    /python/Scripts/ on Windows.
8. Fixed pyaudio not installing/linking with portaudio on Windows
    by installing for a patched fork at evandroforks/pyaudio
9. Forked and fixed portaudio not building with Visual Studio 2017
    or superior and added the reference for the patched fork on
    README.development at evandroforks/portaudio.
2020-02-24 14:59:11 -03:00
Glutanimate
f7b256a860 Use a consistent function signature across load and save hooks 2020-02-24 15:47:48 +01:00
Glutanimate
d1dc0362b6 Add deck_conf_did_setup_ui_form hook
Called earlier than deck_conf_will_show, allowing add-on authors
to perform UI modifications before the deck config is loaded.
2020-02-24 15:29:23 +01:00
Glutanimate
368a485847 Add hooks for extending the deck options dialog
Introduces three new hooks:

* deck_conf_will_show: Allows adding or modifying widgets
* deck_conf_did_load_config: Allows add-on widgets to read from config
* deck_conf_will_save_config: Allows add-on widgets to write to config
2020-02-24 13:42:30 +01:00
Damien Elmes
43dae5c90e Merge pull request #456 from Arthur-Milchior/noDefaultDeckInBrowser
No default deck in browser
2020-02-24 19:35:49 +10:00
Damien Elmes
db486dd25c enable v2 apkg export 2020-02-24 18:54:55 +10:00
Damien Elmes
0e6b584483 fix tr() 2020-02-24 18:37:02 +10:00
Damien Elmes
d085fcea64 add Tobias to contributors
if anyone else is reading this and thinks they should be on the list,
please let me know!
2020-02-24 18:36:37 +10:00
Damien Elmes
087afc94d8 merge po with pot before building mo
fixes errors in strings that have been removed from the template
2020-02-24 15:35:52 +10:00
Damien Elmes
70ae99778f remove old fmtTimeSpan() and associated strings 2020-02-23 18:47:16 +10:00
Damien Elmes
f710e58cee check-po-files moved into i18n repo 2020-02-23 18:33:03 +10:00
Damien Elmes
1c69747b5a move the big error message into FTL
this works around the issue Pontoon has with saving translations with
trailing newlines, and makes it easier for translators to update in
the future, as the errors are now using markdown
2020-02-23 18:01:34 +10:00
Damien Elmes
024126b3be support aqt-specific FTL files 2020-02-23 18:00:13 +10:00
Damien Elmes
d270a01b61 update extract-po-string
- use fluent.syntax for output (only non-plural case for now)
- add confirmation step
2020-02-23 17:58:43 +10:00
Damien Elmes
c98247fa0f translations no longer require an open collection 2020-02-23 14:57:02 +10:00
Damien Elmes
0d1a30c6d8 rework Fluent handling
- all .ftl files for a language are concatenated into a single file
at build time
- all languages are included in the binary
- external ftl files placed in the ftl folder can override the
built-in definitions
- constants are automatically generated for each string key
- dropped the separate StringsGroup enum
2020-02-23 13:22:50 +10:00
Arthur Milchior
adfbd0d70f should(default)deckbedisplayed in snake case 2020-02-22 04:08:01 -08:00
Arthur Milchior
6a50730f0d Remove options for all/allNames
Instead, we always see default deck if it has a child
As indicated in https://github.com/ankitects/anki/pull/452
2020-02-22 04:03:42 -08:00
Arthur Milchior
89b79d9800 forceDefault to force_default 2020-02-22 04:01:42 -08:00
Damien Elmes
258a8a04f0 fix comment 2020-02-21 20:10:58 +10:00
Damien Elmes
7d4d713c49 remove unused import 2020-02-21 19:58:54 +10:00
Damien Elmes
3a83d9844a add studied_today(), move to statistics.ftl 2020-02-21 18:01:15 +10:00
Damien Elmes
ce84a1a246 don't use implicit $ in extract-po-strings 2020-02-21 17:06:57 +10:00
Damien Elmes
05c20e72e8 split ftl and po syncing scripts 2020-02-21 15:29:38 +10:00
Damien Elmes
8afaaf9c70 simplify interval display in review log 2020-02-21 15:29:38 +10:00
Damien Elmes
ddf1d6acbd add plural support to extract-po-string 2020-02-21 15:29:38 +10:00
Damien Elmes
74bff450e2 add non-abbreviated timespan translation; update existing short=True calls
- drop the '5m3s' special casing done in the card stats screen, and
just use decimals
- change alignment of the review log so that the non-abbreviated
spans are easier to read
2020-02-21 15:29:38 +10:00
Damien Elmes
b0cd1b23f2 support variables when importing from gettext 2020-02-21 15:29:38 +10:00
Damien Elmes
bda7e0e0a4 possible fix for race conditions in the sound code
https://anki.tenderapp.com/discussions/ankidesktop/39030-erro-ao-adicionar-arquivo-de-udio

the lock should at least ensure _process doesn't disappear in the
middle of our logic, and the longer wait should reduce the chances
of .stop() timing out and allowing multiple audio files to play

Not very happy with the current approach, as in the timeout case
you have multiple threads competing to access the same data
2020-02-21 15:14:09 +10:00
Damien Elmes
e98e85a0b8 Revert "Merge pull request #452 from Arthur-Milchior/noDefaultDeckInBrowser"
This reverts commit 56d908cc28, reversing
changes made to c123b5bf95.

More discussion required on https://github.com/ankitects/anki/pull/452
2020-02-21 12:27:39 +10:00
Damien Elmes
a30e4d9313 Merge pull request #448 from glutanimate/top_toolbar_links_hook
Add a hook for adding links to the top toolbar
2020-02-21 12:18:25 +10:00
Damien Elmes
56d908cc28 Merge pull request #452 from Arthur-Milchior/noDefaultDeckInBrowser
No default deck in browser
2020-02-21 12:10:36 +10:00
Glutanimate
4f50f6c669 Refactor ToolbarLink dataclass into create_link arguments
ToolbarLink was more of a vestigial left-over from an interim
implementation. This change simplifies link addition and brings
it closer in line with adding buttons in the editor screen
2020-02-20 18:22:31 +01:00
Glutanimate
8aa7e9e32e Restore gui_hooks changes 2020-02-20 17:05:27 +01:00
Glutanimate
1df7a29765 Add ids to all link elements 2020-02-20 16:34:02 +01:00
Glutanimate
0e8c8ae775 Rename CenterLink to more generic ToolbarLink and add inline docs 2020-02-20 16:30:22 +01:00
Glutanimate
af2c353aa7 Update 'top_toolbar_did_init_links' hook 2020-02-20 16:23:33 +01:00
Glutanimate
1a8ef9e589 Refactor center link creation and link handler registration
Uses a CenterLink dataclass to describe individual links, and transforms
them into HTML using create_link, which may also be used by add-ons.
2020-02-20 16:15:50 +01:00
Glutanimate
05f5b4d664 Merge branch 'master' into top_toolbar_links_hook 2020-02-20 15:17:48 +01:00
Arthur Milchior
59587f1bb2 no default in left-side browser 2020-02-19 02:42:04 -08:00
Arthur Milchior
541e586db1 Replace g[idx] by variable name 2020-02-19 02:41:57 -08:00
Arthur Milchior
aa1668ec96 remove default deck from filter list 2020-02-19 02:41:56 -08:00
Damien Elmes
20c765cf91 pin fcntl, which went missing on Linux in a recent update 2020-02-19 19:59:31 +10:00
Arthur Milchior
9860d5ba5e method shouldBeDisplayed 2020-02-19 01:56:33 -08:00
BlueGreenMagick
b81db34fbd fix typo
<font> tag was closed by </span>
2020-02-19 17:46:12 +09:00
Damien Elmes
5bb81a95c2 add 'new #' prefix to new cards in the due column 2020-02-18 11:16:15 +10:00
Damien Elmes
fdf297afa0 fix card info screen 2020-02-18 10:59:24 +10:00
Damien Elmes
0e7f433071 fix legacy filter return values being ignored 2020-02-18 09:12:16 +10:00
Damien Elmes
d2929bcc64 fix negative number in compat message 2020-02-18 08:27:47 +10:00
Damien Elmes
08bb73b4d9 Merge pull request #450 from Arthur-Milchior/selectCardInBrowserFromReviewer
Current card get selected in browser
2020-02-18 08:27:34 +10:00
Damien Elmes
0a562c2eac Merge pull request #449 from glutanimate/html-content-section-hooks
Add hooks for modifying HTML body sections in the deck browser and overview screens
2020-02-18 08:20:01 +10:00
Glutanimate
ed2782b185 Complete OverviewContent docs 2020-02-17 16:53:47 +01:00
Glutanimate
0e95badd80 Add overview_will_render_content hook 2020-02-17 16:49:21 +01:00
Glutanimate
803b0432f1 Bundle individual section hooks together into one
Uses new dataclass 'DeckBrowserContent'
2020-02-17 16:26:21 +01:00
Arthur Milchior
3763d35149 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
e020aa54f9 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
9ffae5650f fix initial build failing 2020-02-17 15:48:27 +10:00
Damien Elmes
fd01cac4d7 split "Due" into three different contexts for translators 2020-02-17 14:41:01 +10:00
Damien Elmes
b9276f8d56 add helper script to extract previous translated string 2020-02-17 13:41:21 +10:00
Damien Elmes
d13473d456 make sure ftl files get updated 2020-02-17 12:35:55 +10:00
Damien Elmes
908bd93831 fix sync-git 2020-02-17 11:45:56 +10:00
Damien Elmes
f40a00f0cb localize some error messages 2020-02-17 11:38:22 +10:00
Damien Elmes
f6643eda53 use new i18n infrastructure for more media check / media sync strings 2020-02-17 10:18:20 +10:00
Damien Elmes
1f736239cd pass progress back as translated string(s) 2020-02-17 08:40:17 +10:00
Damien Elmes
8450214cda 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
632041f14f drop unused threadLocal and noHint i18n code 2020-02-17 08:40:17 +10:00
Damien Elmes
ff9daa099b 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
067ade9a3b move Gettext translations into separate repo for Pontoon 2020-02-17 08:40:17 +10:00
Damien Elmes
0acae7ecf7 update translations 2020-02-17 08:40:17 +10:00
Damien Elmes
7a0d1ffae0 fix sync deauth 2020-02-17 08:40:17 +10:00
Damien Elmes
834989a019 include report in MediaCheckOutput 2020-02-17 08:40:17 +10:00
Damien Elmes
89626c1a72 use media.trash for unused media deletion as well 2020-02-17 08:40:17 +10:00
Damien Elmes
fc7c2fe187 accept clicks on the progress dialog close button when updating 2020-02-17 08:40:17 +10:00
Damien Elmes
7ce49cb1f8 fix latex render progress; display more frequently 2020-02-17 08:40:17 +10:00
Damien Elmes
71c2730244 rename aqt/media.py to mediacheck.py 2020-02-17 08:40:17 +10:00
Damien Elmes
c4d6d9480c if latex fails to render in bulk, show the user the problem 2020-02-17 08:40:17 +10:00
Damien Elmes
625b5728cc new render_all_latex() + gui button; remove some old code 2020-02-17 08:40:17 +10:00
Damien Elmes
edbb23b0ce sort media list 2020-02-17 08:40:17 +10:00
Damien Elmes
790f3c9f72 plug new media check in 2020-02-17 08:40:17 +10:00
Damien Elmes
edf60b10d4 backend stores media folder/db locations; don't need to pass them in 2020-02-17 08:40:17 +10:00
Damien Elmes
9c60f2c77e log media DB change registration progress, and allow aborting it 2020-02-17 08:40:17 +10:00
Damien Elmes
ef14b1a96b simplify code by accumulating stats at the source 2020-02-17 08:40:17 +10:00
Damien Elmes
1f931a5b78 defer errors on upload to media check 2020-02-17 08:40:17 +10:00
Damien Elmes
469798f523 autosync media every ~15 minutes 2020-02-17 08:40:17 +10:00
Damien Elmes
14cb7357fb autosync media on close 2020-02-17 08:40:17 +10:00
Damien Elmes
728e71f589 autosync media on startup 2020-02-17 08:40:17 +10:00
Damien Elmes
e9884a4b14 add extra hook for media sync start/stop 2020-02-17 08:40:17 +10:00
Damien Elmes
5835a68f47 if toolbar refreshed, make sure not to clear syncing 2020-02-17 08:40:16 +10:00
Damien Elmes
77158760ff use enums for some common errors 2020-02-17 08:40:16 +10:00
Damien Elmes
85b5c26930 catch DB errors in sync 2020-02-17 08:40:16 +10:00
Damien Elmes
bd14e30f63 constant sync spin speed 2020-02-17 08:40:16 +10:00
Damien Elmes
b883b09414 pass in endpoint 2020-02-17 08:40:16 +10:00
Damien Elmes
c489b6b7ac catch network errors 2020-02-17 08:40:16 +10:00
Damien Elmes
c02a490be0 move more logic into mediasync.py, handle auth errors 2020-02-17 08:40:16 +10:00
Damien Elmes
ecab2da99e remove unused code 2020-02-17 08:40:16 +10:00
Damien Elmes
1ba2e30854 show spinner when media sync active, click to reveal dialog 2020-02-17 08:40:16 +10:00
Damien Elmes
738e415463 connect media sync progress to Python, add a progress dialog 2020-02-17 08:40:16 +10:00
Damien Elmes
c9a5ed3cc6 add add_file() and write_data() 2020-02-17 08:40:16 +10:00
Damien Elmes
dee114df63 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
c3c31d1454 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
415cb15661 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
f6bad7b9c3 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
b7dde202b5 Add a convenience function for creating toolbar links
Similar to aqt.editor.Editor.addButton
2020-02-15 23:22:41 +01:00
Glutanimate
5378587f67 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
b7e0d4388a 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
356eda66f4 Update documentation for webview_will_set_content and WebContent 2020-02-15 15:03:58 +01:00
Glutanimate
28a394a074 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
3d1e89f014 Merge pull request #433 from Arthur-Milchior/ints
Constants
2020-02-14 08:37:31 +10:00
ijgnd
e39d18647f small fix: store return value for hook in preview 2020-02-13 18:51:11 +01:00
Glutanimate
f2f16903b6 Fix "js" parameter type 2020-02-12 22:20:30 +01:00
Glutanimate
ffdafaee6d Fix missing "Optional" import and lint 2020-02-12 22:15:44 +01:00
Glutanimate
7e213bdcd5 Pass CardInfoDialog context to stdHtml 2020-02-12 22:12:45 +01:00
Glutanimate
d7836e3af8 Add webview_will_set_content hook & update supporting code accordingly 2020-02-12 22:00:13 +01:00
Glutanimate
88b5d94513 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
5faaf35eec 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
faded8f56d 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
369c810778 update translations 2020-02-12 08:59:14 +10:00
Damien Elmes
084e059508 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
89f926f177 night mode fix for find dupes screen 2020-02-12 08:28:33 +10:00
Damien Elmes
e64b1e0ca2 provide easy access to browser from preview/dupes handlers 2020-02-12 08:28:21 +10:00
Damien Elmes
27dabaeaa6 tweak wording 2020-02-12 08:14:16 +10:00
Damien Elmes
f8338b094d move export notes action to the notes menu 2020-02-12 08:09:12 +10:00
Arthur Milchior
097e6d4b46 Adding export option in Browser 2020-02-11 10:50:59 -08:00
Arthur Milchior
c16a3954fa browser._exporting 2020-02-11 10:50:59 -08:00
Arthur Milchior
078a10ae55 Replace list of deck by "Browser Selection" 2020-02-11 10:50:59 -08:00
Arthur Milchior
9c158e615e if cards are selected, default is apkg 2020-02-11 10:50:59 -08:00
Arthur Milchior
d1183df830 aqt.exporter takes extra argument cid 2020-02-11 10:49:13 -08:00
Damien Elmes
897f7ed249 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
6096d19b85 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
a7348f0d23 ensure the inverted images don't appear over toolbar 2020-02-09 09:30:37 +10:00
Damien Elmes
c8eb939231 support AnkiMobile's drawings in night mode 2020-02-09 09:20:08 +10:00
Damien Elmes
fc40182335 pass instance to webview_did_receive_js_message instead of string 2020-02-09 08:59:29 +10:00
Damien Elmes
b4761698cb 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
0d23f5dafb Allow to change main window when overview/deckbrowser is shown 2020-02-08 08:09:12 -08:00
Damien Elmes
cc27baef35 formatting 2020-02-07 17:55:26 +10:00
Damien Elmes
c8f3c5819d don't filter strong/em; sort list of tags 2020-02-07 17:55:17 +10:00
Damien Elmes
e0d81675c2 update translations 2020-02-07 13:26:15 +10:00
Damien Elmes
d20ac6f341 more legible graph colours in night mode 2020-02-07 13:21:46 +10:00
Arthur Milchior
769c806c2d correct missing french translation 2020-02-05 20:48:30 -08:00
Arthur Milchior
607bcc55c2 Reformatting through black 2020-02-04 08:47:36 -08:00
Arthur Milchior
611ce618a8 QUEUE and TYPE day learn, relearn 2020-02-04 08:47:36 -08:00
Arthur Milchior
41ffdbd504 QUEUE_TYPE_REV and CARD_TYPE_REV 2020-02-04 08:47:36 -08:00
Arthur Milchior
44368caf55 CARD_TYPE_LRN and QUEUE_TYPE_LRN 2020-02-04 08:47:35 -08:00
Damien Elmes
16e9a9c32f clearer variable names 2020-02-04 17:10:20 +10:00
Damien Elmes
ff466ff3e9 minor wording tweak 2020-02-04 17:06:41 +10:00
Damien Elmes
511d2cf469 default human_version to None 2020-02-04 17:03:21 +10:00
Damien Elmes
89ad3ae00c 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
aabfb83fb5 about.py - some type hints 2020-02-04 04:16:51 +01:00
ijgnd
0c4f520725 Extend Copy Debug Info 2020-02-04 04:16:51 +01:00
ijgnd
486c5871af add human_version to manifest.json
edit 7586c67 add human_version to manifest.json
2020-02-04 04:16:12 +01:00