Ignore accents supported. fix #15

This commit is contained in:
St.Huang 2018-07-11 22:09:17 +08:00
parent 649e081e78
commit b3c36c4493
4 changed files with 26 additions and 2 deletions

View File

@ -105,5 +105,10 @@ class Config(object):
"""
return self.data.get('last_folder', '')
@property
def ignore_accents(self):
'''ignore accents of field in querying'''
return self.data.get('ignore_accents', False)
config = Config(mw)

View File

@ -56,6 +56,7 @@ arr = [
['NEW_VERSION', u'检查到新版本:', u'New version:'],
['UPDATE', u'更新', u'Update'],
['FORCE_UPDATE', u'强制更新字段', u'Force Update Fields'],
['IGNORE_ACCENTS', u'忽略声调', u'Ignore Accents'],
['SETTINGS', u'参数', u'Settings'],
['THREAD_NUMBER', u'线程数', u'Thread Number'],
['INITLIZING_DICT', u'初始化词典...', u'Initlizing Dictionary...'],

View File

@ -23,6 +23,7 @@ import re
import shutil
import sys
import time
import unicodedata
from aqt import mw
from aqt.qt import QFileDialog, QObject, QThread, pyqtSignal, pyqtSlot, QMutex
@ -337,6 +338,11 @@ def add_to_tmpl(note, **kwargs):
class InvalidWordException(Exception):
"""Invalid word exception"""
def strip_combining(txt):
"Return txt with all combining characters removed."
norm = unicodedata.normalize('NFKD', txt)
return u"".join([c for c in norm if not unicodedata.combining(c)])
def query_all_flds(note):
"""
Query all fields of single note
@ -346,6 +352,9 @@ def query_all_flds(note):
if not word:
raise InvalidWordException
if config.ignore_accents:
word = strip_combining(unicode(word))
# progress.update_title(u'Querying [[ %s ]]' % word)
services = {}

View File

@ -68,6 +68,11 @@ class ParasDialog(QDialog):
layout.addWidget(check_force_update)
layout.addSpacing(10)
check_ignore_accents = QCheckBox(_("IGNORE_ACCENTS"))
check_ignore_accents.setChecked(config.ignore_accents)
layout.addWidget(check_ignore_accents)
layout.addSpacing(10)
hbox = QHBoxLayout()
input_thread_number = QSpinBox(parent=self)
input_thread_number.setRange(1, 120)
@ -87,6 +92,7 @@ class ParasDialog(QDialog):
layout.addWidget(buttonBox)
self.check_force_update = check_force_update
self.check_ignore_accents = check_ignore_accents
self.input_thread_number = input_thread_number
layout.setAlignment(Qt.AlignTop|Qt.AlignLeft)
@ -97,8 +103,11 @@ class ParasDialog(QDialog):
self.close()
def save(self):
data = {'force_update': self.check_force_update.isChecked(),
'thread_number': self.input_thread_number.value()}
data = {
'force_update': self.check_force_update.isChecked(),
'ignore_accents': self.check_ignore_accents.isChecked(),
'thread_number': self.input_thread_number.value()
}
config.update(data)