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

106 lines
3.0 KiB
Python
Raw Normal View History

2018-07-01 10:55:30 +08:00
#-*- coding:utf-8 -*-
#
2018-07-07 17:48:15 +08:00
# Copyright © 20162017 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/>.
import anki
import aqt
from aqt import mw
from aqt.qt import *
from anki.hooks import addHook, wrap
from aqt.addcards import AddCards
from aqt.utils import showInfo, shortcut
from .ui import show_options
from .query import *
from .context import config, APP_ICON
from .lang import _
2018-07-01 10:55:30 +08:00
have_setup = False
my_shortcut = ''
def wrap_method(func, *args, **kwargs):
'''
wrap a function with params when it's called
'''
2018-07-01 10:55:30 +08:00
def callback():
return func(*args, **kwargs)
2018-07-01 10:55:30 +08:00
return callback
def add_query_button(self):
bb = self.form.buttonBox
ar = QDialogButtonBox.ActionRole
self.queryButton = bb.addButton(_(u"Query"), ar)
self.queryButton.clicked.connect(wrap_method(
2018-07-01 10:55:30 +08:00
query_from_editor_all_fields, self.editor))
self.queryButton.setShortcut(QKeySequence(my_shortcut))
self.queryButton.setToolTip(
shortcut(_(u"Query (shortcut: %s)" % 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-07-01 12:54:02 +08:00
menu = QMenu("FastWQ", browser.form.menubar)
2018-07-01 10:55:30 +08:00
browser.form.menubar.addMenu(menu)
# Query Selected
action = QAction("Query Selected", browser)
action.triggered.connect(wrap_method(query_from_browser, browser))
2018-07-01 10:55:30 +08:00
action.setShortcut(QKeySequence(my_shortcut))
menu.addAction(action)
#Options
action = QAction("Options", browser)
action.triggered.connect(wrap_method(show_options, browser))
2018-07-01 10:55:30 +08:00
menu.addAction(action)
anki.hooks.addHook('browser.setupMenus', on_setup_menus)
def customize_addcards():
"""
add button to addcards window
2018-07-01 10:55:30 +08:00
"""
AddCards.setupButtons = wrap(
AddCards.setupButtons, add_query_button, "before")
def config_menu():
"""
add menu to anki window menebar
2018-07-01 10:55:30 +08:00
"""
2018-07-01 12:54:02 +08:00
action = QAction(APP_ICON, "FastWQ...", mw)
action.triggered.connect(wrap_method(show_options))
2018-07-01 10:55:30 +08:00
mw.form.menuTools.addAction(action)
global have_setup
have_setup = True
def window_shortcut(key_sequence):
"""
setup shortcut
2018-07-01 10:55:30 +08:00
"""
global my_shortcut
my_shortcut = key_sequence