Damien Elmes
390a8421aa
fix test scheduler undo + implement look-ahead
...
Instead of using a separate undo queue, the code now defers checking for
newly-due learning cards until the answering stage, and logs the updated
cutoff time as an undoable change, so that any newly-due learning cards
won't appear instead of a new/review card that was just undone.
Queue redo now uses a similar approach to undo, instead of rebuilding the
queues.
2021-05-14 22:16:53 +10:00
Damien Elmes
99081e422b
re-enable leech notification for test scheduler
2021-05-13 15:51:02 +10:00
Damien Elmes
dbbcb3e38c
expose new sorting options in test scheduler options; move things around
2021-05-13 15:23:16 +10:00
Damien Elmes
49a1580566
use new API for test scheduler
...
Avoids duplicate work, and is a step towards allowing the next
states to be modified by third-party code.
Also:
- fixed incorrect underlined count, due to reviews being labeled as
learning cards
- fixed reviewer not refreshing when undoing a test review, by splitting
up backend queue rebuilding from frontend reviewer refresh
- moved answering into a CollectionOp
2021-05-11 13:06:03 +10:00
Damien Elmes
3736e63a57
expose step counter and undone op changes in hook
2021-05-08 17:51:36 +10:00
Damien Elmes
4be5d08559
remove some unnecessary checkpoints
2021-05-08 17:04:05 +10:00
Damien Elmes
1918031399
update find_duplicates to use QueryOp/CollectionOp
2021-05-08 16:58:18 +10:00
Damien Elmes
f2db822c08
move query_op into operations/, and add the ability to show progress
2021-05-08 16:35:43 +10:00
Damien Elmes
b887032244
split browser dialogs into separate files
2021-05-08 15:08:45 +10:00
Damien Elmes
0b8733032d
the find_and_replace alias is not required
...
Was only added recently, so nothing should depend on it yet.
2021-05-08 14:34:57 +10:00
Damien Elmes
78a3536bfc
move "find duplicates" into separate file
...
As far as I'm aware, no add-ons were extending that screen, so I've
dropped the old context object and the export in browser/__init__.py
2021-05-08 14:33:43 +10:00
Damien Elmes
010c3da770
Merge pull request #1159 from hgiesel/newapproach
...
Prefer idiomatic Svelte features over dynamic components
2021-05-08 11:35:31 +10:00
Henrik Giesel
8b0c6ba5df
Check for id when inserting dynamic elements
...
* I'm not sure it behaved, if there were multiple elements
inserted by different add-ons into the same container
2021-05-07 16:50:17 +02:00
Henrik Giesel
6a804f6775
Use json.dumps instead of backticks in editor.py
2021-05-07 14:22:06 +02:00
Damien Elmes
7442eed41a
update docstrings for latest black
2021-05-07 18:12:56 +10:00
Damien Elmes
3d8b7d943c
fix find&replace
2021-05-07 14:02:40 +10:00
Henrik Giesel
de8abebcd1
Fix Preview Button after changing from f-string to normal string
2021-05-07 02:12:37 +02:00
Henrik Giesel
2112b419f9
Fix ButtonDropdown
2021-05-07 02:04:44 +02:00
Henrik Giesel
0f4d4eb5a9
Only initialize extension apis if necessary
2021-05-07 02:04:44 +02:00
Henrik Giesel
c9368ed98f
Add lefttopbtns as AddonButtons
2021-05-07 02:04:44 +02:00
Henrik Giesel
e80f43e8fc
Enable setting of PreviewButton and hiding of cloze button again
2021-05-07 02:04:42 +02:00
Henrik Giesel
6d6c798ca3
Simplify structure of EditorToolbar and ButtonGroup in editor HTML file
2021-05-07 02:03:55 +02:00
Damien Elmes
fc2d3ba07c
remove AnkiDroid timezone confirmation
...
By the time this update reaches stable, AnkiDroid 2.15 should already
be out.
2021-05-06 19:05:15 +10:00
Damien Elmes
abab4826bb
support undo for (renamed) unbury_deck() action
2021-04-30 20:03:20 +10:00
Damien Elmes
248373ef30
undoing of notetype templates
2021-04-30 17:30:48 +10:00
Damien Elmes
9a46ad6352
undoing of notetype fields
...
- fix stale cache issue
- update add cards screen in response to op changes
2021-04-30 17:15:59 +10:00
Damien Elmes
b9417fc583
notetype rename+options undo
2021-04-30 16:09:44 +10:00
Damien Elmes
394fe86f8f
notetype removal undoable
2021-04-30 16:01:47 +10:00
Damien Elmes
ea758f0092
update GUI to allow notetype addition undo
...
- backend now updates current notetype as part of addition
- frontend no longer implicitly adds, so we can assign a new name and
add in a single operation
2021-04-30 15:58:08 +10:00
RumovZ
abd02d7891
Add separate no_arg_trigger decorator
2021-04-26 08:46:08 +02:00
Damien Elmes
f77983fc9f
Merge pull request #1154 from RumovZ/fix-skip-dec
...
Fix skip_if_selection_is_empty() for triggers
2021-04-26 09:21:42 +10:00
RumovZ
594fe303da
Remove some unnecessary lambdas
2021-04-25 19:51:57 +02:00
RumovZ
9900f73cee
Fix skip_if_selection_is_empty() for triggers
...
It seems to be enough if one decorator calls pyqtSlot(), but to avoid
problems in the future, let's have all decorators do that.
2021-04-25 19:50:56 +02:00
Henrik Giesel
268adf1d03
Move EditorToolbar API into EditorToolbar.svelte
2021-04-25 19:15:00 +02:00
Henrik Giesel
f5fba15435
Initialize editor toolbar via function, not web component
2021-04-25 18:32:01 +02:00
Damien Elmes
b7b329cf90
Merge pull request #1151 from RumovZ/no-sel-dec
...
Fix some problems with browser actions while selection is empty
2021-04-25 20:48:40 +10:00
Damien Elmes
eb3f3ddd45
enable the new deck options by default
...
- The old options are still available with a shift+click
- Translations still need updating
- See b7747b6a38
for some examples
of extending the screen in an add-on
2021-04-25 19:58:58 +10:00
Damien Elmes
a1ce048ed5
fix error when user cancels out of set due date/reposition
2021-04-25 19:33:25 +10:00
Damien Elmes
b485b8cbb9
deckconfig->deckoptions
2021-04-25 19:02:30 +10:00
RumovZ
b1392980f5
Skip some browser methods if selection is empty
...
This was handled inconsistently before:
* Select Notes would throw a search error.
* Set Due Date would throw an exception.
* Dialogs with no effect would open.
* No-ops would be pushed to the undo queue.
2021-04-25 08:47:15 +02:00
RumovZ
458d891d28
Add dec to make methods no-op if no selection
2021-04-25 08:36:22 +02:00
Damien Elmes
e2a4d6041c
basic support for add-ons in new deck config screen
...
- expose the data as a writable store
- currently only supports raw HTML; example to come
- fix changes not marking a deck config as modified
- the data is currently packed into the deckconfig object, but we
may move these to a separate store in the collection config in the
future, like is done with decks/notetypes
2021-04-24 11:08:01 +10:00
Henrik Giesel
452fdf05af
Remove unused import
2021-04-24 01:32:02 +02:00
Henrik Giesel
1f05ebbcf7
Remove addcards toolbar again for now
2021-04-24 00:10:45 +02:00
Henrik Giesel
9f7a187d4a
Add mostly working addcards topbar
2021-04-24 00:00:32 +02:00
Henrik Giesel
8ecd4f8c95
Add simple version of Chooser buttons
2021-04-23 21:25:44 +02:00
Henrik Giesel
48b7cb49f9
Make update algorithm in editor-toolbar/index.ts recursive
2021-04-23 20:50:09 +02:00
Henrik Giesel
6ae368ebac
Reduce typing overhead in ts/editor-toolbar/index.ts and export buttonGroup
2021-04-23 19:05:43 +02:00
Henrik Giesel
bda99ee0f1
Add IterableToolbarItem interface for easier typing
2021-04-23 18:53:52 +02:00
Henrik Giesel
7563a3c929
Use rawButton in browser.py
2021-04-23 17:34:42 +02:00
Henrik Giesel
4379f1e84f
Make dynamicComponents usable for addons, rather than the components directly
...
rawButton({ html: ... })
instead of
{ component: RawButton, html: ... }
2021-04-23 16:43:36 +02:00
Damien Elmes
02ebab7491
Merge pull request #1146 from hgiesel/shortcuts
...
Shortcut API for Editor
2021-04-23 09:44:01 +10:00
Damien Elmes
f6a59ebdfa
split deck description into separate screen linked from overview
2021-04-22 21:03:16 +10:00
Henrik Giesel
d2ca94a29d
Move other buttons to WithShortcut
2021-04-22 03:25:31 +02:00
Damien Elmes
30f5269304
hook new deck config screen up behind an env var
2021-04-22 10:59:16 +10:00
Henrik Giesel
85f89dc111
Add first shortcuts for bold, italic, underline, removeFormat
2021-04-22 02:37:04 +02:00
Henrik Giesel
b1de095162
Include editor-toolbar as a library in editor
2021-04-20 13:44:44 +02:00
Henrik Giesel
83d5d72777
Generalize inListItem to getAnchorElement
2021-04-20 13:44:43 +02:00
Damien Elmes
41d5cae7db
fix Find Dupes activation
2021-04-20 21:13:21 +10:00
Damien Elmes
55277aa90a
implement deck config saving on JS end
2021-04-20 19:50:05 +10:00
Damien Elmes
10b7ab2c6d
include sourcemaps for pages/* in dev builds
2021-04-20 17:33:46 +10:00
RumovZ
3cecc7157b
Add sidebar filter "first review today"
2021-04-18 13:27:10 +02:00
Damien Elmes
76eb119870
add schema change prompt to removal, tweak return struct
2021-04-18 17:33:12 +10:00
Damien Elmes
1648adc126
Merge pull request #1130 from glutanimate/add-deckchooser-to-addcards-legacy-api
...
Add AddCards.deckChooser property for legacy add-on support
2021-04-16 11:58:34 +10:00
Damien Elmes
6632b63a11
support overriding listening IP during dev
2021-04-16 10:23:13 +10:00
Glutanimate
a446e7320c
Add AddCards.deckChooser property for legacy access
2021-04-15 18:18:25 +02:00
Henrik Giesel
5702b3c273
Add type to add_preview_shortcut
2021-04-15 15:50:29 +02:00
Henrik Giesel
82f6e19955
Add Latex formatting options to menu
...
* Format shortcuts in monospace font and increase padding a little bit
2021-04-15 15:20:37 +02:00
Henrik Giesel
53ae03becc
Add Preview shortcut for browser
2021-04-15 13:09:51 +02:00
Henrik Giesel
a7d24e7159
Add support for Preview button in Browser
2021-04-15 13:09:50 +02:00
Henrik Giesel
920b740c8f
Add RawButton and hook old python hooks up to it
2021-04-15 13:09:50 +02:00
Henrik Giesel
eceb98f8e6
Show/Hide Cloze button depending on whether cloze type
2021-04-15 13:09:50 +02:00
Henrik Giesel
37ed3e8209
Fix some code quality issues
2021-04-15 13:09:49 +02:00
Henrik Giesel
7f42b38e7a
Add labels and titles to all buttons
2021-04-15 13:09:49 +02:00
Henrik Giesel
a820059b8f
Utilize enableButtons disableButtons from Svelte component
2021-04-15 13:09:49 +02:00
Henrik Giesel
a0a9619722
Include icons directly in ts lib
2021-04-15 13:09:49 +02:00
Henrik Giesel
7787a7827f
First implementation
2021-04-15 13:09:48 +02:00
Henrik Giesel
de77e40e4d
Add ts/editor-toolbar
2021-04-15 13:09:48 +02:00
RumovZ
f7bf90100d
Fix ChangeModel combos being cleared after setup()
2021-04-14 23:01:40 +02:00
Damien Elmes
0b8ae7225a
add a shortcut to speed up local ts dev
...
@hgiesel if you're not already doing something like this, you might
find this useful
2021-04-14 23:21:33 +10:00
Damien Elmes
7f738c11a2
deck config prototype work in progress
...
Still in the early stages, and not hooked up yet.
2021-04-14 22:33:10 +10:00
Damien Elmes
4a406192fa
Merge pull request #1127 from Arthur-Milchior/factorize_current_search
...
NF: factorize browser.current_search
2021-04-14 19:16:59 +10:00
Arthur Milchior
be44d4eeed
NF: factorize browser.current_search
...
I was looking at search code and find out that's already slightly more clear/short even if NF
2021-04-14 10:55:41 +02:00
Damien Elmes
cca9195ea5
run prettier on some sass files
2021-04-14 18:22:33 +10:00
Damien Elmes
c49d6ce49f
run black/isort on Python scripts
2021-04-14 18:22:02 +10:00
Damien Elmes
fc8a5759d5
Merge pull request #1124 from hgiesel/dropjquerypy2
...
Remove jQuery from remaining qt/aqt files
2021-04-14 12:43:11 +10:00
Damien Elmes
ca6edc1470
Merge pull request #1123 from hgiesel/reviewerbottomdropjquery
...
Remove jQuery reviewer-bottom.ts and overview.ts
2021-04-14 12:35:39 +10:00
Damien Elmes
ff944c88fb
Merge pull request #1122 from hgiesel/webviewcss2
...
Prefer SASS over including files
2021-04-14 11:55:19 +10:00
Damien Elmes
e530b96998
add missing type annotation
2021-04-14 11:28:40 +10:00
Damien Elmes
9ff3ad15a5
Merge pull request #1121 from RumovZ/move-sidebar
...
More for the browser folder
2021-04-14 11:25:15 +10:00
Damien Elmes
bf46176af9
add contributor
2021-04-14 11:03:17 +10:00
Henrik Giesel
280f78535b
Replace jQuery in webview.py
2021-04-13 21:32:53 +02:00
Henrik Giesel
3e1b42bb62
Satisfy formatter
2021-04-13 20:29:59 +02:00
Henrik Giesel
67754494d2
Remvoe jQuery from deckbrowser.py
...
It's not quite clear why jQuery was necessary here?
2021-04-13 20:26:06 +02:00
Henrik Giesel
7dd12a523d
Remove jquery from reviewer.py
...
- we no longer actually need to focus the default ease button
2021-04-13 20:11:18 +02:00
Henrik Giesel
bdf1e6324e
Remove jQuery from toolbar.py
2021-04-13 19:59:00 +02:00
Henrik Giesel
64c7d405f5
Remove jquery from browser.py
2021-04-13 19:54:45 +02:00
Henrik Giesel
191e3cf69b
Satisfy formatter
2021-04-13 19:47:03 +02:00
Henrik Giesel
a76f1d64ad
Move compile_sass.bzl to /ts + Remove core.css from data/web (unused?)
2021-04-13 19:47:03 +02:00
Henrik Giesel
ffd159f9a0
Declare dependencies in data/web/css
2021-04-13 19:47:03 +02:00
Henrik Giesel
8f0f8f9af8
Use graphs-base and congrats-base
2021-04-13 19:47:03 +02:00
Henrik Giesel
fee6ee7319
Do not include webview.css for editor
2021-04-13 19:47:03 +02:00
Henrik Giesel
825509ba0c
Move card_counts and split off fusion_vars
2021-04-13 19:47:03 +02:00
Henrik Giesel
df7c597a8b
Add option not include default css in stdHtml
2021-04-13 19:47:03 +02:00
Henrik Giesel
86262030e3
Purge jQuery from reviewer-bottom
2021-04-13 19:41:04 +02:00
Henrik Giesel
ae3f8adbb3
Remove overview.ts
2021-04-13 19:38:57 +02:00
Damien Elmes
18f03d5cb1
Merge pull request #1119 from hgiesel/reviewerdropjquery
...
Remove last jQuery from reviewer.ts / Remove fadeTime
2021-04-13 23:12:13 +10:00
Henrik Giesel
be7630648d
Add setInnerHTML as a Replacement for $.html
2021-04-13 13:32:50 +02:00
RumovZ
594a98eff1
Move previewer.py into browser folder
2021-04-13 11:38:35 +02:00
RumovZ
e43f11339f
Declare all legacy pathnames in browser init
2021-04-13 11:30:32 +02:00
RumovZ
88086596b6
Move find_and_replace.py into browser/dialogs
2021-04-13 11:21:36 +02:00
RumovZ
7ee40e3dce
Refactor sidebar.py into browser folder
2021-04-13 11:05:49 +02:00
Damien Elmes
e520e8df02
add missing copyright headers to *.ts
2021-04-13 18:57:08 +10:00
Damien Elmes
948fc5f777
add missing copyright headers to *.py
2021-04-13 18:45:35 +10:00
Henrik Giesel
c9fcf955f4
Remove display:none from mark and flag, and preset hidden attribute instead
2021-04-13 01:00:09 +02:00
Henrik Giesel
74a9d0b0a1
Make imageLoaded adhere to its function signature
2021-04-13 00:42:09 +02:00
Henrik Giesel
f4f0298378
Remove jQuery from mark and flag in reviewer.ts
2021-04-13 00:37:58 +02:00
Henrik Giesel
e131b70c4c
Remove jQuery from _updateQA
2021-04-13 00:22:00 +02:00
RumovZ
2000c80fd2
Refactor browser and table into folders
2021-04-12 09:50:44 +02:00
Damien Elmes
12ce632605
handle missing default sort column in notes view
...
Switching to notes mode was throwing:
File "/Users/dae/Work/code/dtop/bazel-copy/runanki.runfiles/net_ankiweb_anki/qt/aqt/browser.py", line 449, in on_table_state_changed
self.table.toggle_state(checked, self._lastSearchTxt)
File "/Users/dae/Work/code/dtop/bazel-copy/runanki.runfiles/net_ankiweb_anki/qt/aqt/table.py", line 206, in toggle_state
self._state = self._model.toggle_state(
File "/Users/dae/Work/code/dtop/bazel-copy/runanki.runfiles/net_ankiweb_anki/qt/aqt/table.py", line 996, in toggle_state
self.search(context)
File "/Users/dae/Work/code/dtop/bazel-copy/runanki.runfiles/net_ankiweb_anki/qt/aqt/table.py", line 1005, in search
context.order = self.columns[self._state.sort_column]
2021-04-12 16:02:51 +10:00
RumovZ
d4159fef19
Save separate browser mode headers
2021-04-11 12:28:11 +02:00
RumovZ
fadec3dc5b
Merge branch 'master' into backend-columns
2021-04-11 11:18:15 +02:00
RumovZ
db32179a25
Add browser_did_fetch_columns hook and some doc
2021-04-11 10:27:43 +02:00
RumovZ
eafa2afc0d
Resolve config sort in table model
2021-04-10 11:33:59 +02:00
RumovZ
48b70873cb
Rename column label fields
2021-04-10 09:14:20 +02:00
RumovZ
c74078ea9e
Unify state columns
...
* Remove duplicate backend columns
* Remove duplicate column routines
* Move columns on frontend from state to model
* Generate available columns from Colum enum
* Add second column label for notes mode
2021-04-08 23:48:24 +02:00
RumovZ
8a131da9a2
Add enum for column sorting
2021-04-08 11:40:24 +02:00
RumovZ
d8a0aa922c
Add enum for column alignment
2021-04-08 11:28:29 +02:00
RumovZ
f78401619a
Remove Column class and use pb class instead
2021-04-08 11:17:25 +02:00
Damien Elmes
1ee4385fcf
i18n tts error message
2021-04-08 09:35:19 +10:00
Damien Elmes
28f830730e
fix '\\' being converted to single backslash
...
Appears the default changed in 3.x
https://github.com/mathjax/MathJax/issues/2532
https://forums.ankiweb.net/t/double-backslashes-in-text-of-notes-are-turned-into-single-backslashes-on-display/9048
2021-04-07 21:50:33 +10:00
RumovZ
6abb05d074
Save key for unsupported add-on columns
2021-04-06 23:02:58 +02:00
RumovZ
a5c02910a6
Use backend column objects on frontend
2021-04-06 19:47:03 +02:00
RumovZ
08226e2004
Change notes mode shortcut
2021-04-06 16:48:35 +02:00
Damien Elmes
6e954e82a5
current deck change is now undoable
...
- make sure we set flag in changes when config var changed
- move current deck get/set into backend
- set_config() now returns a bool indicating whether a change was
made, so other operations can be gated off it
- active decks generation is deferred until sched.reset()
2021-04-06 21:52:06 +10:00
RumovZ
4903a325d4
Fix get_item_from_card_id()
2021-04-06 12:06:08 +02:00
RumovZ
a1277b0919
Tweak new browsing strings
2021-04-06 11:41:18 +02:00
Damien Elmes
5676ad5101
update find&replace, and remove perform_op()
2021-04-06 17:07:38 +10:00
Damien Elmes
84fe309583
update scheduling ops
...
- migrate to CollectionOp()
- return actual change count when suspending/burying
- add helper to convert vec to vec of newtype
2021-04-06 16:38:42 +10:00
Damien Elmes
2de8cc1a94
update note ops
...
remove_note() now returns the count of removed cards, allowing us
to unify the tooltip between browser and review screen
I've left the old translation in - we'll need to write a script at
one point that gathers all references to translations in the code,
and shows ones that are unused.
2021-04-06 14:56:36 +10:00
Damien Elmes
bc78b6ef17
migrate more ops to CollectionOp
2021-04-06 14:36:13 +10:00
Damien Elmes
27c032a158
it seems mypy ignores the generic class bound if it's a type alias
2021-04-06 14:14:55 +10:00
Damien Elmes
b8fc195cdf
start migrating perform_op() into builder in separate file
...
By passing back the builder to the calling code to run, we don't need
to plumb extra arguments like success= and handler= through each
operation, and the ability to override the default tooltip behaviour
comes free on all operations
2021-04-06 12:47:55 +10:00
Damien Elmes
1ece868d02
shift keep-current-selection logic into sidebar's refresh()
...
By calling refresh() manually after performing an op, we were refreshing
twice, and the selection was being lost when changes were made outside
of the sidebar.
Also drop the after_hooks arg to perform_op(), since nothing is using
it now.
2021-04-06 11:18:13 +10:00
Damien Elmes
3f62f54f14
more perform_op() tweaks
...
- pass the handler directly
- reviewer special-cases for flags and notes are now applied at
call site
- drop the kind attribute on OpChanges which is not needed
2021-04-06 10:14:11 +10:00
Damien Elmes
9c8148ff0d
fix error when opening browser during review while notes mode active
2021-04-05 21:57:06 +10:00
Damien Elmes
758550ea17
fix row cache issues
...
I think this may have accidentally been changed in the refactoring.
If we discard self._rows, it will result in the entire table flashing
"..." until the new data is available. Instead, we leave the cached
rows alone, and just update the cutoff point, so we can serve stale
content (avoiding any visible redraw) until the new data is available.
I've updated search() to reset the rows there, so we free up memory
on a new search.
2021-04-05 14:42:04 +10:00
Damien Elmes
a18bb2af12
add booleans for various screens to OpChanges
...
The backend knows exactly which op has executed, and it saves us having
to re-implement this logic on each client.
Fixes the browser table refreshing when toggling decks.
2021-04-05 14:28:56 +10:00
Damien Elmes
f6ec5928ae
allow ops to pass metadata into perform_op()
...
Instances can pass handled_by=self to more easily ignore events they
initiate.
Fixes ugly refresh when expanding/collapsing decks, but we're still
refreshing the card/notes area unnecessarily in that case.
2021-04-05 13:43:09 +10:00
Damien Elmes
996d9f9bbc
undo support for tag collapse; expand->collapse for consistency w/ decks
2021-04-05 11:47:12 +10:00