Commit Graph

789 Commits

Author SHA1 Message Date
Damien Elmes
c02716ccd8 python formatting+lints 2020-05-08 17:30:27 +10:00
Damien Elmes
2a0d40e15d 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
4a26e2ba77 bundle socks
https://anki.tenderapp.com/discussions/ankidesktop/39801-sync-error
2020-05-08 15:26:19 +10:00
evandrocoan
9f5c69ee94 Keep an window open showing the migration is in progress 2020-05-07 15:03:43 -03:00
evandrocoan
453da45c99 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
961833a137 avoid mention of pip 2020-05-05 16:30:22 +10:00
Damien Elmes
2f57c646e0 benchmark->profile, and remove from error branches 2020-05-05 16:28:49 +10:00
Damien Elmes
e7ebcc7c75
Merge pull request #605 from evandroforks/benchmark_option
Created the --benchmark command line option
2020-05-05 16:23:00 +10:00
Damien Elmes
16d0bf24b4
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
0006269c01 Used showWarning asking the user to install pyaudio 2020-05-05 00:00:48 -03:00
evandrocoan
338e904bd4 Created the ANKI_RUN_BENCHMARK environment variable replacing
the command line argument.
2020-05-04 23:46:13 -03:00
evandrocoan
2e11a596aa Fixed profiler word misspelling and stopped trimming the output 2020-05-04 23:15:23 -03:00
Damien Elmes
08f894735a
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
b932333246 fix card layout screen on qt 5.9 regression (#592) 2020-05-05 11:26:13 +10:00
evandrocoan
b671c8e627 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
5236e20a7a
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
9502fe790f
Merge pull request #584 from Arthur-Milchior/onModelchangeUsed
On modelchange used
2020-05-04 14:06:35 +10:00
Damien Elmes
6c20e5a7df
Merge pull request #585 from Arthur-Milchior/addButtonSaveNewFunction
addButton always save function
2020-05-04 13:58:46 +10:00
Damien Elmes
eec3fcf87a 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
164fdb37d5 fix saving searches in browser 2020-05-04 12:26:50 +10:00
evandrocoan
b63bfc83d8 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
f2fbf667cd onModelChange: replacing try by if 2020-05-03 01:53:00 +02:00
Arthur Milchior
d427e1028b single try in onModelChange 2020-05-03 01:53:00 +02:00
Arthur Milchior
936bb31997 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
9645b85df8 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
be6a5e2f13 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
Arthur Milchior
3378daeca3 remove an useless asignment
Because fields of new notes are empty by default
2020-04-28 00:31:30 +02:00
Arthur Milchior
93d83e760b remove a try, for code clarity 2020-04-28 00:31:24 +02:00
Damien Elmes
0c8f6ced09 Revert "Merge pull request #583 from Arthur-Milchior/remove_a_try"
This reverts commit e9ca61d1eb, reversing
changes made to abb80231a5.
2020-04-28 07:38:23 +10:00
Arthur Milchior
e86817305a 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
e9ca61d1eb
Merge pull request #583 from Arthur-Milchior/remove_a_try
Simplify the code slightly
2020-04-27 19:12:00 +10:00
Arthur Milchior
31164adaec addButton always save function 2020-04-26 17:01:47 +02:00
Arthur Milchior
e4a0ccc059 remove an useless asignment
Because fields of new notes are empty by default
2020-04-26 14:49:16 +02:00
Arthur Milchior
1771be8f1e remove a try, for code clarity 2020-04-26 14:49:11 +02:00
BlueGreenMagick
f23a361876 use variable names 2020-04-26 15:47:19 +09:00
Damien Elmes
ce589fb975 Revert "Merge pull request #562 from ijgnd/master"
This reverts commit 4fb9dc734b, reversing
changes made to c8fb409a49.

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
683f664d85 fix deleting deck configs 2020-04-20 13:23:05 +10:00
Damien Elmes
335815ab9c fix renaming not updating dropdown 2020-04-20 13:17:55 +10:00
Damien Elmes
c023bdd78e fix adding deck configs 2020-04-20 13:15:23 +10:00
evandrocoan
38fabcef52 Cache webview.py console regex expression and disable multiline 2020-04-17 03:43:16 -03:00
Damien Elmes
aa562f490c 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
394f7c630c
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
4fb9dc734b
Merge pull request #562 from ijgnd/master
make help text selectable
2020-04-16 10:14:02 +10:00
Damien Elmes
a7d5d27778 catch and report issues when downgrading 2020-04-16 10:11:16 +10:00
Damien Elmes
07343f6c9f 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
d24cb66be9 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
a6b676039b 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
2f174b40a6 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
7061aac16d 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
e745677145
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
16be20e2fa don't write log files when exporting 2020-04-15 21:45:32 +10:00
Damien Elmes
65cfcf9226 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
a552abe688 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
f3c561b6d9 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
Damien Elmes
351d8a309f move autoplay() into card 2020-04-13 09:04:30 +10:00
Damien Elmes
10eb947402 fix replay audio again, and decouple the code from the reviewer 2020-04-13 08:59:36 +10:00
Damien Elmes
0c5f22f4ae 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
698bf9c780
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
a068fcdc9f
Update main.py 2020-04-11 14:19:27 +10:00
Damien Elmes
8b3f0100e4 fix error when replaying audio in preview screen 2020-04-10 20:33:48 +10:00
Damien Elmes
c964be3961 make sure preview window is closed when browser closed 2020-04-10 20:32:48 +10:00
Damien Elmes
26f5b9250c grey out spinner if max=0
https://anki.tenderapp.com/discussions/ankidesktop/32710-custom-study
2020-04-10 20:32:48 +10:00
BlueGreenMagick
653f5765b8 add clear actions to context menu in debug console 2020-04-10 15:45:25 +09:00
Damien Elmes
8f7ef6ed2c make sure progress stops when collection corrupt message shown 2020-04-09 14:19:20 +10:00
Damien Elmes
eff1b39e9f fix deck_browser_did_render hook 2020-04-09 13:40:19 +10:00
Damien Elmes
3851246d60
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
cbb2ce6928
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
61793f92b8 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
55b99511c0 print exception on close 2020-04-08 10:05:33 +10:00
BlueGreenMagick
6b3d6bec55 allow dragging fields to change its position 2020-04-07 16:42:33 +09:00
BlueGreenMagick
aa86bc8088 use model type to detect cloze notes 2020-04-07 14:02:53 +09:00
Damien Elmes
6ecf2ffa2c
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
1122ab4791
Merge pull request #541 from BlueGreenMagick/tmpNote-cloze
detect renamed cloze fields in note type preview
2020-04-07 14:17:44 +10:00
BlueGreenMagick
12b69af9b2 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
bda2935de1 _basename to basename, since it's not private in use 2020-04-06 23:51:50 +02:00
Arthur Milchior
5315b717c0 _basename used where possible 2020-04-06 23:51:42 +02:00
Arthur Milchior
69a9425cd0 replace _path by path (because it's not private here) 2020-04-06 23:50:43 +02:00
Arthur Milchior
266c2022b5 uses _path where possible 2020-04-06 23:50:37 +02:00
Arthur Milchior
5d55c4cda2 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
676f4e74a8 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
8b76098bc7 omit period in steps when possible 2020-04-06 15:39:47 +10:00
Damien Elmes
7375a0389a 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
ac4284b2de 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
333d0735ff preserve mtime/usn when syncing deck config, and add snake_case names 2020-04-03 19:34:46 +10:00
Damien Elmes
2c99a4203f
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
657fa9758b hook add_card_did_init 2020-04-03 11:03:08 +02:00
Damien Elmes
6cf3b0ca18 add type checking to previewer 2020-04-03 09:13:33 +10:00
Damien Elmes
6049e15dac add missing license header 2020-04-03 09:05:32 +10:00
Damien Elmes
a359c27c25 use old name for preview dialog to avoid breaking add-ons 2020-04-03 09:00:18 +10:00
Damien Elmes
5f9c126caa fix some errors in the previewing code 2020-04-03 09:00:08 +10:00
Damien Elmes
4790fec881 render() conflicts with Qt method 2020-04-03 08:29:35 +10:00
Damien Elmes
de79087620 be explicit that the method is a no-op 2020-04-03 08:27:56 +10:00
Damien Elmes
f5e0ad8fad tweak wording 2020-04-03 08:27:26 +10:00
Arthur Milchior
cd1fd6f9a2 snake case 2020-04-02 17:44:06 +02:00
Arthur Milchior
00d04cd6c9 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
6564f00748 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
31f2f60757 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
0e21978577 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
92cec5c327 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
c722b5bd2c 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
b76ee6f8e5 ListCardsPreviewer 2020-04-02 17:44:06 +02:00
Arthur Milchior
c4a38c5e36 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
727b7fb6e5 split onPreview Prev/Next 2020-04-02 17:44:06 +02:00
Arthur Milchior
79dece3124 split _updatePreviewButtons
This will allow to create a hierarchy in this class
2020-04-02 17:44:06 +02:00
Arthur Milchior
f42c164999 add a class to preview a single card 2020-04-02 17:44:06 +02:00
Arthur Milchior
944e82211f 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
0a3d68a565 split = None 2020-04-02 17:44:06 +02:00
Arthur Milchior
6d98063ac3 vbox and bbox are attribute 2020-04-02 17:44:06 +02:00
Arthur Milchior
95e020f743 use card method 2020-04-02 17:44:06 +02:00
Arthur Milchior
179ba87ce4 previewer: create gui in a distinct function 2020-04-02 17:44:06 +02:00
Arthur Milchior
45ccd4aa3c 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
b5f0f459ce 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
Damien Elmes
634931cf9e tweak hook name 2020-04-01 17:13:08 +10:00
Damien Elmes
28380d4183
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
5fe747f14a 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
c050833aba 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
c9da4bc1a6 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
4b34e71030 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
bfdb5d01b5 Use double quotes in taglimit queries 2020-03-30 10:12:47 +02:00
Damien Elmes
ef79f7d676
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
47bd6264bd Revert "Merge pull request #527 from Arthur-Milchior/explode_on_bridge_cmd"
This reverts commit 2264fe3f66, reversing
changes made to 84b84ae31c.

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
4bb49d404e hook browser_header_will_show_context_menu 2020-03-27 23:06:22 +01:00
Damien Elmes
d81c725b46
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
2264fe3f66
Merge pull request #527 from Arthur-Milchior/explode_on_bridge_cmd
Explode on bridge cmd
2020-03-27 15:22:14 +10:00
Arthur Milchior
0b633dbf40 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
c9496ef095 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
fe327e32ca 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
65b8988817 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
9f4c4ea355 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
Damien Elmes
818b9193a8
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
3799b8504f strip to test whether field is empty 2020-03-24 11:55:55 +01:00
Arthur Milchior
31f18e3c94 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
6143a7e218
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
a51dba7255
Merge pull request #524 from Arthur-Milchior/indet_html
Ident html in editor
2020-03-24 16:00:57 +10:00
Damien Elmes
483d50cba8
Merge pull request #522 from Arthur-Milchior/editor_did_init
editor_did_init
2020-03-24 15:52:50 +10:00
evandrocoan
b1b3e5b87c 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
521b0e9e14 Change not not to bool 2020-03-23 11:16:39 -06:00
Damien Elmes
b1a8107aa1 formatting 2020-03-23 19:54:01 +10:00
Damien Elmes
84eaf43525 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
f889616ef1 don't pop up network errors for media sync
log them instead
2020-03-23 19:06:13 +10:00
Damien Elmes
f429986246 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
7d94465256 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
7a4f3d0318 dump more info in card()/bcard() 2020-03-23 18:39:00 +10:00
Arthur Milchior
349d145014 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
c615342130 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
75b7ebb156 add back new_timezone_enabled(), as it's used in the prefs screen 2020-03-23 07:40:50 +10:00
Arthur Milchior
f2f92fb0c3 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
99416477ac allow customizing search order 2020-03-21 17:38:09 +10:00
Damien Elmes
dfa7f5e142 fix reversing sort order 2020-03-21 16:57:33 +10:00
Damien Elmes
9afbcd4178 remove old finder code; add search hooks to browser & remove old one 2020-03-21 16:38:46 +10:00
Damien Elmes
63ce44aaa7 enable sorting on the extra browser columns 2020-03-21 07:55:53 +10:00
Damien Elmes
9ee82d55b1 disable word wrap in browser rows 2020-03-20 21:15:23 +10:00
Damien Elmes
13f3719650 ensure endReset() is called even if an exception is raised 2020-03-20 21:15:23 +10:00
Damien Elmes
1318118461 flush config on sort order change 2020-03-20 21:15:23 +10:00
Damien Elmes
55c9f5dbeb wait for media sync to complete before unloading collection 2020-03-20 21:15:23 +10:00
Damien Elmes
d03e13a1bd reuse the existing backend instead of creating a new one 2020-03-20 21:15:23 +10:00
Damien Elmes
ba17567617 drop the separate i18n backend 2020-03-20 21:15:23 +10:00
Damien Elmes
8d429cd192 import .colpkg in a background thread 2020-03-20 21:15:23 +10:00
Damien Elmes
ad9dad8748 import .apkg files in a background thread 2020-03-20 21:15:23 +10:00
Damien Elmes
231fa30a86 import mapped files like csv in a background thread 2020-03-20 21:15:23 +10:00
Damien Elmes
53952ba131 export in a background thread 2020-03-20 21:15:23 +10:00
Damien Elmes
fa12213e98 move .reopen() to mw; fix exporting 2020-03-20 21:15:23 +10:00
Damien Elmes
fe59d11047 fix mypy warning 2020-03-20 21:15:23 +10:00
Damien Elmes
0f38514ad7 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
90d4d62c48 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
32555b2857 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
ae06b9e446 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
6db4418f05 drop log= argument from Collection 2020-03-20 21:15:23 +10:00
Damien Elmes
f4d4078537 drop named sql arguments 2020-03-20 21:15:23 +10:00
Damien Elmes
c8b9afac0c drop progress handler and timeout arg 2020-03-20 21:15:23 +10:00
Damien Elmes
0d43e9dca3 tweak add-on wording 2020-03-20 21:00:21 +10:00
Damien Elmes
b7c64aaf39
Merge pull request #517 from Arthur-Milchior/backup_is_done
hook backup_is_done
2020-03-20 20:56:33 +10:00
Damien Elmes
f274e85edf
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
b2aa0756c9
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
97225a0364 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
bfc305fa26 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
b73507344c 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
e4ae41340f Hook to decide whether a note should be added. 2020-03-19 03:39:53 +01:00
evandrocoan
1ade1a1a0f 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
034ac10cf4 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
Damien Elmes
dfa10f5a1c
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
acd3eb9058
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
Arthur Milchior
e7ea8f412f adding missing constants in browser file 2020-03-17 06:32:46 +01:00
evandrocoan
4bb0a75fe7 Give the 'typearrow' id to the type answer arrow 2020-03-16 00:42:08 -03:00
Arthur Milchior
89bb5fe79b 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
0ecc189a9b fix audio getting stuck (2/2) 2020-03-15 09:34:04 +10:00
Damien Elmes
f30853f5ed 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
e7452300a2 imports 2020-03-14 22:10:27 +10:00
Damien Elmes
8845b05933 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
522ee8fca7 drop the deck count warning 2020-03-14 19:41:33 +10:00
Damien Elmes
d9923b12ba fix play icons not appearing in browser preview when autoplay off 2020-03-14 19:29:11 +10:00
Damien Elmes
aad491dbb9 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
33f312315e must close progress before displaying error, or user can't click it away 2020-03-14 18:42:03 +10:00
evandrocoan
2e54d315e1 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
f0be553e09 add media check window title, use consistent formatting in template 2020-03-12 18:02:22 +10:00
Damien Elmes
2f02867840
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
fd81fca4aa fix wrong language selected in prefs screen 2020-03-11 14:58:57 +10:00
Arthur Milchior
5482cafef2 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
0b04da6419 snake case for addon_schema 2020-03-11 00:56:14 +01:00
Damien Elmes
131d37dca5 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():

9736e4a970/pylib/anki/schedv2.py (L1357)

with the following supporting Python functions:

9736e4a970/pylib/anki/schedv2.py (L1410)

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

9736e4a970/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
0f4c3ab611 add restore media action 2020-03-10 13:35:09 +10:00
Damien Elmes
6ad2a1f9a3 add empty trash action in aqt 2020-03-10 12:49:40 +10:00
Arthur Milchior
74b2b18966 hook single_addon_selected 2020-03-09 12:45:10 +01:00
Arthur Milchior
4e1838bba8 hook addons_dialog_will_show 2020-03-09 12:45:10 +01:00
Damien Elmes
b1d0945d10
Merge branch 'master' into more_precise_config_error_message 2020-03-09 19:41:26 +10:00
Damien Elmes
bc435b8772
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
Arthur Milchior
c9b89c5394 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
05f69272d0 Elaborate more on the use case and requirements for dialog registration 2020-03-07 17:43:21 +01:00
Glutanimate
1ed2ba8983 Allow add-ons to register custom dialogs with the dialog manager 2020-03-07 17:35:09 +01:00
Glutanimate
0f9683a850 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
5adbc33d4c hook debug_ran_hook 2020-03-06 15:01:22 +01:00
Arthur Milchior
3319b114de hook debug_will_show_hook 2020-03-06 15:01:02 +01:00
Damien Elmes
4290bc81eb
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
5f4839a901
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
雷宇辰
a2604b80f5
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
Arthur Milchior
01c74bc015 add-on config check schema of user config 2020-03-05 16:31:17 +01:00
Damien Elmes
6bc3462700 fix regression introduced by PR #492 2020-03-05 09:24:26 +10:00
Damien Elmes
94b90d23fb
Merge pull request #493 from glutanimate/type-annotate-editor-card
Type-annotate editor.card
2020-03-05 07:26:40 +10:00
Damien Elmes
78e9959e78
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
3948b778e8 Type-annotate editor.card 2020-03-04 17:41:26 +01:00
Arthur Milchior
85966f42dc 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
bc67268d82 config_unprettify_json 2020-03-04 08:25:14 +01:00
Arthur Milchior
e4986c7784 hook prettify_json 2020-03-04 08:25:14 +01:00
Damien Elmes
669bb3737f
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
5cf7d6672e
Merge pull request #476 from Arthur-Milchior/hook_browser_init
Hook browser init
2020-03-02 15:40:10 +10:00
Damien Elmes
3d7f643184
Merge pull request #472 from Arthur-Milchior/hook_init_clayout
Hook init clayout
2020-03-02 15:39:23 +10:00
Alan Du
6c2dda6c9c Monkeytype qt/aqt/reviewer.py 2020-03-01 10:16:08 -05:00
Alan Du
96ca469d12 Monkeytype qt/aqt/theme.py 2020-03-01 10:16:08 -05:00
Alan Du
f8c22499cb Monkeytype qt/aqt/sound.py 2020-03-01 10:16:08 -05:00
Alan Du
eebf5d2a1d Monkeytype qt/aqt/toolbar.py 2020-03-01 10:16:08 -05:00
Alan Du
cd570eef24 Monkeytype qt/aqt/webview.py 2020-03-01 10:16:08 -05:00
Arthur Milchior
80ba217772 hook for initializing clayout 2020-03-01 11:42:41 +01:00
Arthur Milchior
047e027e01 browser_did_init 2020-03-01 11:39:41 +01:00
Glutanimate
d22ad11224 Display add-on name in add-on configuration window title 2020-02-29 20:15:23 +01:00
Damien Elmes
2db7591b6d fix shared link 2020-02-29 21:43:37 +10:00
Damien Elmes
7bde0556cb
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
e2c6fd464c
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
8c0d4c8059 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
56b2cc58ed point user to manual if they're trying to disable night mode in dark mode 2020-02-29 20:44:49 +10:00
BlueGreenMagick
e46ace5044 match both forward slash and os seperator 2020-02-29 12:36:10 +09:00
evandrocoan
21b66cd86b Fixed anki website docs link on pylib/anki/consts.py 2020-02-28 22:18:19 -03:00
Damien Elmes
a954dc1066 fix _tidy_name() comment 2020-02-28 17:14:47 +10:00
Damien Elmes
43f5d13ed6 migrate strings with trailing newlines to fluent 2020-02-27 20:36:40 +10:00
Alan Du
a63c9e5a9a Apply mypy improvements to aqt 2020-02-26 22:27:58 -05:00
Damien Elmes
e04cbfd7f8
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
0c49431719 FString -> TR 2020-02-27 12:25:19 +10:00
Damien Elmes
e439e8cdec add string for media log title, and add button in prefs to access it 2020-02-27 12:22:24 +10:00
Damien Elmes
644670d0d6 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
5ff1f3890f Add a hook to change empty cards to delete 2020-02-26 10:59:34 -08:00
Damien Elmes
cfe4af81cf add missing short argument to legacy fmtTimeSpan() 2020-02-26 20:36:59 +10:00
Damien Elmes
a634188ec5 fix dark mode target Qt version 2020-02-26 16:53:35 +10:00
Damien Elmes
65ec9d190d formatting fixes 2020-02-25 17:56:46 +10:00
Damien Elmes
db69f84c0a interrupt current audio when autoplay off 2020-02-25 17:49:06 +10:00
Damien Elmes
f71484a444 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
06dee0ef08 formatting fix 2020-02-25 17:29:10 +10:00
Damien Elmes
fbbbbd6a7d 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
fd835d9b64 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
32b38bf26d ensure Anki starts on Windows systems that don't have TTS installed 2020-02-25 16:25:17 +10:00
Damien Elmes
621774559f 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
Damien Elmes
0fae85d2b4 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
Glutanimate
8454e27efb Use a consistent function signature across load and save hooks 2020-02-24 15:47:48 +01:00
Glutanimate
7cc9311b79 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
335047187a 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
2f4ee0e523
Merge pull request #456 from Arthur-Milchior/noDefaultDeckInBrowser
No default deck in browser
2020-02-24 19:35:49 +10:00
Damien Elmes
b9280ca31e enable v2 apkg export 2020-02-24 18:54:55 +10:00
Damien Elmes
1afac2492b fix tr() 2020-02-24 18:37:02 +10:00
Damien Elmes
0a618c40ad 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
e73157285e remove old fmtTimeSpan() and associated strings 2020-02-23 18:47:16 +10:00
Damien Elmes
703b9da09c 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
0e931808c9 translations no longer require an open collection 2020-02-23 14:57:02 +10:00
Damien Elmes
4430c67069 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
bb86c9dbd6 should(default)deckbedisplayed in snake case 2020-02-22 04:08:01 -08:00
Arthur Milchior
927749d7a6 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
1126ae293e forceDefault to force_default 2020-02-22 04:01:42 -08:00
Damien Elmes
42939fe0e4 remove unused import 2020-02-21 19:58:54 +10:00
Damien Elmes
49fe080636 add studied_today(), move to statistics.ftl 2020-02-21 18:01:15 +10:00
Damien Elmes
f4330cd213 simplify interval display in review log 2020-02-21 15:29:38 +10:00
Damien Elmes
2fc15d0d3a 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
598226a5c0 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
abe9f50c14 Revert "Merge pull request #452 from Arthur-Milchior/noDefaultDeckInBrowser"
This reverts commit b93d30795c, reversing
changes made to e16d6055c1.

More discussion required on https://github.com/ankitects/anki/pull/452
2020-02-21 12:27:39 +10:00
Damien Elmes
b3585502cd
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
b93d30795c
Merge pull request #452 from Arthur-Milchior/noDefaultDeckInBrowser
No default deck in browser
2020-02-21 12:10:36 +10:00
Glutanimate
496548d886 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
075a2792f5 Restore gui_hooks changes 2020-02-20 17:05:27 +01:00
Glutanimate
de333cd503 Add ids to all link elements 2020-02-20 16:34:02 +01:00
Glutanimate
a7d56561ba Rename CenterLink to more generic ToolbarLink and add inline docs 2020-02-20 16:30:22 +01:00
Glutanimate
dfefd67508 Update 'top_toolbar_did_init_links' hook 2020-02-20 16:23:33 +01:00
Glutanimate
e13fee5aa3 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
33f7d7ed50 Merge branch 'master' into top_toolbar_links_hook 2020-02-20 15:17:48 +01:00
Arthur Milchior
0f18e9ee4b no default in left-side browser 2020-02-19 02:42:04 -08:00
Arthur Milchior
bdcd111d72 Replace g[idx] by variable name 2020-02-19 02:41:57 -08:00
Arthur Milchior
a0bd232cfd remove default deck from filter list 2020-02-19 02:41:56 -08:00
Damien Elmes
d0ec26709b pin fcntl, which went missing on Linux in a recent update 2020-02-19 19:59:31 +10:00
Arthur Milchior
bdf10d9649 method shouldBeDisplayed 2020-02-19 01:56:33 -08:00
BlueGreenMagick
8318cb8e0c
fix typo
<font> tag was closed by </span>
2020-02-19 17:46:12 +09:00
Damien Elmes
e0951e4cfe add 'new #' prefix to new cards in the due column 2020-02-18 11:16:15 +10:00
Damien Elmes
8c80e46d80 fix card info screen 2020-02-18 10:59:24 +10:00
Damien Elmes
0309113b0a fix legacy filter return values being ignored 2020-02-18 09:12:16 +10:00
Damien Elmes
3ea272989b fix negative number in compat message 2020-02-18 08:27:47 +10:00
Damien Elmes
25ecb5d1f0
Merge pull request #450 from Arthur-Milchior/selectCardInBrowserFromReviewer
Current card get selected in browser
2020-02-18 08:27:34 +10:00