Commit graph

2132 commits

Author SHA1 Message Date
RumovZ
b33e81c215 Save separate browser mode headers 2021-04-11 12:28:11 +02:00
RumovZ
d58af0dd95 Merge branch 'master' into backend-columns 2021-04-11 11:18:15 +02:00
RumovZ
dadeaa75b7 Add browser_did_fetch_columns hook and some doc 2021-04-11 10:27:43 +02:00
RumovZ
a6f5a52fc1 Resolve config sort in table model 2021-04-10 11:33:59 +02:00
RumovZ
dd4f08a90f Rename column label fields 2021-04-10 09:14:20 +02:00
RumovZ
e28f2320b8 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
0ff193cd5d Add enum for column sorting 2021-04-08 11:40:24 +02:00
RumovZ
47eeb5da14 Add enum for column alignment 2021-04-08 11:28:29 +02:00
RumovZ
d7e0da3786 Remove Column class and use pb class instead 2021-04-08 11:17:25 +02:00
Damien Elmes
43105d62cf i18n tts error message 2021-04-08 09:35:19 +10:00
Damien Elmes
2eec071b22 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
b59a7c72a1 Save key for unsupported add-on columns 2021-04-06 23:02:58 +02:00
RumovZ
3c84749973 Use backend column objects on frontend 2021-04-06 19:47:03 +02:00
RumovZ
460e79ba73 Change notes mode shortcut 2021-04-06 16:48:35 +02:00
Damien Elmes
ae7a327cae 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
49ebf1a9ae Fix get_item_from_card_id() 2021-04-06 12:06:08 +02:00
RumovZ
dec8fd6181 Tweak new browsing strings 2021-04-06 11:41:18 +02:00
Damien Elmes
a8af070f9a update find&replace, and remove perform_op() 2021-04-06 17:07:38 +10:00
Damien Elmes
1b81653e0e 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
783e0ec224 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
3669e948c4 migrate more ops to CollectionOp 2021-04-06 14:36:13 +10:00
Damien Elmes
f030fdbfa4 it seems mypy ignores the generic class bound if it's a type alias 2021-04-06 14:14:55 +10:00
Damien Elmes
45636877f4 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
427424c660 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
c3b0fb35b7 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
7666d1fc22 fix error when opening browser during review while notes mode active 2021-04-05 21:57:06 +10:00
Damien Elmes
1613f2edd4 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
3ab53c77c7 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
12c1a570ac 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
18ba5554ca undo support for tag collapse; expand->collapse for consistency w/ decks 2021-04-05 11:47:12 +10:00
Damien Elmes
dc5b900056 add routine to set deck collapse state
Updating a deck via protobuf is now exposed on the backend, but not
currently on the frontend - I suspect we'll be better off writing
separate routines for the actions we need instead, and we get a better
undo description for free.

This is currently causing an ugly redraw in the browse screen, which
will need fixing.
2021-04-05 11:19:04 +10:00
Damien Elmes
282ae2285a expose read-only access to new deck objects 2021-04-04 20:39:56 +10:00
Damien Elmes
65a2db34df ensure page is shown when setHtml() called
https://forums.ankiweb.net/t/looked-into-the-bug-when-pressing-e-and-r-together-in-filtered-deck/8951
2021-04-03 16:59:23 +10:00
Damien Elmes
a9e40622e5 move operations into submodule 2021-04-03 16:26:10 +10:00
Damien Elmes
cb9d5b9f28 simplify errors
- use a flat enum instead of oneof messages, most of which were empty
- tidy up the Python side
2021-04-03 16:06:46 +10:00
Damien Elmes
d7237be205 use perform_op() for undo()
Instead of manually updating the UI after undoing, we just rely
on the same change notification infrastructure regular operations
use.
2021-04-03 14:38:49 +10:00
Damien Elmes
b2bfd940e7 move filtered deck labels to backend
- use strum to generate an iterator for the protobuf enum so we don't
forget to add new labels if extending in the future
- no add-ons appear to be using dynOrderLabels(), so it has been removed

