Commit Graph

44 Commits

Author SHA1 Message Date
Damien Elmes
c1587254f4 use isort to tidy up imports 2019-12-20 19:19:29 +10:00
Damien Elmes
ddac1dd579 a few more typing fixes 2019-12-20 17:55:19 +10:00
Damien Elmes
1a6de042df fix __renderPage() being called twice 2019-06-01 16:35:19 +10:00
Damien Elmes
c3dc02cd7f don't require callback for regular deck refresh
Ensures that decks refresh properly even if the webview has previously
failed to load due to a bug (such as the render routine being called
while the collection is closed)
2019-04-29 16:46:13 +10:00
Damien Elmes
ebdd8dae4b tidy up unused imports 2019-03-04 17:25:19 +10:00
Damien Elmes
da2ddcc6e2 explicitly import _ and ngettext 2019-03-04 11:58:34 +10:00
Damien Elmes
372d5ed6e8 update copyright and clarify licenses 2019-02-05 14:01:33 +10:00
Damien Elmes
0c1c7a1ca3 fix other clickable anchors 2018-10-23 17:05:47 +10:00
Damien Elmes
14f4107dfd deal with onclick handlers that don't return false
Because <base> is set to the media server URL, <a href='#' ...> causes
a page transition from the current setHtml() page data. Previous Qt
versions allowed us to just ignore the request, but now returning False
in acceptNavigationRequest() causes the subsequent page navigation to
be rejected as well, resulting in no visible change when clicking on a
deck in the deck list.

To deal with this, Anki will now warn when such navigation requests
come in, as the anchors need to be updated to return false. pycmd()
has been updated to return false to make returning in onclick easier.

Also use QUrl.matches() instead of converting the potentially long
URL to a string.
2018-10-23 16:47:01 +10:00
Damien Elmes
dfaf9251c3 hack to keep scroll position in deckbrowser
noticeable flash when page is redrawn; in the future we'll
need to use js to update the page
2018-06-12 13:46:15 +10:00
Damien Elmes
0052c8044c another many decks speedup 2018-05-31 16:24:34 +10:00
Piotr Kubowicz
879ca0b72b Allow to better translate "in x minutes"
"There is 1 minute" and "in 1 minute" need to be translated
differently in Slavic languages.

Additionally remove unused afterTimeTable.
2017-11-30 20:03:51 +01:00
Damien Elmes
a16aa73d6e switch to svg images for better hidpi rendering 2017-08-15 13:54:58 +10:00
Damien Elmes
ba16b8714b remove images and move away from qt resources
- the bulk of image use is in webviews, so we move almost all used
images to web/imgs, as it's easier to manage
- change AnkiWebView to always use the local media server as a base, as
much of the UI has come to depend on it
- remove images from a few areas, as they felt dated
- delete a bunch of unused images
- href=# links were being opened in a browser window, so the code now
ignores them - the HTML should really be updated to return false in the
onclick handler
- update a few icons
2017-08-11 20:59:43 +10:00
Damien Elmes
f3f90842dc move the inline css and some more js into separate files
- stdHtml() css= arg now takes a list of files like js=
- the files are loaded in the head of the document so that styling
that comes later in the document can easily override it

fixes:
https://anki.tenderapp.com/discussions/beta-testing/661-anki-210-beta-7/page/1#comment_43164447
https://anki.tenderapp.com/discussions/beta-testing/661-anki-210-beta-7#comment_43177130
2017-08-10 19:02:32 +10:00
David Bailey
4c43fcfe4e Prevent "Shorcut key: " appearing multiple times in tooltips 2017-08-06 16:03:11 +01:00
Damien Elmes
7ad6966943 split js code out into separate files, mathjax improvements
- js code that was previously bundled in .py files is now in the
web folder
- add helpers to create links to bundled files, and update
stdHtml() to accept a list of javascript files to include
instead of text
- render MathJax in card layout and preview screens - these should be
updated in the future to update the document dynamically like the
reviewer does
- start media server earlier so it can be used to serve content for
the toolbar, etc
- work around a bug in WebEngine on Windows that could cause the
media server to hang
2017-07-28 16:35:45 +10:00
Damien Elmes
f7b3457ff0 fix drawLinks reference 2017-07-17 14:54:12 +10:00
Dmitry Mikheev
5bfd93842c Let users extend their bottom buttons functions
Like this:
```
aqt.deckbrowser.DeckBrowser.drawLinks.extend([
            ["", "rebuildAll", _("Rebuild All")],
            ["", "emptyAll", _("Empty All")],
])
```
2017-07-15 18:39:01 +05:00
Damien Elmes
34dcf64d76 another attempt at fixing key handling
we can't use an event filter on the top level webview, because it
ignores the return value of the filter and leads to Anki thinking
keys have been pressed twice

and if we use an event filter on the focusProxy(), the
keypress/release events are sent even when a text field is currently
focused, leading to shortcuts being triggered when typing in the answer

to solve this, we move away from handling the key press events
directly, and instead install shortcuts for the events we want to
trigger. in addition to the global shortcuts, each state can install
its own shortcuts, which we remove when transitioning to a new state

