Commit graph

193 commits

Author SHA1 Message Date
Damien Elmes
8095ad8e4b use isort to tidy up imports 2019-12-20 19:19:29 +10:00
Damien Elmes
92ea94a034 add some typing to addcards and main 2019-12-20 18:43:52 +10:00
Damien Elmes
9983774a12 add pytype inferred types to anki/
I've corrected some obvious issues, and we can fix others over time.
Mypy tests are currently broken, as adding the type hints has increased
mypy's testing surface.
2019-12-20 11:07:08 +10:00
Damien Elmes
e39c3fadd2 typing fixes 2019-12-20 10:21:20 +10:00
Damien Elmes
8cee5e5d7e Revert "add signatures to calling code"
This reverts commit 9a1f616a3a.

Pytype does catch the mentioned error without the extra annotations.
2019-12-19 11:39:40 +10:00
Damien Elmes
9a1f616a3a add signatures to calling code
otherwise mypy ignores them. And even then, it's not smart enough
to notice self.mw.pm.setUiScale("foo") is invalid unless the
instance assignment in main has a type hint as well
2019-12-19 11:34:46 +10:00
Damien Elmes
d04b8aa8bb add UI scale preference 2019-12-19 09:58:16 +10:00
Damien Elmes
c0ede5d82c add a few hints to some commonly used code
and add the extra hints mypy wanted
2019-12-16 19:46:40 +10:00
Damien Elmes
cde02d0269 avoid importing Collection from root module
even with this change, sadly we can't use pytype on the GUI code for
now - it does not support external .pyi files at the moment.
2019-12-16 19:07:22 +10:00
Damien Elmes
0644855c77 fix lint 2019-10-22 12:22:30 +10:00
Aqueminivan
241053a158 Moved number inside ngettext() 2019-10-19 19:39:43 -04:00
Aqueminivan
7f691a152a Fixed code style issue (column width) 2019-10-19 18:10:59 -04:00
Aqueminivan
3c3eddfd57 Fixed translation issues for media counts 2019-10-19 18:03:59 -04:00
Aqueminivan
40527f58c7 Added file counts when deleting media 2019-10-18 03:51:54 -04:00
Damien Elmes
bac937ee49 add progress dialog for media delete 2019-08-17 18:32:39 +10:00
Lovac42
84272eca04 added runHooks for reverted cards and state. 2019-05-17 20:17:36 -04:00
Damien Elmes
19b875a153 fix bug caused by user creating profile with trailing space
Caught exception:
  File "aqt\main.py", line 237, in onOpenBackup
  File "aqt\profiles.py", line 264, in backupFolder
  File "aqt\profiles.py", line 274, in _ensureExists
  File "os.py", line 220, in makedirs
<class 'FileNotFoundError'>: [WinError 3] The system cannot find the path specified: 'C:\\Users\\xxx\\AppData\\Roaming\\Anki2\\xxx \\backups'
2019-04-25 09:37:58 +10:00
Damien Elmes
2e92f30150 possible fix for " super-class ... Preferences was never called"
Can't reproduce the issue, but it seems the user was able to open the
preferences screen when no collection was loaded. If an error was
caught in loadCollection() the main window was not being hidden, so
perhaps a timing issue was preventing the profiles screen from taking
modal focus.

Removed the check in the prefs init - it is hopefully no longer
necessary, and returning before QDialog.__init__() was called was
causing the problem.

Caught exception:
  File "aqt/webview.py", line 27, in cmd
  File "aqt/webview.py", line 85, in _onCmd
  File "aqt/webview.py", line 360, in _onBridgeCmd
  File "aqt/toolbar.py", line 56, in _linkHandler
  File "aqt/toolbar.py", line 80, in _syncLinkHandler
  File "aqt/main.py", line 669, in onSync
  File "aqt/main.py", line 365, in unloadCollection
  File "aqt/main.py", line 611, in closeAllWindows
  File "aqt/__init__.py", line 110, in closeAll
<class 'RuntimeError'>: super-class __init__() of type Preferences was never called
2019-04-21 19:02:03 +10:00
Damien Elmes
923ee44448 fix some timers failing to fire 2019-04-21 18:56:30 +10:00
Damien Elmes
7339fdded3 fix race condition in webview load on Windows
- don't require collection for initial blank content
- defer profile load until initial blank content loaded
- use plain text for blank content to prevent initial flash of white
2019-04-16 13:24:38 +10:00
Damien Elmes
5d2267cbae fix race condition in webview startup on windows
use _setHtml so that _domDone is set to false
2019-04-10 17:31:55 +10:00
Damien Elmes
9d230f2820 avoid popups for some non-serious warnings 2019-04-10 12:44:01 +10:00
Damien Elmes
0e0bca2d08 fix issue preventing profile rename/delete
qtwebengineprocess.exe inherits the current working directory, so if
it is started after the profile is loaded, it prevents the profile
media folder from being renamed/deleted

