mirror of
https://github.com/ankitects/anki.git
synced 2025-11-08 21:57:12 -05:00
use libanki json
This commit is contained in:
parent
d66931359c
commit
faf4e396f8
8 changed files with 21 additions and 22 deletions
3
README
3
README
|
|
@ -3,9 +3,8 @@ Anki
|
||||||
|
|
||||||
Prerequisites for Linux/FreeBSD/etc:
|
Prerequisites for Linux/FreeBSD/etc:
|
||||||
|
|
||||||
- Python 2.5+
|
- Python 2.6 or 2.7 (not 3.0+)
|
||||||
- Python-Qt/PyQt 4.6+
|
- Python-Qt/PyQt 4.6+
|
||||||
- SimpleJSON 1.7.3+
|
|
||||||
- BeautifulSoup 3.2+
|
- BeautifulSoup 3.2+
|
||||||
- Httplib2 0.7+
|
- Httplib2 0.7+
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
import aqt, simplejson
|
import aqt
|
||||||
from anki.utils import ids2str
|
from anki.utils import ids2str
|
||||||
from aqt.utils import showInfo, showWarning, openHelp, getOnlyText, askUser, \
|
from aqt.utils import showInfo, showWarning, openHelp, getOnlyText, askUser, \
|
||||||
tooltip
|
tooltip
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
import aqt, simplejson
|
import aqt
|
||||||
from anki.utils import ids2str
|
from anki.utils import ids2str
|
||||||
from aqt.utils import showInfo, showWarning, openHelp, getOnlyText
|
from aqt.utils import showInfo, showWarning, openHelp, getOnlyText
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
import re, os, sys, urllib2, ctypes, simplejson, traceback, urllib2
|
import re, os, sys, urllib2, ctypes, traceback, urllib2
|
||||||
from anki.utils import stripHTML, isWin, isMac, namedtmp
|
from anki.utils import stripHTML, isWin, isMac, namedtmp, json
|
||||||
from anki.sound import play
|
from anki.sound import play
|
||||||
from anki.hooks import runHook, runFilter
|
from anki.hooks import runHook, runFilter
|
||||||
from aqt.sound import getAudio
|
from aqt.sound import getAudio
|
||||||
|
|
@ -502,7 +502,7 @@ class Editor(object):
|
||||||
# state buttons changed?
|
# state buttons changed?
|
||||||
elif str.startswith("state"):
|
elif str.startswith("state"):
|
||||||
(cmd, txt) = str.split(":", 1)
|
(cmd, txt) = str.split(":", 1)
|
||||||
r = simplejson.loads(txt)
|
r = json.loads(txt)
|
||||||
self._buttons['text_bold'].setChecked(r['bold'])
|
self._buttons['text_bold'].setChecked(r['bold'])
|
||||||
self._buttons['text_italic'].setChecked(r['italic'])
|
self._buttons['text_italic'].setChecked(r['italic'])
|
||||||
self._buttons['text_under'].setChecked(r['under'])
|
self._buttons['text_under'].setChecked(r['under'])
|
||||||
|
|
@ -555,9 +555,9 @@ class Editor(object):
|
||||||
for fld, val in self.note.items():
|
for fld, val in self.note.items():
|
||||||
data.append((fld, self.mw.col.media.escapeImages(val)))
|
data.append((fld, self.mw.col.media.escapeImages(val)))
|
||||||
self.web.eval("setFields(%s, %d);" % (
|
self.web.eval("setFields(%s, %d);" % (
|
||||||
simplejson.dumps(data), field))
|
json.dumps(data), field))
|
||||||
self.web.eval("setFonts(%s);" % (
|
self.web.eval("setFonts(%s);" % (
|
||||||
simplejson.dumps(self.fonts())))
|
json.dumps(self.fonts())))
|
||||||
self.checkValid()
|
self.checkValid()
|
||||||
self.widget.show()
|
self.widget.show()
|
||||||
if self.stealFocus:
|
if self.stealFocus:
|
||||||
|
|
@ -594,7 +594,7 @@ class Editor(object):
|
||||||
self.web.eval("showDupes();")
|
self.web.eval("showDupes();")
|
||||||
else:
|
else:
|
||||||
self.web.eval("hideDupes();")
|
self.web.eval("hideDupes();")
|
||||||
self.web.eval("setBackgrounds(%s);" % simplejson.dumps(cols))
|
self.web.eval("setBackgrounds(%s);" % json.dumps(cols))
|
||||||
|
|
||||||
def showDupes(self):
|
def showDupes(self):
|
||||||
contents = self.note.fields[0]
|
contents = self.note.fields[0]
|
||||||
|
|
@ -809,7 +809,7 @@ class Editor(object):
|
||||||
|
|
||||||
def addMedia(self, path, canDelete=False):
|
def addMedia(self, path, canDelete=False):
|
||||||
html = self._addMedia(path, canDelete)
|
html = self._addMedia(path, canDelete)
|
||||||
self._eval("setFormat('inserthtml', %s);" % simplejson.dumps(html))
|
self._eval("setFormat('inserthtml', %s);" % json.dumps(html))
|
||||||
|
|
||||||
def _addMedia(self, path, canDelete=False):
|
def _addMedia(self, path, canDelete=False):
|
||||||
"Add to media folder and return basename."
|
"Add to media folder and return basename."
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
# Copyright: Damien Elmes <anki@ichi2.net>
|
# Copyright: Damien Elmes <anki@ichi2.net>
|
||||||
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
import simplejson
|
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
from anki.consts import NEW_CARDS_RANDOM, dynOrderLabels
|
from anki.consts import NEW_CARDS_RANDOM, dynOrderLabels
|
||||||
from anki.hooks import addHook
|
from anki.hooks import addHook
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@
|
||||||
# Copyright: Damien Elmes <anki@ichi2.net>
|
# Copyright: Damien Elmes <anki@ichi2.net>
|
||||||
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
import time, os, stat, shutil, difflib, simplejson, re, cgi
|
import time, os, stat, shutil, difflib, re, cgi
|
||||||
import unicodedata as ucd
|
import unicodedata as ucd
|
||||||
import HTMLParser
|
import HTMLParser
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
from anki.utils import fmtTimeSpan, stripHTML, isMac
|
from anki.utils import fmtTimeSpan, stripHTML, isMac, json
|
||||||
from anki.hooks import addHook, runHook, runFilter
|
from anki.hooks import addHook, runHook, runFilter
|
||||||
from anki.sound import playFromText, clearAudioQueue, hasSound, play
|
from anki.sound import playFromText, clearAudioQueue, hasSound, play
|
||||||
from aqt.utils import mungeQA, getBase, shortcut, openLink, tooltip
|
from aqt.utils import mungeQA, getBase, shortcut, openLink, tooltip
|
||||||
|
|
@ -172,7 +172,7 @@ function _typeAnsPress() {
|
||||||
playFromText(q)
|
playFromText(q)
|
||||||
# render & update bottom
|
# render & update bottom
|
||||||
q = self._mungeQA(q)
|
q = self._mungeQA(q)
|
||||||
self.web.eval("_updateQA(%s, false);" % simplejson.dumps(q))
|
self.web.eval("_updateQA(%s, false);" % json.dumps(q))
|
||||||
self._toggleStar()
|
self._toggleStar()
|
||||||
if self._bottomReady:
|
if self._bottomReady:
|
||||||
self._showAnswerButton()
|
self._showAnswerButton()
|
||||||
|
|
@ -187,7 +187,7 @@ function _typeAnsPress() {
|
||||||
self.card.odid or self.card.did)['autoplay']
|
self.card.odid or self.card.did)['autoplay']
|
||||||
|
|
||||||
def _toggleStar(self):
|
def _toggleStar(self):
|
||||||
self.web.eval("_toggleStar(%s);" % simplejson.dumps(
|
self.web.eval("_toggleStar(%s);" % json.dumps(
|
||||||
self.card.note().hasTag("marked")))
|
self.card.note().hasTag("marked")))
|
||||||
|
|
||||||
# Showing the answer
|
# Showing the answer
|
||||||
|
|
@ -205,7 +205,7 @@ function _typeAnsPress() {
|
||||||
playFromText(a)
|
playFromText(a)
|
||||||
# render and update bottom
|
# render and update bottom
|
||||||
a = self._mungeQA(a)
|
a = self._mungeQA(a)
|
||||||
self.web.eval("_updateQA(%s, true);" % simplejson.dumps(a))
|
self.web.eval("_updateQA(%s, true);" % json.dumps(a))
|
||||||
self._showEaseButtons()
|
self._showEaseButtons()
|
||||||
# user hook
|
# user hook
|
||||||
runHook('showAnswer')
|
runHook('showAnswer')
|
||||||
|
|
@ -528,12 +528,12 @@ function showAnswer(txt) {
|
||||||
else:
|
else:
|
||||||
maxTime = 0
|
maxTime = 0
|
||||||
self.bottom.web.eval("showQuestion(%s,%d);" % (
|
self.bottom.web.eval("showQuestion(%s,%d);" % (
|
||||||
simplejson.dumps(middle), maxTime))
|
json.dumps(middle), maxTime))
|
||||||
|
|
||||||
def _showEaseButtons(self):
|
def _showEaseButtons(self):
|
||||||
self.bottom.web.setFocus()
|
self.bottom.web.setFocus()
|
||||||
middle = self._answerButtons()
|
middle = self._answerButtons()
|
||||||
self.bottom.web.eval("showAnswer(%s);" % simplejson.dumps(middle))
|
self.bottom.web.eval("showAnswer(%s);" % json.dumps(middle))
|
||||||
|
|
||||||
def _remaining(self):
|
def _remaining(self):
|
||||||
if not self.mw.col.conf['dueCounts']:
|
if not self.mw.col.conf['dueCounts']:
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
||||||
|
|
||||||
from aqt.qt import *
|
from aqt.qt import *
|
||||||
import aqt, simplejson
|
import aqt
|
||||||
from anki.utils import ids2str
|
from anki.utils import ids2str
|
||||||
from aqt.utils import showInfo, showWarning, openHelp, getOnlyText
|
from aqt.utils import showInfo, showWarning, openHelp, getOnlyText
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,9 @@ from aqt.qt import *
|
||||||
import urllib, urllib2, os, sys, time, httplib
|
import urllib, urllib2, os, sys, time, httplib
|
||||||
import anki, anki.utils, anki.lang, anki.stats
|
import anki, anki.utils, anki.lang, anki.stats
|
||||||
import aqt
|
import aqt
|
||||||
import simplejson, platform
|
import platform
|
||||||
from aqt.utils import openLink
|
from aqt.utils import openLink
|
||||||
|
from anki.utils import json
|
||||||
|
|
||||||
baseUrl = "http://ankiweb.net/update/"
|
baseUrl = "http://ankiweb.net/update/"
|
||||||
#baseUrl = "http://localhost:8001/update/"
|
#baseUrl = "http://localhost:8001/update/"
|
||||||
|
|
@ -38,7 +39,7 @@ class LatestVersionFinder(QThread):
|
||||||
resp = f.read()
|
resp = f.read()
|
||||||
if not resp:
|
if not resp:
|
||||||
return
|
return
|
||||||
resp = simplejson.loads(resp)
|
resp = json.loads(resp)
|
||||||
except:
|
except:
|
||||||
# behind proxy, corrupt message, etc
|
# behind proxy, corrupt message, etc
|
||||||
return
|
return
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue