Commit graph

1072 commits

Author SHA1 Message Date
ANH
2a5131a5d3 use 'Preview Settings' as a label for the new options button 2020-07-30 18:04:50 +03:00
Fabian Wood
4a7558f9be Added typehints for qt profiles
* `Any` used for pickle methods, this could probably be improved
with some kind of Callable
* str used for self.base, though this may be a problem for
different OSes. Some type of os.PathLike might be good.
* Line 75, type ignored: mypy was complaining about no. of args,
and kwargs there didn't seem to be needed. Separate issue to test,
though.
2020-07-31 00:56:48 +10:00
ANH
393403ffbf add night mode and mobile class toggles in card layout screen 2020-07-30 15:39:02 +03:00
Damien Elmes
3d947febab Merge pull request #715 from phwoo/typehints-for-qt-modelchooser
Added typehints to qt/aqt/modelchooser.py, updated qt/mypy.ini
2020-07-30 17:00:58 +10:00
Damien Elmes
fb029d844b Merge branch 'master' into add-type-hints-for-qt-models 2020-07-30 16:05:55 +10:00
Fabian Wood
b23129c3eb added typehints to modelchooser, updated mypy.ini 2020-07-30 15:25:25 +10:00
Fabian Wood
f0dabf4570 added type hints to qt models 2020-07-30 13:28:52 +10:00
Adam Plaice
df9e22aef5 Re-add previously supported file extensions for media
(They had been removed in 6939d8ba5b).
2020-07-29 15:08:33 +02:00
Damien Elmes
bb8127517f Merge pull request #703 from ANH25/master
fix help-wanted#13
2020-07-29 14:14:57 +10:00
Damien Elmes
aca9f5232c Merge branch 'master' into help-wanted-4-add-type-hints-5 2020-07-29 13:56:57 +10:00
Damien Elmes
55891fc8f7 clearer message when template error is preventing save 2020-07-29 12:53:03 +10:00
Matt Krump
d4511e3287 Turn on check_untyped_defs for aqt.exporting 2020-07-28 18:42:22 -06:00
Matt Krump
98d8e1c926 Turn on check_untyped_defs for aqt.editor
* Turn on check_untyped_defs for aqt.browser
* Add type hints
2020-07-28 18:42:22 -06:00
Damien Elmes
e1bfe68b9e Merge pull request #706 from mkrump/help-wanted-4-add-type-hints-4
Turn on check_untyped_defs for aqt.taglimit, aqt.update and aqt.browser
2020-07-28 13:16:49 +10:00
Damien Elmes
d3653ab6d5 bump version 2020-07-28 12:59:56 +10:00
Damien Elmes
ee10fd9008 don't throw error on empty path
https://forums.ankiweb.net/t/anki-2-1-28-error-message-when-reviewing-cards/1439
2020-07-27 11:28:32 +10:00
Matt Krump
1317b9f2b5 Fix browser.py import sorting 2020-07-26 13:16:06 -06:00
Matt Krump
0d8979f05e Cast set to list to fix mypy failure in browser.py 2020-07-26 13:00:06 -06:00
Damien Elmes
1d1f5e1afc apply AltGr workaround on qt 5.14 as well 2020-07-26 10:13:53 +10:00
Matt Krump
f27d465d69 Turn on check_untyped_defs for aqt.browser
* Turn on check_untyped_defs for aqt.browser
* Add type hints to browser
2020-07-25 17:31:49 -06:00
Matt Krump
a389e3ca94 Turn on check_untyped_defs for aqt.update
* Turn on check_untyped_defs for aqt.update
2020-07-25 17:31:44 -06:00
Matt Krump
8d988d2b6f Turn on check_untyped_defs for aqt.taglimit
* Add type hints taglimit
* Turn on check_untyped_defs for aqt.taglimit
2020-07-25 15:45:31 -06:00
ANH
9279d5e33d Merge branch 'master' into master 2020-07-25 05:24:45 +03:00
Damien Elmes
6ad544cf62 Merge branch 'master' into help-wanted-4-add-type-hints-3 2020-07-25 11:43:46 +10:00
Matt Krump
e93ae88cdf Add type hints to importing
* Add type hints to importing
* Turn on type checking for aqt.importing
2020-07-24 12:38:34 -06:00
Matt Krump
38651d6a4e Add type hints to errors
* Add type hints to errors
* Turn on type checking for aqt.errors
2020-07-24 11:20:54 -06:00
Matt Krump
a88f935a8c Add type hints to aqt.models
* Add type hints to aqt.models
* Turn on type checking for aqt.models
2020-07-24 10:59:45 -06:00
ANH
a777784a38 add missing string r flag 2020-07-24 09:18:05 +03:00
ANH
3ad5c866b3 formatting 2020-07-24 09:00:34 +03:00
ANH
3276cc2e5e avoid string concatenation 2020-07-24 08:12:46 +03:00
Matt Krump
90457e5f20 Add type hints for apt.deckconf
* Add type hints for apt.deckconf
* Turn on check_untyped_defs for apt.deckconf
2020-07-23 21:53:12 -06:00
ANH
939f3c8dc7 fix ankitects/help-wanted#13 2020-07-24 06:00:55 +03:00
Damien Elmes
7e4b2ac4d9 fix lint issue in previewer, and drop unused code
No add-ons appear to be using the removed code, and Anki wasn't
using it either.
2020-07-24 12:18:37 +10:00
Damien Elmes
4dff66cd10 formatting and debug statement tweak 2020-07-24 11:57:37 +10:00
Damien Elmes
d8ff54c884 fix preview not updating on edit
https://forums.ankiweb.net/t/modification-and-preview/1331
2020-07-24 11:57:22 +10:00
Damien Elmes
5104c0fd1b enable AltGr workaround by default
5.15.1 may still be another month away
2020-07-24 10:32:50 +10:00
Damien Elmes
d460549b8f ask user to check db when graphs fail to load 2020-07-24 09:56:28 +10:00
Damien Elmes
538f399787 Merge pull request #702 from mkrump/help-wanted-4-add-type-hints
Add type hints for apt.dyndeckconf
2020-07-24 09:01:07 +10:00
Matt Krump
51e50c176b Add type hints for apt.dyndeckconf
* Add type hints for apt.dyndeckconf
* Turn on check_untyped_defs for apt.dyndeckconf
2020-07-23 16:04:46 -06:00
kelciour
6f8585b98a Add --no-autoload-files option to mpv 2020-07-23 14:28:47 +03:00
Damien Elmes
fd45d7e2ae fix misaligned deck heading in RTL languages
https://forums.ankiweb.net/t/anki-2-1-29-beta/1220/2?u=dae
2020-07-22 11:00:39 +10:00
Damien Elmes
f33451f12f fix pylint failing in CI 2020-07-21 16:16:34 +10:00
Damien Elmes
47a9b523f7 protect against exception on initial recording wait 2020-07-21 16:07:58 +10:00
Damien Elmes
7e78d12b99 bump version 2020-07-21 15:54:14 +10:00
Damien Elmes
d084898b92 trigger recording permission on newer macOS SDKs 2020-07-21 15:54:04 +10:00
Damien Elmes
1b0228c4fc formatting 2020-07-21 14:17:56 +10:00
Damien Elmes
876f474b7d apply rtl dir to webviews
https://forums.ankiweb.net/t/gui-problems-with-right-to-left-languages/1205
2020-07-21 11:52:25 +10:00
Damien Elmes
976d42cc90 full sync terminates media sync; start it again afterwards
https://forums.ankiweb.net/t/media-files-not-downloaded-in-first-full-sync-v2-1-28/1198/3
2020-07-21 11:26:41 +10:00
Damien Elmes
3ca4a882a1 Merge pull request #692 from Arthur-Milchior/remove_useles_variables
Remove useless variables
2020-07-20 11:35:40 +10:00
Damien Elmes
8fb3da2e27 split add-ons window title from menu bar action
https://anki.tenderapp.com/discussions/private/4781-print-mistake
2020-07-19 09:49:36 +10:00
Damien Elmes
2ed481c37a catch SIGTERM, and respond more quickly 2020-07-18 11:26:04 +10:00
Arthur Milchior
71afb2b4d3 Remove useless variables 2020-07-17 08:38:48 +02:00
Damien Elmes
5f93eaaf8f i18n downgrade&quit button 2020-07-17 15:06:14 +10:00
Damien Elmes
9a457266f4 Merge pull request #690 from glutanimate/stats-will-show-hooks
Add a couple of hooks to trigger add-on actions before showing stats
2020-07-17 14:38:41 +10:00
Glutanimate
7056765179 Fix type annotation for old stats dialog class 2020-07-17 03:08:09 +02:00
Glutanimate
b7c8374095 Add a couple of hooks to trigger add-on actions before showing stats 2020-07-16 21:48:46 +02:00
Glutanimate
a9334014d3 Make sure to set domDone to False before loading URLs
Fixes an issue where JS would be evaluated prematurely in views
directly loaded from URLs.
2020-07-16 19:56:57 +02:00
Damien Elmes
baed2d8fa5 formatting 2020-07-16 13:55:53 +10:00
Damien Elmes
e471497bd2 add platform version back into sync metadata 2020-07-16 10:12:41 +10:00
Damien Elmes
d598a76f4a can't rely on stdout to handle unicode 2020-07-15 09:36:29 +10:00
Damien Elmes
c6f8854ec8 Revert "Added parameter/return types, fixed possible logic error and typo" 2020-07-13 21:25:44 +10:00
Damien Elmes
9a3a96e599 Merge pull request #686 from zerrs/master
Added parameter/return types, fixed possible logic error and typo
2020-07-13 21:25:16 +10:00
Damien Elmes
178a8fb29e Update customstudy.py 2020-07-13 21:24:18 +10:00
Damien Elmes
35494414cc Merge pull request #684 from flagist0/select-note-type-with-ctrl-plus-digit-key
Allow to choose note type from list by pressing ctrl + row number
2020-07-13 21:23:35 +10:00
Alexander Presnyakov
98238e1707 Don't call setCurrentRow if row didn't change 2020-07-13 12:33:36 +03:00
zzzz
f6c0560660 Added some return and parameter types in customstudy.py, also fixed a possible logic error in plus function and a small typo 2020-07-13 01:32:08 -04:00
kelciour
6ca239a247 Scroll media sync log to the last line 2020-07-13 03:06:44 +03:00
Alexander Presnyakov
3ccc6ce61a Allow to choose note type from list by pressing ctrl + row number 2020-07-12 22:15:58 +03:00
Damien Elmes
4e1bc76596 mediasrv symlink fix
https://forums.ankiweb.net/t/anki-2-1-28-beta/629/39
2020-07-11 10:53:41 +10:00
Glutanimate
ee8696cbf3 Add top_toolbar_did_redraw hook
Notifies add-ons of the top toolbar being redrawn
2020-07-10 17:38:40 +02:00
Damien Elmes
6e07ab64af formatting 2020-07-07 13:28:30 +10:00
Damien Elmes
a2b4160d60 tidy up logging 2020-07-07 10:50:12 +10:00
Damien Elmes
c5f36ccf08 if webexports does not match, return 403 2020-07-07 10:50:03 +10:00
evandrocoan
af731fa739 Fix _addons/ URL prefix not being removed on Windows systems
Anki 2.1.28 Beta
https://forums.ankiweb.net/t/anki-2-1-28-beta/629/26

> Did the requirements on how to expose resources on the internal server change? Because scripts, css files and the like, registered with setWebExports, do not work anymore with beta2.
> A look at the console shows the following for all resources:
> Failed to load resource: the server responded with a status of 500 (INTERNAL SERVER ERROR)

**\Anki2\addons21\someaddon\__init__.py**
```py
from aqt import mw
import aqt

# assuming add-on folder is named "test"
# and assuming a 'test.js' is in the same folder
addon_id = "someaddon"
port = mw.mediaServer.getPort()
mw.addonManager.setWebExports(addon_id, ".*\\.js$")

print("Hello")

aqt.editor._html += f"""
<script>
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'http://127.0.0.1:{port}/_addons/{addon_id}/test.js';
    document.body.appendChild(script);
</script>"""
```
2020-07-06 13:51:37 -03:00
Andreas Reis
3628011599 Always use standard QT color dialog on Linux
On Linux only Gnome uses its own color dialog, and it's inferior to QT's own: See the same issue @ https://github.com/OpenShot/openshot-qt/pull/2425

(This is/was visible only on some distributions' packaged versions of Anki, not via ./run.)

isLin check since QT on Windows already uses the default, whereas Mac's own picker seems superior (from what I can judge by screenshots).
2020-07-05 13:21:38 +02:00
Damien Elmes
85dd611b72 don't stuff mw into function objects
Using the global is preferable to fighting against mypy to insert mw
into a function object.
2020-07-03 10:55:29 +10:00
Damien Elmes
17f80e4a7a port previous css workaround to flask 2020-07-03 10:40:23 +10:00
Damien Elmes
d1253bbfa0 Merge pull request #554 from evandroforks/fix_html5_media_support
Fixed HTML5 media tags
2020-07-03 10:25:43 +10:00
evandrocoan
f96e090b72 Replaced flask.Response by flask.make_response to simplify the
implementation and because make_response is preferred over Response
as it respects the server defined Response type.
2020-07-02 20:39:03 -03:00
evandrocoan
6c5311417f Removed duplicated mediasrv.py security check and fixed invalid
command/path error message.
2020-07-02 20:39:03 -03:00
evandrocoan
2de914267b Fix jest unit tests after merge
# Conflicts:
#	qt/aqt/mediasrv.py
#	qt/ts/src/ankimedia.ts
#	qt/ts/src/reviewer-exceptions.test.ts
#	qt/ts/src/reviewer.test.ts
#	ts/package.json
2020-07-02 14:30:43 -03:00
evandrocoan
3ae83a0ec3 Replaced send_from_directory by send_file to simplify the code 2020-07-02 13:52:07 -03:00
evandrocoan
9bd8e494b3 Ensure protection against directory transversal
https://security.openstack.org/guidelines/dg_using-file-paths.html
2020-07-02 13:52:03 -03:00
evandrocoan
11183ac1f3 Fixed aqt/mediasrv.py:14: error: unused 'type: ignore' comment
from waitress.server import create_server  # type: ignore
https://github.com/evandroforks/anki/runs/743801391#step:25:1129
2020-07-02 13:51:59 -03:00
evandrocoan
7033329012 Replaced the mediasrv.py SimpleHttp server by flask and waitress,
fixing HTML5 media support.
https://stackoverflow.com/questions/37044064/html-audio-cant-set-currenttime
https://stackoverflow.com/questions/21956683/enable-access-control-on-simple-http-server
https://stackoverflow.com/questions/5052635/what-is-relation-between-content-length-and-byte-ranges-in-http-1-1
https://stackoverflow.com/questions/16725907/google-app-engine-serving-mp3-for-audio-element-needs-content-range-header

I was trying to use HTML5 audio tag to display audios like:
```html
<audio id="elem_audio" src="myfile.mp3" controls></audio>
```
![image](https://user-images.githubusercontent.com/5332158/79063321-565b5500-7c77-11ea-9f8d-6e1df6f07892.png)

But the progress bar seek was not working. After researching, I found the problem was the HTML server not properly responding to the HTML5 header requests. The HTML server should respond to quite complicated things as 206 partial, properly handle keep-alive, provide media ranges and other HTTP headers: https://stackoverflow.com/questions/37044064/html-audio-cant-set-currenttime

To implement all these on the Simple HTTP server would be quite complicated. Then, instead, I imported the `flask` web server, which is quite simple and straight forward to use. Now, the back-end is using a secure complaint HTTP back-end:
1. https://palletsprojects.com/p/flask/
    > Flask is a lightweight WSGI web application framework. It is designed to make getting started quick and easy, with the ability to scale up to complex applications. It began as a simple wrapper around Werkzeug and Jinja and has become one of the most popular Python web application frameworks.
    >
    > Flask offers suggestions, but doesn't enforce any dependencies or project layout. It is up to the developer to choose the tools and libraries they want to use. There are many extensions provided by the community that make adding new functionality easy.

1. https://docs.pylonsproject.org/projects/waitress/en/latest/
    > Waitress is meant to be a production-quality pure-Python WSGI server with very acceptable performance. It has no dependencies except ones which live in the Python standard library. It runs on CPython on Unix and Windows under Python 2.7+ and Python 3.5+. It is also known to run on PyPy 1.6.0 on UNIX. It supports HTTP/1.0 and HTTP/1.1.

Right now, anki does not support fields passing file names directly to HTML audio tags, but this can be easily done with (https://github.com/ankitects/anki/pull 540 - Added arguments to the sound tag) plus the commit 826a97df61, the HTML5 audio tag can be used like this:
```html
// Audio = [sound:myfile.mp3|onlyfilename]
<audio id="elem_audio" src="{{Audio}}" controls controlsList="nodownload"></audio>
```
![image](https://user-images.githubusercontent.com/5332158/79063736-c539ad80-7c79-11ea-8420-40b72185f4e7.png)

# Conflicts:
#	qt/aqt/mediasrv.py
2020-07-02 13:51:49 -03:00
Damien Elmes
f093acc0e8 dump error on profile load fail
may help diagnose
https://forums.ankiweb.net/t/i-couldnt-open-anki-resetting-corrupt-global/190
2020-07-02 10:35:01 +10:00
Damien Elmes
313b40f836 defer top toolbar drawing until after add-ons loaded
https://forums.ankiweb.net/t/anki-2-1-28-beta/629/13
2020-07-02 10:23:14 +10:00
Damien Elmes
67cde145b1 add new strings to .po files as part of template update
Pontoon appears to only update existing gettext translations; it
won't add new ones on its own. Fixes
https://forums.ankiweb.net/t/anki-2-1-28-beta/629/6
2020-07-02 10:03:39 +10:00
Damien Elmes
a5e78485f4 fix scrollbars on fields on Windows/Linux 2020-07-02 09:51:50 +10:00
Damien Elmes
4e7ae0969f formatting 2020-07-01 14:01:24 +10:00
Damien Elmes
c5ef40e5ec don't allow table inside field to extend outside of field
https://anki.tenderapp.com/discussions/private/4498-adjust-textbox-geometry-in-add-note-window
2020-07-01 12:13:04 +10:00
Damien Elmes
ed4c74ca4d add option to disable media syncing
https://forums.ankiweb.net/t/error-when-adding-audio-file/495/2
2020-07-01 11:35:24 +10:00
Damien Elmes
9bb45673a8 show clearer error when media db locked
should not happen frequently during a sync, but may happen during
the initial change checking stage

https://forums.ankiweb.net/t/error-when-adding-audio-file/495/2
2020-07-01 11:19:06 +10:00
Damien Elmes
c61f52d871 shift+click on the graphs button to access old graphs for now 2020-06-30 20:07:46 +10:00
Damien Elmes
6ad4111723 graphs now work in night mode 2020-06-30 16:23:46 +10:00
Damien Elmes
33317d41b3 update edited/changed column labels
https://github.com/ankitects/anki/pull/674/files
2020-06-29 18:34:03 +10:00
Damien Elmes
78fbaf7724 plug new graphs code into GUI
Still some work to do. Feedback welcome!
2020-06-29 15:53:56 +10:00
Damien Elmes
06d9f64dea lint fixes 2020-06-29 15:53:56 +10:00
Damien Elmes
d3feb931ba add option to webview to skip external browser open 2020-06-29 15:48:01 +10:00
Damien Elmes
94f75f0728 include generated js in aqt_data 2020-06-29 15:48:01 +10:00