anki-word-query/addons/fastwq/__init__.py

122 lines
3.9 KiB
Python
Raw Normal View History

2018-07-01 10:55:30 +08:00
#-*- coding:utf-8 -*-
#
2018-07-27 17:57:00 +08:00
# Copyright (C) 2018 sthoo <sth201807@gmail.com>
2018-07-01 10:55:30 +08:00
#
# Support: Report an issue at https://github.com/sth2018/FastWordQuery/issues
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version; http://www.gnu.org/copyleft/gpl.html.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from aqt import mw
2018-08-01 15:36:20 +08:00
from aqt.qt import *
2018-07-01 10:55:30 +08:00
from anki.hooks import addHook, wrap
from aqt.addcards import AddCards
2018-08-19 01:46:28 +08:00
from aqt.utils import showInfo, shortcut, downArrow
2018-07-31 15:46:03 +08:00
from .gui import show_options, show_about_dialog, check_updates
2018-07-14 15:24:21 +08:00
from .query import query_from_browser, query_from_editor_all_fields
2018-07-01 10:55:30 +08:00
from .context import config, APP_ICON
from .lang import _
2018-07-01 10:55:30 +08:00
2018-07-14 10:22:45 +08:00
__all__ = [
2018-07-14 15:24:21 +08:00
'add_query_button', 'browser_menu',
'customize_addcards', 'config_menu',
2018-08-01 15:36:20 +08:00
'check_updates'
2018-07-14 10:22:45 +08:00
]
2018-07-01 10:55:30 +08:00
have_setup = False
my_shortcut = ''
def browser_menu():
"""
add add-on's menu to browser window
2018-07-01 10:55:30 +08:00
"""
def on_setup_menus(browser):
"""
on browser setupMenus was called
2018-07-01 10:55:30 +08:00
"""
# main menu
2018-08-01 15:36:20 +08:00
menu = QMenu("FastWQ", browser.form.menubar)
2018-07-01 10:55:30 +08:00
browser.form.menubar.addMenu(menu)
# Query Selected
2018-08-01 15:36:20 +08:00
action = QAction("Query Selected", browser)
2018-08-19 01:46:28 +08:00
action.triggered.connect(lambda: query_from_browser(browser))
2018-08-01 15:36:20 +08:00
action.setShortcut(QKeySequence(my_shortcut))
2018-07-01 10:55:30 +08:00
menu.addAction(action)
2018-07-14 15:24:21 +08:00
# Options
2018-08-01 15:36:20 +08:00
action = QAction("Options", browser)
2018-07-14 10:22:45 +08:00
def _show_options():
model_id = -1
for note_id in browser.selectedNotes():
note = browser.mw.col.getNote(note_id)
model_id = note.model()['id']
break
show_options(browser, model_id)
action.triggered.connect(_show_options)
2018-07-01 10:55:30 +08:00
menu.addAction(action)
2018-07-14 15:24:21 +08:00
# About
2018-08-01 15:36:20 +08:00
action = QAction("About", browser)
2018-08-19 01:46:28 +08:00
action.triggered.connect(lambda: show_about_dialog(browser))
2018-07-14 15:24:21 +08:00
menu.addAction(action)
2018-07-01 10:55:30 +08:00
2018-07-14 15:24:21 +08:00
addHook('browser.setupMenus', on_setup_menus)
2018-07-01 10:55:30 +08:00
def customize_addcards():
"""
add button to addcards window
2018-07-01 10:55:30 +08:00
"""
2018-08-19 01:46:28 +08:00
def add_query_button(self):
'''
add a button in add card window
'''
bb = self.form.buttonBox
ar = QDialogButtonBox.ActionRole
# button
fastwqBtn = QPushButton(_("Query") + u" " + downArrow())
fastwqBtn.setShortcut(QKeySequence(my_shortcut))
fastwqBtn.setToolTip(
_(u"Shortcut: %s") % shortcut(my_shortcut)
)
bb.addButton(fastwqBtn, ar)
# signal
def onQuery(e):
if isinstance(e, QMouseEvent):
if e.buttons() & Qt.LeftButton:
menu = QMenu(self)
2018-08-26 18:13:10 +08:00
menu.addAction(_("Query"), lambda: query_from_editor_all_fields(self.editor, False), QKeySequence(my_shortcut))
2018-08-19 12:13:16 +08:00
menu.addAction(_("Options"), lambda: show_options(self, self.editor.note.model()['id']))
2018-08-19 01:46:28 +08:00
menu.exec_(fastwqBtn.mapToGlobal(QPoint(0, fastwqBtn.height())))
else:
2018-08-26 18:13:10 +08:00
query_from_editor_all_fields(self.editor, False)
2018-08-19 01:46:28 +08:00
fastwqBtn.mousePressEvent = onQuery
fastwqBtn.clicked.connect(onQuery)
2018-07-01 10:55:30 +08:00
AddCards.setupButtons = wrap(
2018-08-19 01:46:28 +08:00
AddCards.setupButtons,
add_query_button,
"after"
2018-08-19 01:46:28 +08:00
)
2018-07-01 10:55:30 +08:00
def config_menu():
"""
add menu to anki window menebar
2018-07-01 10:55:30 +08:00
"""
2018-08-01 15:36:20 +08:00
action = QAction(APP_ICON, "FastWQ...", mw)
2018-08-19 02:00:41 +08:00
action.triggered.connect(lambda: show_options())
2018-07-01 10:55:30 +08:00
mw.form.menuTools.addAction(action)