Add options button in AddCards window

This commit is contained in:
St.Huang 2018-08-19 01:46:28 +08:00
parent 09787be647
commit 19dc8c91fe
2 changed files with 71 additions and 57 deletions

View File

@ -21,7 +21,7 @@ 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 aqt.utils import showInfo, shortcut, downArrow
from .gui import show_options, show_about_dialog, check_updates
from .query import query_from_browser, query_from_editor_all_fields
from .context import config, APP_ICON
@ -39,29 +39,6 @@ have_setup = False
my_shortcut = ''
def wrap_method(func, *args, **kwargs):
'''
wrap a function with params when it's called
'''
def callback():
return func(*args, **kwargs)
return callback
def add_query_button(self):
'''
add a button in add card window
'''
bb = self.form.buttonBox
ar = QDialogButtonBox.ActionRole
self.queryButton = bb.addButton(_(u"Query"), ar)
self.queryButton.clicked.connect(wrap_method(
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
@ -75,7 +52,7 @@ def browser_menu():
browser.form.menubar.addMenu(menu)
# Query Selected
action = QAction("Query Selected", browser)
action.triggered.connect(wrap_method(query_from_browser, browser))
action.triggered.connect(lambda: query_from_browser(browser))
action.setShortcut(QKeySequence(my_shortcut))
menu.addAction(action)
# Options
@ -91,7 +68,7 @@ def browser_menu():
menu.addAction(action)
# About
action = QAction("About", browser)
action.triggered.connect(wrap_method(show_about_dialog, browser))
action.triggered.connect(lambda: show_about_dialog(browser))
menu.addAction(action)
addHook('browser.setupMenus', on_setup_menus)
@ -101,8 +78,38 @@ def customize_addcards():
"""
add button to addcards window
"""
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)
menu.addAction(_("Query"), lambda: query_from_editor_all_fields(self.editor), QKeySequence(my_shortcut))
menu.addAction(_("Options"), lambda: show_options(self))
menu.exec_(fastwqBtn.mapToGlobal(QPoint(0, fastwqBtn.height())))
else:
query_from_editor_all_fields(self.editor)
fastwqBtn.mousePressEvent = onQuery
fastwqBtn.clicked.connect(onQuery)
AddCards.setupButtons = wrap(
AddCards.setupButtons, add_query_button, "before")
AddCards.setupButtons,
add_query_button,
"before"
)
def config_menu():
@ -110,5 +117,5 @@ def config_menu():
add menu to anki window menebar
"""
action = QAction(APP_ICON, "FastWQ...", mw)
action.triggered.connect(wrap_method(show_options))
action.triggered.connect(show_options)
mw.form.menuTools.addAction(action)

View File

@ -21,7 +21,7 @@ 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 aqt.utils import showInfo, shortcut, downArrow
from .gui import show_options, show_about_dialog, check_updates
from .query import query_from_browser, query_from_editor_all_fields
from .context import config, APP_ICON
@ -39,29 +39,6 @@ have_setup = False
my_shortcut = ''
def wrap_method(func, *args, **kwargs):
'''
wrap a function with params when it's called
'''
def callback():
return func(*args, **kwargs)
return callback
def add_query_button(self):
'''
add a button in add card window
'''
bb = self.form.buttonBox
ar = QDialogButtonBox.ActionRole
self.queryButton = bb.addButton(_(u"Query"), ar)
self.queryButton.clicked.connect(wrap_method(
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
@ -75,7 +52,7 @@ def browser_menu():
browser.form.menubar.addMenu(menu)
# Query Selected
action = QAction("Query Selected", browser)
action.triggered.connect(wrap_method(query_from_browser, browser))
action.triggered.connect(lambda: query_from_browser(browser))
action.setShortcut(QKeySequence(my_shortcut))
menu.addAction(action)
# Options
@ -91,7 +68,7 @@ def browser_menu():
menu.addAction(action)
# About
action = QAction("About", browser)
action.triggered.connect(wrap_method(show_about_dialog, browser))
action.triggered.connect(lambda: show_about_dialog(browser))
menu.addAction(action)
addHook('browser.setupMenus', on_setup_menus)
@ -101,8 +78,38 @@ def customize_addcards():
"""
add button to addcards window
"""
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)
menu.addAction(_("Query"), lambda: query_from_editor_all_fields(self.editor), QKeySequence(my_shortcut))
menu.addAction(_("Options"), lambda: show_options(self))
menu.exec_(fastwqBtn.mapToGlobal(QPoint(0, fastwqBtn.height())))
else:
query_from_editor_all_fields(self.editor)
fastwqBtn.mousePressEvent = onQuery
fastwqBtn.clicked.connect(onQuery)
AddCards.setupButtons = wrap(
AddCards.setupButtons, add_query_button, "before")
AddCards.setupButtons,
add_query_button,
"before"
)
def config_menu():
@ -110,5 +117,5 @@ def config_menu():
add menu to anki window menebar
"""
action = QAction(APP_ICON, "FastWQ...", mw)
action.triggered.connect(wrap_method(show_options))
mw.form.menuTools.addAction(action)
action.triggered.connect(show_options)
mw.form.menuTools.addAction(action)