@RumovZ perhaps a similar approach might work for listing the available
browser columns as well?
2021-04-01 23:53:38 +10:00
Damien Elmes
f41d6edeca Merge pull request #1108 from RumovZ/more-columns
Even more browser fixes and features
2021-04-01 15:59:06 +10:00
Damien Elmes
81ad087d56 Merge pull request #1106 from abdnh/fix-deprwarn
Fix deprecated implicit conversion from float to int using __int__()
2021-04-01 15:14:49 +10:00
Damien Elmes
1eed560ada tweak the wording of some of the tag ops 2021-04-01 15:12:13 +10:00
RumovZ
3e87a28232 Add shortcut and tooltip to switch 2021-03-31 18:53:36 +02:00
RumovZ
9d7c977283 Delay switch animation
If the switch triggers heavy GUI action, like a lot of paint()s, the
concurrently running switch animation may look choppy.
A small timer makes these events execute first and the animation will
run smoothly afterwards when the event queue has been drained.
2021-03-31 12:13:09 +02:00
RumovZ
dd997b20af Make toggle actions checkable 2021-03-31 10:05:44 +02:00
RumovZ
b041f1db26 Change switch knob colour 2021-03-31 09:16:25 +02:00
RumovZ
6233a125fc Add note interval column 2021-03-30 23:44:35 +02:00
abdo
7b45c08860 Fix deprecated implicit conversion from float to int using __int__() 2021-03-31 00:32:20 +03:00
RumovZ
0c1d4d66fc Fix previewer not changing card 2021-03-30 22:06:58 +02:00
RumovZ
ca87a6fc45 Add note due column 2021-03-30 21:39:15 +02:00
RumovZ
880e6dc651 Add browser column enum for backend 2021-03-30 11:59:52 +02:00
Damien Elmes
76b5a79fe1 Merge pull request #1103 from abdnh/win-openfolder
Fix ResourceWarning in openFolder() on Windows
2021-03-30 19:28:12 +10:00
Damien Elmes
34195e1233 Merge pull request #1102 from RumovZ/more-browser
More browser fixes and features
2021-03-30 19:27:55 +10:00
RumovZ
34d3d24003 Add note lapses column 2021-03-29 16:06:15 +02:00
RumovZ
1eb1747365 Add note reps column 2021-03-29 15:52:02 +02:00
RumovZ
20d3569e72 Make note state equate to False as on backend 2021-03-29 15:51:34 +02:00
RumovZ
98288ff1cc Add switch for browser states 2021-03-29 12:24:24 +02:00
RumovZ
f5cf5c0079 Implement custom qt button Switch 2021-03-29 12:19:48 +02:00
RumovZ
72ddbebf97 Fix browser_did_fetch_row hook 2021-03-29 12:16:50 +02:00
RumovZ
8f76b482bb Remove fixme for card_ids legacy support 2021-03-29 12:07:24 +02:00
RumovZ
f7f20d7630 Explain use of deprecated decorator 2021-03-29 12:04:14 +02:00
RumovZ
54cf724188 Flag deleted rows as inactive 2021-03-29 11:55:28 +02:00
RumovZ
6c3d930ec0 Fix state toggling when current is deleted 2021-03-29 11:54:35 +02:00
Damien Elmes
16dd1364ef fix 'lame missing' message not being shown
https://forums.ankiweb.net/t/cant-use-voice-recorder/8753
2021-03-29 19:52:30 +10:00
RumovZ
bd3d210fa2 Fix issues with scrolling row into view
1) Check whether full row height is in viewport instead of just the
top left corner.
2) Add timer before scrolling to current row so editor will already
be set up.
2021-03-29 11:40:18 +02:00
RumovZ
dd434d9093 Stop abusing qt accel string 2021-03-29 11:18:10 +02:00
Damien Elmes
432f950a5e Merge pull request #1095 from hgiesel/svgloader2
Use svg-loader to load svgs directly into ts packages
2021-03-29 17:56:48 +10:00
Damien Elmes
1228cbbe68 fix an unused import 2021-03-29 17:26:20 +10:00
Damien Elmes
097244b7b3 fix default note column headers 2021-03-29 17:22:39 +10:00
Damien Elmes
7323866a88 rename BrowserCardState
Use a more verbose name, and use 'note' rather than 'card', so we
can rely on the default of False
2021-03-29 17:12:45 +10:00
Damien Elmes
d8de053e64 Item -> ItemId 2021-03-29 16:52:41 +10:00
Damien Elmes
3d11e74774 List->Sequence in a bunch of table/browser methods
Most code doesn't require a list specifically, and build a list
is an extra step.
2021-03-29 16:48:33 +10:00
RumovZ
1f79a8766d squash merge browser refactor
Closes #1100
2021-03-29 16:14:54 +10:00
abdo
472acd30e5 Fix ResourceWarning in openFolder() on Windows
subprocess.Popen emits ResourceWarning in the destructor if the status of the process was not read.
Fix by using subprocess.run() instead, which takes care of that.
Using run() is also recommended for simple cases like this in the docs.
2021-03-29 09:09:20 +03:00
Henrik Giesel
9d64508bd1 Remove bootstrap-icons from css folder 2021-03-28 16:14:52 +02:00
Damien Elmes
08b5f86e3d fix 'strip formatting' option being inverted 2021-03-28 19:41:15 +10:00
Damien Elmes
d793c30526 switch NoteType to Notetype
When used as a variable, we were typically calling it a 'notetype', not
a 'note type'.
2021-03-27 22:03:19 +10:00
Damien Elmes
b251843da6 add Dict suffix to Dict aliases in models.py 2021-03-27 21:46:49 +10:00
Damien Elmes
6b72aaf8c2 ID -> Id in protobuf and Python
follow-up to a90d5aa359
2021-03-27 21:38:20 +10:00
Damien Elmes
4676d2f3b1 drop the legacy enum from rslib, and pass separate module/message idx 2021-03-27 11:56:31 +10:00
Damien Elmes
0006a385e1 allow js to request specific i18n modules
Brings the payload on the congrats page with a non-English language
down from about 150k to 15k
2021-03-26 21:43:36 +10:00
Damien Elmes
d7bef83f98 add types to some more Fluent variables 2021-03-26 16:52:54 +10:00
Damien Elmes
afdca58e31 declare variables with some common names as int instead of a union 2021-03-26 16:33:53 +10:00
Damien Elmes
1c0f7274f4 enable type checking of aqt/forms, and fix the new typing issues
Referencing an invalid translation should now break the build
2021-03-26 16:06:02 +10:00
Damien Elmes
f0b65bfa4b symlink forms/*.py in for the benefit of editor completions 2021-03-26 15:33:30 +10:00
Damien Elmes
aaf09a19d8 update TR references in .ui files
We're not benefiting from type checking yet, as mypy and pylint currently
ignore the generated files
2021-03-26 15:03:51 +10:00
Damien Elmes
9be367d5ff update remaining TR references in .py files 2021-03-26 14:49:55 +10:00
Damien Elmes
3d0e5248aa update TR references that crossed multiple lines 2021-03-26 14:38:15 +10:00
Damien Elmes
5d164bea7f update TR references that contain arguments 2021-03-26 14:21:04 +10:00
Damien Elmes
1df14f7c9c update no-arg tr references in qt/ 2021-03-26 13:48:26 +10:00
Damien Elmes
dec406691d switch the Importers global to a callable for i18n
I18n is not set up at init time, so the strings can't be generated
at import.

@kelciour you have a few importing add-ons, so wanted to give you a
heads-up. The importing code is likely to change more in
future months, but for now this should be the only change
2021-03-26 13:28:21 +10:00
Damien Elmes
bd59e41f73 update some no-arg TR constants 2021-03-26 12:37:18 +10:00
Damien Elmes
ede095ef71 Merge branch 'int_type' into main 2021-03-26 11:38:34 +10:00
Damien Elmes
bfcf86e21a fix incorrect constant naming 2021-03-26 11:29:07 +10:00
Damien Elmes
c03e2db3de fix incorrect camelCase 2021-03-26 11:28:51 +10:00
Damien Elmes
ef66b1aa1d fix broken string 2021-03-26 11:27:22 +10:00
Arthur Milchior
f8e8113c90 NF: NoteTypeID type 2021-03-26 11:14:08 +10:00
Arthur Milchior
ea3b55a3a4 NF: DeckID type 2021-03-26 11:14:08 +10:00
Arthur Milchior
f50ba44f05 NF: default_deck_id as a constant
Otherwise it's not clear what this 1 represents
2021-03-26 11:14:08 +10:00
Arthur Milchior
375ac6ea91 NF: currentDeckID factorize odid or did 2021-03-26 11:14:08 +10:00
Arthur Milchior
13710c1357 NF: CardID type 2021-03-26 11:14:08 +10:00
Arthur Milchior
575c1d32ec NF: NoteID type 2021-03-26 11:14:08 +10:00