strip all japanese support out in favour of a plugin

This commit is contained in:
Damien Elmes 2009-06-10 23:04:15 +09:00
parent eeede2008d
commit 102e63acf0
7 changed files with 1 additions and 233 deletions

View file

@ -14,7 +14,6 @@ def importAll():
import exporting
import facteditor
import help
import lookup
import modelchooser
import modelproperties
import preferences

View file

@ -1009,46 +1009,6 @@ class FactEdit(QTextEdit):
self.parent.disableButtons()
self.emit(SIGNAL("lostFocus"))
# this shouldn't be necessary if/when we move away from kakasi
def mouseDoubleClickEvent(self, evt):
t = self.parent.fact.model.tags.lower()
if (not "japanese" in t and
not "mandarin" in t and
not "cantonese" in t):
return QTextEdit.mouseDoubleClickEvent(self,evt)
r = QRegExp("\\{(.*[|,].*)\\}")
r.setMinimal(True)
mouseposition = self.textCursor().position()
blockoffset = 0
result = r.indexIn(self.toPlainText(), 0)
found = ""
while result != -1:
if mouseposition > result and mouseposition < result + r.matchedLength():
mouseposition -= result + 1
frompos = 0
topos = 0
string = r.cap(1)
offset = 0
bits = re.split("[|,]", unicode(string))
for index in range(0, len(bits)):
offset += len(bits[index]) + 1
if mouseposition < offset:
found = bits[index]
break
break
blockoffset= result + r.matchedLength()
result = r.indexIn(self.toPlainText(), blockoffset)
if found == "":
return QTextEdit.mouseDoubleClickEvent(self,evt)
self.setPlainText(self.toPlainText().replace(result, r.matchedLength(), found))
def focusInEvent(self, evt):
if (self.parent.lastFocusedEdit and
self.parent.lastFocusedEdit is not self):

View file

@ -1,75 +0,0 @@
# Copyright: Damien Elmes <anki@ichi2.net>
# License: GNU GPL, version 3 or later; http://www.gnu.org/copyleft/gpl.html
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import urllib, re
import anki
from ankiqt import ui
# Tools - looking up words in the dictionary
##########################################################################
class Lookup(object):
def __init__(self, main):
self.main = main
def selection(self, function):
"Get the selected text and look it up with FUNCTION."
text = unicode(self.main.mainWin.mainText.selectedText())
text = text.strip()
if "\n" in text:
ui.utils.showInfo(_("Can't look up a selection with a newline."))
return
text = text.strip()
if not text:
ui.utils.showInfo(_("Empty selection."))
return
function(text)
def edictKanji(self, text):
self.edict(text, True)
def edict(self, text, kanji=False):
"Look up TEXT with edict."
if kanji:
x="M"
else:
x="U"
baseUrl="http://www.csse.monash.edu.au/~jwb/cgi-bin/wwwjdic.cgi?1M" + x
if isJapaneseText(text):
baseUrl += "J"
else:
baseUrl += "E"
url = baseUrl + urllib.quote(text.encode("utf-8"))
qurl = QUrl()
qurl.setEncodedUrl(url)
QDesktopServices.openUrl(qurl)
def alc(self, text):
"Look up TEXT with ALC."
newText = urllib.quote(text.encode("utf-8"))
url = (
"http://eow.alc.co.jp/" +
newText +
"/UTF-8/?ref=sa")
qurl = QUrl()
qurl.setEncodedUrl(url)
QDesktopServices.openUrl(qurl)
def isJapaneseText(text):
"True if 70% of text is a Japanese character."
total = len(text)
if total == 0:
return True
jp = 0
en = 0
for c in text:
if ord(c) >= 0x2E00 and ord(c) <= 0x9FFF:
jp += 1
if re.match("[A-Za-z]", c):
en += 1
if not jp:
return False
return ((jp + 1) / float(en + 1)) >= 1.0

View file

