mirror of
https://github.com/ankitects/anki.git
synced 2025-11-09 14:17:13 -05:00
basic add-on docs
This commit is contained in:
parent
d94c011c88
commit
b66c03d673
1 changed files with 61 additions and 0 deletions
61
README.addons
Normal file
61
README.addons
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
Porting add-ons to Anki 2.1
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
2.1 is still in alpha and prone to change, so you may wish to wait until it
|
||||||
|
hits beta before starting to update add-ons. But if you'd like to dive in
|
||||||
|
straight away, here are some tips on porting.
|
||||||
|
|
||||||
|
Python 3
|
||||||
|
---------
|
||||||
|
|
||||||
|
Anki 2.1 requires Python 3.4 or later. After installing Python 3 on your
|
||||||
|
machine, you can use the 2to3 tool to automatically convert your existing
|
||||||
|
scripts to Python 3 code on a folder by folder basis, like:
|
||||||
|
|
||||||
|
2to3-3.5 --output-dir=aqt3 -W -n aqt
|
||||||
|
mv aqt aqt-old
|
||||||
|
mv aqt3 aqt
|
||||||
|
|
||||||
|
Most simple code can be converted automatically, but there may be parts of the
|
||||||
|
code that you need to manually modify.
|
||||||
|
|
||||||
|
Add-ons that don't deal with file access and bytestrings may well work on both
|
||||||
|
Python 2 and 3 without any special work required.
|
||||||
|
|
||||||
|
Qt5 / PyQt5
|
||||||
|
------------
|
||||||
|
|
||||||
|
The syntax for connecting signals and slots has changed in PyQt5. Recent PyQt4
|
||||||
|
versions support the new syntax as well, so after updating your add-ons you
|
||||||
|
may find they still work in Anki 2.0.x as well.
|
||||||
|
|
||||||
|
More info is available at
|
||||||
|
http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html
|
||||||
|
|
||||||
|
Changes in Anki
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Qt 5 has deprecated WebKit in favour of the Chromium-based WebEngine, so
|
||||||
|
Anki's webviews are now using WebEngine. Of note:
|
||||||
|
|
||||||
|
- WebEngine uses a different method of communicating back to Python.
|
||||||
|
AnkiWebView() is a wrapper for webviews which provides a pycmd(str) function in
|
||||||
|
Javascript which will call the ankiwebview's onBridgeCmd(str) method. Various
|
||||||
|
parts of Anki's UI like reviewer.py and deckbrowser.py have had to be
|
||||||
|
modified to use this.
|
||||||
|
- Javascript is evaluated asynchronously, so if you need the result of a JS
|
||||||
|
expression you can use ankiwebview's evalWithCallback().
|
||||||
|
|
||||||
|
|
||||||
|
Sharing updated add-ons
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
If you've succeeded in making an add-on that supports both 2.0.x and 2.1.x at
|
||||||
|
the same time, please feel free to upload it to the shared add-ons area. If
|
||||||
|
you've decided to make a separate 2.1.x version, it's probably best to just
|
||||||
|
post a link to it in your current add-on description or upload it separately.
|
||||||
|
When we get closer to a release I'll look into adding separate uploads for the
|
||||||
|
two versions.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in a new issue