List all configured fields in the context menu.
This commit is contained in:
parent
1c1848b945
commit
d9f1da83a6
@ -23,7 +23,7 @@ from anki.hooks import addHook, wrap
|
|||||||
from aqt.addcards import AddCards
|
from aqt.addcards import AddCards
|
||||||
from aqt.utils import showInfo, shortcut, downArrow
|
from aqt.utils import showInfo, shortcut, downArrow
|
||||||
from .gui import show_options, show_about_dialog, check_updates
|
from .gui import show_options, show_about_dialog, check_updates
|
||||||
from .query import query_from_browser, query_from_editor_fields, inspect_note
|
from .query import query_from_browser, query_from_editor_fields
|
||||||
from .context import config, APP_ICON
|
from .context import config, APP_ICON
|
||||||
from .lang import _
|
from .lang import _
|
||||||
from .service import service_pool
|
from .service import service_pool
|
||||||
@ -127,30 +127,59 @@ def context_menu():
|
|||||||
"""
|
"""
|
||||||
add context menu to webview
|
add context menu to webview
|
||||||
"""
|
"""
|
||||||
word, word_ord, maps = inspect_note(web_view.editor.note)
|
current_model_id = web_view.editor.note.model()['id']
|
||||||
current_field = u''
|
conf = config.get_maps(current_model_id)
|
||||||
if web_view.editor.currentField != word_ord:
|
maps_list = conf if isinstance(conf, list) else conf['list']
|
||||||
each = maps[web_view.editor.currentField]
|
curr_flds = []
|
||||||
ignore = each.get('ignore', False)
|
names = []
|
||||||
if not ignore:
|
for i, maps in enumerate(maps_list):
|
||||||
dict_unique = each.get('dict_unique', '').strip()
|
maps = maps if isinstance(maps, list) else maps['fields']
|
||||||
dict_fld_ord = each.get('dict_fld_ord', -1)
|
for mord, m in enumerate(maps):
|
||||||
fld_ord = each.get('fld_ord', -1)
|
if m.get('word_checked', False):
|
||||||
if dict_unique and dict_fld_ord != -1 and fld_ord != -1:
|
word_ord = mord
|
||||||
s = service_pool.get(dict_unique)
|
break
|
||||||
if s and s.support:
|
if web_view.editor.currentField != word_ord:
|
||||||
current_field = ' (' + s.title + ' -> ' + s.fields[dict_fld_ord] + ')'
|
each = maps[web_view.editor.currentField]
|
||||||
service_pool.put(s)
|
ignore = each.get('ignore', False)
|
||||||
|
if not ignore:
|
||||||
|
dict_unique = each.get('dict_unique', '').strip()
|
||||||
|
dict_fld_ord = each.get('dict_fld_ord', -1)
|
||||||
|
fld_ord = each.get('fld_ord', -1)
|
||||||
|
if dict_unique and dict_fld_ord != -1 and fld_ord != -1:
|
||||||
|
s = service_pool.get(dict_unique)
|
||||||
|
if s and s.support:
|
||||||
|
name = s.title + ' :-> ' + s.fields[dict_fld_ord]
|
||||||
|
if name not in names:
|
||||||
|
names.append(name)
|
||||||
|
curr_flds.append({
|
||||||
|
'name': name,
|
||||||
|
'def': i
|
||||||
|
})
|
||||||
|
service_pool.put(s)
|
||||||
|
|
||||||
submenu = menu.addMenu(_('QUERY'))
|
submenu = menu.addMenu(_('QUERY'))
|
||||||
submenu.addAction(_('ALL_FIELDS'), lambda: query_from_editor_fields(web_view.editor), QKeySequence(my_shortcut))
|
submenu.addAction(_('ALL_FIELDS'), lambda: query_from_editor_fields(web_view.editor), QKeySequence(my_shortcut))
|
||||||
if current_field:
|
if len(curr_flds) > 0:
|
||||||
submenu.addAction(_('CURRENT_FIELDS') + current_field,
|
# quer hook method
|
||||||
lambda: query_from_editor_fields(
|
def query_from_editor_hook(i):
|
||||||
|
conf = config.get_maps(current_model_id)
|
||||||
|
maps_list = {'list': [conf], 'def': i} if isinstance(conf, list) else conf
|
||||||
|
maps_list['def'] = i
|
||||||
|
data = dict()
|
||||||
|
data[current_model_id] = maps_list
|
||||||
|
config.update(data)
|
||||||
|
query_from_editor_fields(
|
||||||
web_view.editor,
|
web_view.editor,
|
||||||
fields=[web_view.editor.currentField]
|
fields=[web_view.editor.currentField]
|
||||||
)
|
)
|
||||||
)
|
# sub menu
|
||||||
|
#flds_menu = submenu.addMenu(_('CURRENT_FIELDS'))
|
||||||
|
submenu.addSeparator()
|
||||||
|
for c in curr_flds:
|
||||||
|
submenu.addAction(c['name'],
|
||||||
|
lambda i=c['def']: query_from_editor_hook(i)
|
||||||
|
)
|
||||||
|
submenu.addSeparator()
|
||||||
submenu.addAction(_("OPTIONS"), lambda: show_options(web_view, web_view.editor.note.model()['id']))
|
submenu.addAction(_("OPTIONS"), lambda: show_options(web_view, web_view.editor.note.model()['id']))
|
||||||
|
|
||||||
addHook('EditorWebView.contextMenuEvent', on_setup_menus)
|
addHook('EditorWebView.contextMenuEvent', on_setup_menus)
|
||||||
|
|||||||
@ -23,7 +23,7 @@ from anki.hooks import addHook, wrap
|
|||||||
from aqt.addcards import AddCards
|
from aqt.addcards import AddCards
|
||||||
from aqt.utils import showInfo, shortcut, downArrow
|
from aqt.utils import showInfo, shortcut, downArrow
|
||||||
from .gui import show_options, show_about_dialog, check_updates
|
from .gui import show_options, show_about_dialog, check_updates
|
||||||
from .query import query_from_browser, query_from_editor_fields, inspect_note
|
from .query import query_from_browser, query_from_editor_fields
|
||||||
from .context import config, APP_ICON
|
from .context import config, APP_ICON
|
||||||
from .lang import _
|
from .lang import _
|
||||||
from .service import service_pool
|
from .service import service_pool
|
||||||
@ -127,30 +127,59 @@ def context_menu():
|
|||||||
"""
|
"""
|
||||||
add context menu to webview
|
add context menu to webview
|
||||||
"""
|
"""
|
||||||
word, word_ord, maps = inspect_note(web_view.editor.note)
|
current_model_id = web_view.editor.note.model()['id']
|
||||||
current_field = u''
|
conf = config.get_maps(current_model_id)
|
||||||
if web_view.editor.currentField != word_ord:
|
maps_list = conf if isinstance(conf, list) else conf['list']
|
||||||
each = maps[web_view.editor.currentField]
|
curr_flds = []
|
||||||
ignore = each.get('ignore', False)
|
names = []
|
||||||
if not ignore:
|
for i, maps in enumerate(maps_list):
|
||||||
dict_unique = each.get('dict_unique', '').strip()
|
maps = maps if isinstance(maps, list) else maps['fields']
|
||||||
dict_fld_ord = each.get('dict_fld_ord', -1)
|
for mord, m in enumerate(maps):
|
||||||
fld_ord = each.get('fld_ord', -1)
|
if m.get('word_checked', False):
|
||||||
if dict_unique and dict_fld_ord != -1 and fld_ord != -1:
|
word_ord = mord
|
||||||
s = service_pool.get(dict_unique)
|
break
|
||||||
if s and s.support:
|
if web_view.editor.currentField != word_ord:
|
||||||
current_field = ' (' + s.title + ' -> ' + s.fields[dict_fld_ord] + ')'
|
each = maps[web_view.editor.currentField]
|
||||||
service_pool.put(s)
|
ignore = each.get('ignore', False)
|
||||||
|
if not ignore:
|
||||||
|
dict_unique = each.get('dict_unique', '').strip()
|
||||||
|
dict_fld_ord = each.get('dict_fld_ord', -1)
|
||||||
|
fld_ord = each.get('fld_ord', -1)
|
||||||
|
if dict_unique and dict_fld_ord != -1 and fld_ord != -1:
|
||||||
|
s = service_pool.get(dict_unique)
|
||||||
|
if s and s.support:
|
||||||
|
name = s.title + ' :-> ' + s.fields[dict_fld_ord]
|
||||||
|
if name not in names:
|
||||||
|
names.append(name)
|
||||||
|
curr_flds.append({
|
||||||
|
'name': name,
|
||||||
|
'def': i
|
||||||
|
})
|
||||||
|
service_pool.put(s)
|
||||||
|
|
||||||
submenu = menu.addMenu(_('QUERY'))
|
submenu = menu.addMenu(_('QUERY'))
|
||||||
submenu.addAction(_('ALL_FIELDS'), lambda: query_from_editor_fields(web_view.editor), QKeySequence(my_shortcut))
|
submenu.addAction(_('ALL_FIELDS'), lambda: query_from_editor_fields(web_view.editor), QKeySequence(my_shortcut))
|
||||||
if current_field:
|
if len(curr_flds) > 0:
|
||||||
submenu.addAction(_('CURRENT_FIELDS') + current_field,
|
# quer hook method
|
||||||
lambda: query_from_editor_fields(
|
def query_from_editor_hook(i):
|
||||||
|
conf = config.get_maps(current_model_id)
|
||||||
|
maps_list = {'list': [conf], 'def': i} if isinstance(conf, list) else conf
|
||||||
|
maps_list['def'] = i
|
||||||
|
data = dict()
|
||||||
|
data[current_model_id] = maps_list
|
||||||
|
config.update(data)
|
||||||
|
query_from_editor_fields(
|
||||||
web_view.editor,
|
web_view.editor,
|
||||||
fields=[web_view.editor.currentField]
|
fields=[web_view.editor.currentField]
|
||||||
)
|
)
|
||||||
)
|
# sub menu
|
||||||
|
#flds_menu = submenu.addMenu(_('CURRENT_FIELDS'))
|
||||||
|
submenu.addSeparator()
|
||||||
|
for c in curr_flds:
|
||||||
|
submenu.addAction(c['name'],
|
||||||
|
lambda i=c['def']: query_from_editor_hook(i)
|
||||||
|
)
|
||||||
|
submenu.addSeparator()
|
||||||
submenu.addAction(_("OPTIONS"), lambda: show_options(web_view, web_view.editor.note.model()['id']))
|
submenu.addAction(_("OPTIONS"), lambda: show_options(web_view, web_view.editor.note.model()['id']))
|
||||||
|
|
||||||
addHook('EditorWebView.contextMenuEvent', on_setup_menus)
|
addHook('EditorWebView.contextMenuEvent', on_setup_menus)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user