also, load profile on first run at the same point we normally load
the profile
2019-04-09 18:48:50 +10:00
Damien Elmes
4115235a45 make sure card counts are updated when undoing reviews 2019-04-08 15:47:49 +10:00
Glutanimate
295175b3b0 Set QTWEBENGINE_DICTIONARIES_PATH
This introduces the possibility for add-ons to supply spell checking
support in web views.
2019-03-06 18:59:38 +01:00
Damien Elmes
442600daf8 Merge pull request #288 from glutanimate/mediasrv-addon-support
Extend mediasrv to also serve media files in addons directory
2019-03-04 18:03:48 +10:00
Damien Elmes
7d0f7ae33c fix some warnings 2019-03-04 16:01:10 +10:00
Damien Elmes
e6d75207af explicitly import _ and ngettext 2019-03-04 11:58:34 +10:00
Damien Elmes
8981da61c1 silence some spurious errors and remove some unused code 2019-03-04 11:22:40 +10:00
Glutanimate
a01679266b Allow add-on authors to set a whitelist of webview-accessible files
Extends the AddonManager API with two new methods, setWebExports and
getWebExports. setWebExports expects an add-on module name and a
valid RegEx pattern to match subpaths in the add-on folder against.

Any matching subpaths will be accessible in Anki's web views by
referencing them with /_addons/{addon_id}/{subpath}.

For instance, to allow access to .css and .png files in your add-on's
user_files directory you would call:

> mw.addonManager.setWebExports(__name__, r"user_files/.+(\.png|\.css)")

You could then reference these files in web views as such:

> <img src="/_addons/{addon_id}/user_files/test.png">

Please note that this bypasses the default security policies used
in Anki webviews. You should take care to construct your RegEx
patterns specific enough so that they do not match any sensitive
files of our add-on.
2019-03-02 18:57:51 +01:00
Glutanimate
0bdd18f352 Extend mediasrv to also serve media files in addons directory
RequestsHandler now rewrites "/_addons" references to addons folder.
2019-02-26 13:08:15 +01:00
Glutanimate
6e1bee96d1 Print-wrap current line rather than the entire field
Also: Avoid duplicate wraps, retain cursor position, and preserve
undo history.
2019-02-16 12:23:31 +01:00
Glutanimate
5df948a189 Add hotkeys to clear debug log and entry (Ctrl+L / Ctrl+Shift+L) 2019-02-16 12:21:52 +01:00
Glutanimate
b4e50ff66b Use system-default fixed font for debug entry and log 2019-02-16 10:26:49 +01:00
Damien Elmes
bff2c83fef avoid running timers after collection unload
fixes:
- onRefreshTimer() firing when collection is in the process of
unloading
- saveNow() in the no changes case, which fires a timer 10ms later
2019-02-06 12:03:14 +10:00
Damien Elmes
a7eb6bb357 update copyright and clarify licenses 2019-02-05 14:01:33 +10:00
Damien Elmes
aaaf8e12a5 skip the webview reload when undoing reviews 2019-01-29 09:35:46 +10:00
Damien Elmes
328c73d0bc ignore broken reset hooks in database check
ideally the original code should be correctly cleaning up the hooks,
but if it does not, then we don't want to repeatedly present the user
with confusing errors when they try to check their database is ok.
2018-12-15 13:14:33 +10:00
Damien Elmes
270e0b4271 apply stylesheet app wide, and add border to win10 menu
the night mode add-on may need updating with this change, but with
a global stylesheet it may be easier to style widgets in the future

menu bar issue:

https://anki.tenderapp.com/discussions/beta-testing/1313-anki-216-beta-1#comment_46664932
2018-12-14 20:35:12 +10:00
zandimna
8fa4b53107 Change the order of elements on the window title
The application name typically comes at the end of the title. As such, many tools grabs the final string as the application name. What Anki does currently causes the profile name to be grabbed, producing unexpected results.
2018-11-12 20:23:47 +08:00
Damien Elmes
a2831ea843 we can use the old undo shortcut on 5.11
webviews no longer propagate the captured shortcut
2018-10-23 18:40:58 +10:00
Damien Elmes
5e4074af51 fix deck list getting stuck when building filtered deck
issue is trying to move to the overview screen before the callbacks
on the deck overview screen complete - "fix" it for now by remaining
on the deck list
2018-09-05 20:02:40 +10:00
Damien Elmes
a36f504a87 don't repeat shortcuts when key held down
https://anki.tenderapp.com/discussions/ankidesktop/29405-space-bar-repeat-problem
2018-08-29 10:07:33 +10:00
Damien Elmes
991aa7d402 fixes for mpv focus switching
- avoid changing focus if an Anki window is already focused
- only try to restore focus when playing videos
2018-07-23 13:57:09 +10:00
Damien Elmes
0562c7ba45 need to record active window prior to playing in mpv 2018-05-31 13:22:17 +10:00
Damien Elmes
7b944a46f4 new stats shortcut 2018-05-31 13:05:37 +10:00
Damien Elmes
dc1a999991 don't try to use mpv on Windows
some users had mpv lying around from previous installs, and the Windows
implementation seems to hang with the idle hook introduced in the
previous build
2018-05-10 14:50:23 +10:00
Damien Elmes
a6007a54f3 add space to 'waiting for editing' screen 2018-05-01 13:35:28 +10:00
Damien Elmes
73ddd79967 work around video focus stealing
https://anki.tenderapp.com/discussions/ankidesktop/27401-bug-when-playing-a-video-on-anki-for-mac-anki-lanches-mplayer-and-doesnt-quit-it-or-return-to-anki
2018-04-30 17:12:26 +10:00
Glutanimate
7c50ea06ad Revert debug console shortcut workaround
Seems like the assignment to "Ctrl+:" is working again

cf. fb81f63fe3
2018-03-18 15:50:50 +01:00