also remove the unused canFocus argument to ankiwebview, and accept a parent
argument as required by the code in forms/
2017-06-22 16:39:31 +10:00
Damien Elmes
76e508e25d various key handling fixes
- key presses while a webview is focused no longer make it to the
main window's keyPressEvent() routine, so AnkiWebView now uses its
event filter to pass the key events to the main window
- move the shared key handling out of keyPressEvent into
globalKeyHandler()
- make sure all key handling routines return true or false to
indicate if an event was handled or not
- remove focus when esc hit in the main window, to retain old
behaviour of allowing esc to clear focus from the type answer box
2017-06-06 15:56:21 +10:00
Damien Elmes
476aedbd6b fix issues with 'lots of decks' msg
https://anki.tenderapp.com/discussions/beta-testing/460-anki-210-alpha-13#comment_42641183
2017-05-28 11:13:16 +10:00
Illia Volochii
13b7e01044 Stop inheriting from object
It is not needed in Python 3.
2017-02-07 00:21:33 +02:00
Damien Elmes
807b7382cb add missing runHook to deck options 2016-07-08 12:59:10 +10:00
Damien Elmes
dfa479607c hook for showDeckOptions 2016-07-04 16:32:30 +10:00
Damien Elmes
4e2bd3f739 resize toolbars to fit content 2016-06-07 14:27:33 +10:00
Damien Elmes
9abc9fde9f use a channel for bridge
acceptNavRequest was not being called for rapid updates, so it's not
usable
2016-06-06 15:50:03 +10:00
Damien Elmes
de7e40537d port majority of code to qt5.5+
- a few issues to work out still, and editor changes not done yet
- for communication between webengine and python code, we set window
.location to 'http://anki/<something>' - the leading http is
necessary for qt to call the link handler, which was introduced
in qt5.5
- the designer files now use a promoted qobject to create instances
of AnkiWebView
- we use the css zoom property to alter webengine font size based on
system dpi
- prefs and addons folder stored in new location (at least for now)
2016-05-31 18:51:40 +10:00
Damien Elmes
15b349e3a8 start port to python 3
unit tests pass and main screens of GUI load
2016-05-12 14:45:35 +10:00
Damien Elmes
52f8a4a75e missed deck browser arrow 2015-09-29 13:32:26 +10:00
Damien Elmes
96a18d2872 use a different unicode arrow
the smaller arrow doesn't appear to be supported on English W10 installs
2015-09-26 13:02:27 +10:00
Soren I. Bjornstad
b4784b7437 add "export" button to deck menus 2014-06-19 19:13:12 -05:00
Damien Elmes
5044089d42 Revert "tweak heights and font sizes"
This reverts commit 9beed20dc0.

beta testers all seem to prefer the original smaller size
2014-03-27 14:02:55 +09:00
Damien Elmes
9beed20dc0 tweak heights and font sizes 2014-03-07 10:16:38 +09:00
Houssam Salem
81d88908a5 Remember scroll position in deck browser (#977). 2014-02-17 13:08:32 +11:00
Damien Elmes
afde11671e rework sibling handling and change bury semantics
First, burying changes:

- unburying now happens on day rollover, or when manually unburying from
  overview screen

- burying is not performed when returning to deck list, or when closing
  collection, so burying now must mark cards as modified to ensure sync
  consistent

- because they're no longer temporary to a session, make sure we exclude them
  in filtered decks in -is:suspended

Sibling spacing changes:

- core behaviour now based on automatically burying related cards when we
  answer a card

- applies to reviews, optionally to new cards, and never to cards in the
  learning queue (partly because we can't suspend/bury cards in that queue at
  the moment)

- this means spacing works consistently in filtered decks now, works on
  reviews even when user is late to review, and provides better separation of
  new cards

- if burying new cards disabled, we just discard them from the current queue.
  an option to set due=ord*space+due would be nicer, but would require
  changing a lot of code and is more appropriate for a future major version
  change. discarding from queue suffers from the same issue as the new card
  cycling in that queue rebuilds may cause cards to be shown close together,
  so the default burying behaviour is preferable

- refer to them as 'related cards' rather than 'siblings'

These changes don't require any changes to the database format, so they
should hopefully coexist with older clients without issue.
2013-08-10 15:56:26 +09:00
Damien Elmes
8a4fbcc430 unbury in deckbrowser, not deckduelist() (#946) 2013-08-08 15:19:57 +09:00
Damien Elmes
5ec30e6858 allow apostrophe when renaming deck 2013-06-12 11:12:03 +09:00
Damien Elmes
97a92e5ea9 translation issues 2013-05-24 10:46:44 +09:00
Damien Elmes
ad1e2a0291 add warning when over 25 decks 2013-05-22 11:44:18 +09:00
Damien Elmes
4da1abf86d different text for creating deck (#412) 2013-04-11 15:49:10 +09:00
Piotr Kubowicz
12bde7b40f allow 'Studied 1 card in ...' to be translated properly 2013-01-13 20:20:17 +01:00
Damien Elmes
b2457811a2 optimize imports 2012-12-22 09:17:10 +09:00
Damien Elmes
d477df8c28 merged libanki and ankiqt into single distro 2012-12-21 16:51:59 +09:00