@ -1552,68 +1552,9 @@ learnt today")
tb = self.mainWin.toolBar
self.config['showToolbar'] = tb.isVisible()
# Tools - looking up words in the dictionary
##########################################################################
def initLookup(self):
if not getattr(self, "lookup", None):
self.lookup = ui.lookup.Lookup(self)
def onLookupExpression(self):
self.initLookup()
try:
self.lookup.alc(self.currentCard.fact['Expression'])
except KeyError:
ui.utils.showInfo(_("No expression in current card."))
def onLookupMeaning(self):
self.initLookup()
try:
self.lookup.alc(self.currentCard.fact['Meaning'])
except KeyError:
ui.utils.showInfo(_("No meaning in current card."))
def onLookupEdictSelection(self):
self.initLookup()
self.lookup.selection(self.lookup.edict)
def onLookupEdictKanjiSelection(self):
self.initLookup()
self.lookup.selection(self.lookup.edictKanji)
def onLookupAlcSelection(self):
self.initLookup()
self.lookup.selection(self.lookup.alc)
# Tools - statistics
##########################################################################
def onKanjiStats(self):
rep = anki.stats.KanjiStats(self.deck).report()
rep += _("<a href=py:miss>Missing</a><br>")
rep += _("<a href=py:seen>Seen</a><br>")
rep += _("<a href=py:non>Non-jouyou</a><br>")
self.help.showText(rep, py={
"miss": self.onMissingStats,
"seen": self.onSeenKanjiStats,
"non": self.onNonJouyouKanjiStats,
})
def onMissingStats(self):
ks = anki.stats.KanjiStats(self.deck)
ks.genKanjiSets()
self.help.showText(ks.missingReport())
def onSeenKanjiStats(self):
ks = anki.stats.KanjiStats(self.deck)
ks.genKanjiSets()
self.help.showText(ks.seenReport())
def onNonJouyouKanjiStats(self):
ks = anki.stats.KanjiStats(self.deck)
ks.genKanjiSets()
self.help.showText(ks.nonJouyouReport())
def onDeckStats(self):
txt = anki.stats.DeckStats(self.deck).report()
self.help.showText(txt)
@ -2194,13 +2135,7 @@ Couldn't contact Anki Online. Please check your internet connection.""")
self.connect(m.actionEditdeck, s, self.onEditDeck)
self.connect(m.actionEditCurrent, s, self.onEditCurrent)
self.connect(m.actionPreferences, s, self.onPrefs)
self.connect(m.actionLookup_es, s, self.onLookupEdictSelection)
self.connect(m.actionLookup_esk, s, self.onLookupEdictKanjiSelection)
self.connect(m.actionLookup_expr, s, self.onLookupExpression)
self.connect(m.actionLookup_mean, s, self.onLookupMeaning)
self.connect(m.actionLookup_as, s, self.onLookupAlcSelection)
self.connect(m.actionDstats, s, self.onDeckStats)
self.connect(m.actionKstats, s, self.onKanjiStats)
self.connect(m.actionCstats, s, self.onCardStats)
self.connect(m.actionGraphs, s, self.onShowGraph)
self.connect(m.actionAbout, s, self.onAbout)
@ -2281,8 +2216,6 @@ Couldn't contact Anki Online. Please check your internet connection.""")
def disableCardMenuItems(self):
self.maybeEnableUndo()
self.maybeShowLookup(False)
self.maybeShowKanjiStats()
self.mainWin.actionEditCurrent.setEnabled(False)
self.mainWin.actionMarkCard.setEnabled(False)
self.mainWin.actionSuspendCard.setEnabled(False)
@ -2292,8 +2225,6 @@ Couldn't contact Anki Online. Please check your internet connection.""")
def enableCardMenuItems(self):
self.maybeEnableUndo()
self.maybeShowLookup(True)
self.maybeShowKanjiStats()
snd = (hasSound(self.currentCard.question) or
(hasSound(self.currentCard.answer) and
self.state != "getQuestion"))
@ -2307,34 +2238,6 @@ Couldn't contact Anki Online. Please check your internet connection.""")
self.mainWin.actionEditCurrent.setEnabled(enableEdits)
self.mainWin.actionEditdeck.setEnabled(enableEdits)
def maybeShowKanjiStats(self):
if not self.deck:
have = False
else:
if getattr(self.deck, "haveJapanese", None) is None:
self.deck.haveJapanese = False
if self.deck:
for m in self.deck.models:
if "Japanese" in m.tags:
self.deck.haveJapanese = True
break
have = self.deck.haveJapanese
self.mainWin.actionKstats.setVisible(have)
def maybeShowLookup(self, enable):
if (self.currentCard and
"Japanese" in self.currentCard.fact.model.tags):
self.mainWin.menu_Lookup.menuAction().setVisible(True)
else:
self.mainWin.menu_Lookup.menuAction().setVisible(False)
enable = False
self.mainWin.menu_Lookup.setEnabled(enable)
self.mainWin.actionLookup_es.setEnabled(enable)
self.mainWin.actionLookup_esk.setEnabled(enable)
self.mainWin.actionLookup_expr.setEnabled(enable)
self.mainWin.actionLookup_mean.setEnabled(enable)
self.mainWin.actionLookup_as.setEnabled(enable)
def maybeEnableUndo(self):
if self.deck and self.deck.undoAvailable():
self.mainWin.actionUndo.setText(_("Undo %s") %

View file

@ -502,6 +502,5 @@ order by n""", id=card.id)
self.onFinish()
self.deck.setUndoEnd(self.undoName)
# check again
self.deck.haveJapanese = None
self.deck.finishProgress()
QDialog.reject(self)

View file

@ -7,7 +7,6 @@ from PyQt4.QtGui import *
from PyQt4.QtCore import *
import anki, anki.utils
from anki.facts import Fact
from anki.stdmodels import JapaneseModel
from ankiqt import ui
import ankiqt.forms

View file

@ -1473,7 +1473,7 @@
<x>0</x>
<y>0</y>
<width>696</width>
<height>36</height>
<height>23</height>
</rect>
</property>
<widget class="QMenu" name="menuHelp">
@ -1541,21 +1541,6 @@
<property name="title">
<string>&amp;Tools</string>
</property>
<widget class="QMenu" name="menu_Lookup">
<property name="title">
<string>&amp;Lookup</string>
</property>
<property name="icon">
<iconset resource="../icons.qrc">
<normaloff>:/icons/edit-find.png</normaloff>:/icons/edit-find.png</iconset>
</property>
<addaction name="actionLookup_expr"/>
<addaction name="actionLookup_mean"/>
<addaction name="separator"/>
<addaction name="actionLookup_as"/>
<addaction name="actionLookup_es"/>
<addaction name="actionLookup_esk"/>
</widget>
<widget class="QMenu" name="menuAdvanced">
<property name="title">
<string>Ad&amp;vanced</string>
@ -1573,11 +1558,9 @@
</widget>
<addaction name="actionGraphs"/>
<addaction name="actionDstats"/>
<addaction name="actionKstats"/>
<addaction name="actionCstats"/>
<addaction name="separator"/>
<addaction name="actionRepeatAudio"/>
<addaction name="menu_Lookup"/>
<addaction name="separator"/>
<addaction name="menuAdvanced"/>
<addaction name="separator"/>