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 aqt.qt import *
from anki.hooks import addHook, wrap from anki.hooks import addHook, wrap
from aqt.addcards import AddCards 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 .gui import show_options, show_about_dialog, check_updates
from .query import query_from_browser, query_from_editor_all_fields from .query import query_from_browser, query_from_editor_all_fields
from .context import config, APP_ICON from .context import config, APP_ICON
@ -39,29 +39,6 @@ have_setup = False
my_shortcut = '' 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(): def browser_menu():
""" """
add add-on's menu to browser window add add-on's menu to browser window
@ -75,7 +52,7 @@ def browser_menu():
browser.form.menubar.addMenu(menu) browser.form.menubar.addMenu(menu)
# Query Selected # Query Selected
action = QAction("Query Selected", browser) 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)) action.setShortcut(QKeySequence(my_shortcut))
menu.addAction(action) menu.addAction(action)
# Options # Options
@ -91,7 +68,7 @@ def browser_menu():
menu.addAction(action) menu.addAction(action)
# About # About
action = QAction("About", browser) action = QAction("About", browser)
action.triggered.connect(wrap_method(show_about_dialog, browser)) action.triggered.connect(lambda: show_about_dialog(browser))
menu.addAction(action) menu.addAction(action)
addHook('browser.setupMenus', on_setup_menus) addHook('browser.setupMenus', on_setup_menus)
@ -101,8 +78,38 @@ def customize_addcards():
""" """
add button to addcards window 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 = wrap(
AddCards.setupButtons, add_query_button, "before") AddCards.setupButtons,
add_query_button,
"before"
)
def config_menu(): def config_menu():
@ -110,5 +117,5 @@ def config_menu():
add menu to anki window menebar add menu to anki window menebar
""" """
action = QAction(APP_ICON, "FastWQ...", mw) action = QAction(APP_ICON, "FastWQ...", mw)
action.triggered.connect(wrap_method(show_options)) action.triggered.connect(show_options)
mw.form.menuTools.addAction(action) mw.form.menuTools.addAction(action)

View File

@ -21,7 +21,7 @@ from aqt import mw
from aqt.qt import * from aqt.qt import *
from anki.hooks import addHook, wrap from anki.hooks import addHook, wrap
from aqt.addcards import AddCards 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 .gui import show_options, show_about_dialog, check_updates
from .query import query_from_browser, query_from_editor_all_fields from .query import query_from_browser, query_from_editor_all_fields
from .context import config, APP_ICON from .context import config, APP_ICON
@ -39,29 +39,6 @@ have_setup = False
my_shortcut = '' 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(): def browser_menu():
""" """
add add-on's menu to browser window add add-on's menu to browser window
@ -75,7 +52,7 @@ def browser_menu():
browser.form.menubar.addMenu(menu) browser.form.menubar.addMenu(menu)
# Query Selected # Query Selected
action = QAction("Query Selected", browser) 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)) action.setShortcut(QKeySequence(my_shortcut))
menu.addAction(action) menu.addAction(action)
# Options # Options
@ -91,7 +68,7 @@ def browser_menu():
menu.addAction(action) menu.addAction(action)
# About # About
action = QAction("About", browser) action = QAction("About", browser)
action.triggered.connect(wrap_method(show_about_dialog, browser)) action.triggered.connect(lambda: show_about_dialog(browser))
menu.addAction(action) menu.addAction(action)
addHook('browser.setupMenus', on_setup_menus) addHook('browser.setupMenus', on_setup_menus)
@ -101,8 +78,38 @@ def customize_addcards():
""" """
add button to addcards window 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 = wrap(
AddCards.setupButtons, add_query_button, "before") AddCards.setupButtons,
add_query_button,
"before"
)
def config_menu(): def config_menu():
@ -110,5 +117,5 @@ def config_menu():
add menu to anki window menebar add menu to anki window menebar
""" """
action = QAction(APP_ICON, "FastWQ...", mw) action = QAction(APP_ICON, "FastWQ...", mw)
action.triggered.connect(wrap_method(show_options)) action.triggered.connect(show_options)
mw.form.menuTools.addAction(action) mw.form.menuTools.addAction(action)